Version Description
Download this release
Release Info
Developer | Ladela |
Plugin | WordPress Online Booking and Scheduling Plugin – Bookly |
Version | 17.6 |
Comparing to | |
See all releases |
Code changes from version 17.5 to 17.6
- backend/Backend.php +16 -13
- backend/components/dashboard/appointments/Ajax.php +5 -0
- backend/components/dashboard/appointments/Widget.php +1 -1
- backend/components/dialogs/appointment/delete/Ajax.php +4 -2
- backend/components/dialogs/appointment/edit/Ajax.php +65 -33
- backend/components/dialogs/appointment/edit/Dialog.php +4 -2
- backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js +198 -59
- backend/components/dialogs/appointment/edit/templates/edit.php +38 -16
- backend/components/dialogs/customer/edit/resources/js/ng-customer.js +0 -4
- backend/components/dialogs/notifications/templates/_types.php +1 -1
- backend/components/dialogs/payment/Ajax.php +21 -0
- backend/components/dialogs/payment/resources/js/ng-payment_details.js +10 -7
- backend/components/dialogs/payment/templates/details.php +34 -24
- backend/components/dialogs/queue/Dialog.php +36 -0
- backend/components/dialogs/queue/resources/js/queue-dialog.js +70 -0
- backend/components/dialogs/queue/templates/dialog.php +30 -0
- backend/components/dialogs/service/edit/resources/js/service-edit-dialog.js +2 -0
- backend/components/dialogs/service/edit/templates/dialog.php +4 -5
- backend/components/dialogs/sms/Dialog.php +1 -0
- backend/components/dialogs/sms/resources/js/notification-dialog.js +8 -6
- backend/components/dialogs/staff/edit/forms/StaffServices.php +1 -1
- backend/components/dialogs/staff/edit/resources/js/staff-edit-dialog.js +34 -34
- backend/components/dialogs/staff/edit/resources/js/staff-schedule.js +1 -1
- backend/components/dialogs/staff/edit/templates/dialog.php +4 -1
- backend/components/dialogs/staff/edit/templates/dialog_body.php +3 -3
- backend/components/notices/PoweredBy.php +35 -0
- backend/components/notices/PoweredByAjax.php +31 -0
- backend/components/notices/resources/js/powered-by.js +12 -0
- backend/components/notices/templates/powered_by.php +16 -0
- backend/modules/appearance/proxy/Pro.php +4 -4
- backend/modules/appearance/proxy/ServiceExtras.php +1 -0
- backend/modules/appearance/resources/js/appearance.js +18 -4
- backend/modules/appearance/templates/_7_payment.php +21 -19
- backend/modules/appearance/templates/index.php +2 -1
- backend/modules/appointments/Ajax.php +5 -3
- backend/modules/appointments/Page.php +2 -1
- backend/modules/appointments/resources/js/appointments.js +32 -6
- backend/modules/appointments/templates/index.php +7 -4
- backend/modules/calendar/Ajax.php +3 -2
- backend/modules/calendar/resources/js/calendar-common.js +4 -1
- backend/modules/calendar/templates/calendar.php +1 -0
- backend/modules/customers/Ajax.php +43 -0
- backend/modules/dashboard/resources/js/dashboard.js +1 -1
- backend/modules/debug/Ajax.php +131 -28
- backend/modules/debug/Page.php +44 -95
- backend/modules/debug/lib/QueryBuilder.php +581 -0
- backend/modules/debug/lib/Schema.php +110 -0
- backend/modules/debug/resources/js/debug.js +112 -33
- backend/modules/debug/templates/index.php +78 -19
- backend/modules/messages/Ajax.php +1 -1
- backend/modules/messages/Page.php +2 -2
- backend/modules/notifications/templates/_test_email_modal.php +1 -1
- backend/modules/payments/Page.php +3 -2
- backend/modules/payments/resources/js/payments.js +29 -8
- backend/modules/payments/templates/index.php +7 -5
- backend/modules/services/resources/js/services-list.js +12 -14
- backend/modules/services/templates/time.php +6 -6
- backend/modules/settings/Page.php +1 -0
- backend/modules/settings/templates/_generalForm.php +1 -0
- backend/modules/shop/Page.php +2 -2
- backend/modules/sms/Ajax.php +61 -0
- backend/modules/sms/Page.php +8 -31
- backend/modules/sms/resources/js/notifications-list.js +4 -2
- backend/modules/sms/resources/js/sms.js +2 -2
- backend/modules/staff/Ajax.php +0 -60
- backend/modules/staff/resources/js/staff-list.js +10 -16
- backend/resources/bootstrap/css/bootstrap-theme.min.css +2 -2
- backend/resources/css/select2.min.css +1 -1
- backend/resources/js/jCal.js +3 -3
- backend/resources/js/select2.full.min.js +1 -1
- frontend/modules/booking/Ajax.php +108 -65
- frontend/modules/booking/templates/7_payment.php +19 -18
- frontend/modules/booking/templates/_progress_tracker.php +6 -7
- frontend/modules/booking/templates/short_code.php +6 -0
- frontend/resources/css/bookly-main.css +11 -0
- languages/bookly-ar.mo +0 -0
- languages/bookly-ar.po +2370 -0
backend/Backend.php
CHANGED
@@ -27,6 +27,8 @@ abstract class Backend
|
|
27 |
Components\Notices\Nps::render();
|
28 |
// Collect stats notice.
|
29 |
Components\Notices\CollectStats::render();
|
|
|
|
|
30 |
}
|
31 |
// Let add-ons render admin notices.
|
32 |
Lib\Proxy\Shared::renderAdminNotices( $bookly_page );
|
@@ -50,7 +52,8 @@ abstract class Backend
|
|
50 |
global $current_user, $submenu;
|
51 |
|
52 |
$is_staff = Lib\Entities\Staff::query()->where( 'wp_user_id', $current_user->ID )->count() > 0;
|
53 |
-
|
|
|
54 |
$dynamic_position = '80.0000001' . mt_rand( 1, 1000 ); // position always is under `Settings`
|
55 |
$badge_number = Modules\Messages\Page::getMessagesCount() +
|
56 |
Modules\Shop\Page::getNotSeenCount() +
|
@@ -79,20 +82,20 @@ abstract class Backend
|
|
79 |
$appearance = __( 'Appearance', 'bookly' );
|
80 |
$settings = __( 'Settings', 'bookly' );
|
81 |
|
82 |
-
add_submenu_page( 'bookly-menu', $dashboard, $dashboard,
|
83 |
Modules\Dashboard\Page::pageSlug(), function () { Modules\Dashboard\Page::render(); } );
|
84 |
add_submenu_page( 'bookly-menu', $calendar, $calendar, 'read',
|
85 |
Modules\Calendar\Page::pageSlug(), function () { Modules\Calendar\Page::render(); } );
|
86 |
-
if ( $current_user->has_cap(
|
87 |
add_submenu_page( 'bookly-menu', $appointments, $appointments, 'read',
|
88 |
Modules\Appointments\Page::pageSlug(), function () { Modules\Appointments\Page::render(); } );
|
89 |
}
|
90 |
Lib\Proxy\Locations::addBooklyMenuItem();
|
91 |
-
if ( $current_user->has_cap(
|
92 |
Lib\Proxy\Packages::addBooklyMenuItem();
|
93 |
}
|
94 |
-
if ( $current_user->has_cap(
|
95 |
-
add_submenu_page( 'bookly-menu', $staff_members, $staff_members,
|
96 |
Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
|
97 |
} elseif ( $is_staff ) {
|
98 |
if ( get_option( 'bookly_gen_allow_staff_edit_profile' ) == 1 ) {
|
@@ -100,33 +103,33 @@ abstract class Backend
|
|
100 |
Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
|
101 |
}
|
102 |
}
|
103 |
-
add_submenu_page( 'bookly-menu', $services, $services,
|
104 |
Modules\Services\Page::pageSlug(), function () { Modules\Services\Page::render(); } );
|
105 |
Lib\Proxy\Taxes::addBooklyMenuItem();
|
106 |
-
if ( $current_user->has_cap(
|
107 |
add_submenu_page( 'bookly-menu', $customers, $customers, 'read',
|
108 |
Modules\Customers\Page::pageSlug(), function () { Modules\Customers\Page::render(); } );
|
109 |
}
|
110 |
Lib\Proxy\CustomerInformation::addBooklyMenuItem();
|
111 |
Lib\Proxy\CustomerGroups::addBooklyMenuItem();
|
112 |
-
add_submenu_page( 'bookly-menu', $notifications, $notifications,
|
113 |
Modules\Notifications\Page::pageSlug(), function () { Modules\Notifications\Page::render(); } );
|
114 |
Modules\Sms\Page::addBooklyMenuItem();
|
115 |
-
if ( $current_user->has_cap(
|
116 |
add_submenu_page( 'bookly-menu', $payments, $payments, 'read',
|
117 |
Modules\Payments\Page::pageSlug(), function () { Modules\Payments\Page::render(); } );
|
118 |
}
|
119 |
-
add_submenu_page( 'bookly-menu', $appearance, $appearance,
|
120 |
Modules\Appearance\Page::pageSlug(), function () { Modules\Appearance\Page::render(); } );
|
121 |
Lib\Proxy\Coupons::addBooklyMenuItem();
|
122 |
Lib\Proxy\CustomFields::addBooklyMenuItem();
|
123 |
-
add_submenu_page( 'bookly-menu', $settings, $settings,
|
124 |
Modules\Settings\Page::pageSlug(), function () { Modules\Settings\Page::render(); } );
|
125 |
Modules\Messages\Page::addBooklyMenuItem();
|
126 |
Modules\Shop\Page::addBooklyMenuItem();
|
127 |
|
128 |
if ( isset ( $_GET['page'] ) && $_GET['page'] == 'bookly-debug' ) {
|
129 |
-
add_submenu_page( 'bookly-menu', 'Debug', 'Debug',
|
130 |
Modules\Debug\Page::pageSlug(), function () { Modules\Debug\Page::render(); } );
|
131 |
}
|
132 |
if ( ! Lib\Config::proActive() ) {
|
27 |
Components\Notices\Nps::render();
|
28 |
// Collect stats notice.
|
29 |
Components\Notices\CollectStats::render();
|
30 |
+
// Show Powered by Bookly notice.
|
31 |
+
Components\Notices\PoweredBy::render();
|
32 |
}
|
33 |
// Let add-ons render admin notices.
|
34 |
Lib\Proxy\Shared::renderAdminNotices( $bookly_page );
|
52 |
global $current_user, $submenu;
|
53 |
|
54 |
$is_staff = Lib\Entities\Staff::query()->where( 'wp_user_id', $current_user->ID )->count() > 0;
|
55 |
+
$required_capability = Lib\Utils\Common::getRequiredCapability();
|
56 |
+
if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) || $is_staff ) {
|
57 |
$dynamic_position = '80.0000001' . mt_rand( 1, 1000 ); // position always is under `Settings`
|
58 |
$badge_number = Modules\Messages\Page::getMessagesCount() +
|
59 |
Modules\Shop\Page::getNotSeenCount() +
|
82 |
$appearance = __( 'Appearance', 'bookly' );
|
83 |
$settings = __( 'Settings', 'bookly' );
|
84 |
|
85 |
+
add_submenu_page( 'bookly-menu', $dashboard, $dashboard, $required_capability,
|
86 |
Modules\Dashboard\Page::pageSlug(), function () { Modules\Dashboard\Page::render(); } );
|
87 |
add_submenu_page( 'bookly-menu', $calendar, $calendar, 'read',
|
88 |
Modules\Calendar\Page::pageSlug(), function () { Modules\Calendar\Page::render(); } );
|
89 |
+
if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
|
90 |
add_submenu_page( 'bookly-menu', $appointments, $appointments, 'read',
|
91 |
Modules\Appointments\Page::pageSlug(), function () { Modules\Appointments\Page::render(); } );
|
92 |
}
|
93 |
Lib\Proxy\Locations::addBooklyMenuItem();
|
94 |
+
if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
|
95 |
Lib\Proxy\Packages::addBooklyMenuItem();
|
96 |
}
|
97 |
+
if ( $current_user->has_cap( $required_capability ) ) {
|
98 |
+
add_submenu_page( 'bookly-menu', $staff_members, $staff_members, $required_capability,
|
99 |
Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
|
100 |
} elseif ( $is_staff ) {
|
101 |
if ( get_option( 'bookly_gen_allow_staff_edit_profile' ) == 1 ) {
|
103 |
Modules\Staff\Page::pageSlug(), function () { Modules\Staff\Page::render(); } );
|
104 |
}
|
105 |
}
|
106 |
+
add_submenu_page( 'bookly-menu', $services, $services, $required_capability,
|
107 |
Modules\Services\Page::pageSlug(), function () { Modules\Services\Page::render(); } );
|
108 |
Lib\Proxy\Taxes::addBooklyMenuItem();
|
109 |
+
if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
|
110 |
add_submenu_page( 'bookly-menu', $customers, $customers, 'read',
|
111 |
Modules\Customers\Page::pageSlug(), function () { Modules\Customers\Page::render(); } );
|
112 |
}
|
113 |
Lib\Proxy\CustomerInformation::addBooklyMenuItem();
|
114 |
Lib\Proxy\CustomerGroups::addBooklyMenuItem();
|
115 |
+
add_submenu_page( 'bookly-menu', $notifications, $notifications, $required_capability,
|
116 |
Modules\Notifications\Page::pageSlug(), function () { Modules\Notifications\Page::render(); } );
|
117 |
Modules\Sms\Page::addBooklyMenuItem();
|
118 |
+
if ( $current_user->has_cap( $required_capability ) || $current_user->has_cap( 'manage_bookly_appointments' ) ) {
|
119 |
add_submenu_page( 'bookly-menu', $payments, $payments, 'read',
|
120 |
Modules\Payments\Page::pageSlug(), function () { Modules\Payments\Page::render(); } );
|
121 |
}
|
122 |
+
add_submenu_page( 'bookly-menu', $appearance, $appearance, $required_capability,
|
123 |
Modules\Appearance\Page::pageSlug(), function () { Modules\Appearance\Page::render(); } );
|
124 |
Lib\Proxy\Coupons::addBooklyMenuItem();
|
125 |
Lib\Proxy\CustomFields::addBooklyMenuItem();
|
126 |
+
add_submenu_page( 'bookly-menu', $settings, $settings, $required_capability,
|
127 |
Modules\Settings\Page::pageSlug(), function () { Modules\Settings\Page::render(); } );
|
128 |
Modules\Messages\Page::addBooklyMenuItem();
|
129 |
Modules\Shop\Page::addBooklyMenuItem();
|
130 |
|
131 |
if ( isset ( $_GET['page'] ) && $_GET['page'] == 'bookly-debug' ) {
|
132 |
+
add_submenu_page( 'bookly-menu', 'Debug', 'Debug', $required_capability,
|
133 |
Modules\Debug\Page::pageSlug(), function () { Modules\Debug\Page::render(); } );
|
134 |
}
|
135 |
if ( ! Lib\Config::proActive() ) {
|
backend/components/dashboard/appointments/Ajax.php
CHANGED
@@ -49,6 +49,8 @@ class Ajax extends Lib\Base\Ajax
|
|
49 |
->whereBetween( 'ca.created', $start->format( 'Y-m-d' ), $end->format( 'Y-m-d' ) )
|
50 |
->groupBy( 'DATE(ca.created), p.id, ca.status' )
|
51 |
->fetchArray();
|
|
|
|
|
52 |
// Consider payment for all appointments only 1 time
|
53 |
$payment_ids = array();
|
54 |
foreach ( $records as $record ) {
|
@@ -63,6 +65,9 @@ class Ajax extends Lib\Base\Ajax
|
|
63 |
}
|
64 |
if ( array_key_exists( $status, $data['totals'] ) ) {
|
65 |
$data['totals'][ $status ] += $quantity;
|
|
|
|
|
|
|
66 |
}
|
67 |
$data['totals']['total'] += $quantity;
|
68 |
$data['totals']['revenue'] += $revenue;
|
49 |
->whereBetween( 'ca.created', $start->format( 'Y-m-d' ), $end->format( 'Y-m-d' ) )
|
50 |
->groupBy( 'DATE(ca.created), p.id, ca.status' )
|
51 |
->fetchArray();
|
52 |
+
|
53 |
+
$custom_statuses = (array) Lib\Proxy\CustomStatuses::getAll();
|
54 |
// Consider payment for all appointments only 1 time
|
55 |
$payment_ids = array();
|
56 |
foreach ( $records as $record ) {
|
65 |
}
|
66 |
if ( array_key_exists( $status, $data['totals'] ) ) {
|
67 |
$data['totals'][ $status ] += $quantity;
|
68 |
+
} elseif ( isset ( $custom_statuses[ $status ] ) && $custom_statuses[ $status ]->getBusy() ) {
|
69 |
+
// Consider as APPROVED.
|
70 |
+
$data['totals']['approved'] += $quantity;
|
71 |
}
|
72 |
$data['totals']['total'] += $quantity;
|
73 |
$data['totals']['revenue'] += $revenue;
|
backend/components/dashboard/appointments/Widget.php
CHANGED
@@ -14,7 +14,7 @@ class Widget extends Lib\Base\Component
|
|
14 |
/** @var \WP_User $current_user */
|
15 |
global $current_user;
|
16 |
|
17 |
-
if ( $current_user && $current_user->has_cap(
|
18 |
$class = __CLASS__;
|
19 |
add_action( 'wp_dashboard_setup', function () use ( $class ) {
|
20 |
wp_add_dashboard_widget( strtolower( str_replace( '\\', '-', $class ) ), 'Bookly - ' . __( 'Appointments', 'bookly' ), array( $class, 'renderWidget' ) );
|
14 |
/** @var \WP_User $current_user */
|
15 |
global $current_user;
|
16 |
|
17 |
+
if ( $current_user && $current_user->has_cap( Lib\Utils\Common::getRequiredCapability() ) ) {
|
18 |
$class = __CLASS__;
|
19 |
add_action( 'wp_dashboard_setup', function () use ( $class ) {
|
20 |
wp_add_dashboard_widget( strtolower( str_replace( '\\', '-', $class ) ), 'Bookly - ' . __( 'Appointments', 'bookly' ), array( $class, 'renderWidget' ) );
|
backend/components/dialogs/appointment/delete/Ajax.php
CHANGED
@@ -25,6 +25,8 @@ class Ajax extends Lib\Base\Ajax
|
|
25 |
$appointment_id = self::parameter( 'appointment_id' );
|
26 |
$reason = self::parameter( 'reason' );
|
27 |
|
|
|
|
|
28 |
if ( self::parameter( 'notify' ) ) {
|
29 |
$ca_list = Lib\Entities\CustomerAppointment::query()
|
30 |
->where( 'appointment_id', $appointment_id )
|
@@ -51,12 +53,12 @@ class Ajax extends Lib\Base\Ajax
|
|
51 |
$ca->setStatus( Lib\Entities\CustomerAppointment::STATUS_REJECTED );
|
52 |
}
|
53 |
}
|
54 |
-
Lib\Notifications\Booking\Sender::sendForCA( $ca, null, array( 'cancellation_reason' => $reason ) );
|
55 |
}
|
56 |
}
|
57 |
|
58 |
Lib\Entities\Appointment::find( $appointment_id )->delete();
|
59 |
|
60 |
-
wp_send_json_success();
|
61 |
}
|
62 |
}
|
25 |
$appointment_id = self::parameter( 'appointment_id' );
|
26 |
$reason = self::parameter( 'reason' );
|
27 |
|
28 |
+
$queue = array();
|
29 |
+
|
30 |
if ( self::parameter( 'notify' ) ) {
|
31 |
$ca_list = Lib\Entities\CustomerAppointment::query()
|
32 |
->where( 'appointment_id', $appointment_id )
|
53 |
$ca->setStatus( Lib\Entities\CustomerAppointment::STATUS_REJECTED );
|
54 |
}
|
55 |
}
|
56 |
+
Lib\Notifications\Booking\Sender::sendForCA( $ca, null, array( 'cancellation_reason' => $reason ), false, $queue );
|
57 |
}
|
58 |
}
|
59 |
|
60 |
Lib\Entities\Appointment::find( $appointment_id )->delete();
|
61 |
|
62 |
+
wp_send_json_success( compact( 'queue' ) );
|
63 |
}
|
64 |
}
|
backend/components/dialogs/appointment/edit/Ajax.php
CHANGED
@@ -55,6 +55,7 @@ class Ajax extends Lib\Base\Ajax
|
|
55 |
),
|
56 |
'extras_consider_duration' => (int) Lib\Proxy\ServiceExtras::considerDuration( true ),
|
57 |
'extras_multiply_nop' => (int) get_option( 'bookly_service_extras_multiply_nop', 1 ),
|
|
|
58 |
);
|
59 |
|
60 |
// Staff list.
|
@@ -127,20 +128,25 @@ class Ajax extends Lib\Base\Ajax
|
|
127 |
|
128 |
/** @var Lib\Entities\Customer $customer */
|
129 |
// Customers list.
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
$name
|
134 |
-
|
|
|
|
|
135 |
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
|
|
|
|
|
|
144 |
}
|
145 |
|
146 |
// Time list.
|
@@ -252,8 +258,13 @@ class Ajax extends Lib\Base\Ajax
|
|
252 |
p.total AS payment_total,
|
253 |
p.type AS payment_type,
|
254 |
p.details AS payment_details,
|
255 |
-
p.status AS payment_status
|
|
|
|
|
|
|
|
|
256 |
->leftJoin( 'Payment', 'p', 'p.id = ca.payment_id' )
|
|
|
257 |
->where( 'ca.appointment_id', $appointment->getId() )
|
258 |
->fetchArray();
|
259 |
foreach ( $customers as $customer ) {
|
@@ -285,6 +296,19 @@ class Ajax extends Lib\Base\Ajax
|
|
285 |
}
|
286 |
}
|
287 |
$custom_fields = (array) json_decode( $customer['custom_fields'], true );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
$response['data']['customers'][] = array(
|
289 |
'id' => $customer['customer_id'],
|
290 |
'ca_id' => $customer['id'],
|
@@ -304,7 +328,8 @@ class Ajax extends Lib\Base\Ajax
|
|
304 |
'payment_id' => $customer['payment_id'],
|
305 |
'payment_type' => $customer['payment'] != $customer['payment_total'] ? 'partial' : 'full',
|
306 |
'payment_title' => $payment_title,
|
307 |
-
'
|
|
|
308 |
'timezone' => Lib\Proxy\Pro::getCustomerTimezone( $customer['time_zone'], $customer['time_zone_offset'] ),
|
309 |
);
|
310 |
}
|
@@ -332,7 +357,7 @@ class Ajax extends Lib\Base\Ajax
|
|
332 |
$repeat = json_decode( self::parameter( 'repeat', '[]' ), true );
|
333 |
$schedule = self::parameter( 'schedule', array() );
|
334 |
$customers = json_decode( self::parameter( 'customers', '[]' ), true );
|
335 |
-
$notification = self::parameter( 'notification',
|
336 |
$internal_note = self::parameter( 'internal_note' );
|
337 |
$created_from = self::parameter( 'created_from' );
|
338 |
|
@@ -409,6 +434,7 @@ class Ajax extends Lib\Base\Ajax
|
|
409 |
if ( ! isset ( $response['errors'] ) ) {
|
410 |
$duration = Lib\Slots\DatePoint::fromStr( $end_date )->diff( Lib\Slots\DatePoint::fromStr( $start_date ) );
|
411 |
if ( ! $skip_date && $repeat['enabled'] ) {
|
|
|
412 |
// Series.
|
413 |
if ( ! empty ( $schedule ) ) {
|
414 |
/** @var DataHolders\Order[] $orders */
|
@@ -433,7 +459,7 @@ class Ajax extends Lib\Base\Ajax
|
|
433 |
->save();
|
434 |
|
435 |
// Create order
|
436 |
-
if ( $notification
|
437 |
$orders[ $customer['id'] ] = DataHolders\Order::create( Lib\Entities\Customer::find( $customer['id'] ) )
|
438 |
->addItem( 0, DataHolders\Series::create( $series ) );
|
439 |
}
|
@@ -486,10 +512,10 @@ class Ajax extends Lib\Base\Ajax
|
|
486 |
Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
|
487 |
// Outlook Calendar.
|
488 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
489 |
-
// Waiting list.
|
490 |
-
Lib\Proxy\WaitingList::handleParticipantsChange( $appointment );
|
491 |
|
492 |
-
if ( $notification
|
|
|
|
|
493 |
foreach ( $ca_list as $ca ) {
|
494 |
$item = DataHolders\Simple::create( $ca )
|
495 |
->setService( $service )
|
@@ -503,13 +529,14 @@ class Ajax extends Lib\Base\Ajax
|
|
503 |
Proxy\RecurringAppointments::createBackendPayment( $series, $customer );
|
504 |
}
|
505 |
}
|
506 |
-
if ( $notification
|
507 |
foreach ( $orders as $order ) {
|
508 |
-
Lib\Notifications\Booking\Sender::sendForOrder( $order, array(), $notification == 'all' );
|
509 |
}
|
510 |
}
|
511 |
}
|
512 |
$response['success'] = true;
|
|
|
513 |
$response['data'] = array( 'staffId' => $staff_id ); // make FullCalendar refetch events
|
514 |
} else {
|
515 |
// Single appointment.
|
@@ -546,28 +573,31 @@ class Ajax extends Lib\Base\Ajax
|
|
546 |
Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
|
547 |
// Outlook Calendar.
|
548 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
549 |
-
|
550 |
-
|
|
|
551 |
|
552 |
// Send notifications.
|
553 |
-
if ( $notification
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
} elseif ( $notification == 'all' ) {
|
558 |
$ca_list = $appointment->getCustomerAppointments( true );
|
559 |
foreach ( $ca_status_changed as $ca ) {
|
560 |
-
|
561 |
-
|
|
|
|
|
562 |
unset( $ca_list[ $ca->getId() ] );
|
563 |
}
|
564 |
foreach ( $ca_list as $ca ) {
|
565 |
-
Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), true );
|
566 |
}
|
567 |
}
|
568 |
|
569 |
$response['success'] = true;
|
570 |
$response['data'] = self::_getAppointmentForFC( $staff_id, $appointment->getId() );
|
|
|
571 |
} else {
|
572 |
$response['errors'] = array( 'db' => __( 'Could not save appointment in database.', 'bookly' ) );
|
573 |
}
|
@@ -825,10 +855,12 @@ class Ajax extends Lib\Base\Ajax
|
|
825 |
// Check customers for appointments limit
|
826 |
foreach ( $customers as $index => $customer ) {
|
827 |
if ( $service->appointmentsLimitReached( $customer['id'], array( $start_date ) ) ) {
|
828 |
-
$customer_error
|
829 |
$result['customers_appointments_limit'][] = sprintf( __( '%s has reached the limit of bookings for this service', 'bookly' ), $customer_error->getFullName() );
|
830 |
}
|
831 |
}
|
|
|
|
|
832 |
}
|
833 |
}
|
834 |
|
55 |
),
|
56 |
'extras_consider_duration' => (int) Lib\Proxy\ServiceExtras::considerDuration( true ),
|
57 |
'extras_multiply_nop' => (int) get_option( 'bookly_service_extras_multiply_nop', 1 ),
|
58 |
+
'customer_gr_def_app_status' => Lib\Proxy\CustomerGroups::prepareDefaultAppointmentStatuses( array( 0 => get_option( 'bookly_gen_default_appointment_status' ) ) ),
|
59 |
);
|
60 |
|
61 |
// Staff list.
|
128 |
|
129 |
/** @var Lib\Entities\Customer $customer */
|
130 |
// Customers list.
|
131 |
+
$customers_count = Lib\Entities\Customer::query( 'c' )->count();
|
132 |
+
if ( $customers_count < Lib\Entities\Customer::REMOTE_LIMIT ) {
|
133 |
+
foreach ( Lib\Entities\Customer::query()->sortBy( 'full_name' )->find() as $customer ) {
|
134 |
+
$name = $customer->getFullName();
|
135 |
+
if ( $customer->getEmail() != '' || $customer->getPhone() != '' ) {
|
136 |
+
$name .= ' (' . trim( $customer->getEmail() . ', ' . $customer->getPhone(), ', ' ) . ')';
|
137 |
+
}
|
138 |
|
139 |
+
$result['customers'][] = array(
|
140 |
+
'id' => $customer->getId(),
|
141 |
+
'name' => $name,
|
142 |
+
'group_id' => $customer->getGroupId(),
|
143 |
+
'custom_fields' => array(),
|
144 |
+
'timezone' => Lib\Proxy\Pro::getLastCustomerTimezone( $customer->getId() ),
|
145 |
+
'number_of_persons' => 1,
|
146 |
+
);
|
147 |
+
}
|
148 |
+
} else {
|
149 |
+
$result['customers'] = false;
|
150 |
}
|
151 |
|
152 |
// Time list.
|
258 |
p.total AS payment_total,
|
259 |
p.type AS payment_type,
|
260 |
p.details AS payment_details,
|
261 |
+
p.status AS payment_status,
|
262 |
+
c.full_name,
|
263 |
+
c.email,
|
264 |
+
c.phone,
|
265 |
+
c.group_id')
|
266 |
->leftJoin( 'Payment', 'p', 'p.id = ca.payment_id' )
|
267 |
+
->leftJoin( 'Customer', 'c', 'c.id = ca.customer_id' )
|
268 |
->where( 'ca.appointment_id', $appointment->getId() )
|
269 |
->fetchArray();
|
270 |
foreach ( $customers as $customer ) {
|
296 |
}
|
297 |
}
|
298 |
$custom_fields = (array) json_decode( $customer['custom_fields'], true );
|
299 |
+
$name = $customer['full_name'];
|
300 |
+
if ( $customer['email'] != '' || $customer['phone'] != '' ) {
|
301 |
+
$name .= ' (' . trim( $customer['email'] . ', ' . $customer['phone'], ', ' ) . ')';
|
302 |
+
}
|
303 |
+
$response['data']['customers_data'][] = array(
|
304 |
+
'id' => $customer['customer_id'],
|
305 |
+
'name' => $name,
|
306 |
+
'group_id' => $customer['group_id'],
|
307 |
+
'status' => $customer['status'],
|
308 |
+
'custom_fields' => array(),
|
309 |
+
'timezone' => Lib\Proxy\Pro::getLastCustomerTimezone( $customer['customer_id'] ),
|
310 |
+
'number_of_persons' => 1,
|
311 |
+
);
|
312 |
$response['data']['customers'][] = array(
|
313 |
'id' => $customer['customer_id'],
|
314 |
'ca_id' => $customer['id'],
|
328 |
'payment_id' => $customer['payment_id'],
|
329 |
'payment_type' => $customer['payment'] != $customer['payment_total'] ? 'partial' : 'full',
|
330 |
'payment_title' => $payment_title,
|
331 |
+
'group_id' => $customer['group_id'],
|
332 |
+
'status' => $customer['status'],
|
333 |
'timezone' => Lib\Proxy\Pro::getCustomerTimezone( $customer['time_zone'], $customer['time_zone_offset'] ),
|
334 |
);
|
335 |
}
|
357 |
$repeat = json_decode( self::parameter( 'repeat', '[]' ), true );
|
358 |
$schedule = self::parameter( 'schedule', array() );
|
359 |
$customers = json_decode( self::parameter( 'customers', '[]' ), true );
|
360 |
+
$notification = self::parameter( 'notification', false );
|
361 |
$internal_note = self::parameter( 'internal_note' );
|
362 |
$created_from = self::parameter( 'created_from' );
|
363 |
|
434 |
if ( ! isset ( $response['errors'] ) ) {
|
435 |
$duration = Lib\Slots\DatePoint::fromStr( $end_date )->diff( Lib\Slots\DatePoint::fromStr( $start_date ) );
|
436 |
if ( ! $skip_date && $repeat['enabled'] ) {
|
437 |
+
$queue = array();
|
438 |
// Series.
|
439 |
if ( ! empty ( $schedule ) ) {
|
440 |
/** @var DataHolders\Order[] $orders */
|
459 |
->save();
|
460 |
|
461 |
// Create order
|
462 |
+
if ( $notification ) {
|
463 |
$orders[ $customer['id'] ] = DataHolders\Order::create( Lib\Entities\Customer::find( $customer['id'] ) )
|
464 |
->addItem( 0, DataHolders\Series::create( $series ) );
|
465 |
}
|
512 |
Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
|
513 |
// Outlook Calendar.
|
514 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
|
|
|
|
515 |
|
516 |
+
if ( $notification ) {
|
517 |
+
// Waiting list.
|
518 |
+
Lib\Proxy\WaitingList::handleParticipantsChange( $queue, $appointment );
|
519 |
foreach ( $ca_list as $ca ) {
|
520 |
$item = DataHolders\Simple::create( $ca )
|
521 |
->setService( $service )
|
529 |
Proxy\RecurringAppointments::createBackendPayment( $series, $customer );
|
530 |
}
|
531 |
}
|
532 |
+
if ( $notification ) {
|
533 |
foreach ( $orders as $order ) {
|
534 |
+
Lib\Notifications\Booking\Sender::sendForOrder( $order, array(), $notification == 'all', $queue );
|
535 |
}
|
536 |
}
|
537 |
}
|
538 |
$response['success'] = true;
|
539 |
+
$response['queue'] = array( 'all' => $queue, 'changed_status' => array() );
|
540 |
$response['data'] = array( 'staffId' => $staff_id ); // make FullCalendar refetch events
|
541 |
} else {
|
542 |
// Single appointment.
|
573 |
Lib\Proxy\Pro::syncGoogleCalendarEvent( $appointment );
|
574 |
// Outlook Calendar.
|
575 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
576 |
+
|
577 |
+
$queue_changed_status = array();
|
578 |
+
$queue = array();
|
579 |
|
580 |
// Send notifications.
|
581 |
+
if ( $notification ) {
|
582 |
+
// Waiting list.
|
583 |
+
$queue = Lib\Proxy\WaitingList::handleParticipantsChange( $queue, $appointment );
|
584 |
+
|
|
|
585 |
$ca_list = $appointment->getCustomerAppointments( true );
|
586 |
foreach ( $ca_status_changed as $ca ) {
|
587 |
+
if ( $appointment_id ) {
|
588 |
+
Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), false, $queue_changed_status );
|
589 |
+
}
|
590 |
+
Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), true, $queue );
|
591 |
unset( $ca_list[ $ca->getId() ] );
|
592 |
}
|
593 |
foreach ( $ca_list as $ca ) {
|
594 |
+
Lib\Notifications\Booking\Sender::sendForCA( $ca, $appointment, array(), true, $queue );
|
595 |
}
|
596 |
}
|
597 |
|
598 |
$response['success'] = true;
|
599 |
$response['data'] = self::_getAppointmentForFC( $staff_id, $appointment->getId() );
|
600 |
+
$response['queue'] = array( 'all' => $queue, 'changed_status' => $queue_changed_status );
|
601 |
} else {
|
602 |
$response['errors'] = array( 'db' => __( 'Could not save appointment in database.', 'bookly' ) );
|
603 |
}
|
855 |
// Check customers for appointments limit
|
856 |
foreach ( $customers as $index => $customer ) {
|
857 |
if ( $service->appointmentsLimitReached( $customer['id'], array( $start_date ) ) ) {
|
858 |
+
$customer_error = Lib\Entities\Customer::find( $customer['id'] );
|
859 |
$result['customers_appointments_limit'][] = sprintf( __( '%s has reached the limit of bookings for this service', 'bookly' ), $customer_error->getFullName() );
|
860 |
}
|
861 |
}
|
862 |
+
|
863 |
+
$result['customers_appointments_limit'] = array_unique( $result['customers_appointments_limit'] );
|
864 |
}
|
865 |
}
|
866 |
|
backend/components/dialogs/appointment/edit/Dialog.php
CHANGED
@@ -41,10 +41,12 @@ class Dialog extends Lib\Base\Component
|
|
41 |
'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
|
42 |
'cf_per_service' => (int) Lib\Config::customFieldsPerService(),
|
43 |
'no_result_found' => __( 'No result found', 'bookly' ),
|
|
|
44 |
'staff_any' => get_option( 'bookly_l10n_option_employee' ),
|
45 |
'title' => array(
|
46 |
-
'edit_appointment'
|
47 |
-
'new_appointment'
|
|
|
48 |
),
|
49 |
) );
|
50 |
|
41 |
'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
|
42 |
'cf_per_service' => (int) Lib\Config::customFieldsPerService(),
|
43 |
'no_result_found' => __( 'No result found', 'bookly' ),
|
44 |
+
'searching' => __( 'Searching', 'bookly' ),
|
45 |
'staff_any' => get_option( 'bookly_l10n_option_employee' ),
|
46 |
'title' => array(
|
47 |
+
'edit_appointment' => __( 'Edit appointment', 'bookly' ),
|
48 |
+
'new_appointment' => __( 'New appointment', 'bookly' ),
|
49 |
+
'send_notifications' => __( 'Send notifications', 'bookly' ),
|
50 |
),
|
51 |
) );
|
52 |
|
backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js
CHANGED
@@ -27,6 +27,7 @@
|
|
27 |
id : null,
|
28 |
staff : null,
|
29 |
staff_any : null,
|
|
|
30 |
service : null,
|
31 |
custom_service_name : null,
|
32 |
custom_service_price: null,
|
@@ -53,7 +54,9 @@
|
|
53 |
customers : [],
|
54 |
notification : null,
|
55 |
series_id : null,
|
56 |
-
expand_customers_list : false
|
|
|
|
|
57 |
},
|
58 |
l10n : {
|
59 |
staff_any: BooklyL10nAppDialog.staff_any
|
@@ -72,8 +75,87 @@
|
|
72 |
ds.form.staff = data.staff[0];
|
73 |
}
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
ds.form.start_time = data.start_time[0];
|
76 |
ds.form.end_time = data.end_time[1];
|
|
|
77 |
deferred.resolve();
|
78 |
},
|
79 |
'json'
|
@@ -145,27 +227,31 @@
|
|
145 |
},
|
146 |
resetCustomers : function() {
|
147 |
ds.data.customers.forEach(function(customer) {
|
148 |
-
customer
|
149 |
-
customer.extras = [];
|
150 |
-
customer.extras_consider_duration = ds.data.extras_consider_duration;
|
151 |
-
customer.extras_multiply_nop = ds.data.extras_multiply_nop;
|
152 |
-
customer.number_of_persons = 1;
|
153 |
-
customer.notes = null;
|
154 |
-
customer.collaborative_token = null;
|
155 |
-
customer.collaborative_service = null;
|
156 |
-
customer.compound_token = null;
|
157 |
-
customer.compound_service = null;
|
158 |
-
customer.payment_id = null;
|
159 |
-
customer.payment_type = null;
|
160 |
-
customer.payment_title = null;
|
161 |
-
customer.payment_create = false;
|
162 |
-
customer.payment_price = null;
|
163 |
-
customer.payment_tax = null;
|
164 |
-
customer.package_id = null;
|
165 |
-
customer.series_id = null;
|
166 |
-
customer.ca_id = null;
|
167 |
});
|
168 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
getDataForStartTime : function() {
|
170 |
var result = ds.data.start_time.slice();
|
171 |
if (
|
@@ -374,7 +460,9 @@
|
|
374 |
},
|
375 |
customers : [],
|
376 |
internal_note : null,
|
377 |
-
expand_customers_list : false
|
|
|
|
|
378 |
});
|
379 |
$scope.errors = {};
|
380 |
dataSource.setEndTimeBasedOnService();
|
@@ -405,6 +493,9 @@
|
|
405 |
staff = $scope.dataSource.findStaff(response.data.staff_id);
|
406 |
$scope.dataSource.data.app_start_time = response.data.start_time;
|
407 |
$scope.dataSource.data.app_end_time = response.data.end_time;
|
|
|
|
|
|
|
408 |
jQuery.extend($scope.form, {
|
409 |
screen : 'main',
|
410 |
id : appointment_id,
|
@@ -613,19 +704,7 @@
|
|
613 |
$scope.onRepeatChange();
|
614 |
};
|
615 |
|
616 |
-
$scope.onCustomersChange = function(
|
617 |
-
if (dataSource.form.service && dataSource.form.customers.length > old_customers.length) {
|
618 |
-
var ids = jQuery.map(old_customers, function(customer) {
|
619 |
-
return customer.id;
|
620 |
-
});
|
621 |
-
var nop = dataSource.form.service.capacity_min - old_nop;
|
622 |
-
dataSource.form.customers.some(function (item) {
|
623 |
-
if (jQuery.inArray(item.id, ids) == -1) {
|
624 |
-
item.number_of_persons = nop > 0 ? nop : 1;
|
625 |
-
return true;
|
626 |
-
}
|
627 |
-
});
|
628 |
-
}
|
629 |
$scope.errors.customers_appointments_limit = [];
|
630 |
checkAppointmentErrors();
|
631 |
};
|
@@ -635,6 +714,9 @@
|
|
635 |
};
|
636 |
|
637 |
$scope.processForm = function() {
|
|
|
|
|
|
|
638 |
$scope.loading = true;
|
639 |
|
640 |
$scope.errors = {};
|
@@ -700,14 +782,20 @@
|
|
700 |
created_from : typeof BooklySCCalendarL10n !== 'undefined' ? 'staff-cabinet' : 'backend'
|
701 |
},
|
702 |
function (response) {
|
703 |
-
$scope.$apply(function($scope) {
|
704 |
if (response.success) {
|
705 |
if (callback) {
|
706 |
// Call callback.
|
707 |
callback(response.data);
|
708 |
}
|
709 |
-
|
710 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
} else {
|
712 |
$scope.errors = response.errors;
|
713 |
}
|
@@ -720,9 +808,65 @@
|
|
720 |
|
721 |
// On 'Cancel' button click.
|
722 |
$scope.closeDialog = function () {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
723 |
// Close the dialog.
|
724 |
$element.children().modal('hide');
|
725 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
726 |
|
727 |
$scope.statusToString = function (status) {
|
728 |
return dataSource.data.status.items[status];
|
@@ -956,10 +1100,11 @@
|
|
956 |
* Payment Details *
|
957 |
**************************************************************************************************************/
|
958 |
|
959 |
-
$scope.attachPaymentModal = function (customer) {
|
960 |
var $dialog = jQuery('#bookly-payment-attach-modal');
|
961 |
$scope.form.attach = {
|
962 |
customer_id : customer.id,
|
|
|
963 |
payment_method: 'create',
|
964 |
payment_price : null,
|
965 |
payment_tax : null,
|
@@ -970,15 +1115,15 @@
|
|
970 |
});
|
971 |
};
|
972 |
|
973 |
-
$scope.attachPayment = function (attach_method, price, tax, payment_id, customer_id) {
|
974 |
var $dialog = jQuery('#bookly-payment-details-modal');
|
975 |
if (attach_method == 'search') {
|
976 |
-
$dialog.data('payment_id', payment_id).data('payment_bind', true).data('customer_id', customer_id).modal({show: true}).on('hidden.bs.modal', function () {
|
977 |
jQuery('body').addClass('modal-open');
|
978 |
});
|
979 |
} else {
|
980 |
-
jQuery.each($scope.dataSource.
|
981 |
-
if (item.id == customer_id) {
|
982 |
item.payment_create = true;
|
983 |
item.payment_price = price;
|
984 |
item.payment_tax = tax;
|
@@ -988,11 +1133,11 @@
|
|
988 |
}
|
989 |
};
|
990 |
|
991 |
-
$scope.callbackPayment = function (payment_action, payment_id, payment_title, customer_id, payment_type) {
|
992 |
if (payment_action == 'bind') {
|
993 |
// Bind payment
|
994 |
-
jQuery.each($scope.dataSource.
|
995 |
-
if (item.id == customer_id) {
|
996 |
item.payment_id = payment_id;
|
997 |
item.payment_type = payment_type;
|
998 |
item.payment_title = payment_title;
|
@@ -1000,7 +1145,7 @@
|
|
1000 |
});
|
1001 |
} else {
|
1002 |
// Complete payment
|
1003 |
-
jQuery.each($scope.dataSource.
|
1004 |
if (item.payment_id == payment_id) {
|
1005 |
item.payment_type = 'full';
|
1006 |
item.payment_title = payment_title;
|
@@ -1329,15 +1474,6 @@
|
|
1329 |
return input;
|
1330 |
};
|
1331 |
});
|
1332 |
-
|
1333 |
-
jQuery('#bookly-select2').select2({
|
1334 |
-
width: '100%',
|
1335 |
-
theme: 'bootstrap',
|
1336 |
-
allowClear: false,
|
1337 |
-
language : {
|
1338 |
-
noResults: function() { return BooklyL10nAppDialog.no_result_found; }
|
1339 |
-
}
|
1340 |
-
});
|
1341 |
})();
|
1342 |
|
1343 |
/**
|
@@ -1347,16 +1483,19 @@
|
|
1347 |
* @param function callback
|
1348 |
*/
|
1349 |
var showAppointmentDialog = function (appointment_id, staff_id, start_date, callback) {
|
1350 |
-
if (jQuery.fn.tooltip.Constructor.VERSION.split('.')[0] === '4') {
|
1351 |
jQuery('#bookly-tbs .modal.fade').removeClass('fade');
|
1352 |
}
|
1353 |
var $dialog = jQuery('#bookly-appointment-dialog');
|
1354 |
var $scope = angular.element($dialog[0]).scope();
|
1355 |
$scope.$apply(function ($scope) {
|
1356 |
$scope.loading = true;
|
1357 |
-
$
|
1358 |
-
.
|
1359 |
-
|
|
|
|
|
|
|
1360 |
// Populate data source.
|
1361 |
$scope.dataSource.loadData().then(function() {
|
1362 |
$scope.loading = false;
|
27 |
id : null,
|
28 |
staff : null,
|
29 |
staff_any : null,
|
30 |
+
customer_gr_def_app_status: [],
|
31 |
service : null,
|
32 |
custom_service_name : null,
|
33 |
custom_service_price: null,
|
54 |
customers : [],
|
55 |
notification : null,
|
56 |
series_id : null,
|
57 |
+
expand_customers_list : false,
|
58 |
+
queue_type : false,
|
59 |
+
queue : [],
|
60 |
},
|
61 |
l10n : {
|
62 |
staff_any: BooklyL10nAppDialog.staff_any
|
75 |
ds.form.staff = data.staff[0];
|
76 |
}
|
77 |
|
78 |
+
if (data.customers === false) {
|
79 |
+
ds.data.customers = [];
|
80 |
+
ds.data.customers_remote = true;
|
81 |
+
// Init select2 remote.
|
82 |
+
jQuery('#bookly-appointment-dialog-select2').select2({
|
83 |
+
width : '100%',
|
84 |
+
theme : 'bootstrap',
|
85 |
+
allowClear: false,
|
86 |
+
language : {
|
87 |
+
noResults: function () {
|
88 |
+
return BooklyL10nAppDialog.no_result_found;
|
89 |
+
},
|
90 |
+
searching: function () {
|
91 |
+
return BooklyL10nAppDialog.searching;
|
92 |
+
}
|
93 |
+
},
|
94 |
+
ajax : {
|
95 |
+
url : ajaxurl,
|
96 |
+
dataType : 'json',
|
97 |
+
delay : 250,
|
98 |
+
data : function (params) {
|
99 |
+
params.page = params.page || 1;
|
100 |
+
return {
|
101 |
+
action : 'bookly_get_customers_list',
|
102 |
+
filter : params.term,
|
103 |
+
page : params.page,
|
104 |
+
timezone : true,
|
105 |
+
csrf_token: BooklyL10nAppDialog.csrf_token
|
106 |
+
};
|
107 |
+
},
|
108 |
+
processResults: function (data) {
|
109 |
+
data.results.forEach(function (customer) {
|
110 |
+
if (!ds.findCustomer(customer.id)) {
|
111 |
+
ds.resetCustomer(customer);
|
112 |
+
ds.data.customers.push(customer);
|
113 |
+
}
|
114 |
+
});
|
115 |
+
return {
|
116 |
+
results : data.results.map(function (item) {
|
117 |
+
return {id: item.id, text: item.name}
|
118 |
+
}),
|
119 |
+
pagination: data.pagination
|
120 |
+
};
|
121 |
+
}
|
122 |
+
},
|
123 |
+
}).on("select2:selecting", function (data) {
|
124 |
+
data.preventDefault();
|
125 |
+
var $scope = angular.element(jQuery('#bookly-appointment-dialog')).scope();
|
126 |
+
$scope.$apply(function ($scope) {
|
127 |
+
let clone = {};
|
128 |
+
angular.copy($scope.dataSource.data.customers.find(x => x.id === data.params.args.data.id), clone);
|
129 |
+
$scope.dataSource.resetCustomer(clone);
|
130 |
+
$scope.form.customers.push(clone);
|
131 |
+
$scope.onCustomersChange();
|
132 |
+
});
|
133 |
+
jQuery(this).select2('close');
|
134 |
+
});
|
135 |
+
} else {
|
136 |
+
jQuery('#bookly-appointment-dialog-select2').select2({
|
137 |
+
width : '100%',
|
138 |
+
theme : 'bootstrap',
|
139 |
+
allowClear: false,
|
140 |
+
language : {
|
141 |
+
noResults: function () {
|
142 |
+
return BooklyL10nAppDialog.no_result_found;
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}).on('select2:select select2:unselect', function (data) {
|
146 |
+
var $scope = angular.element(jQuery('#bookly-appointment-dialog')).scope();
|
147 |
+
$scope.$apply(function ($scope) {
|
148 |
+
let clone = {};
|
149 |
+
angular.copy($scope.dataSource.data.customers.find(x => x.id === data.params.data.id), clone);
|
150 |
+
$scope.dataSource.resetCustomer(clone);
|
151 |
+
$scope.form.customers.push(clone);
|
152 |
+
$scope.onCustomersChange();
|
153 |
+
});
|
154 |
+
});
|
155 |
+
}
|
156 |
ds.form.start_time = data.start_time[0];
|
157 |
ds.form.end_time = data.end_time[1];
|
158 |
+
ds.form.customer_gr_def_app_status = data.customer_gr_def_app_status;
|
159 |
deferred.resolve();
|
160 |
},
|
161 |
'json'
|
227 |
},
|
228 |
resetCustomers : function() {
|
229 |
ds.data.customers.forEach(function(customer) {
|
230 |
+
ds.resetCustomer(customer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
});
|
232 |
},
|
233 |
+
resetCustomer: function(customer) {
|
234 |
+
customer.custom_fields = [];
|
235 |
+
customer.extras = [];
|
236 |
+
customer.extras_consider_duration = ds.data.extras_consider_duration;
|
237 |
+
customer.extras_multiply_nop = ds.data.extras_multiply_nop;
|
238 |
+
customer.number_of_persons = !ds.form.service || ds.getTotalNumberOfNotCancelledPersons() ? 1 : ds.form.service.capacity_min;
|
239 |
+
customer.notes = null;
|
240 |
+
customer.collaborative_token = null;
|
241 |
+
customer.collaborative_service = null;
|
242 |
+
customer.compound_token = null;
|
243 |
+
customer.compound_service = null;
|
244 |
+
customer.payment_id = null;
|
245 |
+
customer.payment_type = null;
|
246 |
+
customer.payment_title = null;
|
247 |
+
customer.payment_create = false;
|
248 |
+
customer.payment_price = null;
|
249 |
+
customer.payment_tax = null;
|
250 |
+
customer.package_id = null;
|
251 |
+
customer.series_id = null;
|
252 |
+
customer.ca_id = null;
|
253 |
+
customer.status = ds.form.customer_gr_def_app_status[parseInt(customer.group_id||0)];
|
254 |
+
},
|
255 |
getDataForStartTime : function() {
|
256 |
var result = ds.data.start_time.slice();
|
257 |
if (
|
460 |
},
|
461 |
customers : [],
|
462 |
internal_note : null,
|
463 |
+
expand_customers_list : false,
|
464 |
+
queue_type : false,
|
465 |
+
queue : [],
|
466 |
});
|
467 |
$scope.errors = {};
|
468 |
dataSource.setEndTimeBasedOnService();
|
493 |
staff = $scope.dataSource.findStaff(response.data.staff_id);
|
494 |
$scope.dataSource.data.app_start_time = response.data.start_time;
|
495 |
$scope.dataSource.data.app_end_time = response.data.end_time;
|
496 |
+
if ($scope.dataSource.data.customers_remote) {
|
497 |
+
jQuery.extend($scope.dataSource.data.customers, response.data.customers_data);
|
498 |
+
}
|
499 |
jQuery.extend($scope.form, {
|
500 |
screen : 'main',
|
501 |
id : appointment_id,
|
704 |
$scope.onRepeatChange();
|
705 |
};
|
706 |
|
707 |
+
$scope.onCustomersChange = function() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
$scope.errors.customers_appointments_limit = [];
|
709 |
checkAppointmentErrors();
|
710 |
};
|
714 |
};
|
715 |
|
716 |
$scope.processForm = function() {
|
717 |
+
if ($scope.form.screen === 'queue') {
|
718 |
+
return $scope.queueSend();
|
719 |
+
}
|
720 |
$scope.loading = true;
|
721 |
|
722 |
$scope.errors = {};
|
782 |
created_from : typeof BooklySCCalendarL10n !== 'undefined' ? 'staff-cabinet' : 'backend'
|
783 |
},
|
784 |
function (response) {
|
785 |
+
$scope.$apply(function ($scope) {
|
786 |
if (response.success) {
|
787 |
if (callback) {
|
788 |
// Call callback.
|
789 |
callback(response.data);
|
790 |
}
|
791 |
+
$scope.form.queue = response.queue;
|
792 |
+
if (response.queue.all.length || response.queue.changed_status.length) {
|
793 |
+
$scope.form.queue_type = $scope.form.queue.changed_status.length ? 'changed_status' : 'all'
|
794 |
+
$scope.form.screen = 'queue';
|
795 |
+
} else {
|
796 |
+
// Close the dialog.
|
797 |
+
$element.children().modal('hide');
|
798 |
+
}
|
799 |
} else {
|
800 |
$scope.errors = response.errors;
|
801 |
}
|
808 |
|
809 |
// On 'Cancel' button click.
|
810 |
$scope.closeDialog = function () {
|
811 |
+
if ($scope.form.screen === 'queue') {
|
812 |
+
var queue = [];
|
813 |
+
jQuery.each($scope.form.queue, function (type, value) {
|
814 |
+
jQuery.each(value, function (key, email) {
|
815 |
+
queue.push(email);
|
816 |
+
});
|
817 |
+
});
|
818 |
+
jQuery.post(
|
819 |
+
ajaxurl,
|
820 |
+
{
|
821 |
+
action : 'bookly_clear_attachments',
|
822 |
+
csrf_token: BooklyL10nAppDialog.csrf_token,
|
823 |
+
queue : queue
|
824 |
+
},
|
825 |
+
'json'
|
826 |
+
);
|
827 |
+
}
|
828 |
// Close the dialog.
|
829 |
$element.children().modal('hide');
|
830 |
};
|
831 |
+
// On 'Cancel' button click in queue window.
|
832 |
+
$scope.queueSend = function () {
|
833 |
+
var ladda = Ladda.create(jQuery('button.bookly-js-queue-send').get(0));
|
834 |
+
ladda.start();
|
835 |
+
var queue = [];
|
836 |
+
jQuery.each($scope.form.queue[$scope.form.queue_type], function (key, email) {
|
837 |
+
if (email.checked == 1) {
|
838 |
+
queue.push(email);
|
839 |
+
}
|
840 |
+
});
|
841 |
+
var queue_full = [];
|
842 |
+
jQuery.each($scope.form.queue, function (type, value) {
|
843 |
+
jQuery.each(value, function (key, email) {
|
844 |
+
queue_full.push(email);
|
845 |
+
});
|
846 |
+
});
|
847 |
+
jQuery.post(
|
848 |
+
ajaxurl,
|
849 |
+
{
|
850 |
+
action : 'bookly_send_queue',
|
851 |
+
csrf_token: BooklyL10nAppDialog.csrf_token,
|
852 |
+
queue : queue,
|
853 |
+
queue_full: queue_full
|
854 |
+
},
|
855 |
+
function (response) {
|
856 |
+
ladda.stop();
|
857 |
+
$scope.$apply(function ($scope) {
|
858 |
+
if (response.success) {
|
859 |
+
// Close the dialog.
|
860 |
+
$element.children().modal('hide');
|
861 |
+
} else {
|
862 |
+
$scope.errors = response.errors;
|
863 |
+
}
|
864 |
+
$scope.loading = false;
|
865 |
+
});
|
866 |
+
},
|
867 |
+
'json'
|
868 |
+
);
|
869 |
+
};
|
870 |
|
871 |
$scope.statusToString = function (status) {
|
872 |
return dataSource.data.status.items[status];
|
1100 |
* Payment Details *
|
1101 |
**************************************************************************************************************/
|
1102 |
|
1103 |
+
$scope.attachPaymentModal = function (customer, index ) {
|
1104 |
var $dialog = jQuery('#bookly-payment-attach-modal');
|
1105 |
$scope.form.attach = {
|
1106 |
customer_id : customer.id,
|
1107 |
+
customer_index: index,
|
1108 |
payment_method: 'create',
|
1109 |
payment_price : null,
|
1110 |
payment_tax : null,
|
1115 |
});
|
1116 |
};
|
1117 |
|
1118 |
+
$scope.attachPayment = function (attach_method, price, tax, payment_id, customer_id, customer_index) {
|
1119 |
var $dialog = jQuery('#bookly-payment-details-modal');
|
1120 |
if (attach_method == 'search') {
|
1121 |
+
$dialog.data('payment_id', payment_id).data('payment_bind', true).data('customer_id', customer_id).data('customer_index', customer_index).modal({show: true}).on('hidden.bs.modal', function () {
|
1122 |
jQuery('body').addClass('modal-open');
|
1123 |
});
|
1124 |
} else {
|
1125 |
+
jQuery.each($scope.dataSource.form.customers, function (key, item) {
|
1126 |
+
if (item.id == customer_id && key == customer_index) {
|
1127 |
item.payment_create = true;
|
1128 |
item.payment_price = price;
|
1129 |
item.payment_tax = tax;
|
1133 |
}
|
1134 |
};
|
1135 |
|
1136 |
+
$scope.callbackPayment = function (payment_action, payment_id, payment_title, customer_id, customer_index, payment_type) {
|
1137 |
if (payment_action == 'bind') {
|
1138 |
// Bind payment
|
1139 |
+
jQuery.each($scope.dataSource.form.customers, function (key, item) {
|
1140 |
+
if (item.id == customer_id && key == customer_index) {
|
1141 |
item.payment_id = payment_id;
|
1142 |
item.payment_type = payment_type;
|
1143 |
item.payment_title = payment_title;
|
1145 |
});
|
1146 |
} else {
|
1147 |
// Complete payment
|
1148 |
+
jQuery.each($scope.dataSource.form.customers, function (key, item) {
|
1149 |
if (item.payment_id == payment_id) {
|
1150 |
item.payment_type = 'full';
|
1151 |
item.payment_title = payment_title;
|
1474 |
return input;
|
1475 |
};
|
1476 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1477 |
})();
|
1478 |
|
1479 |
/**
|
1483 |
* @param function callback
|
1484 |
*/
|
1485 |
var showAppointmentDialog = function (appointment_id, staff_id, start_date, callback) {
|
1486 |
+
if (jQuery.fn.tooltip.Constructor.VERSION !== undefined && jQuery.fn.tooltip.Constructor.VERSION.split('.')[0] === '4') {
|
1487 |
jQuery('#bookly-tbs .modal.fade').removeClass('fade');
|
1488 |
}
|
1489 |
var $dialog = jQuery('#bookly-appointment-dialog');
|
1490 |
var $scope = angular.element($dialog[0]).scope();
|
1491 |
$scope.$apply(function ($scope) {
|
1492 |
$scope.loading = true;
|
1493 |
+
$scope.form.titles = {
|
1494 |
+
new : BooklyL10nAppDialog.title.new_appointment,
|
1495 |
+
edit : BooklyL10nAppDialog.title.edit_appointment,
|
1496 |
+
queue: BooklyL10nAppDialog.title.send_notifications
|
1497 |
+
};
|
1498 |
+
$scope.form.title = appointment_id ? BooklyL10nAppDialog.title.edit_appointment : BooklyL10nAppDialog.title.new_appointment;
|
1499 |
// Populate data source.
|
1500 |
$scope.dataSource.loadData().then(function() {
|
1501 |
$scope.loading = false;
|
backend/components/dialogs/appointment/edit/templates/edit.php
CHANGED
@@ -14,7 +14,7 @@ use Bookly\Lib\Entities\CustomerAppointment;
|
|
14 |
<form ng-submit=processForm()>
|
15 |
<div class="modal-header">
|
16 |
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
17 |
-
<div class="modal-title h2"
|
18 |
</div>
|
19 |
<div ng-show=loading class="modal-body">
|
20 |
<div class="bookly-loading"></div>
|
@@ -203,10 +203,10 @@ use Bookly\Lib\Entities\CustomerAppointment;
|
|
203 |
<div <?php if ( ! Config::waitingListActive() ): ?>ng-show="!form.service || dataSource.getTotalNumberOfNotCancelledPersons() < form.service.capacity_max"<?php endif ?>>
|
204 |
<div class="form-group">
|
205 |
<div class="input-group">
|
206 |
-
<select id="bookly-select2" multiple data-placeholder="<?php esc_attr_e( '-- Search customers --', 'bookly' ) ?>"
|
207 |
class="form-control"
|
208 |
-
|
209 |
-
|
210 |
</select>
|
211 |
<span class="input-group-btn">
|
212 |
<a class="btn btn-success" ng-click="openNewCustomerDialog()">
|
@@ -224,26 +224,48 @@ use Bookly\Lib\Entities\CustomerAppointment;
|
|
224 |
</div>
|
225 |
|
226 |
<div class=form-group>
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
<label for="bookly-notification"><?php esc_html_e( 'Send notifications', 'bookly' ) ?></label>
|
228 |
<p class="help-block"><?php esc_html_e( 'If you have added a new customer to this appointment or changed the appointment status for an existing customer, and for these records you want the corresponding email or SMS notifications to be sent to their recipients, select the "Send if new or status changed" option before clicking Save. You can also send notifications as if all customers were added as new by selecting "Send as for new".', 'bookly' ) ?></p>
|
229 |
-
<
|
230 |
-
|
231 |
-
<option value="changed_status"><?php esc_html_e( 'Send if new or status changed', 'bookly' ) ?></option>
|
232 |
-
<option value="all"><?php esc_html_e( 'Send as for new', 'bookly' ) ?></option>
|
233 |
-
</select>
|
234 |
</div>
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
239 |
</div>
|
240 |
</div>
|
241 |
<?php Proxy\RecurringAppointments::renderSchedule() ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
<div class="modal-footer">
|
243 |
<div ng-hide=loading>
|
244 |
<?php Proxy\Shared::renderAppointmentDialogFooter() ?>
|
245 |
-
<?php Buttons::renderSubmit( null, null, null, array( 'ng-hide' => 'form.repeat.enabled && !form.skip_date && form.screen == \'main\'', 'ng-disabled' => '!form.skip_date && form.repeat.enabled && schIsScheduleEmpty()', 'formnovalidate' => '' ) ) ?>
|
246 |
-
<?php Buttons::
|
|
|
247 |
</div>
|
248 |
</div>
|
249 |
</form>
|
@@ -251,7 +273,7 @@ use Bookly\Lib\Entities\CustomerAppointment;
|
|
251 |
</div>
|
252 |
</div>
|
253 |
<div customer-dialog=createCustomer(customer)></div>
|
254 |
-
<div payment-details-dialog="callbackPayment(payment_action, payment_id, payment_title, customer_id, payment_type)"></div>
|
255 |
|
256 |
<?php Dialogs\Appointment\CustomerDetails\Dialog::render() ?>
|
257 |
<?php AttachPaymentProxy\Pro::renderAttachPaymentDialog() ?>
|
14 |
<form ng-submit=processForm()>
|
15 |
<div class="modal-header">
|
16 |
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
17 |
+
<div class="modal-title h2">{{ form.screen == 'queue' ? form.titles.queue : form.title }}</div>
|
18 |
</div>
|
19 |
<div ng-show=loading class="modal-body">
|
20 |
<div class="bookly-loading"></div>
|
203 |
<div <?php if ( ! Config::waitingListActive() ): ?>ng-show="!form.service || dataSource.getTotalNumberOfNotCancelledPersons() < form.service.capacity_max"<?php endif ?>>
|
204 |
<div class="form-group">
|
205 |
<div class="input-group">
|
206 |
+
<select id="bookly-appointment-dialog-select2" multiple data-placeholder="<?php esc_attr_e( '-- Search customers --', 'bookly' ) ?>"
|
207 |
class="form-control"
|
208 |
+
>
|
209 |
+
<option ng-repeat="customer in dataSource.data.customers" value="{{customer.id}}">{{customer.name}}</option>
|
210 |
</select>
|
211 |
<span class="input-group-btn">
|
212 |
<a class="btn btn-success" ng-click="openNewCustomerDialog()">
|
224 |
</div>
|
225 |
|
226 |
<div class=form-group>
|
227 |
+
<label for="bookly-internal-note"><?php esc_html_e( 'Internal note', 'bookly' ) ?></label>
|
228 |
+
<textarea class="form-control" ng-model=form.internal_note id="bookly-internal-note"></textarea>
|
229 |
+
</div>
|
230 |
+
</div>
|
231 |
+
<div ng-hide="loading || form.screen != 'queue'" class="modal-body">
|
232 |
+
<div class="form-group" ng-hide="!form.queue.all.length || !form.queue.changed_status.length">
|
233 |
<label for="bookly-notification"><?php esc_html_e( 'Send notifications', 'bookly' ) ?></label>
|
234 |
<p class="help-block"><?php esc_html_e( 'If you have added a new customer to this appointment or changed the appointment status for an existing customer, and for these records you want the corresponding email or SMS notifications to be sent to their recipients, select the "Send if new or status changed" option before clicking Save. You can also send notifications as if all customers were added as new by selecting "Send as for new".', 'bookly' ) ?></p>
|
235 |
+
<div class="radio"><label><input type="radio" name="queue_type" value="changed_status" ng-model=form.queue_type><?php esc_html_e( 'Send if new or status changed', 'bookly' ) ?></label></div>
|
236 |
+
<div class="radio"><label><input type="radio" name="queue_type" value="all" ng-model=form.queue_type><?php esc_html_e( 'Send as for new', 'bookly' ) ?></label></div>
|
|
|
|
|
|
|
237 |
</div>
|
238 |
+
<div ng-repeat="(key, value) in form.queue.all">
|
239 |
+
<div class="checkbox bookly-margin-bottom-lg bookly-margin-top-remove" ng-hide="form.queue_type == 'changed_status'">
|
240 |
+
<label>
|
241 |
+
<input type=checkbox ng-model=value.checked ng-true-value="1" ng-false-value="0" ng-init="value.checked=1"/> <i class="fa fa-fw" ng-class="{'fa-sms':value.gateway == 'sms', 'fa-envelope':value.gateway != 'sms'}"></i> <b>{{value.data.name}}</b> ({{value.address}})<br/>
|
242 |
+
{{ value.name }}
|
243 |
+
</label>
|
244 |
+
</div>
|
245 |
+
</div>
|
246 |
+
<div ng-repeat="(key, value) in form.queue.changed_status">
|
247 |
+
<div class="checkbox bookly-margin-bottom-lg bookly-margin-top-remove" ng-hide="form.queue_type != 'changed_status'">
|
248 |
+
<label>
|
249 |
+
<input type=checkbox ng-model=value.checked ng-true-value="1" ng-false-value="0" ng-init="value.checked=1"/> <i class="fa fa-fw" ng-class="{'fa-sms':value.gateway == 'sms', 'fa-envelope':value.gateway != 'sms'}"></i> <b>{{value.data.name}}</b> ({{value.address}})<br/>
|
250 |
+
{{ value.name }}
|
251 |
+
</label>
|
252 |
+
</div>
|
253 |
</div>
|
254 |
</div>
|
255 |
<?php Proxy\RecurringAppointments::renderSchedule() ?>
|
256 |
+
<div ng-hide="loading || form.screen != 'main'" class="modal-body bookly-padding-top-remove" style="margin-top: -15px;">
|
257 |
+
<div class="checkbox bookly-margin-bottom-lg bookly-margin-top-remove">
|
258 |
+
<label>
|
259 |
+
<input type=checkbox ng-model=form.notification ng-true-value="1" ng-false-value="0" ng-init="form.notification=<?php echo get_user_meta( get_current_user_id(), 'bookly_appointment_form_send_notifications', true ) ?: 0 ?>"/><b><?php esc_html_e( 'Send notifications', 'bookly' ) ?></b>
|
260 |
+
</label>
|
261 |
+
</div>
|
262 |
+
</div>
|
263 |
<div class="modal-footer">
|
264 |
<div ng-hide=loading>
|
265 |
<?php Proxy\Shared::renderAppointmentDialogFooter() ?>
|
266 |
+
<?php Buttons::renderSubmit( null, null, null, array( 'ng-hide' => 'form.screen == \'queue\' || (form.repeat.enabled && !form.skip_date && form.screen == \'main\')', 'ng-disabled' => '!form.skip_date && form.repeat.enabled && schIsScheduleEmpty()', 'formnovalidate' => '' ) ) ?>
|
267 |
+
<?php Buttons::renderSubmit( null, 'bookly-js-queue-send', esc_html__( 'Send', 'bookly' ), array( 'ng-show' => 'form.screen == \'queue\'' ) ) ?>
|
268 |
+
<?php Buttons::renderCustom( null, 'btn-lg btn-default', esc_html__( 'Cancel', 'bookly' ), array( 'ng-click' => 'closeDialog()', 'data-dismiss' => 'modal' ) ) ?>
|
269 |
</div>
|
270 |
</div>
|
271 |
</form>
|
273 |
</div>
|
274 |
</div>
|
275 |
<div customer-dialog=createCustomer(customer)></div>
|
276 |
+
<div payment-details-dialog="callbackPayment(payment_action, payment_id, payment_title, customer_id, customer_index, payment_type)"></div>
|
277 |
|
278 |
<?php Dialogs\Appointment\CustomerDetails\Dialog::render() ?>
|
279 |
<?php AttachPaymentProxy\Pro::renderAttachPaymentDialog() ?>
|
backend/components/dialogs/customer/edit/resources/js/ng-customer.js
CHANGED
@@ -68,10 +68,6 @@
|
|
68 |
// Init select2 for wp_users.
|
69 |
jQuery('#wp_user')
|
70 |
.val(null)
|
71 |
-
.on('select2:unselecting', function(e) {
|
72 |
-
e.preventDefault();
|
73 |
-
jQuery(this).val(null).trigger('change');
|
74 |
-
})
|
75 |
.select2({
|
76 |
width: '100%',
|
77 |
theme: 'bootstrap',
|
68 |
// Init select2 for wp_users.
|
69 |
jQuery('#wp_user')
|
70 |
.val(null)
|
|
|
|
|
|
|
|
|
71 |
.select2({
|
72 |
width: '100%',
|
73 |
theme: 'bootstrap',
|
backend/components/dialogs/notifications/templates/_types.php
CHANGED
@@ -26,7 +26,7 @@ use Bookly\Lib\Config;
|
|
26 |
data-set="instantly"
|
27 |
data-recipients='["customer"]'
|
28 |
data-icon='<?php echo esc_attr( Notification::getIcon( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?>'
|
29 |
-
data-attach='["invoice"]'><?php echo esc_attr( Notification::getTitle( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?></option>
|
30 |
<?php endif ?>
|
31 |
<option value="<?php echo Notification::TYPE_CUSTOMER_APPOINTMENT_STATUS_CHANGED ?>"
|
32 |
data-set="instantly"
|
26 |
data-set="instantly"
|
27 |
data-recipients='["customer"]'
|
28 |
data-icon='<?php echo esc_attr( Notification::getIcon( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?>'
|
29 |
+
data-attach='["ics","invoice"]'><?php echo esc_attr( Notification::getTitle( Notification::TYPE_NEW_BOOKING_COMBINED ) ) ?></option>
|
30 |
<?php endif ?>
|
31 |
<option value="<?php echo Notification::TYPE_CUSTOMER_APPOINTMENT_STATUS_CHANGED ?>"
|
32 |
data-set="instantly"
|
backend/components/dialogs/payment/Ajax.php
CHANGED
@@ -102,4 +102,25 @@ class Ajax extends Lib\Base\Ajax
|
|
102 |
wp_send_json_success( array( 'payment_title' => $payment_title, 'payment_type' => $payment->getPaid() == $payment->getTotal() ? 'full' : 'partial' ) );
|
103 |
}
|
104 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
102 |
wp_send_json_success( array( 'payment_title' => $payment_title, 'payment_type' => $payment->getPaid() == $payment->getTotal() ? 'full' : 'partial' ) );
|
103 |
}
|
104 |
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Extend parent method to control access on staff member level.
|
108 |
+
*
|
109 |
+
* @param string $action
|
110 |
+
* @return bool
|
111 |
+
*/
|
112 |
+
protected static function hasAccess( $action )
|
113 |
+
{
|
114 |
+
if ( parent::hasAccess( $action ) ) {
|
115 |
+
if ( ! Lib\Utils\Common::isCurrentUserAdmin() && $action === 'completePayment' ) {
|
116 |
+
$staff = new Lib\Entities\Staff();
|
117 |
+
|
118 |
+
return $staff->loadBy( array( 'wp_user_id' => get_current_user_id() ) );
|
119 |
+
}
|
120 |
+
|
121 |
+
return true;
|
122 |
+
}
|
123 |
+
|
124 |
+
return false;
|
125 |
+
}
|
126 |
}
|
backend/components/dialogs/payment/resources/js/ng-payment_details.js
CHANGED
@@ -18,12 +18,14 @@
|
|
18 |
if (payment_id === undefined) {
|
19 |
if (e.relatedTarget) {
|
20 |
payment_id = e.relatedTarget.getAttribute('data-payment_id');
|
21 |
-
var payment_bind
|
22 |
-
customer_id
|
|
|
23 |
} else if (element.data('payment_id')) {
|
24 |
payment_id = element.data('payment_id');
|
25 |
-
var payment_bind
|
26 |
-
customer_id
|
|
|
27 |
}
|
28 |
}
|
29 |
jQuery.ajax({
|
@@ -58,7 +60,7 @@
|
|
58 |
});
|
59 |
}
|
60 |
// Reload DataTable.
|
61 |
-
var $table = jQuery('table#bookly-payments-list.dataTable');
|
62 |
if ($table.length) {
|
63 |
$table.DataTable().ajax.reload();
|
64 |
}
|
@@ -84,7 +86,8 @@
|
|
84 |
payment_id : payment_id,
|
85 |
payment_title : response.data.payment_title,
|
86 |
payment_type : response.data.payment_type,
|
87 |
-
customer_id : customer_id
|
|
|
88 |
});
|
89 |
});
|
90 |
}
|
@@ -125,7 +128,7 @@
|
|
125 |
if (response.success) {
|
126 |
element.trigger('refresh', [payment_id]);
|
127 |
// Reload DataTable.
|
128 |
-
var $table = jQuery('table#bookly-payments-list.dataTable');
|
129 |
if ($table.length) {
|
130 |
$table.DataTable().ajax.reload();
|
131 |
}
|
18 |
if (payment_id === undefined) {
|
19 |
if (e.relatedTarget) {
|
20 |
payment_id = e.relatedTarget.getAttribute('data-payment_id');
|
21 |
+
var payment_bind = e.relatedTarget.getAttribute('data-payment_bind'),
|
22 |
+
customer_id = e.relatedTarget.getAttribute('data-customer_id'),
|
23 |
+
customer_index = e.relatedTarget.getAttribute('data-customer_index');
|
24 |
} else if (element.data('payment_id')) {
|
25 |
payment_id = element.data('payment_id');
|
26 |
+
var payment_bind = element.data('payment_bind'),
|
27 |
+
customer_id = element.data('customer_id'),
|
28 |
+
customer_index = element.data('customer_index');
|
29 |
}
|
30 |
}
|
31 |
jQuery.ajax({
|
60 |
});
|
61 |
}
|
62 |
// Reload DataTable.
|
63 |
+
var $table = jQuery('table#bookly-payments-list.dataTable, table#bookly-appointments-list.dataTable');
|
64 |
if ($table.length) {
|
65 |
$table.DataTable().ajax.reload();
|
66 |
}
|
86 |
payment_id : payment_id,
|
87 |
payment_title : response.data.payment_title,
|
88 |
payment_type : response.data.payment_type,
|
89 |
+
customer_id : customer_id,
|
90 |
+
customer_index: customer_index
|
91 |
});
|
92 |
});
|
93 |
}
|
128 |
if (response.success) {
|
129 |
element.trigger('refresh', [payment_id]);
|
130 |
// Reload DataTable.
|
131 |
+
var $table = jQuery('table#bookly-payments-list.dataTable, table#bookly-appointments-list.dataTable');
|
132 |
if ($table.length) {
|
133 |
$table.DataTable().ajax.reload();
|
134 |
}
|
backend/components/dialogs/payment/templates/details.php
CHANGED
@@ -1,28 +1,35 @@
|
|
1 |
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
2 |
use Bookly\Backend\Components\Controls\Buttons;
|
3 |
use Bookly\Backend\Modules\Payments\Proxy;
|
|
|
4 |
use Bookly\Lib\Utils\Price;
|
5 |
use Bookly\Lib\Utils\DateTime;
|
6 |
use Bookly\Lib\Entities;
|
7 |
use Bookly\Lib\Config;
|
8 |
/** @var array $show = ['deposit' => int, 'taxes' => int, 'gateway' => bool, 'customer_groups' => bool, 'coupons' => bool] */
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
?>
|
10 |
<?php if ( $payment ) : ?>
|
11 |
<div class="table-responsive">
|
12 |
<table class="table table-bordered">
|
13 |
<thead>
|
14 |
<tr>
|
15 |
-
<th width="50%"><?php
|
16 |
-
<th width="50%"><?php
|
17 |
</tr>
|
18 |
</thead>
|
19 |
<tbody>
|
20 |
<tr>
|
21 |
<td><?php echo esc_html( $payment['customer'] ) ?></td>
|
22 |
<td>
|
23 |
-
<div><?php
|
24 |
-
<div><?php
|
25 |
-
<div><?php
|
26 |
</td>
|
27 |
</tr>
|
28 |
</tbody>
|
@@ -33,15 +40,15 @@ use Bookly\Lib\Config;
|
|
33 |
<table class="table table-bordered">
|
34 |
<thead>
|
35 |
<tr>
|
36 |
-
<th><?php
|
37 |
-
<th><?php
|
38 |
-
<th><?php
|
39 |
<?php if ( $show['deposit'] ): ?>
|
40 |
-
<th class="text-right"><?php
|
41 |
<?php endif ?>
|
42 |
-
<th class="text-right"><?php
|
43 |
<?php if ( $show['taxes'] ): ?>
|
44 |
-
<th class="text-right"><?php
|
45 |
<?php endif ?>
|
46 |
</tr>
|
47 |
</thead>
|
@@ -58,7 +65,7 @@ use Bookly\Lib\Config;
|
|
58 |
</ul>
|
59 |
<?php endif ?>
|
60 |
</td>
|
61 |
-
<td><?php echo $item['appointment_date'] === null ?
|
62 |
<td><?php echo esc_html( $item['staff_name'] ) ?></td>
|
63 |
<?php if ( $show['deposit'] ) : ?>
|
64 |
<td class="text-right"><?php echo $item['deposit_format'] ?></td>
|
@@ -85,7 +92,7 @@ use Bookly\Lib\Config;
|
|
85 |
</td>
|
86 |
<?php if ( $show['taxes'] ) : ?>
|
87 |
<td class="text-right"><?php echo $item['service_tax'] !== null
|
88 |
-
? sprintf( $payment['tax_in_price']
|
89 |
: '-' ?></td>
|
90 |
<?php endif ?>
|
91 |
</tr>
|
@@ -94,7 +101,7 @@ use Bookly\Lib\Config;
|
|
94 |
<tfoot>
|
95 |
<tr>
|
96 |
<th style="border-left-color: white; border-bottom-color: white;"></th>
|
97 |
-
<th colspan="2"><?php
|
98 |
<?php if ( $show['deposit'] ) : ?>
|
99 |
<th class="text-right"><?php echo Price::format( $payment['subtotal']['deposit'] ) ?></th>
|
100 |
<?php endif ?>
|
@@ -105,7 +112,7 @@ use Bookly\Lib\Config;
|
|
105 |
<tr>
|
106 |
<th style="border-left-color: white; border-bottom-color: white;"></th>
|
107 |
<th colspan="<?php echo 2 + $show['deposit'] ?>">
|
108 |
-
<?php
|
109 |
<?php if ( $payment['coupon'] ) : ?><div><small>(<?php echo $payment['coupon']['code'] ?>)</small></div><?php endif ?>
|
110 |
</th>
|
111 |
<th class="text-right">
|
@@ -129,7 +136,7 @@ use Bookly\Lib\Config;
|
|
129 |
<tr>
|
130 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
131 |
<th colspan="<?php echo 2 + $show['deposit'] ?>">
|
132 |
-
<?php
|
133 |
</th>
|
134 |
<th class="text-right">
|
135 |
<?php echo $payment['group_discount'] ?: Price::format( 0 ) ?>
|
@@ -150,13 +157,16 @@ use Bookly\Lib\Config;
|
|
150 |
</tr>
|
151 |
<?php endforeach ?>
|
152 |
|
153 |
-
<?php
|
|
|
|
|
154 |
|
155 |
<?php if ( $show['gateway'] || (float) $payment['price_correction'] ) : ?>
|
156 |
<tr>
|
157 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
158 |
<th colspan="<?php echo 2 + $show['deposit'] ?>">
|
159 |
-
<?php echo Entities\Payment::typeToString( $payment['
|
|
|
160 |
</th>
|
161 |
<th class="text-right">
|
162 |
<?php echo Price::format( $payment['price_correction'] ) ?>
|
@@ -168,7 +178,7 @@ use Bookly\Lib\Config;
|
|
168 |
<?php endif ?>
|
169 |
<tr>
|
170 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
171 |
-
<th colspan="<?php echo 2 + $show['deposit'] ?>"><?php
|
172 |
<th class="text-right"><?php echo Price::format( $payment['total'] ) ?></th>
|
173 |
<?php if ( $show['taxes'] ) : ?>
|
174 |
<th class="text-right">
|
@@ -179,14 +189,14 @@ use Bookly\Lib\Config;
|
|
179 |
<?php if ( $payment['total'] != $payment['paid'] ) : ?>
|
180 |
<tr>
|
181 |
<th rowspan="2" style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
182 |
-
<th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php
|
183 |
<th class="text-right"><i><?php echo Price::format( $payment['paid'] ) ?></i></th>
|
184 |
<?php if ( $show['taxes'] ) : ?>
|
185 |
<th class="text-right"><i>(<?php echo Price::format( $payment['tax_paid'] ) ?>)</i></th>
|
186 |
<?php endif ?>
|
187 |
</tr>
|
188 |
<tr>
|
189 |
-
<th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php
|
190 |
<th class="text-right">
|
191 |
<i><?php echo Price::format( $payment['total'] - $payment['paid'] ) ?></i>
|
192 |
</th>
|
@@ -195,18 +205,18 @@ use Bookly\Lib\Config;
|
|
195 |
<?php endif ?>
|
196 |
</tr>
|
197 |
<?php endif ?>
|
198 |
-
<?php if ( Config::proActive() || ( $payment['total'] != $payment['paid'] ) ) : ?>
|
199 |
<tr>
|
200 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
201 |
<th colspan="<?php echo 3 + $show['deposit'] + $show['taxes'] ?>" class="text-right">
|
202 |
<div class="bookly-js-details-main-controls">
|
203 |
<?php Proxy\Pro::renderManualAdjustmentButton() ?>
|
204 |
<?php if ( $payment['total'] != $payment['paid'] ) : ?>
|
205 |
-
<button type="button" class="btn btn-success ladda-button" id="bookly-complete-payment" data-spinner-size="40" data-style="zoom-in"><i><?php
|
206 |
<?php endif ?>
|
207 |
</div>
|
208 |
<div class="bookly-js-details-bind-controls collapse">
|
209 |
-
<?php Buttons::renderCustom( 'bookly-js-attach-payment', 'btn-success',
|
210 |
</div>
|
211 |
</th>
|
212 |
</tr>
|
1 |
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
2 |
use Bookly\Backend\Components\Controls\Buttons;
|
3 |
use Bookly\Backend\Modules\Payments\Proxy;
|
4 |
+
use Bookly\Lib\Utils\Common;
|
5 |
use Bookly\Lib\Utils\Price;
|
6 |
use Bookly\Lib\Utils\DateTime;
|
7 |
use Bookly\Lib\Entities;
|
8 |
use Bookly\Lib\Config;
|
9 |
/** @var array $show = ['deposit' => int, 'taxes' => int, 'gateway' => bool, 'customer_groups' => bool, 'coupons' => bool] */
|
10 |
+
$can_edit = Common::isCurrentUserAdmin();
|
11 |
+
if ( ! $can_edit ) {
|
12 |
+
$staff = new Entities\Staff();
|
13 |
+
|
14 |
+
$can_edit = $staff->loadBy( array( 'wp_user_id' => get_current_user_id() ) ) !== false;
|
15 |
+
}
|
16 |
?>
|
17 |
<?php if ( $payment ) : ?>
|
18 |
<div class="table-responsive">
|
19 |
<table class="table table-bordered">
|
20 |
<thead>
|
21 |
<tr>
|
22 |
+
<th width="50%"><?php esc_html_e( 'Customer', 'bookly' ) ?></th>
|
23 |
+
<th width="50%"><?php esc_html_e( 'Payment', 'bookly' ) ?></th>
|
24 |
</tr>
|
25 |
</thead>
|
26 |
<tbody>
|
27 |
<tr>
|
28 |
<td><?php echo esc_html( $payment['customer'] ) ?></td>
|
29 |
<td>
|
30 |
+
<div><?php esc_html_e( 'Date', 'bookly' ) ?>: <?php echo DateTime::formatDateTime( $payment['created'] ) ?></div>
|
31 |
+
<div><?php esc_html_e( 'Type', 'bookly' ) ?>: <?php echo Entities\Payment::typeToString( $payment['type'] ) ?></div>
|
32 |
+
<div><?php esc_html_e( 'Status', 'bookly' ) ?>: <?php echo Entities\Payment::statusToString( $payment['status'] ) ?></div>
|
33 |
</td>
|
34 |
</tr>
|
35 |
</tbody>
|
40 |
<table class="table table-bordered">
|
41 |
<thead>
|
42 |
<tr>
|
43 |
+
<th><?php esc_html_e( 'Service', 'bookly' ) ?></th>
|
44 |
+
<th><?php esc_html_e( 'Date', 'bookly' ) ?></th>
|
45 |
+
<th><?php esc_html_e( 'Provider', 'bookly' ) ?></th>
|
46 |
<?php if ( $show['deposit'] ): ?>
|
47 |
+
<th class="text-right"><?php esc_html_e( 'Deposit', 'bookly' ) ?></th>
|
48 |
<?php endif ?>
|
49 |
+
<th class="text-right"><?php esc_html_e( 'Price', 'bookly' ) ?></th>
|
50 |
<?php if ( $show['taxes'] ): ?>
|
51 |
+
<th class="text-right"><?php esc_html_e( 'Tax', 'bookly' ) ?></th>
|
52 |
<?php endif ?>
|
53 |
</tr>
|
54 |
</thead>
|
65 |
</ul>
|
66 |
<?php endif ?>
|
67 |
</td>
|
68 |
+
<td><?php echo $item['appointment_date'] === null ? esc_html__( 'N/A', 'bookly' ) : DateTime::formatDateTime( $item['appointment_date'] ) ?></td>
|
69 |
<td><?php echo esc_html( $item['staff_name'] ) ?></td>
|
70 |
<?php if ( $show['deposit'] ) : ?>
|
71 |
<td class="text-right"><?php echo $item['deposit_format'] ?></td>
|
92 |
</td>
|
93 |
<?php if ( $show['taxes'] ) : ?>
|
94 |
<td class="text-right"><?php echo $item['service_tax'] !== null
|
95 |
+
? sprintf( $payment['tax_in_price'] === 'included' ? '(%s)' : '%s', Price::format( $item['service_tax'] ) )
|
96 |
: '-' ?></td>
|
97 |
<?php endif ?>
|
98 |
</tr>
|
101 |
<tfoot>
|
102 |
<tr>
|
103 |
<th style="border-left-color: white; border-bottom-color: white;"></th>
|
104 |
+
<th colspan="2"><?php esc_html_e( 'Subtotal', 'bookly' ) ?></th>
|
105 |
<?php if ( $show['deposit'] ) : ?>
|
106 |
<th class="text-right"><?php echo Price::format( $payment['subtotal']['deposit'] ) ?></th>
|
107 |
<?php endif ?>
|
112 |
<tr>
|
113 |
<th style="border-left-color: white; border-bottom-color: white;"></th>
|
114 |
<th colspan="<?php echo 2 + $show['deposit'] ?>">
|
115 |
+
<?php esc_html_e( 'Coupon discount', 'bookly' ) ?>
|
116 |
<?php if ( $payment['coupon'] ) : ?><div><small>(<?php echo $payment['coupon']['code'] ?>)</small></div><?php endif ?>
|
117 |
</th>
|
118 |
<th class="text-right">
|
136 |
<tr>
|
137 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
138 |
<th colspan="<?php echo 2 + $show['deposit'] ?>">
|
139 |
+
<?php esc_html_e( 'Group discount', 'bookly' ) ?>
|
140 |
</th>
|
141 |
<th class="text-right">
|
142 |
<?php echo $payment['group_discount'] ?: Price::format( 0 ) ?>
|
157 |
</tr>
|
158 |
<?php endforeach ?>
|
159 |
|
160 |
+
<?php if ( $can_edit ) : ?>
|
161 |
+
<?php Proxy\Pro::renderManualAdjustmentForm( $show ) ?>
|
162 |
+
<?php endif ?>
|
163 |
|
164 |
<?php if ( $show['gateway'] || (float) $payment['price_correction'] ) : ?>
|
165 |
<tr>
|
166 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
167 |
<th colspan="<?php echo 2 + $show['deposit'] ?>">
|
168 |
+
<?php echo Entities\Payment::typeToString( $payment['gateway'] ) ?> -
|
169 |
+
<?php esc_html_e( 'Price correction', 'bookly' ) ?>
|
170 |
</th>
|
171 |
<th class="text-right">
|
172 |
<?php echo Price::format( $payment['price_correction'] ) ?>
|
178 |
<?php endif ?>
|
179 |
<tr>
|
180 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
181 |
+
<th colspan="<?php echo 2 + $show['deposit'] ?>"><?php esc_html_e( 'Total', 'bookly' ) ?></th>
|
182 |
<th class="text-right"><?php echo Price::format( $payment['total'] ) ?></th>
|
183 |
<?php if ( $show['taxes'] ) : ?>
|
184 |
<th class="text-right">
|
189 |
<?php if ( $payment['total'] != $payment['paid'] ) : ?>
|
190 |
<tr>
|
191 |
<th rowspan="2" style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
192 |
+
<th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php esc_html_e( 'Paid', 'bookly' ) ?></i></th>
|
193 |
<th class="text-right"><i><?php echo Price::format( $payment['paid'] ) ?></i></th>
|
194 |
<?php if ( $show['taxes'] ) : ?>
|
195 |
<th class="text-right"><i>(<?php echo Price::format( $payment['tax_paid'] ) ?>)</i></th>
|
196 |
<?php endif ?>
|
197 |
</tr>
|
198 |
<tr>
|
199 |
+
<th colspan="<?php echo 2 + $show['deposit'] ?>"><i><?php esc_html_e( 'Due', 'bookly' ) ?></i></th>
|
200 |
<th class="text-right">
|
201 |
<i><?php echo Price::format( $payment['total'] - $payment['paid'] ) ?></i>
|
202 |
</th>
|
205 |
<?php endif ?>
|
206 |
</tr>
|
207 |
<?php endif ?>
|
208 |
+
<?php if ( $can_edit && ( Config::proActive() || ( $payment['total'] != $payment['paid'] ) ) ) : ?>
|
209 |
<tr>
|
210 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
211 |
<th colspan="<?php echo 3 + $show['deposit'] + $show['taxes'] ?>" class="text-right">
|
212 |
<div class="bookly-js-details-main-controls">
|
213 |
<?php Proxy\Pro::renderManualAdjustmentButton() ?>
|
214 |
<?php if ( $payment['total'] != $payment['paid'] ) : ?>
|
215 |
+
<button type="button" class="btn btn-success ladda-button" id="bookly-complete-payment" data-spinner-size="40" data-style="zoom-in"><i><?php esc_html_e( 'Complete payment', 'bookly' ) ?></i></button>
|
216 |
<?php endif ?>
|
217 |
</div>
|
218 |
<div class="bookly-js-details-bind-controls collapse">
|
219 |
+
<?php Buttons::renderCustom( 'bookly-js-attach-payment', 'btn-success', esc_html__( 'Bind payment', 'bookly' ) ) ?>
|
220 |
</div>
|
221 |
</th>
|
222 |
</tr>
|
backend/components/dialogs/queue/Dialog.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Backend\Components\Dialogs\Queue;
|
3 |
+
|
4 |
+
use Bookly\Lib as BooklyLib;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class Dialog
|
8 |
+
* @package Bookly\Backend\Components\Dialogs\Queue
|
9 |
+
*/
|
10 |
+
class Dialog extends BooklyLib\Base\Component
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Render notifications queue dialog.
|
14 |
+
*/
|
15 |
+
public static function render()
|
16 |
+
{
|
17 |
+
self::enqueueStyles( array(
|
18 |
+
'frontend' => array( 'css/ladda.min.css', ),
|
19 |
+
'backend' => array( 'css/fontawesome-all.min.css', 'css/select2.min.css' ),
|
20 |
+
) );
|
21 |
+
|
22 |
+
self::enqueueScripts( array(
|
23 |
+
'frontend' => array(
|
24 |
+
'js/spin.min.js' => array( 'jquery', ),
|
25 |
+
'js/ladda.min.js' => array( 'jquery', ),
|
26 |
+
),
|
27 |
+
'module' => array( 'js/queue-dialog.js' => array( 'jquery' ), ),
|
28 |
+
) );
|
29 |
+
|
30 |
+
wp_localize_script( 'bookly-queue-dialog.js', 'BooklyNotificationQueueDialogL10n', array(
|
31 |
+
'csrfToken' => BooklyLib\Utils\Common::getCsrfToken(),
|
32 |
+
) );
|
33 |
+
|
34 |
+
self::renderTemplate( 'dialog' );
|
35 |
+
}
|
36 |
+
}
|
backend/components/dialogs/queue/resources/js/queue-dialog.js
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(function ($) {
|
2 |
+
$(document.body).on('bookly.queue_dialog', {},
|
3 |
+
function (event, queue, callback) {
|
4 |
+
var $dialog = $('#bookly-queue-modal'),
|
5 |
+
$queue = $('#bookly-queue', $dialog),
|
6 |
+
$template = $('#bookly-notification-template')
|
7 |
+
;
|
8 |
+
|
9 |
+
$queue.html('');
|
10 |
+
queue.forEach(function (notification, index) {
|
11 |
+
$queue.append(
|
12 |
+
$template.clone().show().html()
|
13 |
+
.replace(/{{icon}}/g, notification.gateway == 'sms' ? 'fa-sms' : 'fa-envelope')
|
14 |
+
.replace(/{{recipient}}/g, notification.data.name)
|
15 |
+
.replace(/{{address}}/g, notification.address)
|
16 |
+
.replace(/{{description}}/g, notification.name)
|
17 |
+
.replace(/{{index}}/g, index)
|
18 |
+
);
|
19 |
+
});
|
20 |
+
$dialog.off().on('shown.bs.modal', function () {
|
21 |
+
$('body').addClass('modal-open');
|
22 |
+
}).on('click', '.bookly-js-send', function (e) {
|
23 |
+
e.preventDefault();
|
24 |
+
var ladda = Ladda.create(this),
|
25 |
+
send_queue = [];
|
26 |
+
ladda.start();
|
27 |
+
|
28 |
+
$queue.find('.bookly-js-notification-queue input[type="checkbox"]:checked').each(function () {
|
29 |
+
send_queue.push(queue[$(this).data('index')]);
|
30 |
+
});
|
31 |
+
$.post(
|
32 |
+
ajaxurl,
|
33 |
+
{
|
34 |
+
action : 'bookly_send_queue',
|
35 |
+
csrf_token: BooklyNotificationQueueDialogL10n.csrfToken,
|
36 |
+
queue : send_queue,
|
37 |
+
queue_full: queue
|
38 |
+
},
|
39 |
+
function (response) {
|
40 |
+
ladda.stop();
|
41 |
+
if (response.success) {
|
42 |
+
// Close the dialog.
|
43 |
+
$dialog.modal('hide');
|
44 |
+
}
|
45 |
+
if (callback) {
|
46 |
+
// Call callback.
|
47 |
+
callback();
|
48 |
+
}
|
49 |
+
},
|
50 |
+
'json'
|
51 |
+
);
|
52 |
+
}).on('click', '.bookly-js-cancel', function (e) {
|
53 |
+
e.preventDefault();
|
54 |
+
$.post(
|
55 |
+
ajaxurl,
|
56 |
+
{
|
57 |
+
action : 'bookly_clear_attachments',
|
58 |
+
csrf_token: BooklyNotificationQueueDialogL10n.csrfToken,
|
59 |
+
queue : queue
|
60 |
+
},
|
61 |
+
'json'
|
62 |
+
);
|
63 |
+
if (callback) {
|
64 |
+
// Call callback.
|
65 |
+
callback();
|
66 |
+
}
|
67 |
+
}).modal('show');
|
68 |
+
}
|
69 |
+
);
|
70 |
+
});
|
backend/components/dialogs/queue/templates/dialog.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
2 |
+
use Bookly\Backend\Components\Controls\Buttons;
|
3 |
+
use Bookly\Backend\Components\Controls\Inputs;
|
4 |
+
?>
|
5 |
+
<form id="bookly-queue-modal" class="modal fade" tabindex=-1 role="dialog">
|
6 |
+
<div class="modal-dialog">
|
7 |
+
<div class="modal-content">
|
8 |
+
<div class="modal-header">
|
9 |
+
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
10 |
+
<div class="modal-title h2"><?php esc_html_e( 'Send notifications', 'bookly' ) ?></div>
|
11 |
+
</div>
|
12 |
+
<div class="modal-body">
|
13 |
+
<div id="bookly-queue"></div>
|
14 |
+
</div>
|
15 |
+
<div class="modal-footer">
|
16 |
+
<?php Inputs::renderCsrf() ?>
|
17 |
+
<?php Buttons::renderCustom( null, 'bookly-js-send btn-lg btn-success', esc_html__( 'Send', 'bookly' ) ) ?>
|
18 |
+
<?php Buttons::renderCustom( null, 'bookly-js-cancel btn-lg btn-default', esc_html__( 'Close', 'bookly' ), array( 'data-dismiss' => 'modal' ) ) ?>
|
19 |
+
</div>
|
20 |
+
</div>
|
21 |
+
</div>
|
22 |
+
</form>
|
23 |
+
<div id="bookly-notification-template" class="collapse">
|
24 |
+
<div class="bookly-js-notification-queue checkbox bookly-margin-bottom-lg bookly-margin-top-remove">
|
25 |
+
<label>
|
26 |
+
<input type="checkbox" data-index="{{index}}" checked/> <i class="fa fa-fw {{icon}}"></i> <b>{{recipient}}</b> ({{address}})<br/>
|
27 |
+
{{description}}
|
28 |
+
</label>
|
29 |
+
</div>
|
30 |
+
</div>
|
backend/components/dialogs/service/edit/resources/js/service-edit-dialog.js
CHANGED
@@ -211,6 +211,8 @@ jQuery(function ($) {
|
|
211 |
updateStaffChoice = false;
|
212 |
}
|
213 |
submitServiceFrom($serviceDialog, 0);
|
|
|
|
|
214 |
});
|
215 |
|
216 |
/**
|
211 |
updateStaffChoice = false;
|
212 |
}
|
213 |
submitServiceFrom($serviceDialog, 0);
|
214 |
+
}).on('hidden.bs.modal', function () {
|
215 |
+
$('body').addClass('modal-open');
|
216 |
});
|
217 |
|
218 |
/**
|
backend/components/dialogs/service/edit/templates/dialog.php
CHANGED
@@ -3,7 +3,6 @@ use Bookly\Backend\Components\Controls\Buttons;
|
|
3 |
use Bookly\Backend\Components\Controls\Inputs;
|
4 |
use Bookly\Backend\Modules\Services\Proxy;
|
5 |
use Bookly\Lib;
|
6 |
-
|
7 |
?>
|
8 |
<div id="bookly-edit-service-modal" class="modal fade" tabindex=-1 role="dialog">
|
9 |
<div class="modal-dialog modal-lg">
|
@@ -18,20 +17,20 @@ use Bookly\Lib;
|
|
18 |
<li class="active">
|
19 |
<a id="bookly-services-general-tab" href="#bookly-services-general" data-toggle="tab">
|
20 |
<i class="fa fa-cog fa-fw"></i>
|
21 |
-
<span class="bookly-nav-tabs-title"><?php
|
22 |
</a>
|
23 |
</li>
|
24 |
-
<li class="bookly-js-service bookly-js-service-simple">
|
25 |
<a id="bookly-services-time-tab" href="#bookly-services-time" data-toggle="tab">
|
26 |
<i class="fa fa-clock fa-fw"></i>
|
27 |
-
<span class="bookly-nav-tabs-title"><?php
|
28 |
</a>
|
29 |
</li>
|
30 |
<?php if ( Lib\Config::proActive() ) : ?>
|
31 |
<li class="bookly-js-service bookly-js-service-simple bookly-js-service-collaborative bookly-js-service-compound">
|
32 |
<a id="bookly-services-advanced-tab" href="#bookly-services-advanced" data-toggle="tab">
|
33 |
<i class="fa fa-cogs fa-fw"></i>
|
34 |
-
<span class="bookly-nav-tabs-title"><?php
|
35 |
</a>
|
36 |
</li>
|
37 |
<?php endif ?>
|
3 |
use Bookly\Backend\Components\Controls\Inputs;
|
4 |
use Bookly\Backend\Modules\Services\Proxy;
|
5 |
use Bookly\Lib;
|
|
|
6 |
?>
|
7 |
<div id="bookly-edit-service-modal" class="modal fade" tabindex=-1 role="dialog">
|
8 |
<div class="modal-dialog modal-lg">
|
17 |
<li class="active">
|
18 |
<a id="bookly-services-general-tab" href="#bookly-services-general" data-toggle="tab">
|
19 |
<i class="fa fa-cog fa-fw"></i>
|
20 |
+
<span class="bookly-nav-tabs-title"><?php esc_html_e( 'General', 'bookly' ) ?></span>
|
21 |
</a>
|
22 |
</li>
|
23 |
+
<li class="bookly-js-service bookly-js-service-simple bookly-js-service-compound bookly-js-service-collaborative">
|
24 |
<a id="bookly-services-time-tab" href="#bookly-services-time" data-toggle="tab">
|
25 |
<i class="fa fa-clock fa-fw"></i>
|
26 |
+
<span class="bookly-nav-tabs-title"><?php esc_html_e( 'Time', 'bookly' ) ?></span>
|
27 |
</a>
|
28 |
</li>
|
29 |
<?php if ( Lib\Config::proActive() ) : ?>
|
30 |
<li class="bookly-js-service bookly-js-service-simple bookly-js-service-collaborative bookly-js-service-compound">
|
31 |
<a id="bookly-services-advanced-tab" href="#bookly-services-advanced" data-toggle="tab">
|
32 |
<i class="fa fa-cogs fa-fw"></i>
|
33 |
+
<span class="bookly-nav-tabs-title"><?php esc_html_e( 'Advanced', 'bookly' ) ?></span>
|
34 |
</a>
|
35 |
</li>
|
36 |
<?php endif ?>
|
backend/components/dialogs/sms/Dialog.php
CHANGED
@@ -35,6 +35,7 @@ class Dialog extends BooklyLib\Base\Component
|
|
35 |
'csrfToken' => BooklyLib\Utils\Common::getCsrfToken(),
|
36 |
'recurringActive' => (int) BooklyLib\Config::recurringAppointmentsActive(),
|
37 |
'defaultNotification' => self::getDefaultNotification(),
|
|
|
38 |
'title' => array(
|
39 |
'container' => __( 'Sms', 'bookly' ),
|
40 |
'new' => __( 'New sms notification', 'bookly' ),
|
35 |
'csrfToken' => BooklyLib\Utils\Common::getCsrfToken(),
|
36 |
'recurringActive' => (int) BooklyLib\Config::recurringAppointmentsActive(),
|
37 |
'defaultNotification' => self::getDefaultNotification(),
|
38 |
+
'sms' => true,
|
39 |
'title' => array(
|
40 |
'container' => __( 'Sms', 'bookly' ),
|
41 |
'new' => __( 'New sms notification', 'bookly' ),
|
backend/components/dialogs/sms/resources/js/notification-dialog.js
CHANGED
@@ -21,7 +21,7 @@ jQuery(function ($) {
|
|
21 |
$codes = $('table.bookly-codes', $modalNotification),
|
22 |
$status = $("select[name='notification[settings][status]']", containers.settings),
|
23 |
$defaultStatuses,
|
24 |
-
useTinyMCE = typeof(tinyMCE) !== 'undefined',
|
25 |
$textarea = $('#bookly-js-message', containers.message)
|
26 |
;
|
27 |
|
@@ -218,12 +218,14 @@ jQuery(function ($) {
|
|
218 |
} else {
|
219 |
$defaultStatuses = $status.html();
|
220 |
}
|
221 |
-
if (
|
222 |
-
$status.
|
223 |
-
|
224 |
-
|
|
|
225 |
|
226 |
-
|
|
|
227 |
}
|
228 |
|
229 |
$("input[name='notification[settings][services][any]'][value='" + data.settings.services.any + "']", containers.settings).prop('checked', true);
|
21 |
$codes = $('table.bookly-codes', $modalNotification),
|
22 |
$status = $("select[name='notification[settings][status]']", containers.settings),
|
23 |
$defaultStatuses,
|
24 |
+
useTinyMCE = !BooklyNotificationDialogL10n.sms && typeof(tinyMCE) !== 'undefined',
|
25 |
$textarea = $('#bookly-js-message', containers.message)
|
26 |
;
|
27 |
|
218 |
} else {
|
219 |
$defaultStatuses = $status.html();
|
220 |
}
|
221 |
+
if (data.settings.status !== null) {
|
222 |
+
if ($status.find('option[value="' + data.settings.status + '"]').length > 0) {
|
223 |
+
$status.val(data.settings.status);
|
224 |
+
} else {
|
225 |
+
var custom_status = data.settings.status.charAt(0).toUpperCase() + data.settings.status.slice(1);
|
226 |
|
227 |
+
$status.append($("<option></option>", {value: data.settings.status, text: custom_status.replace(/\-/g, ' ')})).val(data.settings.status);
|
228 |
+
}
|
229 |
}
|
230 |
|
231 |
$("input[name='notification[settings][services][any]'][value='" + data.settings.services.any + "']", containers.settings).prop('checked', true);
|
backend/components/dialogs/staff/edit/forms/StaffServices.php
CHANGED
@@ -70,7 +70,7 @@ class StaffServices extends Lib\Base\Form
|
|
70 |
public function save()
|
71 |
{
|
72 |
$staff_id = $this->data['staff_id'];
|
73 |
-
$location_id = array_key_exists( 'location_id', $this->data ) ? $this->data['location_id'] : null;
|
74 |
if ( $staff_id ) {
|
75 |
Lib\Entities\StaffService::query()
|
76 |
->delete()
|
70 |
public function save()
|
71 |
{
|
72 |
$staff_id = $this->data['staff_id'];
|
73 |
+
$location_id = array_key_exists( 'location_id', $this->data ) && $this->data['location_id'] ? $this->data['location_id'] : null;
|
74 |
if ( $staff_id ) {
|
75 |
Lib\Entities\StaffService::query()
|
76 |
->delete()
|
backend/components/dialogs/staff/edit/resources/js/staff-edit-dialog.js
CHANGED
@@ -39,6 +39,9 @@ jQuery(function ($) {
|
|
39 |
editStaff(staff_id);
|
40 |
}
|
41 |
|
|
|
|
|
|
|
42 |
function editStaff(staff_id) {
|
43 |
$modalTitle.html(staff_id ? BooklyStaffEditDialogL10n.editStaff : BooklyStaffEditDialogL10n.createStaff);
|
44 |
$('#bookly-staff-delete', $modalFooter).toggle(staff_id != 0);
|
@@ -53,7 +56,7 @@ jQuery(function ($) {
|
|
53 |
booklyAlert(response.data.alert);
|
54 |
$modalFooter.show();
|
55 |
holidays = response.data.holidays;
|
56 |
-
let $details_container
|
57 |
$services_container = $('#bookly-services-container', $modalBody),
|
58 |
$schedule_container = $('#bookly-schedule-container', $modalBody),
|
59 |
$holidays_container = $('#bookly-holidays-container', $modalBody),
|
@@ -83,40 +86,38 @@ jQuery(function ($) {
|
|
83 |
/**
|
84 |
* Delete staff member.
|
85 |
*/
|
86 |
-
|
87 |
-
.
|
88 |
-
|
|
|
|
|
|
|
|
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
ladda.stop();
|
101 |
-
if (!response.success) {
|
102 |
-
switch (response.data.action) {
|
103 |
-
case 'show_modal':
|
104 |
-
$deleteCascadeModal.modal('show');
|
105 |
-
break;
|
106 |
-
case 'confirm':
|
107 |
-
if (confirm(BooklyStaffEditDialogL10n.areYouSure)) {
|
108 |
-
delete_staff(ajaxurl, $.extend(data, {force_delete: true}));
|
109 |
-
}
|
110 |
-
break;
|
111 |
}
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
}
|
|
|
|
|
118 |
|
119 |
-
|
|
|
|
|
|
|
120 |
});
|
121 |
|
122 |
$modalBody
|
@@ -213,8 +214,7 @@ jQuery(function ($) {
|
|
213 |
.on('click', '.bookly-js-delete', function () {
|
214 |
$modalBody.html('<div class="bookly-loading"></div>');
|
215 |
ladda = Ladda.create(this);
|
216 |
-
ladda
|
217 |
-
delete_staff(ajaxurl, $.extend(data, {force_delete: true}));
|
218 |
$deleteCascadeModal.modal('hide');
|
219 |
ladda.stop();
|
220 |
})
|
39 |
editStaff(staff_id);
|
40 |
}
|
41 |
|
42 |
+
/**
|
43 |
+
* Edit staff member.
|
44 |
+
*/
|
45 |
function editStaff(staff_id) {
|
46 |
$modalTitle.html(staff_id ? BooklyStaffEditDialogL10n.editStaff : BooklyStaffEditDialogL10n.createStaff);
|
47 |
$('#bookly-staff-delete', $modalFooter).toggle(staff_id != 0);
|
56 |
booklyAlert(response.data.alert);
|
57 |
$modalFooter.show();
|
58 |
holidays = response.data.holidays;
|
59 |
+
let $details_container = $('#bookly-details-container', $modalBody),
|
60 |
$services_container = $('#bookly-services-container', $modalBody),
|
61 |
$schedule_container = $('#bookly-schedule-container', $modalBody),
|
62 |
$holidays_container = $('#bookly-holidays-container', $modalBody),
|
86 |
/**
|
87 |
* Delete staff member.
|
88 |
*/
|
89 |
+
function deleteStaff(_data, ladda) {
|
90 |
+
ladda.start();
|
91 |
+
let data = $.extend({
|
92 |
+
action : 'bookly_remove_staff',
|
93 |
+
'staff_ids[]': staff_id,
|
94 |
+
csrf_token : BooklyStaffEditDialogL10n.csrfToken
|
95 |
+
}, _data);
|
96 |
|
97 |
+
$.post(ajaxurl, data, function (response) {
|
98 |
+
ladda.stop();
|
99 |
+
if (!response.success) {
|
100 |
+
switch (response.data.action) {
|
101 |
+
case 'show_modal':
|
102 |
+
$deleteCascadeModal.modal('show');
|
103 |
+
break;
|
104 |
+
case 'confirm':
|
105 |
+
if (confirm(BooklyStaffEditDialogL10n.areYouSure)) {
|
106 |
+
deleteStaff( $.extend(data, {force_delete: true}), ladda);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
}
|
108 |
+
break;
|
109 |
+
}
|
110 |
+
} else {
|
111 |
+
$modal.modal('hide');
|
112 |
+
$staffList.DataTable().ajax.reload();
|
113 |
+
}
|
114 |
+
});
|
115 |
+
};
|
116 |
|
117 |
+
$modalFooter
|
118 |
+
.on('click', '#bookly-staff-delete', function (e) {
|
119 |
+
e.preventDefault();
|
120 |
+
deleteStaff( {}, Ladda.create(this));
|
121 |
});
|
122 |
|
123 |
$modalBody
|
214 |
.on('click', '.bookly-js-delete', function () {
|
215 |
$modalBody.html('<div class="bookly-loading"></div>');
|
216 |
ladda = Ladda.create(this);
|
217 |
+
deleteStaff({force_delete: true}, ladda);
|
|
|
218 |
$deleteCascadeModal.modal('hide');
|
219 |
ladda.stop();
|
220 |
})
|
backend/components/dialogs/staff/edit/resources/js/staff-schedule.js
CHANGED
@@ -106,7 +106,7 @@ jQuery(function ($) {
|
|
106 |
$.ajax({
|
107 |
url: ajaxurl,
|
108 |
type: 'POST',
|
109 |
-
data: {action: '
|
110 |
dataType: 'json',
|
111 |
success: function (response) {
|
112 |
for (var k in response) {
|
106 |
$.ajax({
|
107 |
url: ajaxurl,
|
108 |
type: 'POST',
|
109 |
+
data: {action: 'bookly_staff_cabinet_reset_breaks', breaks: $(this).data('default-breaks'), staff_cabinet: $(this).data('staff-cabinet') || 0, csrf_token: obj.options.l10n.csrfToken},
|
110 |
dataType: 'json',
|
111 |
success: function (response) {
|
112 |
for (var k in response) {
|
backend/components/dialogs/staff/edit/templates/dialog.php
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
2 |
use Bookly\Backend\Components\Controls\Buttons;
|
|
|
3 |
use Bookly\Lib\Utils\Common;
|
4 |
|
5 |
/** @var Bookly\Lib\Entities\Staff $staff */
|
@@ -17,7 +18,9 @@ use Bookly\Lib\Utils\Common;
|
|
17 |
<div class="modal-footer">
|
18 |
<?php if ( Common::isCurrentUserAdmin() ) : ?>
|
19 |
<?php Buttons::renderDelete( 'bookly-staff-delete', 'btn-lg pull-left bookly-js-hide-on-loading' ) ?>
|
20 |
-
<?php
|
|
|
|
|
21 |
<?php endif ?>
|
22 |
<span class="bookly-js-errors text-danger" style="max-width: 353px;display: inline-grid;"></span>
|
23 |
<?php Buttons::renderCustom( null, 'btn-lg btn-success bookly-js-save bookly-js-hide-on-loading', esc_html__( 'Save', 'bookly' ) ) ?>
|
1 |
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
2 |
use Bookly\Backend\Components\Controls\Buttons;
|
3 |
+
use Bookly\Lib\Config;
|
4 |
use Bookly\Lib\Utils\Common;
|
5 |
|
6 |
/** @var Bookly\Lib\Entities\Staff $staff */
|
18 |
<div class="modal-footer">
|
19 |
<?php if ( Common::isCurrentUserAdmin() ) : ?>
|
20 |
<?php Buttons::renderDelete( 'bookly-staff-delete', 'btn-lg pull-left bookly-js-hide-on-loading' ) ?>
|
21 |
+
<?php if ( Config::proActive() ) : ?>
|
22 |
+
<?php Buttons::renderCustom( null, 'btn-lg btn-danger ladda-button bookly-js-staff-archive pull-left bookly-js-hide-on-loading', esc_html__( 'Archive', 'bookly' ), array(), '<i class="fa fa-archive"></i> {caption}' ) ?>
|
23 |
+
<?php endif ?>
|
24 |
<?php endif ?>
|
25 |
<span class="bookly-js-errors text-danger" style="max-width: 353px;display: inline-grid;"></span>
|
26 |
<?php Buttons::renderCustom( null, 'btn-lg btn-success bookly-js-save bookly-js-hide-on-loading', esc_html__( 'Save', 'bookly' ) ) ?>
|
backend/components/dialogs/staff/edit/templates/dialog_body.php
CHANGED
@@ -24,9 +24,9 @@ use Bookly\Backend\Modules\Staff\Proxy;
|
|
24 |
</li>
|
25 |
<?php Proxy\Shared::renderStaffTab( $staff ) ?>
|
26 |
<li>
|
27 |
-
<a id="bookly-holidays-tab" href="#
|
28 |
<i class="fas fa-calendar fa-fw"></i>
|
29 |
-
<span class="bookly-nav-tabs-title"><?php esc_html_e( 'Days
|
30 |
</a>
|
31 |
</li>
|
32 |
</ul>
|
@@ -47,7 +47,7 @@ use Bookly\Backend\Modules\Staff\Proxy;
|
|
47 |
<div class="tab-pane" id="special_days">
|
48 |
<div id="bookly-special-days-container" style="display: none"></div>
|
49 |
</div>
|
50 |
-
<div class="tab-pane" id="
|
51 |
<div id="bookly-holidays-container" style="display: none"></div>
|
52 |
</div>
|
53 |
</div>
|
24 |
</li>
|
25 |
<?php Proxy\Shared::renderStaffTab( $staff ) ?>
|
26 |
<li>
|
27 |
+
<a id="bookly-holidays-tab" href="#days_off" data-toggle="tab">
|
28 |
<i class="fas fa-calendar fa-fw"></i>
|
29 |
+
<span class="bookly-nav-tabs-title"><?php esc_html_e( 'Days Off', 'bookly' ) ?></span>
|
30 |
</a>
|
31 |
</li>
|
32 |
</ul>
|
47 |
<div class="tab-pane" id="special_days">
|
48 |
<div id="bookly-special-days-container" style="display: none"></div>
|
49 |
</div>
|
50 |
+
<div class="tab-pane" id="days_off">
|
51 |
<div id="bookly-holidays-container" style="display: none"></div>
|
52 |
</div>
|
53 |
</div>
|
backend/components/notices/PoweredBy.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Backend\Components\Notices;
|
3 |
+
|
4 |
+
use Bookly\Lib;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class PoweredBy
|
8 |
+
* @package Bookly\Backend\Components\Notices
|
9 |
+
*/
|
10 |
+
class PoweredBy extends Lib\Base\Component
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Render show Powered by Bookly notice.
|
14 |
+
*/
|
15 |
+
public static function render()
|
16 |
+
{
|
17 |
+
if ( Lib\Utils\Common::isCurrentUserAdmin()
|
18 |
+
&& ! get_option( 'bookly_app_show_powered_by' )
|
19 |
+
&& ! get_user_meta( get_current_user_id(), 'bookly_dismiss_powered_by_notice' )
|
20 |
+
) {
|
21 |
+
self::enqueueStyles( array(
|
22 |
+
'frontend' => array( 'css/ladda.min.css', ),
|
23 |
+
) );
|
24 |
+
self::enqueueScripts( array(
|
25 |
+
'frontend' => array(
|
26 |
+
'js/spin.min.js' => array( 'jquery' ),
|
27 |
+
'js/ladda.min.js' => array( 'jquery' ),
|
28 |
+
),
|
29 |
+
'module' => array( 'js/powered-by.js' => array( 'bookly-ladda.min.js', ), ),
|
30 |
+
) );
|
31 |
+
|
32 |
+
self::renderTemplate( 'powered_by' );
|
33 |
+
}
|
34 |
+
}
|
35 |
+
}
|
backend/components/notices/PoweredByAjax.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Backend\Components\Notices;
|
3 |
+
|
4 |
+
use Bookly\Lib;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class PoweredByAjax
|
8 |
+
* @package Bookly\Backend\Components\Notices
|
9 |
+
*/
|
10 |
+
class PoweredByAjax extends Lib\Base\Ajax
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Dismiss Powered by Bookly by notice.
|
14 |
+
*/
|
15 |
+
public static function dismissPoweredByNotice()
|
16 |
+
{
|
17 |
+
update_user_meta( get_current_user_id(), 'bookly_dismiss_powered_by_notice', 1 );
|
18 |
+
|
19 |
+
wp_send_json_success();
|
20 |
+
}
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Enable show Powered by Bookly.
|
24 |
+
*/
|
25 |
+
public static function enableShowPoweredBy()
|
26 |
+
{
|
27 |
+
update_option( 'bookly_app_show_powered_by', '1' );
|
28 |
+
|
29 |
+
wp_send_json_success();
|
30 |
+
}
|
31 |
+
}
|
backend/components/notices/resources/js/powered-by.js
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(function ($) {
|
2 |
+
var $notice = $('#bookly-js-powered-by');
|
3 |
+
$notice.on('close.bs.alert', function () {
|
4 |
+
$.post(ajaxurl, {action: $notice.data('action'), csrf_token: BooklySupportL10n.csrfToken});
|
5 |
+
}).on('click', '#bookly-js-show-powered-by', function () {
|
6 |
+
var ladda = Ladda.create(this);
|
7 |
+
ladda.start();
|
8 |
+
$.post(ajaxurl, {action: 'bookly_enable_show_powered_by', csrf_token: BooklySupportL10n.csrfToken}, function (response) {
|
9 |
+
$notice.alert('close');
|
10 |
+
});
|
11 |
+
});
|
12 |
+
});
|
backend/components/notices/templates/powered_by.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
|
2 |
+
<div id="bookly-tbs" class="wrap">
|
3 |
+
<div id="bookly-js-powered-by" class="alert alert-info bookly-tbs-body bookly-flexbox" data-action="bookly_dismiss_powered_by_notice">
|
4 |
+
<div class="bookly-flex-row">
|
5 |
+
<div class="bookly-flex-cell" style="width:39px"><i class="alert-icon"></i></div>
|
6 |
+
<div class="bookly-flex-cell">
|
7 |
+
<button type="button" class="close" data-dismiss="alert">×</button>
|
8 |
+
<?php esc_html_e( 'Allow the plugin to set a Powered by Bookly notice on the booking widget to spread information about the plugin. This will allow the team to improve the product and enhance its functionality.', 'bookly' ) ?>
|
9 |
+
<div class="bookly-margin-top-md">
|
10 |
+
<button type="button" class="btn btn-default" data-dismiss="alert"><?php esc_html_e( 'Disagree', 'bookly' ) ?></button>
|
11 |
+
<button type="button" class="btn btn-success" id="bookly-js-show-powered-by"><?php esc_html_e( 'Agree', 'bookly' ) ?></button>
|
12 |
+
</div>
|
13 |
+
</div>
|
14 |
+
</div>
|
15 |
+
</div>
|
16 |
+
</div>
|
backend/modules/appearance/proxy/Pro.php
CHANGED
@@ -7,15 +7,15 @@ use Bookly\Lib;
|
|
7 |
* Class Pro
|
8 |
* @package Bookly\Backend\Modules\Appearance\Proxy
|
9 |
*
|
|
|
|
|
10 |
* @method static void renderFacebookButton() Render facebook login button on Time step.
|
11 |
-
* @method static void renderMultipleBookingSelector() Render single/multiple booking selector on Payment step.
|
12 |
-
* @method static void renderMultipleBookingText() Render multiple booking text option on Payment step.
|
13 |
* @method static void renderPayPalPaymentOption() Render Cart step.
|
|
|
|
|
14 |
* @method static void renderShowFacebookButton() Render 'Show facebook login button switcher' on Time step.
|
15 |
* @method static void renderTimeZoneSwitcher() Render timezone switcher on Time step.
|
16 |
* @method static void renderTimeZoneSwitcherCheckbox() Render 'Show time zone switcher' on Time step.
|
17 |
-
* @method static void renderShowAddress() render 'Show Address Fields' on Details Step.
|
18 |
-
* @method static void renderShowBirthday() render 'Show Birthday Fields' on Details Step.
|
19 |
*/
|
20 |
abstract class Pro extends Lib\Base\Proxy
|
21 |
{
|
7 |
* Class Pro
|
8 |
* @package Bookly\Backend\Modules\Appearance\Proxy
|
9 |
*
|
10 |
+
* @method static void renderBookingStatesSelector() Render single/multiple/100% off booking selector on Payment step.
|
11 |
+
* @method static void renderBookingStatesText() Render multiple or 100% off booking text option on Payment step.
|
12 |
* @method static void renderFacebookButton() Render facebook login button on Time step.
|
|
|
|
|
13 |
* @method static void renderPayPalPaymentOption() Render Cart step.
|
14 |
+
* @method static void renderShowAddress() render 'Show Address Fields' on Details Step.
|
15 |
+
* @method static void renderShowBirthday() render 'Show Birthday Fields' on Details Step.
|
16 |
* @method static void renderShowFacebookButton() Render 'Show facebook login button switcher' on Time step.
|
17 |
* @method static void renderTimeZoneSwitcher() Render timezone switcher on Time step.
|
18 |
* @method static void renderTimeZoneSwitcherCheckbox() Render 'Show time zone switcher' on Time step.
|
|
|
|
|
19 |
*/
|
20 |
abstract class Pro extends Lib\Base\Proxy
|
21 |
{
|
backend/modules/appearance/proxy/ServiceExtras.php
CHANGED
@@ -11,6 +11,7 @@ use Bookly\Lib;
|
|
11 |
* @method static void renderShowCartExtras() Render "Show extras" on Cart step.
|
12 |
* @method static void renderShowStep() Render "Show Extras step".
|
13 |
* @method static void renderStep( string $progress_tracker ) Render Extras step.
|
|
|
14 |
*/
|
15 |
abstract class ServiceExtras extends Lib\Base\Proxy
|
16 |
{
|
11 |
* @method static void renderShowCartExtras() Render "Show extras" on Cart step.
|
12 |
* @method static void renderShowStep() Render "Show Extras step".
|
13 |
* @method static void renderStep( string $progress_tracker ) Render Extras step.
|
14 |
+
* @method static void renderStepSettings() render a checkboxes "Show title, duration, price and etc."
|
15 |
*/
|
16 |
abstract class ServiceExtras extends Lib\Base\Proxy
|
17 |
{
|
backend/modules/appearance/resources/js/appearance.js
CHANGED
@@ -20,8 +20,7 @@ jQuery(function($) {
|
|
20 |
$staff_select = $('.bookly-js-select-employee'),
|
21 |
$duration_select = $('.bookly-js-select-duration'),
|
22 |
$location_select = $('.bookly-js-select-location'),
|
23 |
-
|
24 |
-
// Time step.
|
25 |
$time_step_nop = $('#bookly-show-nop-on-time-step'),
|
26 |
$time_step_calendar = $('.bookly-js-selected-date'),
|
27 |
$time_step_calendar_wrap = $('.bookly-js-slot-calendar'),
|
@@ -33,6 +32,9 @@ jQuery(function($) {
|
|
33 |
$day_one_column = $('#bookly-day-one-column'),
|
34 |
$day_multi_columns = $('#bookly-day-multi-columns'),
|
35 |
$columnizer = $('.bookly-time-step .bookly-columnizer-wrap'),
|
|
|
|
|
|
|
36 |
// Step repeat.
|
37 |
$repeat_step_calendar = $('.bookly-js-repeat-until'),
|
38 |
$repeat_variants = $('[class^="bookly-js-variant"]'),
|
@@ -153,6 +155,10 @@ jQuery(function($) {
|
|
153 |
}
|
154 |
});
|
155 |
|
|
|
|
|
|
|
|
|
156 |
// Show steps.
|
157 |
$('.bookly-js-show-step').on('change', function () {
|
158 |
var target = $(this).data('target'),
|
@@ -186,6 +192,7 @@ jQuery(function($) {
|
|
186 |
$step_settings.children().hide();
|
187 |
switch (e.target.getAttribute('data-target')) {
|
188 |
case '#bookly-step-1': $step_settings.find('.bookly-js-service-settings').show(); break;
|
|
|
189 |
case '#bookly-step-3': $step_settings.find('.bookly-js-time-settings').show(); break;
|
190 |
case '#bookly-step-5': $step_settings.find('.bookly-js-cart-settings').show(); break;
|
191 |
case '#bookly-step-6': $step_settings.find('.bookly-js-details-settings').show(); break;
|
@@ -641,7 +648,9 @@ jQuery(function($) {
|
|
641 |
$('#bookly-payment-step-view').on('change', function () {
|
642 |
$('.bookly-js-payment-single-app').toggle(this.value == 'single-app');
|
643 |
$('.bookly-js-payment-several-apps').toggle(this.value == 'several-apps');
|
644 |
-
|
|
|
|
|
645 |
|
646 |
// Show credit card form.
|
647 |
$('.bookly-payment-nav :radio').on('change', function () {
|
@@ -730,6 +739,10 @@ jQuery(function($) {
|
|
730 |
// Save options.
|
731 |
$save_button.on('click', function (e) {
|
732 |
e.preventDefault();
|
|
|
|
|
|
|
|
|
733 |
// Prepare data.
|
734 |
var data = {
|
735 |
action : 'bookly_update_appearance_options',
|
@@ -769,7 +782,8 @@ jQuery(function($) {
|
|
769 |
'bookly_files_enabled' : Number($show_files.prop('checked')),
|
770 |
'bookly_waiting_list_enabled' : Number($show_waiting_list.prop('checked')),
|
771 |
'bookly_google_maps_address_enabled' : Number($show_google_maps.prop('checked')),
|
772 |
-
'bookly_service_extras_show_in_cart' : Number($show_cart_extras.prop('checked'))
|
|
|
773 |
}
|
774 |
};
|
775 |
// Add data from editable elements.
|
20 |
$staff_select = $('.bookly-js-select-employee'),
|
21 |
$duration_select = $('.bookly-js-select-duration'),
|
22 |
$location_select = $('.bookly-js-select-location'),
|
23 |
+
// Time step.
|
|
|
24 |
$time_step_nop = $('#bookly-show-nop-on-time-step'),
|
25 |
$time_step_calendar = $('.bookly-js-selected-date'),
|
26 |
$time_step_calendar_wrap = $('.bookly-js-slot-calendar'),
|
32 |
$day_one_column = $('#bookly-day-one-column'),
|
33 |
$day_multi_columns = $('#bookly-day-multi-columns'),
|
34 |
$columnizer = $('.bookly-time-step .bookly-columnizer-wrap'),
|
35 |
+
// Step extras.
|
36 |
+
$extras_step = $('.bookly-extra-step'),
|
37 |
+
$extras_show = $('#bookly-step-settings [name="bookly_service_extras_show[]"]')
|
38 |
// Step repeat.
|
39 |
$repeat_step_calendar = $('.bookly-js-repeat-until'),
|
40 |
$repeat_variants = $('[class^="bookly-js-variant"]'),
|
155 |
}
|
156 |
});
|
157 |
|
158 |
+
$extras_show.on('change', function () {
|
159 |
+
$('.bookly-js-extras-' + this.value, $extras_step).toggle(this.checked);
|
160 |
+
}).trigger('change');
|
161 |
+
|
162 |
// Show steps.
|
163 |
$('.bookly-js-show-step').on('change', function () {
|
164 |
var target = $(this).data('target'),
|
192 |
$step_settings.children().hide();
|
193 |
switch (e.target.getAttribute('data-target')) {
|
194 |
case '#bookly-step-1': $step_settings.find('.bookly-js-service-settings').show(); break;
|
195 |
+
case '#bookly-step-2': $step_settings.find('.bookly-js-extras-settings').show(); break;
|
196 |
case '#bookly-step-3': $step_settings.find('.bookly-js-time-settings').show(); break;
|
197 |
case '#bookly-step-5': $step_settings.find('.bookly-js-cart-settings').show(); break;
|
198 |
case '#bookly-step-6': $step_settings.find('.bookly-js-details-settings').show(); break;
|
648 |
$('#bookly-payment-step-view').on('change', function () {
|
649 |
$('.bookly-js-payment-single-app').toggle(this.value == 'single-app');
|
650 |
$('.bookly-js-payment-several-apps').toggle(this.value == 'several-apps');
|
651 |
+
$('.bookly-js-payment-100percents-off-price').toggle(this.value == '100percents-off-price');
|
652 |
+
$('.bookly-js-payment-gateways').toggle(this.value !== '100percents-off-price');
|
653 |
+
}).trigger('change');
|
654 |
|
655 |
// Show credit card form.
|
656 |
$('.bookly-payment-nav :radio').on('change', function () {
|
739 |
// Save options.
|
740 |
$save_button.on('click', function (e) {
|
741 |
e.preventDefault();
|
742 |
+
let bookly_service_extras_show = [];
|
743 |
+
$extras_show.filter(':checked').each(function () {
|
744 |
+
bookly_service_extras_show.push(this.value);
|
745 |
+
});
|
746 |
// Prepare data.
|
747 |
var data = {
|
748 |
action : 'bookly_update_appearance_options',
|
782 |
'bookly_files_enabled' : Number($show_files.prop('checked')),
|
783 |
'bookly_waiting_list_enabled' : Number($show_waiting_list.prop('checked')),
|
784 |
'bookly_google_maps_address_enabled' : Number($show_google_maps.prop('checked')),
|
785 |
+
'bookly_service_extras_show_in_cart' : Number($show_cart_extras.prop('checked')),
|
786 |
+
'bookly_service_extras_show' : bookly_service_extras_show
|
787 |
}
|
788 |
};
|
789 |
// Add data from editable elements.
|
backend/modules/appearance/templates/_7_payment.php
CHANGED
@@ -13,28 +13,30 @@ use Bookly\Backend\Modules\Appearance\Proxy;
|
|
13 |
<div class="bookly-box bookly-js-payment-single-app">
|
14 |
<?php Editable::renderText( 'bookly_l10n_info_payment_step_single_app', Codes::getHtml( 7 ), 'right' ) ?>
|
15 |
</div>
|
16 |
-
<?php Proxy\Pro::
|
17 |
-
<div class="bookly-
|
18 |
-
<
|
19 |
-
<
|
20 |
-
|
21 |
-
|
22 |
-
|
|
|
23 |
|
24 |
-
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
|
37 |
-
|
|
|
38 |
</div>
|
39 |
|
40 |
<?php Proxy\RecurringAppointments::renderInfoMessage() ?>
|
13 |
<div class="bookly-box bookly-js-payment-single-app">
|
14 |
<?php Editable::renderText( 'bookly_l10n_info_payment_step_single_app', Codes::getHtml( 7 ), 'right' ) ?>
|
15 |
</div>
|
16 |
+
<?php Proxy\Pro::renderBookingStatesText() ?>
|
17 |
+
<div class="bookly-js-payment-gateways">
|
18 |
+
<div class="bookly-box bookly-list ">
|
19 |
+
<label>
|
20 |
+
<input type="radio" name="payment" checked="checked"/>
|
21 |
+
<?php Editable::renderString( array( 'bookly_l10n_label_pay_locally', ) ) ?>
|
22 |
+
</label>
|
23 |
+
</div>
|
24 |
|
25 |
+
<?php Proxy\Pro::renderPayPalPaymentOption() ?>
|
26 |
|
27 |
+
<div class="bookly-box bookly-list"<?php if ( Proxy\Shared::showCreditCard() == false ): ?> style="display: none"<?php endif ?>>
|
28 |
+
<label>
|
29 |
+
<input type="radio" name="payment" id="bookly-card-payment"/>
|
30 |
+
<?php Editable::renderString( array( 'bookly_l10n_label_pay_ccard', ) ) ?>
|
31 |
+
<img src="<?php echo plugins_url( 'frontend/resources/images/cards.png', \Bookly\Lib\Plugin::getMainFile() ) ?>" alt="cards"/>
|
32 |
+
</label>
|
33 |
+
<form class="bookly-card-form bookly-clear-bottom" style="margin-top:15px;display: none;">
|
34 |
+
<?php include '_card_payment.php' ?>
|
35 |
+
</form>
|
36 |
+
</div>
|
37 |
|
38 |
+
<?php Proxy\Shared::renderPaymentGatewaySelector() ?>
|
39 |
+
</div>
|
40 |
</div>
|
41 |
|
42 |
<?php Proxy\RecurringAppointments::renderInfoMessage() ?>
|
backend/modules/appearance/templates/index.php
CHANGED
@@ -149,6 +149,7 @@ use Bookly\Backend\Modules\Appearance\Proxy;
|
|
149 |
</div>
|
150 |
|
151 |
<?php Proxy\Cart::renderCartStepSettings() ?>
|
|
|
152 |
|
153 |
<div class="bookly-js-details-settings bookly-margin-top-lg container-fluid" style="display:none">
|
154 |
|
@@ -201,7 +202,7 @@ use Bookly\Backend\Modules\Appearance\Proxy;
|
|
201 |
</div>
|
202 |
<div class="bookly-js-payment-settings bookly-margin-top-lg" style="display:none">
|
203 |
<?php Proxy\Coupons::renderShowCoupons() ?>
|
204 |
-
<?php Proxy\Pro::
|
205 |
</div>
|
206 |
|
207 |
<div class="bookly-js-done-settings bookly-margin-top-lg" style="display:none">
|
149 |
</div>
|
150 |
|
151 |
<?php Proxy\Cart::renderCartStepSettings() ?>
|
152 |
+
<?php Proxy\ServiceExtras::renderStepSettings() ?>
|
153 |
|
154 |
<div class="bookly-js-details-settings bookly-margin-top-lg container-fluid" style="display:none">
|
155 |
|
202 |
</div>
|
203 |
<div class="bookly-js-payment-settings bookly-margin-top-lg" style="display:none">
|
204 |
<?php Proxy\Coupons::renderShowCoupons() ?>
|
205 |
+
<?php Proxy\Pro::renderBookingStatesSelector() ?>
|
206 |
</div>
|
207 |
|
208 |
<div class="bookly-js-done-settings bookly-margin-top-lg" style="display:none">
|
backend/modules/appointments/Ajax.php
CHANGED
@@ -60,7 +60,7 @@ class Ajax extends Lib\Base\Ajax
|
|
60 |
$ca_list[] = $ca_data['ca_id'];
|
61 |
}
|
62 |
}
|
63 |
-
|
64 |
/** @var Lib\Entities\CustomerAppointment $ca */
|
65 |
foreach ( Lib\Entities\CustomerAppointment::query()->whereIn( 'id', $ca_list )->find() as $ca ) {
|
66 |
if ( self::parameter( 'notify' ) ) {
|
@@ -81,7 +81,9 @@ class Ajax extends Lib\Base\Ajax
|
|
81 |
Lib\Notifications\Booking\Sender::sendForCA(
|
82 |
$ca,
|
83 |
null,
|
84 |
-
array( 'cancellation_reason' => self::parameter( 'reason' ) )
|
|
|
|
|
85 |
);
|
86 |
}
|
87 |
$ca->deleteCascade();
|
@@ -95,7 +97,7 @@ class Ajax extends Lib\Base\Ajax
|
|
95 |
}
|
96 |
}
|
97 |
|
98 |
-
wp_send_json_success();
|
99 |
}
|
100 |
|
101 |
/**
|
60 |
$ca_list[] = $ca_data['ca_id'];
|
61 |
}
|
62 |
}
|
63 |
+
$queue = array();
|
64 |
/** @var Lib\Entities\CustomerAppointment $ca */
|
65 |
foreach ( Lib\Entities\CustomerAppointment::query()->whereIn( 'id', $ca_list )->find() as $ca ) {
|
66 |
if ( self::parameter( 'notify' ) ) {
|
81 |
Lib\Notifications\Booking\Sender::sendForCA(
|
82 |
$ca,
|
83 |
null,
|
84 |
+
array( 'cancellation_reason' => self::parameter( 'reason' ) ),
|
85 |
+
false,
|
86 |
+
$queue
|
87 |
);
|
88 |
}
|
89 |
$ca->deleteCascade();
|
97 |
}
|
98 |
}
|
99 |
|
100 |
+
wp_send_json_success( compact( 'queue' ) );
|
101 |
}
|
102 |
|
103 |
/**
|
backend/modules/appointments/Page.php
CHANGED
@@ -60,6 +60,7 @@ class Page extends Lib\Base\Component
|
|
60 |
'cf_columns' => $cf_columns,
|
61 |
'filter' => (array) get_user_meta( get_current_user_id(), 'bookly_filter_appointments_list', true ),
|
62 |
'no_result_found' => __( 'No result found', 'bookly' ),
|
|
|
63 |
'attachments' => __( 'Attachments', 'bookly' ),
|
64 |
'tasks' => array(
|
65 |
'enabled' => Lib\Config::tasksActive(),
|
@@ -69,7 +70,7 @@ class Page extends Lib\Base\Component
|
|
69 |
|
70 |
// Filters data
|
71 |
$staff_members = Lib\Entities\Staff::query( 's' )->select( 's.id, s.full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
|
72 |
-
$customers = Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray();
|
73 |
$services = Lib\Entities\Service::query( 's' )->select( 's.id, s.title' )->where( 'type', Lib\Entities\Service::TYPE_SIMPLE )->fetchArray();
|
74 |
|
75 |
self::renderTemplate( 'index', compact( 'custom_fields', 'staff_members', 'customers', 'services', 'show_attachments' ) );
|
60 |
'cf_columns' => $cf_columns,
|
61 |
'filter' => (array) get_user_meta( get_current_user_id(), 'bookly_filter_appointments_list', true ),
|
62 |
'no_result_found' => __( 'No result found', 'bookly' ),
|
63 |
+
'searching' => __( 'Searching', 'bookly' ),
|
64 |
'attachments' => __( 'Attachments', 'bookly' ),
|
65 |
'tasks' => array(
|
66 |
'enabled' => Lib\Config::tasksActive(),
|
70 |
|
71 |
// Filters data
|
72 |
$staff_members = Lib\Entities\Staff::query( 's' )->select( 's.id, s.full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
|
73 |
+
$customers = Lib\Entities\Customer::query()->count() < Lib\Entities\Customer::REMOTE_LIMIT ? Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray() : false;
|
74 |
$services = Lib\Entities\Service::query( 's' )->select( 's.id, s.title' )->where( 'type', Lib\Entities\Service::TYPE_SIMPLE )->fetchArray();
|
75 |
|
76 |
self::renderTemplate( 'index', compact( 'custom_fields', 'staff_members', 'customers', 'services', 'show_attachments' ) );
|
backend/modules/appointments/resources/js/appointments.js
CHANGED
@@ -206,6 +206,7 @@ jQuery(function($) {
|
|
206 |
$('[data-toggle="popover"]').on('click', function (e) {
|
207 |
e.preventDefault();
|
208 |
}).popover();
|
|
|
209 |
},
|
210 |
ajax: {
|
211 |
url : ajaxurl,
|
@@ -293,6 +294,7 @@ jQuery(function($) {
|
|
293 |
service : $serviceFilter.val(),
|
294 |
status : $statusFilter.val()
|
295 |
}));
|
|
|
296 |
|
297 |
return true;
|
298 |
});
|
@@ -362,6 +364,9 @@ jQuery(function($) {
|
|
362 |
$('#bookly-delete-dialog').modal('hide');
|
363 |
if (response.success) {
|
364 |
dt.draw(false);
|
|
|
|
|
|
|
365 |
} else {
|
366 |
alert(response.data.message);
|
367 |
}
|
@@ -409,7 +414,7 @@ jQuery(function($) {
|
|
409 |
cancelLabel: BooklyL10n.dateRange.cancel,
|
410 |
fromLabel : BooklyL10n.dateRange.from,
|
411 |
toLabel : BooklyL10n.dateRange.to,
|
412 |
-
customRangeLabel: BooklyL10n.dateRange.
|
413 |
daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
|
414 |
monthNames : BooklyL10n.datePicker.monthNames,
|
415 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
@@ -451,7 +456,7 @@ jQuery(function($) {
|
|
451 |
cancelLabel: BooklyL10n.dateRange.cancel,
|
452 |
fromLabel : BooklyL10n.dateRange.from,
|
453 |
toLabel : BooklyL10n.dateRange.to,
|
454 |
-
customRangeLabel: BooklyL10n.dateRange.
|
455 |
daysOfWeek : BooklyL10n.datePicker.monthNamesShort,
|
456 |
monthNames : BooklyL10n.datePicker.monthNames,
|
457 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
@@ -485,10 +490,6 @@ jQuery(function($) {
|
|
485 |
* On filters change.
|
486 |
*/
|
487 |
$('.bookly-js-select')
|
488 |
-
.on('select2:unselecting', function(e) {
|
489 |
-
e.preventDefault();
|
490 |
-
$(this).val(null).trigger('change');
|
491 |
-
})
|
492 |
.select2({
|
493 |
width: '100%',
|
494 |
theme: 'bootstrap',
|
@@ -498,6 +499,31 @@ jQuery(function($) {
|
|
498 |
}
|
499 |
});
|
500 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
501 |
$idFilter.on('keyup', function () { dt.ajax.reload(); });
|
502 |
$appointmentDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
|
503 |
$creationDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
|
206 |
$('[data-toggle="popover"]').on('click', function (e) {
|
207 |
e.preventDefault();
|
208 |
}).popover();
|
209 |
+
dt.responsive.recalc();
|
210 |
},
|
211 |
ajax: {
|
212 |
url : ajaxurl,
|
294 |
service : $serviceFilter.val(),
|
295 |
status : $statusFilter.val()
|
296 |
}));
|
297 |
+
$exportDialog.modal('hide');
|
298 |
|
299 |
return true;
|
300 |
});
|
364 |
$('#bookly-delete-dialog').modal('hide');
|
365 |
if (response.success) {
|
366 |
dt.draw(false);
|
367 |
+
if (response.data && response.data.queue && response.data.queue.length) {
|
368 |
+
$(document.body).trigger('bookly.queue_dialog', [response.data.queue]);
|
369 |
+
}
|
370 |
} else {
|
371 |
alert(response.data.message);
|
372 |
}
|
414 |
cancelLabel: BooklyL10n.dateRange.cancel,
|
415 |
fromLabel : BooklyL10n.dateRange.from,
|
416 |
toLabel : BooklyL10n.dateRange.to,
|
417 |
+
customRangeLabel: BooklyL10n.dateRange.customRange,
|
418 |
daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
|
419 |
monthNames : BooklyL10n.datePicker.monthNames,
|
420 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
456 |
cancelLabel: BooklyL10n.dateRange.cancel,
|
457 |
fromLabel : BooklyL10n.dateRange.from,
|
458 |
toLabel : BooklyL10n.dateRange.to,
|
459 |
+
customRangeLabel: BooklyL10n.dateRange.customRange,
|
460 |
daysOfWeek : BooklyL10n.datePicker.monthNamesShort,
|
461 |
monthNames : BooklyL10n.datePicker.monthNames,
|
462 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
490 |
* On filters change.
|
491 |
*/
|
492 |
$('.bookly-js-select')
|
|
|
|
|
|
|
|
|
493 |
.select2({
|
494 |
width: '100%',
|
495 |
theme: 'bootstrap',
|
499 |
}
|
500 |
});
|
501 |
|
502 |
+
$('.bookly-js-select-ajax')
|
503 |
+
.select2({
|
504 |
+
width: '100%',
|
505 |
+
theme: 'bootstrap',
|
506 |
+
allowClear: true,
|
507 |
+
language : {
|
508 |
+
noResults: function() { return BooklyL10n.no_result_found; },
|
509 |
+
searching: function () { return BooklyL10n.searching; }
|
510 |
+
},
|
511 |
+
ajax: {
|
512 |
+
url: ajaxurl,
|
513 |
+
dataType: 'json',
|
514 |
+
delay: 250,
|
515 |
+
data: function (params) {
|
516 |
+
params.page = params.page || 1;
|
517 |
+
return {
|
518 |
+
action: $(this).data('action'),
|
519 |
+
filter: params.term,
|
520 |
+
page: params.page,
|
521 |
+
csrf_token : BooklyL10n.csrf_token
|
522 |
+
};
|
523 |
+
}
|
524 |
+
},
|
525 |
+
});
|
526 |
+
|
527 |
$idFilter.on('keyup', function () { dt.ajax.reload(); });
|
528 |
$appointmentDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
|
529 |
$creationDateFilter.on('apply.daterangepicker', function () { dt.ajax.reload(); });
|
backend/modules/appointments/templates/index.php
CHANGED
@@ -65,10 +65,12 @@ use Bookly\Lib\Utils\DateTime;
|
|
65 |
<div class="clearfix visible-md-block"></div>
|
66 |
<div class="col-md-3 col-lg-2">
|
67 |
<div class="form-group">
|
68 |
-
<select class="form-control bookly-js-select" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>">
|
69 |
-
<?php
|
70 |
-
|
71 |
-
|
|
|
|
|
72 |
</select>
|
73 |
</div>
|
74 |
</div>
|
@@ -135,6 +137,7 @@ use Bookly\Lib\Utils\DateTime;
|
|
135 |
|
136 |
<?php Dialogs\Appointment\Delete\Dialog::render() ?>
|
137 |
<?php Dialogs\Appointment\Edit\Dialog::render() ?>
|
|
|
138 |
<?php Proxy\Shared::renderAddOnsComponents() ?>
|
139 |
</div>
|
140 |
</div>
|
65 |
<div class="clearfix visible-md-block"></div>
|
66 |
<div class="col-md-3 col-lg-2">
|
67 |
<div class="form-group">
|
68 |
+
<select class="form-control <?php echo $customers === false ? 'bookly-js-select-ajax' : 'bookly-js-select' ?>" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>" data-action="bookly_get_customers_list">
|
69 |
+
<?php if ( $customers !== false ) : ?>
|
70 |
+
<?php foreach ( $customers as $customer ) : ?>
|
71 |
+
<option value="<?php echo $customer['id'] ?>"><?php echo esc_html( $customer['full_name'] ) ?></option>
|
72 |
+
<?php endforeach ?>
|
73 |
+
<?php endif ?>
|
74 |
</select>
|
75 |
</div>
|
76 |
</div>
|
137 |
|
138 |
<?php Dialogs\Appointment\Delete\Dialog::render() ?>
|
139 |
<?php Dialogs\Appointment\Edit\Dialog::render() ?>
|
140 |
+
<?php Dialogs\Queue\Dialog::render() ?>
|
141 |
<?php Proxy\Shared::renderAddOnsComponents() ?>
|
142 |
</div>
|
143 |
</div>
|
backend/modules/calendar/Ajax.php
CHANGED
@@ -34,7 +34,7 @@ class Ajax extends Page
|
|
34 |
$start_date = new \DateTime( self::parameter( 'start' ) );
|
35 |
$end_date = new \DateTime( self::parameter( 'end' ) );
|
36 |
// FullCalendar sends end date as 1 day further.
|
37 |
-
$end_date->sub( $one_day );
|
38 |
|
39 |
if ( Lib\Utils\Common::isCurrentUserSupervisor() ) {
|
40 |
$staff_ids = explode( ',', self::parameter( 'staff_ids' ) );
|
@@ -181,7 +181,8 @@ class Ajax extends Page
|
|
181 |
{
|
182 |
$query = Lib\Entities\Appointment::query( 'a' )
|
183 |
->where( 'st.id', $staff_id )
|
184 |
-
->
|
|
|
185 |
|
186 |
Proxy\Shared::prepareAppointmentsQueryForFC( $query, $staff_id, $start_date, $end_date );
|
187 |
|
34 |
$start_date = new \DateTime( self::parameter( 'start' ) );
|
35 |
$end_date = new \DateTime( self::parameter( 'end' ) );
|
36 |
// FullCalendar sends end date as 1 day further.
|
37 |
+
// $end_date->sub( $one_day );
|
38 |
|
39 |
if ( Lib\Utils\Common::isCurrentUserSupervisor() ) {
|
40 |
$staff_ids = explode( ',', self::parameter( 'staff_ids' ) );
|
181 |
{
|
182 |
$query = Lib\Entities\Appointment::query( 'a' )
|
183 |
->where( 'st.id', $staff_id )
|
184 |
+
->whereLt( 'DATE(a.start_date)', $end_date->format( 'Y-m-d' ) )
|
185 |
+
->whereRaw( 'DATE(DATE_ADD(a.end_date, INTERVAL IF(ca.extras_consider_duration, a.extras_duration, 0) SECOND)) >= \'%s\'', array( $start_date->format( 'Y-m-d' ) ) );
|
186 |
|
187 |
Proxy\Shared::prepareAppointmentsQueryForFC( $query, $staff_id, $start_date, $end_date );
|
188 |
|
backend/modules/calendar/resources/js/calendar-common.js
CHANGED
@@ -235,7 +235,7 @@ jQuery(function ($) {
|
|
235 |
});
|
236 |
},
|
237 |
onSelect: function (dateText, inst) {
|
238 |
-
var d = new Date(
|
239 |
$container.fullCalendar('gotoDate', d);
|
240 |
if ($container.fullCalendar('getView').type != 'agendaDay' &&
|
241 |
$container.fullCalendar('getView').type != 'multiStaffDay') {
|
@@ -278,6 +278,9 @@ jQuery(function ($) {
|
|
278 |
ladda.stop();
|
279 |
$container.fullCalendar('removeEvents', calEvent.id);
|
280 |
obj.$deleteDialog.modal('hide');
|
|
|
|
|
|
|
281 |
}
|
282 |
});
|
283 |
});
|
235 |
});
|
236 |
},
|
237 |
onSelect: function (dateText, inst) {
|
238 |
+
var d = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay);
|
239 |
$container.fullCalendar('gotoDate', d);
|
240 |
if ($container.fullCalendar('getView').type != 'agendaDay' &&
|
241 |
$container.fullCalendar('getView').type != 'multiStaffDay') {
|
278 |
ladda.stop();
|
279 |
$container.fullCalendar('removeEvents', calEvent.id);
|
280 |
obj.$deleteDialog.modal('hide');
|
281 |
+
if (response.data && response.data.queue && response.data.queue.length) {
|
282 |
+
$(document.body).trigger('bookly.queue_dialog', [response.data.queue]);
|
283 |
+
}
|
284 |
}
|
285 |
});
|
286 |
});
|
backend/modules/calendar/templates/calendar.php
CHANGED
@@ -98,5 +98,6 @@ use Bookly\Backend\Modules\Calendar\Proxy;
|
|
98 |
</div>
|
99 |
|
100 |
<?php Components\Dialogs\Appointment\Delete\Dialog::render() ?>
|
|
|
101 |
</div>
|
102 |
</div>
|
98 |
</div>
|
99 |
|
100 |
<?php Components\Dialogs\Appointment\Delete\Dialog::render() ?>
|
101 |
+
<?php Components\Dialogs\Queue\Dialog::render() ?>
|
102 |
</div>
|
103 |
</div>
|
backend/modules/customers/Ajax.php
CHANGED
@@ -123,6 +123,49 @@ class Ajax extends Lib\Base\Ajax
|
|
123 |
) );
|
124 |
}
|
125 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
/**
|
127 |
* Merge customers.
|
128 |
*/
|
123 |
) );
|
124 |
}
|
125 |
|
126 |
+
/**
|
127 |
+
* Get list of customers.
|
128 |
+
*/
|
129 |
+
public static function getCustomersList()
|
130 |
+
{
|
131 |
+
global $wpdb;
|
132 |
+
|
133 |
+
$max_results = 20;
|
134 |
+
$filter = self::parameter( 'filter' );
|
135 |
+
$page = self::parameter( 'page' );
|
136 |
+
$query = Lib\Entities\Customer::query( 'c' );
|
137 |
+
|
138 |
+
$query->select( 'SQL_CALC_FOUND_ROWS c.id, c.group_id, c.full_name AS text, c.email, c.phone' );
|
139 |
+
|
140 |
+
if ( $filter != '' ) {
|
141 |
+
$search_value = Lib\Query::escape( $filter );
|
142 |
+
$query
|
143 |
+
->whereLike( 'c.full_name', "%{$search_value}%" );
|
144 |
+
}
|
145 |
+
|
146 |
+
$query->limit( $max_results )->offset( ( $page - 1 ) * $max_results );
|
147 |
+
|
148 |
+
$customers = array();
|
149 |
+
foreach ( $query->fetchArray() as $customer ) {
|
150 |
+
$name = $customer['text'];
|
151 |
+
if ( $customer['email'] != '' || $customer['phone'] != '' ) {
|
152 |
+
$name .= ' (' . trim( $customer['email'] . ', ' . $customer['phone'], ', ' ) . ')';
|
153 |
+
}
|
154 |
+
$customer['name'] = $name;
|
155 |
+
if ( self::parameter( 'timezone' ) ) {
|
156 |
+
$customer['timezone'] = Lib\Proxy\Pro::getLastCustomerTimezone( $customer['id'] );
|
157 |
+
}
|
158 |
+
$customers[] = $customer;
|
159 |
+
}
|
160 |
+
|
161 |
+
wp_send_json( array(
|
162 |
+
'results' => $customers,
|
163 |
+
'pagination' => array(
|
164 |
+
'more' => ( int ) $wpdb->get_var( 'SELECT FOUND_ROWS()' ) > $max_results * $page,
|
165 |
+
),
|
166 |
+
) );
|
167 |
+
}
|
168 |
+
|
169 |
/**
|
170 |
* Merge customers.
|
171 |
*/
|
backend/modules/dashboard/resources/js/dashboard.js
CHANGED
@@ -31,7 +31,7 @@ jQuery(function ($) {
|
|
31 |
toLabel : BooklyL10n.dateRange.to,
|
32 |
customRangeLabel: BooklyL10n.dateRange.customRange,
|
33 |
daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
|
34 |
-
monthNames : BooklyL10n.datePicker.
|
35 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
36 |
format : BooklyL10n.dateRange.dateFormat
|
37 |
}
|
31 |
toLabel : BooklyL10n.dateRange.to,
|
32 |
customRangeLabel: BooklyL10n.dateRange.customRange,
|
33 |
daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
|
34 |
+
monthNames : BooklyL10n.datePicker.monthNames,
|
35 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
36 |
format : BooklyL10n.dateRange.dateFormat
|
37 |
}
|
backend/modules/debug/Ajax.php
CHANGED
@@ -2,12 +2,14 @@
|
|
2 |
namespace Bookly\Backend\Modules\Debug;
|
3 |
|
4 |
use Bookly\Lib;
|
|
|
|
|
5 |
|
6 |
/**
|
7 |
* Class Ajax
|
8 |
* @package Bookly\Backend\Modules\Debug
|
9 |
*/
|
10 |
-
class Ajax extends
|
11 |
{
|
12 |
/**
|
13 |
* Export database data.
|
@@ -18,7 +20,7 @@ class Ajax extends Page
|
|
18 |
global $wpdb;
|
19 |
|
20 |
$result = array();
|
21 |
-
|
22 |
foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
|
23 |
/** @var Lib\Base\Plugin $plugin */
|
24 |
$installer_class = $plugin::getRootNamespace() . '\Lib\Installer';
|
@@ -28,7 +30,7 @@ class Ajax extends Page
|
|
28 |
foreach ( $plugin::getEntityClasses() as $entity_class ) {
|
29 |
$table_name = $entity_class::getTableName();
|
30 |
$result['entities'][ $entity_class ] = array(
|
31 |
-
'fields' =>
|
32 |
'values' => $wpdb->get_results( 'SELECT * FROM ' . $table_name, ARRAY_N )
|
33 |
);
|
34 |
}
|
@@ -143,6 +145,9 @@ class Ajax extends Page
|
|
143 |
exit ( 0 );
|
144 |
}
|
145 |
|
|
|
|
|
|
|
146 |
public static function getFieldData()
|
147 |
{
|
148 |
/** @global \wpdb */
|
@@ -486,22 +491,23 @@ class Ajax extends Page
|
|
486 |
}
|
487 |
}
|
488 |
|
|
|
|
|
|
|
489 |
public static function executeQuery()
|
490 |
{
|
491 |
-
|
492 |
-
global $wpdb;
|
493 |
-
|
494 |
-
ob_start();
|
495 |
-
$result = $wpdb->query( self::parameter( 'query' ) );
|
496 |
-
ob_end_clean();
|
497 |
|
498 |
-
if ( $
|
499 |
wp_send_json_success( array( 'message' => 'Query completed successfully' ) );
|
500 |
} else {
|
501 |
-
wp_send_json_error( array( 'message' => $
|
502 |
}
|
503 |
}
|
504 |
|
|
|
|
|
|
|
505 |
public static function getConstraintData()
|
506 |
{
|
507 |
/** @global \wpdb */
|
@@ -585,14 +591,14 @@ class Ajax extends Page
|
|
585 |
}
|
586 |
}
|
587 |
|
|
|
|
|
|
|
588 |
public static function addConstraint()
|
589 |
{
|
590 |
-
/** @global \wpdb */
|
591 |
-
global $wpdb;
|
592 |
-
|
593 |
$table = self::parameter( 'table' );
|
594 |
$column = self::parameter( 'column' );
|
595 |
-
$ref_table
|
596 |
$ref_column = self::parameter( 'ref_column' );
|
597 |
|
598 |
$sql = sprintf( 'ALTER TABLE `%s` ADD CONSTRAINT FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)', $table, $column, $ref_table, $ref_column );
|
@@ -619,22 +625,20 @@ class Ajax extends Page
|
|
619 |
wp_send_json_error( array( 'message' => 'Select ON UPDATE action' ) );
|
620 |
}
|
621 |
|
622 |
-
|
623 |
-
$result = $wpdb->query( $sql );
|
624 |
-
ob_end_clean();
|
625 |
|
626 |
-
if ( $
|
627 |
wp_send_json_success( array( 'message' => 'Constraint created' ) );
|
628 |
} else {
|
629 |
-
wp_send_json_error( array( 'message' => $
|
630 |
}
|
631 |
}
|
632 |
|
|
|
|
|
|
|
633 |
public static function fixConsistency()
|
634 |
{
|
635 |
-
/** @global \wpdb */
|
636 |
-
global $wpdb;
|
637 |
-
|
638 |
$rule = self::parameter( 'rule' );
|
639 |
$table = self::parameter( 'table' );
|
640 |
$column = self::parameter( 'column' );
|
@@ -654,15 +658,114 @@ class Ajax extends Page
|
|
654 |
wp_send_json_success( array( 'message' => 'No manipulation actions were performed' ) );
|
655 |
}
|
656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
657 |
|
658 |
ob_start();
|
659 |
$result = $wpdb->query( $sql );
|
660 |
ob_end_clean();
|
661 |
|
662 |
-
|
663 |
-
wp_send_json_success( array( 'message' => 'Successful, click Add constraint' ) );
|
664 |
-
} else {
|
665 |
-
wp_send_json_error( array( 'message' => $wpdb->last_error ) );
|
666 |
-
}
|
667 |
}
|
668 |
}
|
2 |
namespace Bookly\Backend\Modules\Debug;
|
3 |
|
4 |
use Bookly\Lib;
|
5 |
+
use Bookly\Backend\Modules\Debug\Lib\QueryBuilder;
|
6 |
+
use Bookly\Backend\Modules\Debug\Lib\Schema;
|
7 |
|
8 |
/**
|
9 |
* Class Ajax
|
10 |
* @package Bookly\Backend\Modules\Debug
|
11 |
*/
|
12 |
+
class Ajax extends Lib\Base\Ajax
|
13 |
{
|
14 |
/**
|
15 |
* Export database data.
|
20 |
global $wpdb;
|
21 |
|
22 |
$result = array();
|
23 |
+
$schema = new Schema();
|
24 |
foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
|
25 |
/** @var Lib\Base\Plugin $plugin */
|
26 |
$installer_class = $plugin::getRootNamespace() . '\Lib\Installer';
|
30 |
foreach ( $plugin::getEntityClasses() as $entity_class ) {
|
31 |
$table_name = $entity_class::getTableName();
|
32 |
$result['entities'][ $entity_class ] = array(
|
33 |
+
'fields' => array_keys( $schema->getTableStructure( $table_name ) ),
|
34 |
'values' => $wpdb->get_results( 'SELECT * FROM ' . $table_name, ARRAY_N )
|
35 |
);
|
36 |
}
|
145 |
exit ( 0 );
|
146 |
}
|
147 |
|
148 |
+
/**
|
149 |
+
* manual
|
150 |
+
*/
|
151 |
public static function getFieldData()
|
152 |
{
|
153 |
/** @global \wpdb */
|
491 |
}
|
492 |
}
|
493 |
|
494 |
+
/**
|
495 |
+
* Execute query
|
496 |
+
*/
|
497 |
public static function executeQuery()
|
498 |
{
|
499 |
+
$success = self::execute( self::parameter( 'query' ) );
|
|
|
|
|
|
|
|
|
|
|
500 |
|
501 |
+
if ( $success === true ) {
|
502 |
wp_send_json_success( array( 'message' => 'Query completed successfully' ) );
|
503 |
} else {
|
504 |
+
wp_send_json_error( array( 'message' => $success ) );
|
505 |
}
|
506 |
}
|
507 |
|
508 |
+
/**
|
509 |
+
* manual
|
510 |
+
*/
|
511 |
public static function getConstraintData()
|
512 |
{
|
513 |
/** @global \wpdb */
|
591 |
}
|
592 |
}
|
593 |
|
594 |
+
/**
|
595 |
+
* manual
|
596 |
+
*/
|
597 |
public static function addConstraint()
|
598 |
{
|
|
|
|
|
|
|
599 |
$table = self::parameter( 'table' );
|
600 |
$column = self::parameter( 'column' );
|
601 |
+
$ref_table = self::parameter( 'ref_table' );
|
602 |
$ref_column = self::parameter( 'ref_column' );
|
603 |
|
604 |
$sql = sprintf( 'ALTER TABLE `%s` ADD CONSTRAINT FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)', $table, $column, $ref_table, $ref_column );
|
625 |
wp_send_json_error( array( 'message' => 'Select ON UPDATE action' ) );
|
626 |
}
|
627 |
|
628 |
+
$success = self::execute( $sql );
|
|
|
|
|
629 |
|
630 |
+
if ( $success === true ) {
|
631 |
wp_send_json_success( array( 'message' => 'Constraint created' ) );
|
632 |
} else {
|
633 |
+
wp_send_json_error( array( 'message' => $success ) );
|
634 |
}
|
635 |
}
|
636 |
|
637 |
+
/**
|
638 |
+
* manual
|
639 |
+
*/
|
640 |
public static function fixConsistency()
|
641 |
{
|
|
|
|
|
|
|
642 |
$rule = self::parameter( 'rule' );
|
643 |
$table = self::parameter( 'table' );
|
644 |
$column = self::parameter( 'column' );
|
658 |
wp_send_json_success( array( 'message' => 'No manipulation actions were performed' ) );
|
659 |
}
|
660 |
|
661 |
+
$success = self::execute( $sql );
|
662 |
+
|
663 |
+
if ( $success === true ) {
|
664 |
+
wp_send_json_success( array( 'message' => 'Successful, click Add constraint' ) );
|
665 |
+
} else {
|
666 |
+
wp_send_json_error( array( 'message' => $success ) );
|
667 |
+
}
|
668 |
+
}
|
669 |
+
|
670 |
+
public static function fixDataBaseSchema()
|
671 |
+
{
|
672 |
+
$errors = array();
|
673 |
+
$queries = 0;
|
674 |
+
$schema = new Schema();
|
675 |
+
/** @var Lib\Base\Plugin $plugin */
|
676 |
+
foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
|
677 |
+
foreach ( $plugin::getEntityClasses() as $entity_class ) {
|
678 |
+
$table_name = $entity_class::getTableName();
|
679 |
+
if ( ! $schema->existsTable( $table_name ) ) {
|
680 |
+
$queries ++;
|
681 |
+
$success = self::execute( QueryBuilder::getCreateTable( $table_name ) );
|
682 |
+
if ( $success !== true ) {
|
683 |
+
$errors[] = sprintf( 'Can`t create table <b>%s</b>, Error:%s', $table_name, $success );
|
684 |
+
}
|
685 |
+
}
|
686 |
+
if ( $schema->existsTable( $table_name ) ) {
|
687 |
+
$table_structure = $schema->getTableStructure( $table_name );
|
688 |
+
$entity_schema = $entity_class::getSchema();
|
689 |
+
|
690 |
+
// Comparing model schema with real DB schema
|
691 |
+
foreach ( $entity_schema as $column => $data ) {
|
692 |
+
if ( array_key_exists( $column, $table_structure ) ) {
|
693 |
+
$expect = QueryBuilder::getColumnData( $table_name, $column );
|
694 |
+
$actual = $table_structure[ $column ];
|
695 |
+
unset( $expect['key'], $actual['key'] );
|
696 |
+
if ( $expect && array_diff_assoc( $actual, $expect ) ) {
|
697 |
+
$sql = QueryBuilder::getChangeColumn( $table_name, $column );
|
698 |
+
if ( $table_structure[ $column ]['key'] == 'PRI' ) {
|
699 |
+
$sql = str_replace( ' primary key', '', $sql );
|
700 |
+
}
|
701 |
+
$queries ++;
|
702 |
+
$success = self::execute( $sql );
|
703 |
+
if ( $success !== true ) {
|
704 |
+
$errors[] = sprintf( 'Can`t change column <b>%s.%s</b>, Error:%s', $table_name, $column, $success );
|
705 |
+
}
|
706 |
+
}
|
707 |
+
} else {
|
708 |
+
$queries ++;
|
709 |
+
$success = self::execute( QueryBuilder::getAddColumn( $table_name, $column ) );
|
710 |
+
if ( $success !== true ) {
|
711 |
+
$errors[] = sprintf( 'Can`t add column <b>%s.%s</b>, Error:%s', $table_name, $column, $success );
|
712 |
+
}
|
713 |
+
}
|
714 |
+
}
|
715 |
+
}
|
716 |
+
}
|
717 |
+
|
718 |
+
foreach ( $plugin::getEntityClasses() as $entity_class ) {
|
719 |
+
$table_name = $entity_class::getTableName();
|
720 |
+
if ( $schema->existsTable( $table_name ) ) {
|
721 |
+
$entity_constraints = $entity_class::getConstraints();
|
722 |
+
$table_constraints = $schema->getTableConstraints( $table_name );
|
723 |
+
// Comparing model constraints with real DB constraints
|
724 |
+
foreach ( $entity_constraints as $constraint ) {
|
725 |
+
$key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
|
726 |
+
if ( ! array_key_exists( $key, $table_constraints ) ) {
|
727 |
+
$query = QueryBuilder::getAddConstraint( $table_name, $constraint['column_name'], $constraint['referenced_table_name'], $constraint['referenced_column_name'] );
|
728 |
+
if ( $query !== '' ) {
|
729 |
+
$queries ++;
|
730 |
+
$success = self::execute( $query );
|
731 |
+
if ( $success !== true ) {
|
732 |
+
$errors[] = sprintf( 'Can`t add constraint <b>%s.%s</b> REFERENCES `%s` (`%s`), Error:%s', $table_name, $constraint['column_name'], $constraint['referenced_table_name'], $constraint['referenced_column_name'], $success );
|
733 |
+
}
|
734 |
+
}
|
735 |
+
}
|
736 |
+
}
|
737 |
+
|
738 |
+
foreach ( $table_constraints as $constraint ) {
|
739 |
+
if ( $constraint['reference_exists'] === false ) {
|
740 |
+
$queries ++;
|
741 |
+
$success = self::execute( QueryBuilder::getDropForeignKey( $table_name, $constraint['constraint_name'] ) );
|
742 |
+
if ( $success !== true ) {
|
743 |
+
$errors[] = sprintf( 'Can`t drop foreign key <b>%s</b>, Error:%s', $constraint['constraint_name'], $success );
|
744 |
+
}
|
745 |
+
}
|
746 |
+
}
|
747 |
+
}
|
748 |
+
}
|
749 |
+
}
|
750 |
+
|
751 |
+
$message = ( $queries - count( $errors ) ) . ' queries completed successfully, with errors ' . count( $errors );
|
752 |
+
$errors
|
753 |
+
? wp_send_json_error( compact( 'errors', 'message' ) )
|
754 |
+
: wp_send_json_success( compact( 'message' ) );
|
755 |
+
}
|
756 |
+
|
757 |
+
/**
|
758 |
+
* @param string $sql
|
759 |
+
* @return bool|string
|
760 |
+
*/
|
761 |
+
protected static function execute( $sql )
|
762 |
+
{
|
763 |
+
global $wpdb;
|
764 |
|
765 |
ob_start();
|
766 |
$result = $wpdb->query( $sql );
|
767 |
ob_end_clean();
|
768 |
|
769 |
+
return $result !== false ? true : $wpdb->last_error;
|
|
|
|
|
|
|
|
|
770 |
}
|
771 |
}
|
backend/modules/debug/Page.php
CHANGED
@@ -2,16 +2,19 @@
|
|
2 |
namespace Bookly\Backend\Modules\Debug;
|
3 |
|
4 |
use Bookly\Lib;
|
|
|
|
|
5 |
|
6 |
/**
|
7 |
* Class Page
|
8 |
* @package Bookly\Backend\Modules\Debug
|
9 |
*/
|
10 |
-
class Page extends Lib\Base\
|
11 |
{
|
12 |
const TABLE_STATUS_OK = 1;
|
13 |
const TABLE_STATUS_ERROR = 0;
|
14 |
const TABLE_STATUS_WARNING = 2;
|
|
|
15 |
|
16 |
/**
|
17 |
* Render page.
|
@@ -39,48 +42,66 @@ class Page extends Lib\Base\Ajax
|
|
39 |
'module' => array( 'js/debug.js' => array( 'jquery' ) ),
|
40 |
) );
|
41 |
|
42 |
-
$debug
|
|
|
43 |
/** @var Lib\Base\Plugin $plugin */
|
44 |
foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
|
45 |
foreach ( $plugin::getEntityClasses() as $entity_class ) {
|
46 |
-
$
|
47 |
-
$debug[ $
|
48 |
'fields' => null,
|
49 |
'constraints' => null,
|
50 |
'status' => null,
|
51 |
);
|
52 |
-
if (
|
53 |
-
$
|
54 |
-
$
|
55 |
-
$
|
56 |
-
$
|
57 |
-
$debug[ $
|
58 |
-
$debug[ $
|
59 |
|
60 |
// Comparing model schema with real DB schema
|
61 |
-
foreach ( $
|
62 |
-
if (
|
63 |
-
$debug[ $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
} else {
|
65 |
-
$debug[ $
|
66 |
-
$debug[ $
|
67 |
}
|
68 |
}
|
69 |
|
70 |
// Comparing model constraints with real DB constraints
|
71 |
-
foreach ( $
|
72 |
$key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
|
73 |
-
$debug[ $
|
74 |
-
if ( array_key_exists ( $key, $
|
75 |
-
$debug[ $
|
76 |
} else {
|
77 |
-
$debug[ $
|
78 |
-
$debug[ $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
}
|
80 |
}
|
81 |
|
82 |
} else {
|
83 |
-
$debug[ $
|
84 |
}
|
85 |
}
|
86 |
}
|
@@ -96,76 +117,4 @@ class Page extends Lib\Base\Ajax
|
|
96 |
$import_status = self::parameter( 'status' );
|
97 |
self::renderTemplate( 'index', compact( 'debug', 'import_status' ) );
|
98 |
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Get table structure
|
102 |
-
*
|
103 |
-
* @param string $tableName
|
104 |
-
* @return array
|
105 |
-
*/
|
106 |
-
protected static function _getTableStructure( $tableName )
|
107 |
-
{
|
108 |
-
global $wpdb;
|
109 |
-
|
110 |
-
$tableStructure = array();
|
111 |
-
$results = $wpdb->get_results( 'DESCRIBE `' . $tableName . '`;' );
|
112 |
-
if ( $results ) {
|
113 |
-
foreach ( $results as $row ) {
|
114 |
-
$tableStructure[] = $row->Field;
|
115 |
-
}
|
116 |
-
}
|
117 |
-
|
118 |
-
return $tableStructure;
|
119 |
-
}
|
120 |
-
|
121 |
-
/**
|
122 |
-
* Get table constraints
|
123 |
-
*
|
124 |
-
* @param string $tableName
|
125 |
-
* @return array
|
126 |
-
*/
|
127 |
-
protected static function _getTableConstraints( $tableName )
|
128 |
-
{
|
129 |
-
global $wpdb;
|
130 |
-
|
131 |
-
$tableConstraints = array();
|
132 |
-
$results = $wpdb->get_results(
|
133 |
-
'SELECT
|
134 |
-
COLUMN_NAME,
|
135 |
-
CONSTRAINT_NAME,
|
136 |
-
REFERENCED_COLUMN_NAME,
|
137 |
-
REFERENCED_TABLE_NAME
|
138 |
-
FROM information_schema.KEY_COLUMN_USAGE
|
139 |
-
WHERE
|
140 |
-
TABLE_NAME = "' . $tableName . '"
|
141 |
-
AND CONSTRAINT_SCHEMA = SCHEMA()
|
142 |
-
AND CONSTRAINT_NAME <> "PRIMARY";'
|
143 |
-
);
|
144 |
-
if ( $results ) {
|
145 |
-
foreach ( $results as $row ) {
|
146 |
-
$constraint = array(
|
147 |
-
'column_name' => $row->COLUMN_NAME,
|
148 |
-
'referenced_table_name' => $row->REFERENCED_COLUMN_NAME,
|
149 |
-
'referenced_column_name' => $row->REFERENCED_TABLE_NAME,
|
150 |
-
);
|
151 |
-
$key = $row->COLUMN_NAME . $row->REFERENCED_TABLE_NAME . $row->REFERENCED_COLUMN_NAME;
|
152 |
-
$tableConstraints[ $key ] = $constraint;
|
153 |
-
}
|
154 |
-
}
|
155 |
-
|
156 |
-
return $tableConstraints;
|
157 |
-
}
|
158 |
-
|
159 |
-
/**
|
160 |
-
* Verifying if table exists
|
161 |
-
*
|
162 |
-
* @param string $tableName
|
163 |
-
* @return int
|
164 |
-
*/
|
165 |
-
protected static function _tableExists( $tableName )
|
166 |
-
{
|
167 |
-
global $wpdb;
|
168 |
-
|
169 |
-
return $wpdb->query( 'SHOW TABLES LIKE "' . $tableName . '"' );
|
170 |
-
}
|
171 |
}
|
2 |
namespace Bookly\Backend\Modules\Debug;
|
3 |
|
4 |
use Bookly\Lib;
|
5 |
+
use Bookly\Backend\Modules\Debug\Lib\Schema;
|
6 |
+
use Bookly\Backend\Modules\Debug\Lib\QueryBuilder;
|
7 |
|
8 |
/**
|
9 |
* Class Page
|
10 |
* @package Bookly\Backend\Modules\Debug
|
11 |
*/
|
12 |
+
class Page extends Lib\Base\Component
|
13 |
{
|
14 |
const TABLE_STATUS_OK = 1;
|
15 |
const TABLE_STATUS_ERROR = 0;
|
16 |
const TABLE_STATUS_WARNING = 2;
|
17 |
+
const TABLE_STATUS_INFO = 3;
|
18 |
|
19 |
/**
|
20 |
* Render page.
|
42 |
'module' => array( 'js/debug.js' => array( 'jquery' ) ),
|
43 |
) );
|
44 |
|
45 |
+
$debug = array();
|
46 |
+
$schema = new Schema();
|
47 |
/** @var Lib\Base\Plugin $plugin */
|
48 |
foreach ( apply_filters( 'bookly_plugins', array() ) as $plugin ) {
|
49 |
foreach ( $plugin::getEntityClasses() as $entity_class ) {
|
50 |
+
$table_name = $entity_class::getTableName();
|
51 |
+
$debug[ $table_name ] = array(
|
52 |
'fields' => null,
|
53 |
'constraints' => null,
|
54 |
'status' => null,
|
55 |
);
|
56 |
+
if ( $schema->existsTable( $table_name ) ) {
|
57 |
+
$table_structure = $schema->getTableStructure( $table_name );
|
58 |
+
$table_constraints = $schema->getTableConstraints( $table_name );
|
59 |
+
$entity_schema = $entity_class::getSchema();
|
60 |
+
$entity_constraints = $entity_class::getConstraints();
|
61 |
+
$debug[ $table_name ]['status'] = self::TABLE_STATUS_OK;
|
62 |
+
$debug[ $table_name ]['fields'] = array();
|
63 |
|
64 |
// Comparing model schema with real DB schema
|
65 |
+
foreach ( $entity_schema as $field => $data ) {
|
66 |
+
if ( array_key_exists( $field, $table_structure ) ) {
|
67 |
+
$debug[ $table_name ]['fields'][ $field ] = 1;
|
68 |
+
$expect = QueryBuilder::getColumnData( $table_name, $field );
|
69 |
+
$actual = $table_structure[ $field ];
|
70 |
+
unset( $expect['key'], $actual['key'] );
|
71 |
+
$diff = array_diff_assoc( $actual, $expect );
|
72 |
+
if ( $expect && $diff ) {
|
73 |
+
$debug[ $table_name ]['status'] = self::TABLE_STATUS_INFO;
|
74 |
+
$debug[ $table_name ]['info'][ $field ] = array_keys( $diff );
|
75 |
+
}
|
76 |
} else {
|
77 |
+
$debug[ $table_name ]['fields'][ $field ] = 0;
|
78 |
+
$debug[ $table_name ]['status'] = self::TABLE_STATUS_WARNING;
|
79 |
}
|
80 |
}
|
81 |
|
82 |
// Comparing model constraints with real DB constraints
|
83 |
+
foreach ( $entity_constraints as $constraint ) {
|
84 |
$key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
|
85 |
+
$debug[ $table_name ]['constraints'][ $key ] = $constraint;
|
86 |
+
if ( array_key_exists ( $key, $table_constraints ) ) {
|
87 |
+
$debug[ $table_name ]['constraints'][ $key ]['status'] = 1;
|
88 |
} else {
|
89 |
+
$debug[ $table_name ]['constraints'][ $key ]['status'] = 0;
|
90 |
+
$debug[ $table_name ]['status'] = self::TABLE_STATUS_WARNING;
|
91 |
+
}
|
92 |
+
}
|
93 |
+
$debug[ $table_name ]['constraints_3d'] = array();
|
94 |
+
foreach ( $table_constraints as $constraint_name => $constraint ) {
|
95 |
+
$key = $constraint['column_name'] . $constraint['referenced_table_name'] . $constraint['referenced_column_name'];
|
96 |
+
if ( ! isset( $debug[ $table_name ]['constraints'][ $key ] ) ) {
|
97 |
+
$debug[ $table_name ]['constraints_3d'][ $key ] = $constraint;
|
98 |
+
$debug[ $table_name ]['constraints_3d'][ $key ]['status'] = 0;
|
99 |
+
$debug[ $table_name ]['status'] = self::TABLE_STATUS_WARNING;
|
100 |
}
|
101 |
}
|
102 |
|
103 |
} else {
|
104 |
+
$debug[ $table_name ]['status'] = self::TABLE_STATUS_ERROR;
|
105 |
}
|
106 |
}
|
107 |
}
|
117 |
$import_status = self::parameter( 'status' );
|
118 |
self::renderTemplate( 'index', compact( 'debug', 'import_status' ) );
|
119 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
backend/modules/debug/lib/QueryBuilder.php
ADDED
@@ -0,0 +1,581 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Backend\Modules\Debug\Lib;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class QueryBuilder
|
6 |
+
* @package Bookly\Backend\Modules\Debug\Lib
|
7 |
+
*/
|
8 |
+
class QueryBuilder
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Get add column query
|
12 |
+
*
|
13 |
+
* @param string $table
|
14 |
+
* @param string $column
|
15 |
+
* @return string
|
16 |
+
*/
|
17 |
+
public static function getAddColumn( $table, $column )
|
18 |
+
{
|
19 |
+
$data = self::getColumnData( $table, $column );
|
20 |
+
if ( $data ) {
|
21 |
+
return sprintf( 'ALTER TABLE `%s` ADD COLUMN `%s` %s',
|
22 |
+
$table,
|
23 |
+
$column,
|
24 |
+
self::getColumnDataType( $data )
|
25 |
+
);
|
26 |
+
}
|
27 |
+
|
28 |
+
return '';
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Get drop foreign key query
|
33 |
+
*
|
34 |
+
* @param string $table
|
35 |
+
* @param string $constraint_name
|
36 |
+
* @return string
|
37 |
+
*/
|
38 |
+
public static function getDropForeignKey( $table, $constraint_name )
|
39 |
+
{
|
40 |
+
return sprintf( 'ALTER TABLE `%s` DROP FOREIGN KEY `%s`',
|
41 |
+
$table,
|
42 |
+
$constraint_name
|
43 |
+
);
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Get change column query
|
48 |
+
*
|
49 |
+
* @param string $table
|
50 |
+
* @param string $column
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
public static function getChangeColumn( $table, $column )
|
54 |
+
{
|
55 |
+
$data = self::getColumnData( $table, $column );
|
56 |
+
if ( $data ) {
|
57 |
+
return sprintf( 'ALTER TABLE `%1$s` CHANGE COLUMN `%2$s` `%2$s` %3$s',
|
58 |
+
$table,
|
59 |
+
$column,
|
60 |
+
self::getColumnDataType( $data )
|
61 |
+
);
|
62 |
+
}
|
63 |
+
|
64 |
+
return '';
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Get add constraint query
|
69 |
+
*
|
70 |
+
* @param string $table
|
71 |
+
* @param string $column
|
72 |
+
* @param string $ref_table
|
73 |
+
* @param string $ref_column
|
74 |
+
* @return bool|string
|
75 |
+
*/
|
76 |
+
public static function getAddConstraint( $table, $column, $ref_table, $ref_column )
|
77 |
+
{
|
78 |
+
$rules = self::getConstraintRules( $table, $column, $ref_table, $ref_column );
|
79 |
+
$sql = sprintf( 'ALTER TABLE `%s` ADD CONSTRAINT FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)', $table, $column, $ref_table, $ref_column );
|
80 |
+
$delete_rule = $rules['DELETE_RULE'];
|
81 |
+
switch ( $delete_rule ) {
|
82 |
+
case 'RESTRICT':
|
83 |
+
case 'CASCADE':
|
84 |
+
case 'SET NULL':
|
85 |
+
case 'NO ACTIONS':
|
86 |
+
$sql .= ' ON DELETE ' . $delete_rule;
|
87 |
+
break;
|
88 |
+
default:
|
89 |
+
return false;
|
90 |
+
}
|
91 |
+
$update_rule = $rules['UPDATE_RULE'];
|
92 |
+
switch ( $update_rule ) {
|
93 |
+
case 'RESTRICT':
|
94 |
+
case 'CASCADE':
|
95 |
+
case 'SET NULL':
|
96 |
+
case 'NO ACTIONS':
|
97 |
+
$sql .= ' ON UPDATE ' . $update_rule;
|
98 |
+
break;
|
99 |
+
default:
|
100 |
+
return false;
|
101 |
+
}
|
102 |
+
|
103 |
+
return $sql;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Get create table query
|
108 |
+
*
|
109 |
+
* @param string $table
|
110 |
+
* @return string
|
111 |
+
*/
|
112 |
+
public static function getCreateTable( $table )
|
113 |
+
{
|
114 |
+
/** @global \wpdb */
|
115 |
+
global $wpdb;
|
116 |
+
|
117 |
+
return sprintf( 'CREATE TABLE `%s` ( `id` %s, PRIMARY KEY (`id`)) ENGINE = INNODB %s',
|
118 |
+
$table,
|
119 |
+
str_replace( ' primary key', '', self::getColumnDataType( self::getColumnData( $table, 'id' ) ) ),
|
120 |
+
$wpdb->has_cap( 'collation' )
|
121 |
+
? $wpdb->get_charset_collate()
|
122 |
+
: 'DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci'
|
123 |
+
);
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Get column datat type array
|
128 |
+
*
|
129 |
+
* @param string $table
|
130 |
+
* @param string $column
|
131 |
+
* @return array
|
132 |
+
*/
|
133 |
+
public static function getColumnData( $table, $column )
|
134 |
+
{
|
135 |
+
/*
|
136 |
+
SELECT CONCAT ( '\'', CONCAT_WS( '.', SUBSTR(TABLE_NAME,4), COLUMN_NAME ), '\' => array( \'type\' => "', COLUMN_TYPE, '", \'is_nullabe\' => ', IF(IS_NULLABLE = 'NO', '0', '1' ), ', \'extra\' => "', EXTRA, '", \'default\' => ', CONCAT (
|
137 |
+
IF (COLUMN_DEFAULT is NULL, IF( IS_NULLABLE = 'NO', COALESCE(COLUMN_DEFAULT,'null'), 'null' ), CONCAT('"',COALESCE(COLUMN_DEFAULT,''), '"'))), ', \'key\' => "' , COLUMN_KEY ,'" ),'
|
138 |
+
) as l
|
139 |
+
FROM INFORMATION_SCHEMA.COLUMNS
|
140 |
+
WHERE TABLE_SCHEMA = SCHEMA()
|
141 |
+
AND TABLE_NAME LIKE 'wp_bookly_%'
|
142 |
+
ORDER BY TABLE_NAME, COLUMN_NAME
|
143 |
+
*/
|
144 |
+
|
145 |
+
$data = array(
|
146 |
+
'bookly_appointments.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
147 |
+
'bookly_appointments.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
148 |
+
'bookly_appointments.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
149 |
+
'bookly_appointments.staff_any' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
150 |
+
'bookly_appointments.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
151 |
+
'bookly_appointments.custom_service_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
152 |
+
'bookly_appointments.custom_service_price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
153 |
+
'bookly_appointments.start_date' => array( 'type' => "datetime", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
154 |
+
'bookly_appointments.end_date' => array( 'type' => "datetime", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
155 |
+
'bookly_appointments.extras_duration' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
156 |
+
'bookly_appointments.internal_note' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
157 |
+
'bookly_appointments.google_event_id' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
158 |
+
'bookly_appointments.google_event_etag' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
159 |
+
'bookly_appointments.outlook_event_id' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
160 |
+
'bookly_appointments.outlook_event_change_key' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
161 |
+
'bookly_appointments.outlook_event_series_id' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
162 |
+
'bookly_appointments.created_from' => array( 'type' => "enum('bookly','google','outlook')", 'is_nullabe' => 0, 'extra' => "", 'default' => "bookly", 'key' => "" ),
|
163 |
+
'bookly_appointments.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
164 |
+
'bookly_categories.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
165 |
+
'bookly_categories.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
166 |
+
'bookly_categories.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
167 |
+
'bookly_coupons.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
168 |
+
'bookly_coupons.code' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
169 |
+
'bookly_coupons.discount' => array( 'type' => "decimal(3,0)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
170 |
+
'bookly_coupons.deduction' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
171 |
+
'bookly_coupons.usage_limit' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
172 |
+
'bookly_coupons.used' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
173 |
+
'bookly_coupons.once_per_customer' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
174 |
+
'bookly_coupons.date_limit_start' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
175 |
+
'bookly_coupons.date_limit_end' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
176 |
+
'bookly_coupons.min_appointments' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
177 |
+
'bookly_coupons.max_appointments' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
178 |
+
'bookly_coupon_customers.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
179 |
+
'bookly_coupon_customers.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
180 |
+
'bookly_coupon_customers.customer_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
181 |
+
'bookly_coupon_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
182 |
+
'bookly_coupon_services.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
183 |
+
'bookly_coupon_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
184 |
+
'bookly_coupon_staff.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
185 |
+
'bookly_coupon_staff.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
186 |
+
'bookly_coupon_staff.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
187 |
+
'bookly_customers.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
188 |
+
'bookly_customers.wp_user_id' => array( 'type' => "bigint(20) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
189 |
+
'bookly_customers.facebook_id' => array( 'type' => "bigint(20) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
190 |
+
'bookly_customers.group_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
191 |
+
'bookly_customers.full_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
192 |
+
'bookly_customers.first_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
193 |
+
'bookly_customers.last_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
194 |
+
'bookly_customers.phone' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
195 |
+
'bookly_customers.email' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
196 |
+
'bookly_customers.birthday' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
197 |
+
'bookly_customers.country' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
198 |
+
'bookly_customers.state' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
199 |
+
'bookly_customers.postcode' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
200 |
+
'bookly_customers.city' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
201 |
+
'bookly_customers.street' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
202 |
+
'bookly_customers.street_number' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
203 |
+
'bookly_customers.additional_address' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
204 |
+
'bookly_customers.notes' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
205 |
+
'bookly_customers.info_fields' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
206 |
+
'bookly_customers.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
207 |
+
'bookly_customer_appointments.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
208 |
+
'bookly_customer_appointments.series_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
209 |
+
'bookly_customer_appointments.package_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
210 |
+
'bookly_customer_appointments.customer_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
211 |
+
'bookly_customer_appointments.appointment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
212 |
+
'bookly_customer_appointments.payment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
213 |
+
'bookly_customer_appointments.number_of_persons' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
214 |
+
'bookly_customer_appointments.units' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
215 |
+
'bookly_customer_appointments.notes' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
216 |
+
'bookly_customer_appointments.extras' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
217 |
+
'bookly_customer_appointments.extras_multiply_nop' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
218 |
+
'bookly_customer_appointments.extras_consider_duration' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
219 |
+
'bookly_customer_appointments.custom_fields' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
220 |
+
'bookly_customer_appointments.status' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "approved", 'key' => "" ),
|
221 |
+
'bookly_customer_appointments.status_changed_at' => array( 'type' => "datetime", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
222 |
+
'bookly_customer_appointments.token' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
223 |
+
'bookly_customer_appointments.time_zone' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
224 |
+
'bookly_customer_appointments.time_zone_offset' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
225 |
+
'bookly_customer_appointments.rating' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
226 |
+
'bookly_customer_appointments.rating_comment' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
227 |
+
'bookly_customer_appointments.locale' => array( 'type' => "varchar(8)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
228 |
+
'bookly_customer_appointments.collaborative_service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
229 |
+
'bookly_customer_appointments.collaborative_token' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
230 |
+
'bookly_customer_appointments.compound_service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
231 |
+
'bookly_customer_appointments.compound_token' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
232 |
+
'bookly_customer_appointments.created_from' => array( 'type' => "enum('frontend','backend')", 'is_nullabe' => 0, 'extra' => "", 'default' => "frontend", 'key' => "" ),
|
233 |
+
'bookly_customer_appointments.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
234 |
+
'bookly_customer_appointment_files.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
235 |
+
'bookly_customer_appointment_files.customer_appointment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
236 |
+
'bookly_customer_appointment_files.file_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
237 |
+
'bookly_customer_groups.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
238 |
+
'bookly_customer_groups.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
239 |
+
'bookly_customer_groups.description' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
240 |
+
'bookly_customer_groups.appointment_status' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
241 |
+
'bookly_customer_groups.discount' => array( 'type' => "varchar(100)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
242 |
+
'bookly_customer_groups_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
243 |
+
'bookly_customer_groups_services.group_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
244 |
+
'bookly_customer_groups_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
245 |
+
'bookly_custom_statuses.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
246 |
+
'bookly_custom_statuses.slug' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "UNI" ),
|
247 |
+
'bookly_custom_statuses.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
248 |
+
'bookly_custom_statuses.busy' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
249 |
+
'bookly_custom_statuses.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
250 |
+
'bookly_files.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
251 |
+
'bookly_files.name' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
252 |
+
'bookly_files.slug' => array( 'type' => "varchar(32)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
253 |
+
'bookly_files.path' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
254 |
+
'bookly_files.custom_field_id' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
255 |
+
'bookly_holidays.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
256 |
+
'bookly_holidays.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
257 |
+
'bookly_holidays.parent_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
258 |
+
'bookly_holidays.date' => array( 'type' => "date", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
259 |
+
'bookly_holidays.repeat_event' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
260 |
+
'bookly_locations.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
261 |
+
'bookly_locations.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
|
262 |
+
'bookly_locations.info' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
263 |
+
'bookly_locations.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
264 |
+
'bookly_messages.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
265 |
+
'bookly_messages.message_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
266 |
+
'bookly_messages.type' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
267 |
+
'bookly_messages.subject' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
268 |
+
'bookly_messages.body' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
269 |
+
'bookly_messages.seen' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
270 |
+
'bookly_messages.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
271 |
+
'bookly_notifications.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
272 |
+
'bookly_notifications.gateway' => array( 'type' => "enum('email','sms')", 'is_nullabe' => 0, 'extra' => "", 'default' => "email", 'key' => "" ),
|
273 |
+
'bookly_notifications.type' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
274 |
+
'bookly_notifications.active' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
275 |
+
'bookly_notifications.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
276 |
+
'bookly_notifications.subject' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "", 'key' => "" ),
|
277 |
+
'bookly_notifications.message' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
278 |
+
'bookly_notifications.to_staff' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
279 |
+
'bookly_notifications.to_customer' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
280 |
+
'bookly_notifications.to_admin' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
281 |
+
'bookly_notifications.attach_ics' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
282 |
+
'bookly_notifications.attach_invoice' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
283 |
+
'bookly_notifications.settings' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
284 |
+
'bookly_packages.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
285 |
+
'bookly_packages.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
286 |
+
'bookly_packages.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
287 |
+
'bookly_packages.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
288 |
+
'bookly_packages.customer_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
289 |
+
'bookly_packages.internal_note' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
290 |
+
'bookly_packages.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
291 |
+
'bookly_payments.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
292 |
+
'bookly_payments.coupon_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
293 |
+
'bookly_payments.type' => array( 'type' => "enum('local','free','paypal','authorize_net','stripe','2checkout','payu_biz','payu_latam','payson','mollie','woocommerce')", 'is_nullabe' => 0, 'extra' => "", 'default' => "local", 'key' => "" ),
|
294 |
+
'bookly_payments.total' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
295 |
+
'bookly_payments.tax' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
296 |
+
'bookly_payments.paid' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
297 |
+
'bookly_payments.paid_type' => array( 'type' => "enum('in_full','deposit')", 'is_nullabe' => 0, 'extra' => "", 'default' => "in_full", 'key' => "" ),
|
298 |
+
'bookly_payments.gateway_price_correction' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 1, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
299 |
+
'bookly_payments.status' => array( 'type' => "enum('pending','completed','rejected')", 'is_nullabe' => 0, 'extra' => "", 'default' => "completed", 'key' => "" ),
|
300 |
+
'bookly_payments.details' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
301 |
+
'bookly_payments.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
302 |
+
'bookly_schedule_item_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
303 |
+
'bookly_schedule_item_breaks.staff_schedule_item_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
304 |
+
'bookly_schedule_item_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
305 |
+
'bookly_schedule_item_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
306 |
+
'bookly_sent_notifications.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
307 |
+
'bookly_sent_notifications.ref_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
308 |
+
'bookly_sent_notifications.notification_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
309 |
+
'bookly_sent_notifications.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
310 |
+
'bookly_series.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
311 |
+
'bookly_series.repeat' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
312 |
+
'bookly_series.token' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
313 |
+
'bookly_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
314 |
+
'bookly_services.category_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
315 |
+
'bookly_services.type' => array( 'type' => "enum('simple','collaborative','compound','package')", 'is_nullabe' => 0, 'extra' => "", 'default' => "simple", 'key' => "" ),
|
316 |
+
'bookly_services.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
|
317 |
+
'bookly_services.duration' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "900", 'key' => "" ),
|
318 |
+
'bookly_services.slot_length' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "default", 'key' => "" ),
|
319 |
+
'bookly_services.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
320 |
+
'bookly_services.color' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => "#FFFFFF", 'key' => "" ),
|
321 |
+
'bookly_services.deposit' => array( 'type' => "varchar(100)", 'is_nullabe' => 0, 'extra' => "", 'default' => "100%", 'key' => "" ),
|
322 |
+
'bookly_services.capacity_min' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
323 |
+
'bookly_services.capacity_max' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
324 |
+
'bookly_services.one_booking_per_slot' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
325 |
+
'bookly_services.padding_left' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
326 |
+
'bookly_services.padding_right' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
327 |
+
'bookly_services.info' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
328 |
+
'bookly_services.start_time_info' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
|
329 |
+
'bookly_services.end_time_info' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
|
330 |
+
'bookly_services.units_min' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
331 |
+
'bookly_services.units_max' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
332 |
+
'bookly_services.package_life_time' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
333 |
+
'bookly_services.package_size' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
334 |
+
'bookly_services.package_unassigned' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
335 |
+
'bookly_services.appointments_limit' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
336 |
+
'bookly_services.limit_period' => array( 'type' => "enum('off','day','week','month','year','upcoming','calendar_day','calendar_week','calendar_month','calendar_year')", 'is_nullabe' => 0, 'extra' => "", 'default' => "off", 'key' => "" ),
|
337 |
+
'bookly_services.staff_preference' => array( 'type' => "enum('order','least_occupied','most_occupied','least_occupied_for_period','most_occupied_for_period','least_expensive','most_expensive')", 'is_nullabe' => 0, 'extra' => "", 'default' => "most_expensive", 'key' => "" ),
|
338 |
+
'bookly_services.staff_preference_settings' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
339 |
+
'bookly_services.recurrence_enabled' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
340 |
+
'bookly_services.recurrence_frequencies' => array( 'type' => "set('daily','weekly','biweekly','monthly')", 'is_nullabe' => 0, 'extra' => "", 'default' => "daily,weekly,biweekly,monthly", 'key' => "" ),
|
341 |
+
'bookly_services.time_requirements' => array( 'type' => "enum('required','optional','off')", 'is_nullabe' => 0, 'extra' => "", 'default' => "required", 'key' => "" ),
|
342 |
+
'bookly_services.collaborative_equal_duration' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
343 |
+
'bookly_services.visibility' => array( 'type' => "enum('public','private','group')", 'is_nullabe' => 0, 'extra' => "", 'default' => "public", 'key' => "" ),
|
344 |
+
'bookly_services.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
345 |
+
'bookly_service_extras.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
346 |
+
'bookly_service_extras.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
347 |
+
'bookly_service_extras.attachment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
348 |
+
'bookly_service_extras.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
|
349 |
+
'bookly_service_extras.duration' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
350 |
+
'bookly_service_extras.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
351 |
+
'bookly_service_extras.max_quantity' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
352 |
+
'bookly_service_extras.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
353 |
+
'bookly_service_schedule_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
354 |
+
'bookly_service_schedule_breaks.service_schedule_day_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
355 |
+
'bookly_service_schedule_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
356 |
+
'bookly_service_schedule_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
357 |
+
'bookly_service_schedule_days.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
358 |
+
'bookly_service_schedule_days.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
359 |
+
'bookly_service_schedule_days.day_index' => array( 'type' => "smallint(6)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
360 |
+
'bookly_service_schedule_days.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
361 |
+
'bookly_service_schedule_days.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
362 |
+
'bookly_service_special_days.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
363 |
+
'bookly_service_special_days.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
364 |
+
'bookly_service_special_days.date' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
365 |
+
'bookly_service_special_days.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
366 |
+
'bookly_service_special_days.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
367 |
+
'bookly_service_special_days_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
368 |
+
'bookly_service_special_days_breaks.service_special_day_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
369 |
+
'bookly_service_special_days_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
370 |
+
'bookly_service_special_days_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
371 |
+
'bookly_service_taxes.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
372 |
+
'bookly_service_taxes.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
373 |
+
'bookly_service_taxes.tax_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
374 |
+
'bookly_shop.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
375 |
+
'bookly_shop.plugin_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
376 |
+
'bookly_shop.type' => array( 'type' => "enum('plugin','bundle')", 'is_nullabe' => 0, 'extra' => "", 'default' => "plugin", 'key' => "" ),
|
377 |
+
'bookly_shop.highlighted' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
378 |
+
'bookly_shop.priority' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => "0", 'key' => "" ),
|
379 |
+
'bookly_shop.demo_url' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
380 |
+
'bookly_shop.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
381 |
+
'bookly_shop.slug' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
382 |
+
'bookly_shop.description' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
383 |
+
'bookly_shop.url' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
384 |
+
'bookly_shop.icon' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
385 |
+
'bookly_shop.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
386 |
+
'bookly_shop.sales' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
387 |
+
'bookly_shop.rating' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
388 |
+
'bookly_shop.reviews' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
389 |
+
'bookly_shop.published' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
390 |
+
'bookly_shop.seen' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
391 |
+
'bookly_shop.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
392 |
+
'bookly_special_days_breaks.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
393 |
+
'bookly_special_days_breaks.staff_special_day_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
394 |
+
'bookly_special_days_breaks.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
395 |
+
'bookly_special_days_breaks.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
396 |
+
'bookly_staff.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
397 |
+
'bookly_staff.category_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
398 |
+
'bookly_staff.wp_user_id' => array( 'type' => "bigint(20) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
399 |
+
'bookly_staff.attachment_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
400 |
+
'bookly_staff.full_name' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
401 |
+
'bookly_staff.email' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
402 |
+
'bookly_staff.phone' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
403 |
+
'bookly_staff.info' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
404 |
+
'bookly_staff.working_time_limit' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
405 |
+
'bookly_staff.visibility' => array( 'type' => "enum('public','private','archive')", 'is_nullabe' => 0, 'extra' => "", 'default' => "public", 'key' => "" ),
|
406 |
+
'bookly_staff.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
407 |
+
'bookly_staff.google_data' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
408 |
+
'bookly_staff.outlook_data' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
409 |
+
'bookly_staff_categories.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
410 |
+
'bookly_staff_categories.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
411 |
+
'bookly_staff_categories.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
412 |
+
'bookly_staff_locations.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
413 |
+
'bookly_staff_locations.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
414 |
+
'bookly_staff_locations.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
415 |
+
'bookly_staff_locations.custom_services' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
416 |
+
'bookly_staff_locations.custom_schedule' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
417 |
+
'bookly_staff_preference_orders.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
418 |
+
'bookly_staff_preference_orders.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
419 |
+
'bookly_staff_preference_orders.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
420 |
+
'bookly_staff_preference_orders.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
421 |
+
'bookly_staff_schedule_items.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
422 |
+
'bookly_staff_schedule_items.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
423 |
+
'bookly_staff_schedule_items.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
424 |
+
'bookly_staff_schedule_items.day_index' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
425 |
+
'bookly_staff_schedule_items.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
426 |
+
'bookly_staff_schedule_items.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
427 |
+
'bookly_staff_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
428 |
+
'bookly_staff_services.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
429 |
+
'bookly_staff_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
430 |
+
'bookly_staff_services.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
431 |
+
'bookly_staff_services.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
432 |
+
'bookly_staff_services.deposit' => array( 'type' => "varchar(100)", 'is_nullabe' => 0, 'extra' => "", 'default' => "100%", 'key' => "" ),
|
433 |
+
'bookly_staff_services.capacity_min' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
434 |
+
'bookly_staff_services.capacity_max' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "1", 'key' => "" ),
|
435 |
+
'bookly_staff_special_days.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
436 |
+
'bookly_staff_special_days.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
437 |
+
'bookly_staff_special_days.date' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
438 |
+
'bookly_staff_special_days.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
439 |
+
'bookly_staff_special_days.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
440 |
+
'bookly_staff_special_hours.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
441 |
+
'bookly_staff_special_hours.staff_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
442 |
+
'bookly_staff_special_hours.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
443 |
+
'bookly_staff_special_hours.location_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
444 |
+
'bookly_staff_special_hours.start_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
445 |
+
'bookly_staff_special_hours.end_time' => array( 'type' => "time", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
446 |
+
'bookly_staff_special_hours.price' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
447 |
+
'bookly_stats.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
448 |
+
'bookly_stats.name' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
449 |
+
'bookly_stats.value' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
450 |
+
'bookly_stats.created' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
451 |
+
'bookly_sub_services.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
452 |
+
'bookly_sub_services.type' => array( 'type' => "enum('service','spare_time')", 'is_nullabe' => 0, 'extra' => "", 'default' => "service", 'key' => "" ),
|
453 |
+
'bookly_sub_services.service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
454 |
+
'bookly_sub_services.sub_service_id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
455 |
+
'bookly_sub_services.duration' => array( 'type' => "int(11)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
456 |
+
'bookly_sub_services.position' => array( 'type' => "int(11)", 'is_nullabe' => 0, 'extra' => "", 'default' => "9999", 'key' => "" ),
|
457 |
+
'bookly_taxes.id' => array( 'type' => "int(10) unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
458 |
+
'bookly_taxes.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
|
459 |
+
'bookly_taxes.rate' => array( 'type' => "decimal(10,3)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.000", 'key' => "" ),
|
460 |
+
);
|
461 |
+
|
462 |
+
/** @global \wpdb */
|
463 |
+
global $wpdb;
|
464 |
+
|
465 |
+
$prefix_len = strlen( $wpdb->prefix );
|
466 |
+
$key = substr( $table, $prefix_len ) . '.' . $column;
|
467 |
+
|
468 |
+
return array_key_exists( $key, $data )
|
469 |
+
? $data[ $key ]
|
470 |
+
: array();
|
471 |
+
}
|
472 |
+
|
473 |
+
/**
|
474 |
+
* Get constraint rules
|
475 |
+
*
|
476 |
+
* @param string $table
|
477 |
+
* @param string $column
|
478 |
+
* @param string $ref_table
|
479 |
+
* @param string $ref_column
|
480 |
+
* @return array
|
481 |
+
*/
|
482 |
+
private static function getConstraintRules( $table, $column, $ref_table, $ref_column )
|
483 |
+
{
|
484 |
+
/*
|
485 |
+
SELECT CONCAT_WS( '.', SUBSTR(kcu.TABLE_NAME,4), kcu.COLUMN_NAME ) AS field
|
486 |
+
, CONCAT_WS( '.', SUBSTR(kcu.REFERENCED_TABLE_NAME,4), kcu.REFERENCED_COLUMN_NAME ) AS ref
|
487 |
+
, rc.UPDATE_RULE
|
488 |
+
, rc.DELETE_RULE
|
489 |
+
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS rc
|
490 |
+
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu ON ( rc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME )
|
491 |
+
WHERE unique_CONSTRAINT_SCHEMA = SCHEMA()
|
492 |
+
AND rc.CONSTRAINT_NAME LIKE 'wp_bookly_%'
|
493 |
+
GROUP BY rc.CONSTRAINT_NAME
|
494 |
+
*/
|
495 |
+
|
496 |
+
$rules = array (
|
497 |
+
'bookly_appointments.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
498 |
+
'bookly_appointments.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
499 |
+
'bookly_appointments.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
500 |
+
'bookly_coupon_customers.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
501 |
+
'bookly_coupon_customers.customer_id' => array( 'bookly_customers.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
502 |
+
'bookly_coupon_services.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
503 |
+
'bookly_coupon_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
504 |
+
'bookly_coupon_staff.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
505 |
+
'bookly_coupon_staff.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
506 |
+
'bookly_customer_appointment_files.customer_appointment_id' => array( 'bookly_customer_appointments.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
507 |
+
'bookly_customer_appointment_files.file_id' => array( 'bookly_files.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
508 |
+
'bookly_customer_appointments.appointment_id' => array( 'bookly_appointments.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
509 |
+
'bookly_customer_appointments.customer_id' => array( 'bookly_customers.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
510 |
+
'bookly_customer_appointments.package_id' => array( 'bookly_packages.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
511 |
+
'bookly_customer_appointments.payment_id' => array( 'bookly_payments.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
512 |
+
'bookly_customer_appointments.series_id' => array( 'bookly_series.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
513 |
+
'bookly_customer_groups_services.group_id' => array( 'bookly_customer_groups.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
514 |
+
'bookly_customer_groups_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
515 |
+
'bookly_customers.group_id' => array( 'bookly_customer_groups.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
516 |
+
'bookly_holidays.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'RESTRICT', 'DELETE_RULE' => 'CASCADE', ), ),
|
517 |
+
'bookly_packages.customer_id' => array( 'bookly_customers.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
518 |
+
'bookly_packages.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
519 |
+
'bookly_packages.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
520 |
+
'bookly_payments.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
521 |
+
'bookly_schedule_item_breaks.staff_schedule_item_id' => array( 'bookly_staff_schedule_items.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
522 |
+
'bookly_sent_notifications.notification_id' => array( 'bookly_notifications.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
523 |
+
'bookly_service_extras.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
524 |
+
'bookly_service_schedule_breaks.service_schedule_day_id' => array( 'bookly_service_schedule_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
525 |
+
'bookly_service_schedule_days.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
526 |
+
'bookly_service_special_days.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
527 |
+
'bookly_service_special_days_breaks.service_special_day_id' => array( 'bookly_service_special_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
528 |
+
'bookly_service_taxes.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
529 |
+
'bookly_service_taxes.tax_id' => array( 'bookly_taxes.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
530 |
+
'bookly_services.category_id' => array( 'bookly_categories.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
531 |
+
'bookly_special_days_breaks.staff_special_day_id' => array( 'bookly_staff_special_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
532 |
+
'bookly_staff.category_id' => array( 'bookly_staff_categories.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
533 |
+
'bookly_staff_locations.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
534 |
+
'bookly_staff_locations.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
535 |
+
'bookly_staff_preference_orders.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
536 |
+
'bookly_staff_preference_orders.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
537 |
+
'bookly_staff_schedule_items.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
538 |
+
'bookly_staff_schedule_items.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
539 |
+
'bookly_staff_services.location_id' => array( 'bookly_locations.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
540 |
+
'bookly_staff_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
541 |
+
'bookly_staff_services.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
542 |
+
'bookly_staff_special_days.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
543 |
+
'bookly_staff_special_hours.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
544 |
+
'bookly_staff_special_hours.staff_id' => array( 'bookly_staff.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
545 |
+
'bookly_sub_services.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
546 |
+
'bookly_sub_services.sub_service_id' => array( 'bookly_services.id' => array ( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
547 |
+
);
|
548 |
+
|
549 |
+
/** @global \wpdb */
|
550 |
+
global $wpdb;
|
551 |
+
|
552 |
+
$prefix_len = strlen( $wpdb->prefix );
|
553 |
+
$key = substr( $table, $prefix_len ) . '.' . $column;
|
554 |
+
$ref = substr( $ref_table, $prefix_len ) . '.' . $ref_column;
|
555 |
+
if ( isset( $rules[ $key ][ $ref ] ) ) {
|
556 |
+
return $rules[ $key ][ $ref ];
|
557 |
+
} else {
|
558 |
+
return array( 'UPDATE_RULE' => null, 'DELETE_RULE' => null );
|
559 |
+
}
|
560 |
+
}
|
561 |
+
|
562 |
+
/**
|
563 |
+
* @param array $data
|
564 |
+
* @return string
|
565 |
+
*/
|
566 |
+
private static function getColumnDataType( array $data )
|
567 |
+
{
|
568 |
+
return sprintf( '%s %s %s',
|
569 |
+
$data['type'],
|
570 |
+
$data['is_nullabe']
|
571 |
+
? 'null'
|
572 |
+
: 'not null',
|
573 |
+
$data['extra'] === 'auto_increment'
|
574 |
+
? ( 'auto_increment' . ( $data['key'] === 'PRI' ? ' primary key' : '' ) )
|
575 |
+
: ( $data['default'] === null
|
576 |
+
? ( $data['is_nullabe'] ? 'default null' : '' )
|
577 |
+
: 'default \'' . $data['default'] . '\''
|
578 |
+
)
|
579 |
+
);
|
580 |
+
}
|
581 |
+
}
|
backend/modules/debug/lib/Schema.php
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Backend\Modules\Debug\Lib;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class Schema
|
6 |
+
* @package Bookly\Backend\Modules\Debug\Lib
|
7 |
+
*/
|
8 |
+
class Schema
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Get table constraints
|
12 |
+
*
|
13 |
+
* @param string $table
|
14 |
+
* @return array
|
15 |
+
*/
|
16 |
+
public function getTableConstraints( $table )
|
17 |
+
{
|
18 |
+
/** @global \wpdb $wpdb */
|
19 |
+
global $wpdb;
|
20 |
+
|
21 |
+
$tableConstraints = array();
|
22 |
+
$records = $wpdb->get_results(
|
23 |
+
'SELECT COLUMN_NAME
|
24 |
+
, CONSTRAINT_NAME
|
25 |
+
, REFERENCED_COLUMN_NAME
|
26 |
+
, REFERENCED_TABLE_NAME
|
27 |
+
FROM information_schema.KEY_COLUMN_USAGE
|
28 |
+
WHERE TABLE_NAME = "' . $table . '"
|
29 |
+
AND REFERENCED_TABLE_NAME IS NOT NULL
|
30 |
+
AND CONSTRAINT_SCHEMA = SCHEMA()
|
31 |
+
AND CONSTRAINT_NAME <> "PRIMARY";'
|
32 |
+
);
|
33 |
+
if ( $records ) {
|
34 |
+
foreach ( $records as $row ) {
|
35 |
+
$constraint = array(
|
36 |
+
'column_name' => $row->COLUMN_NAME,
|
37 |
+
'referenced_table_name' => $row->REFERENCED_TABLE_NAME,
|
38 |
+
'referenced_column_name' => $row->REFERENCED_COLUMN_NAME,
|
39 |
+
'constraint_name' => $row->CONSTRAINT_NAME,
|
40 |
+
'reference_exists' => $this->existsColumn( $row->REFERENCED_TABLE_NAME, $row->REFERENCED_COLUMN_NAME ),
|
41 |
+
);
|
42 |
+
$key = $row->COLUMN_NAME . $row->REFERENCED_TABLE_NAME . $row->REFERENCED_COLUMN_NAME;
|
43 |
+
$tableConstraints[ $key ] = $constraint;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
return $tableConstraints;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Check exists table
|
52 |
+
*
|
53 |
+
* @param string $table
|
54 |
+
* @return bool
|
55 |
+
*/
|
56 |
+
public function existsTable( $table )
|
57 |
+
{
|
58 |
+
global $wpdb;
|
59 |
+
|
60 |
+
return (bool) $wpdb->query( $wpdb->prepare(
|
61 |
+
'SELECT 1 FROM `information_schema`.`tables` WHERE TABLE_NAME = %s AND TABLE_SCHEMA = SCHEMA() LIMIT 1',
|
62 |
+
$table
|
63 |
+
) );
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Get table structure
|
68 |
+
*
|
69 |
+
* @param string $table
|
70 |
+
* @return array
|
71 |
+
*/
|
72 |
+
public function getTableStructure( $table )
|
73 |
+
{
|
74 |
+
global $wpdb;
|
75 |
+
|
76 |
+
$tableStructure = array();
|
77 |
+
$results = $wpdb->get_results( 'DESCRIBE `' . $table . '`;', ARRAY_A );
|
78 |
+
if ( $results ) {
|
79 |
+
foreach ( $results as $row ) {
|
80 |
+
$tableStructure[ $row['Field'] ] = array(
|
81 |
+
'type' => $row['Type'],
|
82 |
+
'is_nullabe' => $row['Null'] === 'YES' ? 1 : 0,
|
83 |
+
'extra' => $row['Extra'],
|
84 |
+
'default' => $row['Default'],
|
85 |
+
'key' => $row['Key']
|
86 |
+
);
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
return $tableStructure;
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Check exists column in table
|
95 |
+
*
|
96 |
+
* @param string $table
|
97 |
+
* @param string $column_name
|
98 |
+
* @return bool
|
99 |
+
*/
|
100 |
+
protected function existsColumn( $table, $column_name )
|
101 |
+
{
|
102 |
+
global $wpdb;
|
103 |
+
|
104 |
+
return (bool) $wpdb->query( $wpdb->prepare( 'SELECT 1 FROM information_schema.COLUMNS
|
105 |
+
WHERE TABLE_NAME = %s AND COLUMN_NAME = %s AND TABLE_SCHEMA = SCHEMA() LIMIT 1',
|
106 |
+
$table,
|
107 |
+
$column_name
|
108 |
+
) );
|
109 |
+
}
|
110 |
+
}
|
backend/modules/debug/resources/js/debug.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
jQuery(function($) {
|
2 |
-
let $
|
|
|
3 |
$columnModal = $('#bookly-js-add-field'),
|
4 |
$tableModal = $('#bookly-js-create-table'),
|
5 |
$status,
|
@@ -12,6 +13,38 @@ jQuery(function($) {
|
|
12 |
$('#bookly_import').submit();
|
13 |
}
|
14 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
$('[data-action=fix-constraint]')
|
17 |
.on('click', function (e) {
|
@@ -23,10 +56,10 @@ jQuery(function($) {
|
|
23 |
ref_table = $tr.find('td:eq(1)').html(),
|
24 |
ref_column = $tr.find('td:eq(2)').html()
|
25 |
;
|
26 |
-
$('.bookly-js-loading:first-child', $
|
27 |
-
$('.bookly-js-loading:last-child', $
|
28 |
-
$('.bookly-js-fix-consistency', $
|
29 |
-
$
|
30 |
$.ajax({
|
31 |
url: ajaxurl,
|
32 |
type: 'POST',
|
@@ -41,22 +74,35 @@ jQuery(function($) {
|
|
41 |
dataType: 'json',
|
42 |
success: function (response) {
|
43 |
if (response.success) {
|
44 |
-
$('#bookly-js-table, .bookly-js-table', $
|
45 |
-
$('#bookly-js-column, .bookly-js-column', $
|
46 |
-
$('#bookly-js-ref_table, .bookly-js-ref_table', $
|
47 |
-
$('#bookly-js-ref_column, .bookly-js-ref_column', $
|
48 |
-
$('#bookly-js-DELETE_RULE', $
|
49 |
-
$('#bookly-js-UPDATE_RULE', $
|
50 |
} else {
|
51 |
-
$('#bookly-js-DELETE_RULE', $
|
52 |
-
$('#bookly-js-DELETE_RULE', $
|
53 |
}
|
54 |
-
$('.bookly-js-loading', $
|
55 |
}
|
56 |
});
|
57 |
});
|
58 |
|
59 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
.on('click', '.bookly-js-save', function () {
|
61 |
let ladda = Ladda.create(this);
|
62 |
ladda.start();
|
@@ -65,23 +111,23 @@ jQuery(function($) {
|
|
65 |
type : 'POST',
|
66 |
data : {
|
67 |
action : 'bookly_add_constraint',
|
68 |
-
table : $('#bookly-js-table', $
|
69 |
-
column : $('#bookly-js-column', $
|
70 |
-
ref_table : $('#bookly-js-ref_table', $
|
71 |
-
ref_column : $('#bookly-js-ref_column', $
|
72 |
-
delete_rule : $('#bookly-js-DELETE_RULE', $
|
73 |
-
update_rule : $('#bookly-js-UPDATE_RULE', $
|
74 |
csrf_token : BooklyL10n.csrfToken
|
75 |
},
|
76 |
dataType : 'json',
|
77 |
success : function (response) {
|
78 |
if (response.success) {
|
79 |
booklyAlert({success: [response.data.message]});
|
80 |
-
$
|
81 |
$status.html('OK');
|
82 |
} else {
|
83 |
booklyAlert({error : [response.data.message]});
|
84 |
-
$('.bookly-js-fix-consistency', $
|
85 |
}
|
86 |
ladda.stop();
|
87 |
},
|
@@ -94,16 +140,16 @@ jQuery(function($) {
|
|
94 |
.on('click', '[data-action=fix-consistency]', function (e) {
|
95 |
e.preventDefault();
|
96 |
let $button = $(this),
|
97 |
-
table = $('#bookly-js-table', $
|
98 |
-
column = $('#bookly-js-column', $
|
99 |
-
ref_table = $('#bookly-js-ref_table', $
|
100 |
-
ref_column = $('#bookly-js-ref_column', $
|
101 |
data = {
|
102 |
action : 'bookly_fix_consistency',
|
103 |
-
table : $('#bookly-js-table', $
|
104 |
-
column : $('#bookly-js-column', $
|
105 |
-
ref_table : $('#bookly-js-ref_table', $
|
106 |
-
ref_column : $('#bookly-js-ref_column', $
|
107 |
csrf_token : BooklyL10n.csrfToken,
|
108 |
rule : ''
|
109 |
},
|
@@ -111,7 +157,7 @@ jQuery(function($) {
|
|
111 |
ladda = ''
|
112 |
;
|
113 |
if ($button.hasClass('bookly-js-auto')) {
|
114 |
-
data.rule = $('#bookly-js-DELETE_RULE', $
|
115 |
ladda = Ladda.create(this);
|
116 |
} else {
|
117 |
if ($button.hasClass('bookly-js-delete')) {
|
@@ -145,7 +191,7 @@ jQuery(function($) {
|
|
145 |
success : function (response) {
|
146 |
if (response.success) {
|
147 |
booklyAlert({success: [response.data.message]});
|
148 |
-
$('.bookly-js-fix-consistency', $
|
149 |
} else {
|
150 |
booklyAlert({error : [response.data.message]});
|
151 |
}
|
@@ -285,4 +331,37 @@ jQuery(function($) {
|
|
285 |
}
|
286 |
});
|
287 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
});
|
1 |
jQuery(function($) {
|
2 |
+
let $addConstraintModal = $('#bookly-js-add-constraint'),
|
3 |
+
$dropConstraintModal = $('#bookly-js-drop-constraint'),
|
4 |
$columnModal = $('#bookly-js-add-field'),
|
5 |
$tableModal = $('#bookly-js-create-table'),
|
6 |
$status,
|
13 |
$('#bookly_import').submit();
|
14 |
}
|
15 |
});
|
16 |
+
$('#bookly-fix-all-silent').on('click', function () {
|
17 |
+
if (confirm('Execute automatic fixing issues found in database schema?')) {
|
18 |
+
let ladda = Ladda.create(this);
|
19 |
+
ladda.start();
|
20 |
+
$.ajax({
|
21 |
+
url : ajaxurl,
|
22 |
+
type : 'POST',
|
23 |
+
data : {
|
24 |
+
action: 'bookly_fix_data_base_schema',
|
25 |
+
csrf_token: BooklyL10n.csrfToken
|
26 |
+
},
|
27 |
+
dataType : 'json',
|
28 |
+
success : function (response) {
|
29 |
+
booklyAlert({success: [response.data.message]});
|
30 |
+
if (!response.success) {
|
31 |
+
booklyAlert({error: response.data.errors});
|
32 |
+
}
|
33 |
+
ladda.stop();
|
34 |
+
},
|
35 |
+
error: function () {
|
36 |
+
booklyAlert({error: ['Error: in query execution.']});
|
37 |
+
ladda.stop();
|
38 |
+
},
|
39 |
+
}).always(function () {
|
40 |
+
setTimeout(function () {
|
41 |
+
if (confirm('Reload page?')) {
|
42 |
+
location.reload();
|
43 |
+
}
|
44 |
+
}, 3000);
|
45 |
+
});
|
46 |
+
}
|
47 |
+
});
|
48 |
|
49 |
$('[data-action=fix-constraint]')
|
50 |
.on('click', function (e) {
|
56 |
ref_table = $tr.find('td:eq(1)').html(),
|
57 |
ref_column = $tr.find('td:eq(2)').html()
|
58 |
;
|
59 |
+
$('.bookly-js-loading:first-child', $addConstraintModal).addClass('bookly-loading').removeClass('collapse');
|
60 |
+
$('.bookly-js-loading:last-child', $addConstraintModal).addClass('collapse');
|
61 |
+
$('.bookly-js-fix-consistency', $addConstraintModal).hide();
|
62 |
+
$addConstraintModal.modal();
|
63 |
$.ajax({
|
64 |
url: ajaxurl,
|
65 |
type: 'POST',
|
74 |
dataType: 'json',
|
75 |
success: function (response) {
|
76 |
if (response.success) {
|
77 |
+
$('#bookly-js-table, .bookly-js-table', $addConstraintModal).html(table);
|
78 |
+
$('#bookly-js-column, .bookly-js-column', $addConstraintModal).html(column);
|
79 |
+
$('#bookly-js-ref_table, .bookly-js-ref_table', $addConstraintModal).html(ref_table);
|
80 |
+
$('#bookly-js-ref_column, .bookly-js-ref_column', $addConstraintModal).html(ref_column);
|
81 |
+
$('#bookly-js-DELETE_RULE', $addConstraintModal).val(response.data.DELETE_RULE);
|
82 |
+
$('#bookly-js-UPDATE_RULE', $addConstraintModal).val(response.data.UPDATE_RULE);
|
83 |
} else {
|
84 |
+
$('#bookly-js-DELETE_RULE', $addConstraintModal).val('');
|
85 |
+
$('#bookly-js-DELETE_RULE', $addConstraintModal).val('');
|
86 |
}
|
87 |
+
$('.bookly-js-loading', $addConstraintModal).toggleClass('collapse');
|
88 |
}
|
89 |
});
|
90 |
});
|
91 |
|
92 |
+
$('[data-action=drop-constraint]')
|
93 |
+
.on('click', function (e) {
|
94 |
+
e.preventDefault();
|
95 |
+
$status = $(this).closest('td');
|
96 |
+
let $tr = $(this).closest('tr'),
|
97 |
+
table = $tr.closest('.panel-collapse').attr('id'),
|
98 |
+
constrain = $tr.find('td:eq(2)').html()
|
99 |
+
;
|
100 |
+
$dropConstraintModal.modal();
|
101 |
+
$('#bookly-js-table', $dropConstraintModal).html(table);
|
102 |
+
$('#bookly-js-constraint', $dropConstraintModal).html(constrain);
|
103 |
+
});
|
104 |
+
|
105 |
+
$addConstraintModal
|
106 |
.on('click', '.bookly-js-save', function () {
|
107 |
let ladda = Ladda.create(this);
|
108 |
ladda.start();
|
111 |
type : 'POST',
|
112 |
data : {
|
113 |
action : 'bookly_add_constraint',
|
114 |
+
table : $('#bookly-js-table', $addConstraintModal).html(),
|
115 |
+
column : $('#bookly-js-column', $addConstraintModal).html(),
|
116 |
+
ref_table : $('#bookly-js-ref_table', $addConstraintModal).html(),
|
117 |
+
ref_column : $('#bookly-js-ref_column', $addConstraintModal).html(),
|
118 |
+
delete_rule : $('#bookly-js-DELETE_RULE', $addConstraintModal).val(),
|
119 |
+
update_rule : $('#bookly-js-UPDATE_RULE', $addConstraintModal).val(),
|
120 |
csrf_token : BooklyL10n.csrfToken
|
121 |
},
|
122 |
dataType : 'json',
|
123 |
success : function (response) {
|
124 |
if (response.success) {
|
125 |
booklyAlert({success: [response.data.message]});
|
126 |
+
$addConstraintModal.modal('hide');
|
127 |
$status.html('OK');
|
128 |
} else {
|
129 |
booklyAlert({error : [response.data.message]});
|
130 |
+
$('.bookly-js-fix-consistency', $addConstraintModal).show();
|
131 |
}
|
132 |
ladda.stop();
|
133 |
},
|
140 |
.on('click', '[data-action=fix-consistency]', function (e) {
|
141 |
e.preventDefault();
|
142 |
let $button = $(this),
|
143 |
+
table = $('#bookly-js-table', $addConstraintModal).html(),
|
144 |
+
column = $('#bookly-js-column', $addConstraintModal).html(),
|
145 |
+
ref_table = $('#bookly-js-ref_table', $addConstraintModal).html(),
|
146 |
+
ref_column = $('#bookly-js-ref_column', $addConstraintModal).html(),
|
147 |
data = {
|
148 |
action : 'bookly_fix_consistency',
|
149 |
+
table : $('#bookly-js-table', $addConstraintModal).html(),
|
150 |
+
column : $('#bookly-js-column', $addConstraintModal).html(),
|
151 |
+
ref_table : $('#bookly-js-ref_table', $addConstraintModal).html(),
|
152 |
+
ref_column : $('#bookly-js-ref_column', $addConstraintModal).html(),
|
153 |
csrf_token : BooklyL10n.csrfToken,
|
154 |
rule : ''
|
155 |
},
|
157 |
ladda = ''
|
158 |
;
|
159 |
if ($button.hasClass('bookly-js-auto')) {
|
160 |
+
data.rule = $('#bookly-js-DELETE_RULE', $addConstraintModal).val();
|
161 |
ladda = Ladda.create(this);
|
162 |
} else {
|
163 |
if ($button.hasClass('bookly-js-delete')) {
|
191 |
success : function (response) {
|
192 |
if (response.success) {
|
193 |
booklyAlert({success: [response.data.message]});
|
194 |
+
$('.bookly-js-fix-consistency', $addConstraintModal).hide();
|
195 |
} else {
|
196 |
booklyAlert({error : [response.data.message]});
|
197 |
}
|
331 |
}
|
332 |
});
|
333 |
});
|
334 |
+
|
335 |
+
$dropConstraintModal
|
336 |
+
.on('click', '.bookly-js-save', function () {
|
337 |
+
let ladda = Ladda.create(this),
|
338 |
+
table = $('#bookly-js-table', $dropConstraintModal).html(),
|
339 |
+
constrain = $('#bookly-js-constraint', $dropConstraintModal).html();
|
340 |
+
ladda.start();
|
341 |
+
$.ajax({
|
342 |
+
url : ajaxurl,
|
343 |
+
type : 'POST',
|
344 |
+
data : {
|
345 |
+
action : 'bookly_execute_query',
|
346 |
+
query : 'ALTER TABLE `' + table + '` DROP FOREIGN KEY `' + constrain + '`',
|
347 |
+
csrf_token: BooklyL10n.csrfToken
|
348 |
+
},
|
349 |
+
dataType : 'json',
|
350 |
+
success : function (response) {
|
351 |
+
if (response.success) {
|
352 |
+
booklyAlert({success: [response.data.message]});
|
353 |
+
$dropConstraintModal.modal('hide');
|
354 |
+
$create.closest('.panel').find('.panel-body').html('Refresh the current page');
|
355 |
+
$create.remove();
|
356 |
+
} else {
|
357 |
+
booklyAlert({error : [response.data.message]});
|
358 |
+
}
|
359 |
+
ladda.stop();
|
360 |
+
},
|
361 |
+
error: function () {
|
362 |
+
booklyAlert({error: ['Error: in query execution.']});
|
363 |
+
ladda.stop();
|
364 |
+
}
|
365 |
+
});
|
366 |
+
});
|
367 |
});
|
backend/modules/debug/templates/index.php
CHANGED
@@ -17,22 +17,25 @@ use Bookly\Backend\Components\Controls\Buttons;
|
|
17 |
|
18 |
<div class="panel-group" id="data-management">
|
19 |
<div class="bookly-data-button">
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
</div>
|
27 |
<div class="bookly-data-button">
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
36 |
</div>
|
37 |
<div class="page-header text-right clearfix">
|
38 |
<div class="bookly-page-title">
|
@@ -41,7 +44,7 @@ use Bookly\Backend\Components\Controls\Buttons;
|
|
41 |
</div>
|
42 |
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
43 |
<?php foreach ( $debug as $tableName => $table ) : ?>
|
44 |
-
<div class="panel <?php echo $table['status'] == 1 ? 'panel-success' : 'panel-danger' ?>">
|
45 |
<div class="panel-heading" role="tab" id="heading_<?php echo $tableName ?>">
|
46 |
<h4 class="panel-title">
|
47 |
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#<?php echo $tableName ?>" aria-expanded="true" aria-controls="<?php echo $tableName ?>">
|
@@ -66,7 +69,15 @@ use Bookly\Backend\Components\Controls\Buttons;
|
|
66 |
<tbody>
|
67 |
<?php foreach ( $table['fields'] as $field => $status ) : ?>
|
68 |
<tr class="<?php echo $status ? 'default' : 'danger' ?>">
|
69 |
-
<td><?php echo $field
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
<td><?php echo $status ? 'OK' : '<button class="btn btn-success btn-xs" type="button" data-action="fix-column">FIX…</button>' ?></td>
|
71 |
</tr>
|
72 |
<?php endforeach ?>
|
@@ -95,7 +106,36 @@ use Bookly\Backend\Components\Controls\Buttons;
|
|
95 |
</tbody>
|
96 |
</table>
|
97 |
<?php endif ?>
|
98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
Table does not exist
|
100 |
<?php endif ?>
|
101 |
</div>
|
@@ -144,8 +184,8 @@ ADD CONSTRAINT
|
|
144 |
<span class="sr-only">Toggle Dropdown</span>
|
145 |
</button>
|
146 |
<ul class="dropdown-menu">
|
147 |
-
<li><a class="bookly-js-update" href="#" data-action="fix-consistency">UPDATE `<span class="bookly-js-
|
148 |
-
<li><a class="bookly-js-delete" href="#" data-action="fix-consistency">DELETE FROM `<span class="bookly-js-
|
149 |
</ul>
|
150 |
</div>
|
151 |
</div>
|
@@ -192,4 +232,23 @@ ADD CONSTRAINT
|
|
192 |
</div>
|
193 |
</div>
|
194 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
</div>
|
17 |
|
18 |
<div class="panel-group" id="data-management">
|
19 |
<div class="bookly-data-button">
|
20 |
+
<form action="<?php echo admin_url( 'admin-ajax.php?action=bookly_export_data' ) ?>" method="POST">
|
21 |
+
<?php Inputs::renderCsrf() ?>
|
22 |
+
<button id="bookly-export" type="submit" class="btn btn-lg btn-success">
|
23 |
+
<span class="ladda-label">Export data</span>
|
24 |
+
</button>
|
25 |
+
</form>
|
26 |
</div>
|
27 |
<div class="bookly-data-button">
|
28 |
+
<form id="bookly_import" action="<?php echo admin_url( 'admin-ajax.php?action=bookly_import_data' ) ?>" method="POST" enctype="multipart/form-data">
|
29 |
+
<?php Inputs::renderCsrf() ?>
|
30 |
+
<div id="bookly-import" class="btn btn-lg btn-primary btn-file">
|
31 |
+
<span class="ladda-label">Import data</span>
|
32 |
+
<input type="file" id="bookly_import_file" name="import">
|
33 |
+
</div>
|
34 |
+
</form>
|
35 |
+
</div>
|
36 |
+
<div class="bookly-data-button pull-right">
|
37 |
+
<?php Bookly\Backend\Components\Controls\Buttons::renderCustom( 'bookly-fix-all-silent', 'btn-success btn-lg', 'Fix database schema ...' ) ?>
|
38 |
+
</div>
|
39 |
</div>
|
40 |
<div class="page-header text-right clearfix">
|
41 |
<div class="bookly-page-title">
|
44 |
</div>
|
45 |
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
46 |
<?php foreach ( $debug as $tableName => $table ) : ?>
|
47 |
+
<div class="panel <?php echo $table['status'] == 1 ? 'panel-success' : 'panel-danger' ?> bookly-margin-right-remove">
|
48 |
<div class="panel-heading" role="tab" id="heading_<?php echo $tableName ?>">
|
49 |
<h4 class="panel-title">
|
50 |
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#<?php echo $tableName ?>" aria-expanded="true" aria-controls="<?php echo $tableName ?>">
|
69 |
<tbody>
|
70 |
<?php foreach ( $table['fields'] as $field => $status ) : ?>
|
71 |
<tr class="<?php echo $status ? 'default' : 'danger' ?>">
|
72 |
+
<td><?php echo $field ?>
|
73 |
+
<?php if ( isset( $table['info'][ $field ] ) ) : ?>
|
74 |
+
<div class="pull-right">
|
75 |
+
<?php foreach ( $table['info'][ $field ] as $key ) : ?>
|
76 |
+
<span class="label label-warning" style="margin: 0 5px;"><?php echo $key ?></span>
|
77 |
+
<?php endforeach ?>
|
78 |
+
</div>
|
79 |
+
<?php endif ?>
|
80 |
+
</td>
|
81 |
<td><?php echo $status ? 'OK' : '<button class="btn btn-success btn-xs" type="button" data-action="fix-column">FIX…</button>' ?></td>
|
82 |
</tr>
|
83 |
<?php endforeach ?>
|
106 |
</tbody>
|
107 |
</table>
|
108 |
<?php endif ?>
|
109 |
+
<?php if ( $table['constraints_3d'] ) : ?>
|
110 |
+
<h4>Third-party constraints</h4>
|
111 |
+
<table class="table table-condensed">
|
112 |
+
<thead>
|
113 |
+
<tr>
|
114 |
+
<th>Column name</th>
|
115 |
+
<th>Reference</th>
|
116 |
+
<th>Name</th>
|
117 |
+
<th width="50">Status</th>
|
118 |
+
</tr>
|
119 |
+
</thead>
|
120 |
+
<tbody>
|
121 |
+
<?php foreach ( $table['constraints_3d'] as $key => $constraint ) : ?>
|
122 |
+
<tr class="<?php echo $constraint['status'] ? 'default' : 'danger' ?>">
|
123 |
+
<td><?php echo $constraint['column_name'] ?></td>
|
124 |
+
<td><?php echo $constraint['referenced_table_name'] . '.' . $constraint['referenced_column_name'] ?>
|
125 |
+
<?php if ( ! $constraint['reference_exists'] ) : ?><div class="pull-right"><span class="label label-warning" style="margin: 0 5px;">not exist</span><?php endif ?></div></td>
|
126 |
+
<td><?php echo $constraint['constraint_name'] ?></td>
|
127 |
+
<td><?php if ( $constraint['status'] ) : ?>
|
128 |
+
OK
|
129 |
+
<?php else : ?>
|
130 |
+
<button class="btn btn-xs <?php echo $constraint['reference_exists']?'btn-danger':'btn-success' ?>" type="button" data-action="drop-constraint">DROP…</button>
|
131 |
+
<?php endif ?>
|
132 |
+
</td>
|
133 |
+
</tr>
|
134 |
+
<?php endforeach ?>
|
135 |
+
</tbody>
|
136 |
+
</table>
|
137 |
+
<?php endif ?>
|
138 |
+
<?php else : ?>
|
139 |
Table does not exist
|
140 |
<?php endif ?>
|
141 |
</div>
|
184 |
<span class="sr-only">Toggle Dropdown</span>
|
185 |
</button>
|
186 |
<ul class="dropdown-menu">
|
187 |
+
<li><a class="bookly-js-update" href="#" data-action="fix-consistency">UPDATE `<span class="bookly-js-table"></span>` SET `<span class="bookly-js-ref_column"></span>` = NULL WHERE `<span class="bookly-js-ref_column"></span>` NOT IN (…)</a></li>
|
188 |
+
<li><a class="bookly-js-delete" href="#" data-action="fix-consistency">DELETE FROM `<span class="bookly-js-table"></span>` WHERE `<span class="bookly-js-ref_column"></span>` NOT IN (…)</a></li>
|
189 |
</ul>
|
190 |
</div>
|
191 |
</div>
|
232 |
</div>
|
233 |
</div>
|
234 |
</div>
|
235 |
+
<div id="bookly-js-drop-constraint" class="modal fade" tabindex="-1" role="dialog">
|
236 |
+
<div class="modal-dialog" role="document">
|
237 |
+
<div class="modal-content">
|
238 |
+
<div class="modal-header">
|
239 |
+
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
240 |
+
<h4 class="modal-title">Drop foreign key</h4>
|
241 |
+
</div>
|
242 |
+
<div class="modal-body">
|
243 |
+
<div class="bookly-js-loading"><pre>
|
244 |
+
ALTER TABLE `<span id="bookly-js-table"></span>`
|
245 |
+
DROP FOREIGN KEY `<span id="bookly-js-constraint"></span>`</pre></div>
|
246 |
+
</div>
|
247 |
+
<div class="modal-footer">
|
248 |
+
<?php Buttons::renderCustom( null, 'bookly-js-save btn-lg btn-success', 'Drop' ) ?>
|
249 |
+
<?php Buttons::renderCustom( null, 'btn-lg btn-default', 'Close', array( 'data-dismiss' => 'modal' ) ) ?>
|
250 |
+
</div>
|
251 |
+
</div>
|
252 |
+
</div>
|
253 |
+
</div>
|
254 |
</div>
|
backend/modules/messages/Ajax.php
CHANGED
@@ -30,7 +30,7 @@ class Ajax extends Lib\Base\Ajax
|
|
30 |
wp_send_json( array(
|
31 |
'draw' => ( int ) self::parameter( 'draw' ),
|
32 |
'recordsTotal' => $total,
|
33 |
-
'recordsFiltered' =>
|
34 |
'data' => $data,
|
35 |
) );
|
36 |
}
|
30 |
wp_send_json( array(
|
31 |
'draw' => ( int ) self::parameter( 'draw' ),
|
32 |
'recordsTotal' => $total,
|
33 |
+
'recordsFiltered' => $total,
|
34 |
'data' => $data,
|
35 |
) );
|
36 |
}
|
backend/modules/messages/Page.php
CHANGED
@@ -62,10 +62,10 @@ class Page extends Lib\Base\Component
|
|
62 |
$messages = __( 'Messages', 'bookly' );
|
63 |
$count = self::getMessagesCount();
|
64 |
if ( $count ) {
|
65 |
-
add_submenu_page( 'bookly-menu', $messages, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $messages, $count, $count ),
|
66 |
self::pageSlug(), function () { Page::render(); } );
|
67 |
} else {
|
68 |
-
add_submenu_page( 'bookly-menu', $messages, $messages,
|
69 |
self::pageSlug(), function () { Page::render(); } );
|
70 |
}
|
71 |
}
|
62 |
$messages = __( 'Messages', 'bookly' );
|
63 |
$count = self::getMessagesCount();
|
64 |
if ( $count ) {
|
65 |
+
add_submenu_page( 'bookly-menu', $messages, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $messages, $count, $count ), Lib\Utils\Common::getRequiredCapability(),
|
66 |
self::pageSlug(), function () { Page::render(); } );
|
67 |
} else {
|
68 |
+
add_submenu_page( 'bookly-menu', $messages, $messages, Lib\Utils\Common::getRequiredCapability(),
|
69 |
self::pageSlug(), function () { Page::render(); } );
|
70 |
}
|
71 |
}
|
backend/modules/notifications/templates/_test_email_modal.php
CHANGED
@@ -48,7 +48,7 @@ use Bookly\Backend\Components\Controls\Inputs;
|
|
48 |
</div>
|
49 |
<div class="modal-footer">
|
50 |
<?php Inputs::renderCsrf() ?>
|
51 |
-
<?php Buttons::renderCustom( null, 'btn-lg btn-success', esc_attr__( 'Send', 'bookly' ) ) ?>
|
52 |
</div>
|
53 |
</form>
|
54 |
</div>
|
48 |
</div>
|
49 |
<div class="modal-footer">
|
50 |
<?php Inputs::renderCsrf() ?>
|
51 |
+
<?php Buttons::renderCustom( null, 'btn-lg btn-success', esc_attr__( 'Send', 'bookly' ), array( 'disabled' => 'disabled' ) ) ?>
|
52 |
</div>
|
53 |
</form>
|
54 |
</div>
|
backend/modules/payments/Page.php
CHANGED
@@ -47,6 +47,7 @@ class Page extends Lib\Base\Component
|
|
47 |
'details' => __( 'Details', 'bookly' ),
|
48 |
'areYouSure' => __( 'Are you sure?', 'bookly' ),
|
49 |
'noResultFound' => __( 'No result found', 'bookly' ),
|
|
|
50 |
'invoice' => array(
|
51 |
'enabled' => (int) Lib\Config::invoicesActive(),
|
52 |
'button' => __( 'Invoice', 'bookly' ),
|
@@ -63,13 +64,13 @@ class Page extends Lib\Base\Component
|
|
63 |
Lib\Entities\Payment::TYPE_PAYULATAM,
|
64 |
Lib\Entities\Payment::TYPE_PAYSON,
|
65 |
Lib\Entities\Payment::TYPE_MOLLIE,
|
66 |
-
Lib\Entities\Payment::
|
67 |
Lib\Entities\Payment::TYPE_WOOCOMMERCE,
|
68 |
);
|
69 |
|
70 |
$providers = Lib\Entities\Staff::query()->select( 'id, full_name' )->sortBy( 'full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
|
71 |
$services = Lib\Entities\Service::query()->select( 'id, title' )->sortBy( 'title' )->fetchArray();
|
72 |
-
$customers = Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray();
|
73 |
|
74 |
self::renderTemplate( 'index', compact( 'types', 'providers', 'services', 'customers' ) );
|
75 |
}
|
47 |
'details' => __( 'Details', 'bookly' ),
|
48 |
'areYouSure' => __( 'Are you sure?', 'bookly' ),
|
49 |
'noResultFound' => __( 'No result found', 'bookly' ),
|
50 |
+
'searching' => __( 'Searching', 'bookly' ),
|
51 |
'invoice' => array(
|
52 |
'enabled' => (int) Lib\Config::invoicesActive(),
|
53 |
'button' => __( 'Invoice', 'bookly' ),
|
64 |
Lib\Entities\Payment::TYPE_PAYULATAM,
|
65 |
Lib\Entities\Payment::TYPE_PAYSON,
|
66 |
Lib\Entities\Payment::TYPE_MOLLIE,
|
67 |
+
Lib\Entities\Payment::TYPE_FREE,
|
68 |
Lib\Entities\Payment::TYPE_WOOCOMMERCE,
|
69 |
);
|
70 |
|
71 |
$providers = Lib\Entities\Staff::query()->select( 'id, full_name' )->sortBy( 'full_name' )->whereNot( 'visibility', 'archive' )->fetchArray();
|
72 |
$services = Lib\Entities\Service::query()->select( 'id, title' )->sortBy( 'title' )->fetchArray();
|
73 |
+
$customers = Lib\Entities\Customer::query()->count() < Lib\Entities\Customer::REMOTE_LIMIT ? Lib\Entities\Customer::query( 'c' )->select( 'c.id, c.full_name, c.first_name, c.last_name' )->fetchArray() : false;
|
74 |
|
75 |
self::renderTemplate( 'index', compact( 'types', 'providers', 'services', 'customers' ) );
|
76 |
}
|
backend/modules/payments/resources/js/payments.js
CHANGED
@@ -40,10 +40,6 @@ jQuery(function($) {
|
|
40 |
|
41 |
$('.bookly-js-select')
|
42 |
.val(null)
|
43 |
-
.on('select2:unselecting', function(e) {
|
44 |
-
e.preventDefault();
|
45 |
-
$(this).val(null).trigger('change');
|
46 |
-
})
|
47 |
.select2({
|
48 |
allowClear: true,
|
49 |
theme: 'bootstrap',
|
@@ -52,6 +48,31 @@ jQuery(function($) {
|
|
52 |
}
|
53 |
});
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
/**
|
56 |
* Init Columns.
|
57 |
*/
|
@@ -84,9 +105,9 @@ jQuery(function($) {
|
|
84 |
render: function ( data, type, row, meta ) {
|
85 |
var buttons = '';
|
86 |
if (BooklyL10n.invoice.enabled) {
|
87 |
-
buttons += '<button type="button" class="btn btn-default bookly-margin-right-md" data-action="view-invoice" data-payment_id="' + row.id + '"><i class="dashicons dashicons-media-text"></i> ' + BooklyL10n.invoice.button + '</
|
88 |
}
|
89 |
-
return buttons + '<button type="button" class="btn btn-default" data-toggle="modal" data-target="#bookly-payment-details-modal" data-payment_id="' + row.id + '"><i class="glyphicon glyphicon-list-alt"></i> ' + BooklyL10n.details + '</
|
90 |
}
|
91 |
},
|
92 |
{
|
@@ -185,7 +206,7 @@ jQuery(function($) {
|
|
185 |
cancelLabel: BooklyL10n.dateRange.cancel,
|
186 |
fromLabel: BooklyL10n.dateRange.from,
|
187 |
toLabel: BooklyL10n.dateRange.to,
|
188 |
-
customRangeLabel: BooklyL10n.dateRange.
|
189 |
daysOfWeek: BooklyL10n.datePicker.dayNamesShort,
|
190 |
monthNames: BooklyL10n.datePicker.monthNames,
|
191 |
firstDay: parseInt(BooklyL10n.dateRange.firstDay),
|
@@ -233,7 +254,7 @@ jQuery(function($) {
|
|
233 |
dataType : 'json',
|
234 |
success : function(response) {
|
235 |
if (response.success) {
|
236 |
-
dt.
|
237 |
} else {
|
238 |
alert(response.data.message);
|
239 |
}
|
40 |
|
41 |
$('.bookly-js-select')
|
42 |
.val(null)
|
|
|
|
|
|
|
|
|
43 |
.select2({
|
44 |
allowClear: true,
|
45 |
theme: 'bootstrap',
|
48 |
}
|
49 |
});
|
50 |
|
51 |
+
$('.bookly-js-select-ajax')
|
52 |
+
.select2({
|
53 |
+
width: '100%',
|
54 |
+
theme: 'bootstrap',
|
55 |
+
allowClear: true,
|
56 |
+
language : {
|
57 |
+
noResults: function() { return BooklyL10n.no_result_found; },
|
58 |
+
searching: function () { return BooklyL10n.searching; }
|
59 |
+
},
|
60 |
+
ajax: {
|
61 |
+
url: ajaxurl,
|
62 |
+
dataType: 'json',
|
63 |
+
delay: 250,
|
64 |
+
data: function (params) {
|
65 |
+
params.page = params.page || 1;
|
66 |
+
return {
|
67 |
+
action: $(this).data('action'),
|
68 |
+
filter: params.term,
|
69 |
+
page: params.page,
|
70 |
+
csrf_token : BooklyL10n.csrfToken
|
71 |
+
};
|
72 |
+
}
|
73 |
+
},
|
74 |
+
});
|
75 |
+
|
76 |
/**
|
77 |
* Init Columns.
|
78 |
*/
|
105 |
render: function ( data, type, row, meta ) {
|
106 |
var buttons = '';
|
107 |
if (BooklyL10n.invoice.enabled) {
|
108 |
+
buttons += '<button type="button" class="btn btn-default bookly-margin-right-md" data-action="view-invoice" data-payment_id="' + row.id + '"><i class="dashicons dashicons-media-text"></i> ' + BooklyL10n.invoice.button + '</button>';
|
109 |
}
|
110 |
+
return buttons + '<button type="button" class="btn btn-default" data-toggle="modal" data-target="#bookly-payment-details-modal" data-payment_id="' + row.id + '"><i class="glyphicon glyphicon-list-alt"></i> ' + BooklyL10n.details + '</button>';
|
111 |
}
|
112 |
},
|
113 |
{
|
206 |
cancelLabel: BooklyL10n.dateRange.cancel,
|
207 |
fromLabel: BooklyL10n.dateRange.from,
|
208 |
toLabel: BooklyL10n.dateRange.to,
|
209 |
+
customRangeLabel: BooklyL10n.dateRange.customRange,
|
210 |
daysOfWeek: BooklyL10n.datePicker.dayNamesShort,
|
211 |
monthNames: BooklyL10n.datePicker.monthNames,
|
212 |
firstDay: parseInt(BooklyL10n.dateRange.firstDay),
|
254 |
dataType : 'json',
|
255 |
success : function(response) {
|
256 |
if (response.success) {
|
257 |
+
dt.ajax.reload();
|
258 |
} else {
|
259 |
alert(response.data.message);
|
260 |
}
|
backend/modules/payments/templates/index.php
CHANGED
@@ -42,10 +42,12 @@ use Bookly\Backend\Modules\Payments\Proxy;
|
|
42 |
</div>
|
43 |
<div class="col-md-1 col-lg-2">
|
44 |
<div class="form-group">
|
45 |
-
<select class="form-control bookly-js-select" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>">
|
46 |
-
<?php
|
47 |
-
|
48 |
-
|
|
|
|
|
49 |
</select>
|
50 |
</div>
|
51 |
</div>
|
@@ -122,4 +124,4 @@ use Bookly\Backend\Modules\Payments\Proxy;
|
|
122 |
<?php Components\Dialogs\Payment\Dialog::render() ?>
|
123 |
</div>
|
124 |
</div>
|
125 |
-
</div>
|
42 |
</div>
|
43 |
<div class="col-md-1 col-lg-2">
|
44 |
<div class="form-group">
|
45 |
+
<select class="form-control <?php echo $customers === false ? 'bookly-js-select-ajax' : 'bookly-js-select' ?>" id="bookly-filter-customer" data-placeholder="<?php esc_attr_e( 'Customer', 'bookly' ) ?>" data-action="bookly_get_customers_list">
|
46 |
+
<?php if ( $customers !== false ) : ?>
|
47 |
+
<?php foreach ( $customers as $customer ) : ?>
|
48 |
+
<option value="<?php echo $customer['id'] ?>"><?php echo esc_html( $customer['full_name'] ) ?></option>
|
49 |
+
<?php endforeach ?>
|
50 |
+
<?php endif ?>
|
51 |
</select>
|
52 |
</div>
|
53 |
</div>
|
124 |
<?php Components\Dialogs\Payment\Dialog::render() ?>
|
125 |
</div>
|
126 |
</div>
|
127 |
+
</div>
|
backend/modules/services/resources/js/services-list.js
CHANGED
@@ -105,22 +105,20 @@ jQuery(function ($) {
|
|
105 |
processing : BooklyL10n.processing
|
106 |
}
|
107 |
}).on('row-reordered', function (e, diff, edit) {
|
108 |
-
|
109 |
-
function
|
110 |
-
|
111 |
-
}
|
112 |
-
dt.data().each(function (service) {
|
113 |
-
positions.push({position: service.position, id: service.id});
|
114 |
});
|
115 |
$.ajax({
|
116 |
-
url
|
117 |
-
type
|
118 |
-
data: {
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
|
|
124 |
},
|
125 |
dataType: 'json',
|
126 |
success : function (response) {
|
105 |
processing : BooklyL10n.processing
|
106 |
}
|
107 |
}).on('row-reordered', function (e, diff, edit) {
|
108 |
+
let positions = [];
|
109 |
+
dt.data().each(function (item) {
|
110 |
+
positions.push({position: parseInt(item.position), id: item.id});
|
|
|
|
|
|
|
111 |
});
|
112 |
$.ajax({
|
113 |
+
url : ajaxurl,
|
114 |
+
type : 'POST',
|
115 |
+
data : {
|
116 |
+
action : 'bookly_update_services_position',
|
117 |
+
csrf_token : BooklyL10n.csrfToken,
|
118 |
+
positions : (positions.sort((a, b) => a.position - b.position))
|
119 |
+
.map(function (value) {
|
120 |
+
return value.id;
|
121 |
+
})
|
122 |
},
|
123 |
dataType: 'json',
|
124 |
success : function (response) {
|
backend/modules/services/templates/time.php
CHANGED
@@ -2,12 +2,10 @@
|
|
2 |
use Bookly\Lib\Utils\Common;
|
3 |
use Bookly\Lib\Utils\DateTime;
|
4 |
use Bookly\Lib\Entities\Service;
|
5 |
-
use Bookly\Backend\Components\Controls\Buttons;
|
6 |
-
use Bookly\Backend\Components\Controls\Inputs;
|
7 |
use Bookly\Backend\Modules\Services\Proxy;
|
8 |
?>
|
9 |
-
<div class="
|
10 |
-
<div class="form-group">
|
11 |
<label for="bookly-service-duration">
|
12 |
<?php esc_html_e( 'Duration', 'bookly' ) ?>
|
13 |
</label>
|
@@ -37,14 +35,16 @@ use Bookly\Backend\Modules\Services\Proxy;
|
|
37 |
</div>
|
38 |
</div>
|
39 |
</div>
|
40 |
-
<div class="form-group
|
41 |
<label for="bookly-service-slot-length">
|
42 |
<?php esc_html_e( 'Time slot length', 'bookly' ) ?>
|
43 |
</label>
|
44 |
<p class="help-block"><?php esc_html_e( 'The time interval which is used as a step when building all time slots for the service at the Time step. The setting overrides global settings in Settings → General. Use Default to apply global settings.', 'bookly' ) ?></p>
|
45 |
<select id="bookly-service-slot-length" class="form-control" name="slot_length">
|
46 |
<option value="<?php echo Service::SLOT_LENGTH_DEFAULT ?>"<?php selected( $service['slot_length'], Service::SLOT_LENGTH_DEFAULT ) ?>><?php esc_html_e( 'Default', 'bookly' ) ?></option>
|
47 |
-
|
|
|
|
|
48 |
<?php foreach ( array( 300, 600, 720, 900, 1200, 1800, 2700, 3600, 5400, 7200, 10800, 14400, 21600 ) as $duration ): ?>
|
49 |
<option value="<?php echo $duration ?>"<?php selected( $service['slot_length'], $duration ) ?>><?php echo esc_html( DateTime::secondsToInterval( $duration ) ) ?></option>
|
50 |
<?php endforeach ?>
|
2 |
use Bookly\Lib\Utils\Common;
|
3 |
use Bookly\Lib\Utils\DateTime;
|
4 |
use Bookly\Lib\Entities\Service;
|
|
|
|
|
5 |
use Bookly\Backend\Modules\Services\Proxy;
|
6 |
?>
|
7 |
+
<div class="bookly-js-service-time-container">
|
8 |
+
<div class="form-group bookly-js-service bookly-js-service-simple">
|
9 |
<label for="bookly-service-duration">
|
10 |
<?php esc_html_e( 'Duration', 'bookly' ) ?>
|
11 |
</label>
|
35 |
</div>
|
36 |
</div>
|
37 |
</div>
|
38 |
+
<div class="form-group">
|
39 |
<label for="bookly-service-slot-length">
|
40 |
<?php esc_html_e( 'Time slot length', 'bookly' ) ?>
|
41 |
</label>
|
42 |
<p class="help-block"><?php esc_html_e( 'The time interval which is used as a step when building all time slots for the service at the Time step. The setting overrides global settings in Settings → General. Use Default to apply global settings.', 'bookly' ) ?></p>
|
43 |
<select id="bookly-service-slot-length" class="form-control" name="slot_length">
|
44 |
<option value="<?php echo Service::SLOT_LENGTH_DEFAULT ?>"<?php selected( $service['slot_length'], Service::SLOT_LENGTH_DEFAULT ) ?>><?php esc_html_e( 'Default', 'bookly' ) ?></option>
|
45 |
+
<?php if ( $service['type'] === Service::TYPE_SIMPLE ) : ?>
|
46 |
+
<option value="<?php echo Service::SLOT_LENGTH_AS_SERVICE_DURATION ?>"<?php selected( $service['slot_length'], Service::SLOT_LENGTH_AS_SERVICE_DURATION ) ?>><?php esc_html_e( 'Slot length as service duration', 'bookly' ) ?></option>
|
47 |
+
<?php endif ?>
|
48 |
<?php foreach ( array( 300, 600, 720, 900, 1200, 1800, 2700, 3600, 5400, 7200, 10800, 14400, 21600 ) as $duration ): ?>
|
49 |
<option value="<?php echo $duration ?>"<?php selected( $service['slot_length'], $duration ) ?>><?php echo esc_html( DateTime::secondsToInterval( $duration ) ) ?></option>
|
50 |
<?php endforeach ?>
|
backend/modules/settings/Page.php
CHANGED
@@ -74,6 +74,7 @@ class Page extends Lib\Base\Ajax
|
|
74 |
update_option( 'bookly_gen_max_days_for_booking', (int) self::parameter( 'bookly_gen_max_days_for_booking' ) );
|
75 |
update_option( 'bookly_gen_use_client_time_zone', (int) self::parameter( 'bookly_gen_use_client_time_zone' ) );
|
76 |
update_option( 'bookly_gen_collect_stats', self::parameter( 'bookly_gen_collect_stats' ) );
|
|
|
77 |
$alert['success'][] = __( 'Settings saved.', 'bookly' );
|
78 |
break;
|
79 |
case 'url': // URL settings form.
|
74 |
update_option( 'bookly_gen_max_days_for_booking', (int) self::parameter( 'bookly_gen_max_days_for_booking' ) );
|
75 |
update_option( 'bookly_gen_use_client_time_zone', (int) self::parameter( 'bookly_gen_use_client_time_zone' ) );
|
76 |
update_option( 'bookly_gen_collect_stats', self::parameter( 'bookly_gen_collect_stats' ) );
|
77 |
+
update_option( 'bookly_app_show_powered_by', self::parameter( 'bookly_app_show_powered_by' ) );
|
78 |
$alert['success'][] = __( 'Settings saved.', 'bookly' );
|
79 |
break;
|
80 |
case 'url': // URL settings form.
|
backend/modules/settings/templates/_generalForm.php
CHANGED
@@ -18,6 +18,7 @@ use Bookly\Backend\Modules\Settings\Proxy;
|
|
18 |
Selects::renderSingle( 'bookly_gen_allow_staff_edit_profile', __( 'Allow staff members to edit their profiles', 'bookly' ), __( 'If this option is enabled then all staff members who are associated with WordPress users will be able to edit their own profiles, services, schedule and days off.', 'bookly' ) );
|
19 |
Selects::renderSingle( 'bookly_gen_link_assets_method', __( 'Method to include Bookly JavaScript and CSS files on the page', 'bookly' ), __( 'With "Enqueue" method the JavaScript and CSS files of Bookly will be included on all pages of your website. This method should work with all themes. With "Print" method the files will be included only on the pages which contain Bookly booking form. This method may not work with all themes.', 'bookly' ), array( array( 'enqueue', 'Enqueue' ), array( 'print', 'Print' ) ) );
|
20 |
Selects::renderSingle( 'bookly_gen_collect_stats', __( 'Help us improve Bookly by sending anonymous usage stats', 'bookly' ) );
|
|
|
21 |
?>
|
22 |
<div class="panel-footer">
|
23 |
<?php ControlInputs::renderCsrf() ?>
|
18 |
Selects::renderSingle( 'bookly_gen_allow_staff_edit_profile', __( 'Allow staff members to edit their profiles', 'bookly' ), __( 'If this option is enabled then all staff members who are associated with WordPress users will be able to edit their own profiles, services, schedule and days off.', 'bookly' ) );
|
19 |
Selects::renderSingle( 'bookly_gen_link_assets_method', __( 'Method to include Bookly JavaScript and CSS files on the page', 'bookly' ), __( 'With "Enqueue" method the JavaScript and CSS files of Bookly will be included on all pages of your website. This method should work with all themes. With "Print" method the files will be included only on the pages which contain Bookly booking form. This method may not work with all themes.', 'bookly' ), array( array( 'enqueue', 'Enqueue' ), array( 'print', 'Print' ) ) );
|
20 |
Selects::renderSingle( 'bookly_gen_collect_stats', __( 'Help us improve Bookly by sending anonymous usage stats', 'bookly' ) );
|
21 |
+
Selects::renderSingle( 'bookly_app_show_powered_by', __( 'Allow the plugin to set a Powered by Bookly notice on the booking widget to spread information about the plugin. This will allow the team to improve the product and enhance its functionality.', 'bookly' ) );
|
22 |
?>
|
23 |
<div class="panel-footer">
|
24 |
<?php ControlInputs::renderCsrf() ?>
|
backend/modules/shop/Page.php
CHANGED
@@ -60,10 +60,10 @@ class Page extends Lib\Base\Component
|
|
60 |
$title = __( 'Addons', 'bookly' );
|
61 |
$count = self::getNotSeenCount();
|
62 |
if ( $count ) {
|
63 |
-
add_submenu_page( 'bookly-menu', $title, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $title, $count, $count ),
|
64 |
self::pageSlug(), function () { Page::render(); } );
|
65 |
} else {
|
66 |
-
add_submenu_page( 'bookly-menu', $title, $title,
|
67 |
self::pageSlug(), function () { Page::render(); } );
|
68 |
}
|
69 |
}
|
60 |
$title = __( 'Addons', 'bookly' );
|
61 |
$count = self::getNotSeenCount();
|
62 |
if ( $count ) {
|
63 |
+
add_submenu_page( 'bookly-menu', $title, sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $title, $count, $count ), Lib\Utils\Common::getRequiredCapability(),
|
64 |
self::pageSlug(), function () { Page::render(); } );
|
65 |
} else {
|
66 |
+
add_submenu_page( 'bookly-menu', $title, $title, Lib\Utils\Common::getRequiredCapability(),
|
67 |
self::pageSlug(), function () { Page::render(); } );
|
68 |
}
|
69 |
}
|
backend/modules/sms/Ajax.php
CHANGED
@@ -9,6 +9,19 @@ use Bookly\Lib;
|
|
9 |
*/
|
10 |
class Ajax extends Lib\Base\Ajax
|
11 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
/**
|
13 |
* Get purchases list.
|
14 |
*/
|
@@ -271,4 +284,52 @@ class Ajax extends Lib\Base\Ajax
|
|
271 |
update_option( 'bookly_sms_administrator_phone', self::parameter( 'bookly_sms_administrator_phone' ) );
|
272 |
wp_send_json_success();
|
273 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
}
|
9 |
*/
|
10 |
class Ajax extends Lib\Base\Ajax
|
11 |
{
|
12 |
+
/**
|
13 |
+
* @inheritdoc
|
14 |
+
*/
|
15 |
+
protected static function permissions()
|
16 |
+
{
|
17 |
+
$permissions = get_option( 'bookly_gen_allow_staff_edit_profile' ) ? array( '_default' => 'user' ) : array();
|
18 |
+
if ( Lib\Config::staffCabinetActive() ) {
|
19 |
+
$permissions = array( '_default' => 'user' );
|
20 |
+
}
|
21 |
+
|
22 |
+
return $permissions;
|
23 |
+
}
|
24 |
+
|
25 |
/**
|
26 |
* Get purchases list.
|
27 |
*/
|
284 |
update_option( 'bookly_sms_administrator_phone', self::parameter( 'bookly_sms_administrator_phone' ) );
|
285 |
wp_send_json_success();
|
286 |
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Send queue
|
290 |
+
*/
|
291 |
+
public static function sendQueue()
|
292 |
+
{
|
293 |
+
$queue = self::parameter( 'queue', array() );
|
294 |
+
$sms = new Lib\SMS();
|
295 |
+
|
296 |
+
foreach ( $queue as $notification ) {
|
297 |
+
if ( $notification['gateway'] == 'sms' ) {
|
298 |
+
$sms->sendSms( $notification['address'], $notification['message'], $notification['impersonal'], $notification['type_id'] );
|
299 |
+
} else {
|
300 |
+
wp_mail( $notification['address'], $notification['subject'], $notification['message'], $notification['headers'], isset( $notification['attachments'] ) ? $notification['attachments'] : array() );
|
301 |
+
}
|
302 |
+
}
|
303 |
+
self::_deleteAttachmentFiles( self::parameter( 'queue_full', array() ) );
|
304 |
+
|
305 |
+
wp_send_json_success();
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
* Delete attachments files
|
310 |
+
*/
|
311 |
+
public static function clearAttachments()
|
312 |
+
{
|
313 |
+
self::_deleteAttachmentFiles( self::parameter( 'queue', array() ) );
|
314 |
+
|
315 |
+
wp_send_json_success();
|
316 |
+
}
|
317 |
+
|
318 |
+
/**
|
319 |
+
* Delete attachment files
|
320 |
+
*
|
321 |
+
* @param $queue
|
322 |
+
*/
|
323 |
+
private static function _deleteAttachmentFiles( $queue )
|
324 |
+
{
|
325 |
+
foreach ( $queue as $notification ) {
|
326 |
+
if ( isset( $notification['attachments'] ) ) {
|
327 |
+
foreach ( $notification['attachments'] as $file ) {
|
328 |
+
if ( file_exists( $file ) ) {
|
329 |
+
unlink( $file );
|
330 |
+
}
|
331 |
+
}
|
332 |
+
}
|
333 |
+
}
|
334 |
+
}
|
335 |
}
|
backend/modules/sms/Page.php
CHANGED
@@ -50,9 +50,9 @@ class Page extends Lib\Base\Component
|
|
50 |
),
|
51 |
) );
|
52 |
|
53 |
-
$alert
|
54 |
-
$prices
|
55 |
-
$sms
|
56 |
|
57 |
$email_confirm_required = false;
|
58 |
$show_registration_form = false;
|
@@ -64,22 +64,19 @@ class Page extends Lib\Base\Component
|
|
64 |
$sms->logout();
|
65 |
} elseif ( self::hasParameter( 'form-registration' ) ) {
|
66 |
if ( self::parameter( 'accept_tos', false ) ) {
|
67 |
-
$
|
68 |
self::parameter( 'username' ),
|
69 |
self::parameter( 'password' ),
|
70 |
self::parameter( 'password_repeat' )
|
71 |
);
|
72 |
-
if ( $
|
73 |
$email_confirm_required = self::parameter( 'username' );
|
74 |
-
self::_sendEmailConfirmNotification( $token, self::parameter( 'username' ) );
|
75 |
} else {
|
76 |
$show_registration_form = true;
|
77 |
}
|
78 |
} else {
|
79 |
$alert['error'][] = __( 'Please accept terms and conditions.', 'bookly' );
|
80 |
}
|
81 |
-
} elseif ( self::hasParameter( 'token' ) ) {
|
82 |
-
$sms->confirmEmail( self::parameter( 'token' ) );
|
83 |
}
|
84 |
if ( $email_confirm_required !== false || self::hasParameter( 'form-registration' ) ) {
|
85 |
$is_logged_in = false;
|
@@ -122,7 +119,7 @@ class Page extends Lib\Base\Component
|
|
122 |
wp_localize_script( 'bookly-daterangepicker.js', 'BooklyL10n',
|
123 |
array(
|
124 |
'csrfToken' => Lib\Utils\Common::getCsrfToken(),
|
125 |
-
'
|
126 |
'areYouSure' => __( 'Are you sure?', 'bookly' ),
|
127 |
'cancel' => __( 'Cancel', 'bookly' ),
|
128 |
'country' => get_option( 'bookly_cst_phone_default_country' ),
|
@@ -135,9 +132,8 @@ class Page extends Lib\Base\Component
|
|
135 |
'utils' => is_rtl() ? '' : plugins_url( 'intlTelInput.utils.js', Lib\Plugin::getDirectory() . '/frontend/resources/js/intlTelInput.utils.js' ),
|
136 |
'enabled' => get_option( 'bookly_cst_phone_default_country' ) != 'disabled',
|
137 |
),
|
138 |
-
|
139 |
'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
|
140 |
-
'dateRange'
|
141 |
'sender_id' => array(
|
142 |
'sent' => __( 'Sender ID request is sent.', 'bookly' ),
|
143 |
'set_default' => __( 'Sender ID is reset to default.', 'bookly' ),
|
@@ -168,25 +164,6 @@ class Page extends Lib\Base\Component
|
|
168 |
self::renderTemplate( 'index', compact( 'sms', 'is_logged_in', 'prices', 'bookly_ntf_processing_interval_values', 'undelivered_count', 'email_confirm_required', 'show_registration_form' ) );
|
169 |
}
|
170 |
|
171 |
-
/**
|
172 |
-
* Send notification to confirm email.
|
173 |
-
*
|
174 |
-
* @param string $token
|
175 |
-
* @param string $email
|
176 |
-
*/
|
177 |
-
private static function _sendEmailConfirmNotification( $token, $email )
|
178 |
-
{
|
179 |
-
$confirm_url = admin_url( 'admin.php?' . build_query( array( 'page' => self::pageSlug(), 'token' => $token ) ) );
|
180 |
-
$message = sprintf( __( "Hello,\n\nThank you for registering at Bookly SMS service. Please click the link below to verify your email address.\n\n<a href='%s'>%s</a>\n\nBookly", 'bookly' ), $confirm_url, $confirm_url );
|
181 |
-
|
182 |
-
wp_mail(
|
183 |
-
$email,
|
184 |
-
__( 'Bookly SMS service – email confirmation', 'bookly' ),
|
185 |
-
get_option( 'bookly_email_send_as' ) == 'html' ? wpautop( $message ) : $message,
|
186 |
-
Lib\Utils\Common::getEmailHeaders()
|
187 |
-
);
|
188 |
-
}
|
189 |
-
|
190 |
/**
|
191 |
* Show 'SMS Notifications' submenu with counter inside Bookly main menu.
|
192 |
*/
|
@@ -199,7 +176,7 @@ class Page extends Lib\Base\Component
|
|
199 |
'bookly-menu',
|
200 |
$sms,
|
201 |
$count ? sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $sms, $count, $count ) : $sms,
|
202 |
-
|
203 |
self::pageSlug(),
|
204 |
function () { Page::render(); }
|
205 |
);
|
50 |
),
|
51 |
) );
|
52 |
|
53 |
+
$alert = array( 'success' => array(), 'error' => array() );
|
54 |
+
$prices = array();
|
55 |
+
$sms = new Lib\SMS();
|
56 |
|
57 |
$email_confirm_required = false;
|
58 |
$show_registration_form = false;
|
64 |
$sms->logout();
|
65 |
} elseif ( self::hasParameter( 'form-registration' ) ) {
|
66 |
if ( self::parameter( 'accept_tos', false ) ) {
|
67 |
+
$success = $sms->register(
|
68 |
self::parameter( 'username' ),
|
69 |
self::parameter( 'password' ),
|
70 |
self::parameter( 'password_repeat' )
|
71 |
);
|
72 |
+
if ( $success ) {
|
73 |
$email_confirm_required = self::parameter( 'username' );
|
|
|
74 |
} else {
|
75 |
$show_registration_form = true;
|
76 |
}
|
77 |
} else {
|
78 |
$alert['error'][] = __( 'Please accept terms and conditions.', 'bookly' );
|
79 |
}
|
|
|
|
|
80 |
}
|
81 |
if ( $email_confirm_required !== false || self::hasParameter( 'form-registration' ) ) {
|
82 |
$is_logged_in = false;
|
119 |
wp_localize_script( 'bookly-daterangepicker.js', 'BooklyL10n',
|
120 |
array(
|
121 |
'csrfToken' => Lib\Utils\Common::getCsrfToken(),
|
122 |
+
'smsAlert' => $alert,
|
123 |
'areYouSure' => __( 'Are you sure?', 'bookly' ),
|
124 |
'cancel' => __( 'Cancel', 'bookly' ),
|
125 |
'country' => get_option( 'bookly_cst_phone_default_country' ),
|
132 |
'utils' => is_rtl() ? '' : plugins_url( 'intlTelInput.utils.js', Lib\Plugin::getDirectory() . '/frontend/resources/js/intlTelInput.utils.js' ),
|
133 |
'enabled' => get_option( 'bookly_cst_phone_default_country' ) != 'disabled',
|
134 |
),
|
|
|
135 |
'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
|
136 |
+
'dateRange' => Lib\Utils\DateTime::dateRangeOptions( array( 'lastMonth' => __( 'Last month', 'bookly' ), ) ),
|
137 |
'sender_id' => array(
|
138 |
'sent' => __( 'Sender ID request is sent.', 'bookly' ),
|
139 |
'set_default' => __( 'Sender ID is reset to default.', 'bookly' ),
|
164 |
self::renderTemplate( 'index', compact( 'sms', 'is_logged_in', 'prices', 'bookly_ntf_processing_interval_values', 'undelivered_count', 'email_confirm_required', 'show_registration_form' ) );
|
165 |
}
|
166 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
/**
|
168 |
* Show 'SMS Notifications' submenu with counter inside Bookly main menu.
|
169 |
*/
|
176 |
'bookly-menu',
|
177 |
$sms,
|
178 |
$count ? sprintf( '%s <span class="update-plugins count-%d"><span class="update-count">%d</span></span>', $sms, $count, $count ) : $sms,
|
179 |
+
Lib\Utils\Common::getRequiredCapability(),
|
180 |
self::pageSlug(),
|
181 |
function () { Page::render(); }
|
182 |
);
|
backend/modules/sms/resources/js/notifications-list.js
CHANGED
@@ -208,11 +208,14 @@ jQuery(function($) {
|
|
208 |
ladda.stop();
|
209 |
if (response.success) {
|
210 |
booklyAlert({success: [BooklyL10n.sentSuccessfully]});
|
|
|
211 |
}
|
212 |
}
|
213 |
});
|
214 |
})
|
215 |
.on('shown.bs.modal', function () {
|
|
|
|
|
216 |
$testNotificationsList.html('');
|
217 |
var active = 0;
|
218 |
(dt.rows().data()).each(function (notification) {
|
@@ -224,12 +227,11 @@ jQuery(function($) {
|
|
224 |
}
|
225 |
});
|
226 |
$('.bookly-js-count', $modalTestEmail).html(active);
|
|
|
227 |
});
|
228 |
|
229 |
$testNotificationsList
|
230 |
.on('change', ':checkbox', function () {
|
231 |
$('.bookly-js-count', $modalTestEmail).html($(':checked', $testNotificationsList).length);
|
232 |
});
|
233 |
-
|
234 |
-
booklyAlert(BooklyL10n.alert);
|
235 |
});
|
208 |
ladda.stop();
|
209 |
if (response.success) {
|
210 |
booklyAlert({success: [BooklyL10n.sentSuccessfully]});
|
211 |
+
$modalTestEmail.modal('hide');
|
212 |
}
|
213 |
}
|
214 |
});
|
215 |
})
|
216 |
.on('shown.bs.modal', function () {
|
217 |
+
var $send = $(this).find('.btn-success');
|
218 |
+
$send.prop('disabled', true);
|
219 |
$testNotificationsList.html('');
|
220 |
var active = 0;
|
221 |
(dt.rows().data()).each(function (notification) {
|
227 |
}
|
228 |
});
|
229 |
$('.bookly-js-count', $modalTestEmail).html(active);
|
230 |
+
$send.prop('disabled', false);
|
231 |
});
|
232 |
|
233 |
$testNotificationsList
|
234 |
.on('change', ':checkbox', function () {
|
235 |
$('.bookly-js-count', $modalTestEmail).html($(':checked', $testNotificationsList).length);
|
236 |
});
|
|
|
|
|
237 |
});
|
backend/modules/sms/resources/js/sms.js
CHANGED
@@ -7,7 +7,7 @@ jQuery(function($) {
|
|
7 |
$form_login = $('.bookly-login-form')
|
8 |
;
|
9 |
|
10 |
-
booklyAlert(BooklyL10n.
|
11 |
|
12 |
$('.show-register-form').on('click', function (e) {
|
13 |
e.preventDefault();
|
@@ -280,7 +280,7 @@ jQuery(function($) {
|
|
280 |
cancelLabel : BooklyL10n.dateRange.cancel,
|
281 |
fromLabel : BooklyL10n.dateRange.from,
|
282 |
toLabel : BooklyL10n.dateRange.to,
|
283 |
-
customRangeLabel: BooklyL10n.dateRange.
|
284 |
daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
|
285 |
monthNames : BooklyL10n.datePicker.monthNames,
|
286 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
7 |
$form_login = $('.bookly-login-form')
|
8 |
;
|
9 |
|
10 |
+
booklyAlert(BooklyL10n.smsAlert);
|
11 |
|
12 |
$('.show-register-form').on('click', function (e) {
|
13 |
e.preventDefault();
|
280 |
cancelLabel : BooklyL10n.dateRange.cancel,
|
281 |
fromLabel : BooklyL10n.dateRange.from,
|
282 |
toLabel : BooklyL10n.dateRange.to,
|
283 |
+
customRangeLabel: BooklyL10n.dateRange.customRange,
|
284 |
daysOfWeek : BooklyL10n.datePicker.dayNamesShort,
|
285 |
monthNames : BooklyL10n.datePicker.monthNames,
|
286 |
firstDay : parseInt(BooklyL10n.dateRange.firstDay),
|
backend/modules/staff/Ajax.php
CHANGED
@@ -140,66 +140,6 @@ class Ajax extends Lib\Base\Ajax
|
|
140 |
wp_send_json_success();
|
141 |
}
|
142 |
|
143 |
-
/**
|
144 |
-
* Reset breaks.
|
145 |
-
*/
|
146 |
-
public static function resetBreaks()
|
147 |
-
{
|
148 |
-
$breaks = self::parameter( 'breaks' );
|
149 |
-
|
150 |
-
if ( ! Lib\Utils\Common::isCurrentUserAdmin() ) {
|
151 |
-
// Check permissions to prevent one staff member from updating profile of another staff member.
|
152 |
-
do {
|
153 |
-
if ( self::parameter( 'staff_cabinet' ) && Lib\Config::staffCabinetActive() ) {
|
154 |
-
$allow = true;
|
155 |
-
} else {
|
156 |
-
$allow = get_option( 'bookly_gen_allow_staff_edit_profile' );
|
157 |
-
}
|
158 |
-
if ( $allow ) {
|
159 |
-
$breaks = self::parameter( 'breaks' );
|
160 |
-
$staff = new Lib\Entities\Staff();
|
161 |
-
$staff->load( $breaks['staff_id'] );
|
162 |
-
if ( $staff->getWpUserId() == get_current_user_id() ) {
|
163 |
-
break;
|
164 |
-
}
|
165 |
-
}
|
166 |
-
do_action( 'admin_page_access_denied' );
|
167 |
-
wp_die( 'Bookly: ' . __( 'You do not have sufficient permissions to access this page.' ) );
|
168 |
-
} while ( 0 );
|
169 |
-
}
|
170 |
-
|
171 |
-
$html_breaks = array();
|
172 |
-
|
173 |
-
// Remove all breaks for staff member.
|
174 |
-
$break = new Lib\Entities\ScheduleItemBreak();
|
175 |
-
$break->removeBreaksByStaffId( $breaks['staff_id'] );
|
176 |
-
|
177 |
-
// Restore previous breaks.
|
178 |
-
if ( isset( $breaks['breaks'] ) && is_array( $breaks['breaks'] ) ) {
|
179 |
-
foreach ( $breaks['breaks'] as $day ) {
|
180 |
-
$schedule_item_break = new Lib\Entities\ScheduleItemBreak();
|
181 |
-
$schedule_item_break->setFields( $day );
|
182 |
-
$schedule_item_break->save();
|
183 |
-
}
|
184 |
-
}
|
185 |
-
|
186 |
-
$staff = new Lib\Entities\Staff();
|
187 |
-
$staff->load( $breaks['staff_id'] );
|
188 |
-
|
189 |
-
// Make array with breaks (html) for each day.
|
190 |
-
foreach ( $staff->getScheduleItems() as $item ) {
|
191 |
-
/** @var Lib\Entities\StaffScheduleItem $item */
|
192 |
-
$html_breaks[ $item->getId() ] = self::renderTemplate( '_breaks', array(
|
193 |
-
'day_is_not_available' => null === $item->getStartTime(),
|
194 |
-
'item' => $item,
|
195 |
-
'break_start' => new TimeChoice( array( 'use_empty' => false, 'type' => 'break_from' ) ),
|
196 |
-
'break_end' => new TimeChoice( array( 'use_empty' => false, 'type' => 'to' ) ),
|
197 |
-
), false );
|
198 |
-
}
|
199 |
-
|
200 |
-
wp_send_json( $html_breaks );
|
201 |
-
}
|
202 |
-
|
203 |
/**
|
204 |
* Extend parent method to control access on staff member level.
|
205 |
*
|
140 |
wp_send_json_success();
|
141 |
}
|
142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
/**
|
144 |
* Extend parent method to control access on staff member level.
|
145 |
*
|
backend/modules/staff/resources/js/staff-list.js
CHANGED
@@ -141,22 +141,20 @@ jQuery(function ($) {
|
|
141 |
processing : BooklyL10n.processing
|
142 |
}
|
143 |
}).on('row-reordered', function (e, diff, edit) {
|
144 |
-
|
145 |
-
function
|
146 |
-
|
147 |
-
}
|
148 |
-
dt.data().each(function (service) {
|
149 |
-
positions.push({position: service.position, id: service.id});
|
150 |
});
|
151 |
$.ajax({
|
152 |
-
url
|
153 |
-
type
|
154 |
-
data: {
|
155 |
action : 'bookly_update_staff_position',
|
156 |
csrf_token : BooklyL10n.csrfToken,
|
157 |
-
|
158 |
-
|
159 |
-
|
|
|
160 |
},
|
161 |
dataType: 'json',
|
162 |
success : function (response) {
|
@@ -248,10 +246,6 @@ jQuery(function ($) {
|
|
248 |
});
|
249 |
|
250 |
$('.bookly-js-select')
|
251 |
-
.on('select2:unselecting', function(e) {
|
252 |
-
e.preventDefault();
|
253 |
-
$(this).val(null).trigger('change');
|
254 |
-
})
|
255 |
.select2({
|
256 |
width: '100%',
|
257 |
theme: 'bootstrap',
|
141 |
processing : BooklyL10n.processing
|
142 |
}
|
143 |
}).on('row-reordered', function (e, diff, edit) {
|
144 |
+
let positions = [];
|
145 |
+
dt.data().each(function (item) {
|
146 |
+
positions.push({position: parseInt(item.position), id: item.id});
|
|
|
|
|
|
|
147 |
});
|
148 |
$.ajax({
|
149 |
+
url : ajaxurl,
|
150 |
+
type : 'POST',
|
151 |
+
data : {
|
152 |
action : 'bookly_update_staff_position',
|
153 |
csrf_token : BooklyL10n.csrfToken,
|
154 |
+
positions : (positions.sort((a, b) => a.position - b.position))
|
155 |
+
.map(function (value) {
|
156 |
+
return value.id;
|
157 |
+
})
|
158 |
},
|
159 |
dataType: 'json',
|
160 |
success : function (response) {
|
246 |
});
|
247 |
|
248 |
$('.bookly-js-select')
|
|
|
|
|
|
|
|
|
249 |
.select2({
|
250 |
width: '100%',
|
251 |
theme: 'bootstrap',
|
backend/resources/bootstrap/css/bootstrap-theme.min.css
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
#bookly-tbs{
|
2 |
-
|
3 |
-
}#bookly-tbs html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}#bookly-tbs body{margin:0}#bookly-tbs article,#bookly-tbs aside,#bookly-tbs details,#bookly-tbs figcaption,#bookly-tbs figure,#bookly-tbs footer,#bookly-tbs header,#bookly-tbs hgroup,#bookly-tbs main,#bookly-tbs menu,#bookly-tbs nav,#bookly-tbs section,#bookly-tbs summary{display:block}#bookly-tbs audio,#bookly-tbs canvas,#bookly-tbs progress,#bookly-tbs video{display:inline-block;vertical-align:baseline}#bookly-tbs audio:not([controls]){display:none;height:0}#bookly-tbs [hidden],#bookly-tbs template{display:none}#bookly-tbs a{background-color:transparent}#bookly-tbs a:active,#bookly-tbs a:hover{outline:0}#bookly-tbs abbr[title]{border-bottom:1px dotted}#bookly-tbs b,#bookly-tbs strong{font-weight:700}#bookly-tbs dfn{font-style:italic}#bookly-tbs h1{margin:.67em 0;font-size:2em}#bookly-tbs mark{color:#000;background:#ff0}#bookly-tbs small{font-size:80%}#bookly-tbs sub,#bookly-tbs sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}#bookly-tbs sup{top:-.5em}#bookly-tbs sub{bottom:-.25em}#bookly-tbs img{border:0}#bookly-tbs svg:not(:root){overflow:hidden}#bookly-tbs figure{margin:1em 40px}#bookly-tbs hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs pre{overflow:auto}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:monospace,monospace;font-size:1em}#bookly-tbs button,#bookly-tbs input,#bookly-tbs optgroup,#bookly-tbs select,#bookly-tbs textarea{margin:0;font:inherit;color:inherit}#bookly-tbs button{overflow:visible}#bookly-tbs button,#bookly-tbs select{text-transform:none}#bookly-tbs button,#bookly-tbs html input[type=button],#bookly-tbs input[type=reset],#bookly-tbs input[type=submit]{-webkit-appearance:button;cursor:pointer}#bookly-tbs button[disabled],#bookly-tbs html input[disabled]{cursor:default}#bookly-tbs button::-moz-focus-inner,#bookly-tbs input::-moz-focus-inner{padding:0;border:0}#bookly-tbs input{line-height:normal}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}#bookly-tbs input[type=number]::-webkit-inner-spin-button,#bookly-tbs input[type=number]::-webkit-outer-spin-button{height:auto}#bookly-tbs input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}#bookly-tbs input[type=search]::-webkit-search-cancel-button,#bookly-tbs input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bookly-tbs fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}#bookly-tbs legend{padding:0;border:0}#bookly-tbs textarea{overflow:auto}#bookly-tbs optgroup{font-weight:700}#bookly-tbs table{border-spacing:0;border-collapse:collapse}#bookly-tbs td,#bookly-tbs th{padding:0}@media print{#bookly-tbs *,#bookly-tbs :after,#bookly-tbs :before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs a,#bookly-tbs a:visited{text-decoration:underline}#bookly-tbs a[href]:after{content:" (" attr(href) ")"}#bookly-tbs abbr[title]:after{content:" (" attr(title) ")"}#bookly-tbs a[href^="javascript:"]:after,#bookly-tbs a[href^="#"]:after{content:""}#bookly-tbs blockquote,#bookly-tbs pre{border:1px solid #999;page-break-inside:avoid}#bookly-tbs thead{display:table-header-group}#bookly-tbs img,#bookly-tbs tr{page-break-inside:avoid}#bookly-tbs img{max-width:100%!important}#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs p{orphans:3;widows:3}#bookly-tbs h2,#bookly-tbs h3{page-break-after:avoid}#bookly-tbs .navbar{display:none}#bookly-tbs .btn>.caret,#bookly-tbs .dropup>.btn>.caret{border-top-color:#000!important}#bookly-tbs .label{border:1px solid #000}#bookly-tbs .table{border-collapse:collapse!important}#bookly-tbs .table td,#bookly-tbs .table th{background-color:#fff!important}#bookly-tbs .table-bordered td,#bookly-tbs .table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}#bookly-tbs .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}#bookly-tbs .glyphicon-asterisk:before{content:"\002a"}#bookly-tbs .glyphicon-plus:before{content:"\002b"}#bookly-tbs .glyphicon-eur:before,#bookly-tbs .glyphicon-euro:before{content:"\20ac"}#bookly-tbs .glyphicon-minus:before{content:"\2212"}#bookly-tbs .glyphicon-cloud:before{content:"\2601"}#bookly-tbs .glyphicon-envelope:before{content:"\2709"}#bookly-tbs .glyphicon-pencil:before{content:"\270f"}#bookly-tbs .glyphicon-glass:before{content:"\e001"}#bookly-tbs .glyphicon-music:before{content:"\e002"}#bookly-tbs .glyphicon-search:before{content:"\e003"}#bookly-tbs .glyphicon-heart:before{content:"\e005"}#bookly-tbs .glyphicon-star:before{content:"\e006"}#bookly-tbs .glyphicon-star-empty:before{content:"\e007"}#bookly-tbs .glyphicon-user:before{content:"\e008"}#bookly-tbs .glyphicon-film:before{content:"\e009"}#bookly-tbs .glyphicon-th-large:before{content:"\e010"}#bookly-tbs .glyphicon-th:before{content:"\e011"}#bookly-tbs .glyphicon-th-list:before{content:"\e012"}#bookly-tbs .glyphicon-ok:before{content:"\e013"}#bookly-tbs .glyphicon-remove:before{content:"\e014"}#bookly-tbs .glyphicon-zoom-in:before{content:"\e015"}#bookly-tbs .glyphicon-zoom-out:before{content:"\e016"}#bookly-tbs .glyphicon-off:before{content:"\e017"}#bookly-tbs .glyphicon-signal:before{content:"\e018"}#bookly-tbs .glyphicon-cog:before{content:"\e019"}#bookly-tbs .glyphicon-trash:before{content:"\e020"}#bookly-tbs .glyphicon-home:before{content:"\e021"}#bookly-tbs .glyphicon-file:before{content:"\e022"}#bookly-tbs .glyphicon-time:before{content:"\e023"}#bookly-tbs .glyphicon-road:before{content:"\e024"}#bookly-tbs .glyphicon-download-alt:before{content:"\e025"}#bookly-tbs .glyphicon-download:before{content:"\e026"}#bookly-tbs .glyphicon-upload:before{content:"\e027"}#bookly-tbs .glyphicon-inbox:before{content:"\e028"}#bookly-tbs .glyphicon-play-circle:before{content:"\e029"}#bookly-tbs .glyphicon-repeat:before{content:"\e030"}#bookly-tbs .glyphicon-refresh:before{content:"\e031"}#bookly-tbs .glyphicon-list-alt:before{content:"\e032"}#bookly-tbs .glyphicon-lock:before{content:"\e033"}#bookly-tbs .glyphicon-flag:before{content:"\e034"}#bookly-tbs .glyphicon-headphones:before{content:"\e035"}#bookly-tbs .glyphicon-volume-off:before{content:"\e036"}#bookly-tbs .glyphicon-volume-down:before{content:"\e037"}#bookly-tbs .glyphicon-volume-up:before{content:"\e038"}#bookly-tbs .glyphicon-qrcode:before{content:"\e039"}#bookly-tbs .glyphicon-barcode:before{content:"\e040"}#bookly-tbs .glyphicon-tag:before{content:"\e041"}#bookly-tbs .glyphicon-tags:before{content:"\e042"}#bookly-tbs .glyphicon-book:before{content:"\e043"}#bookly-tbs .glyphicon-bookmark:before{content:"\e044"}#bookly-tbs .glyphicon-print:before{content:"\e045"}#bookly-tbs .glyphicon-camera:before{content:"\e046"}#bookly-tbs .glyphicon-font:before{content:"\e047"}#bookly-tbs .glyphicon-bold:before{content:"\e048"}#bookly-tbs .glyphicon-italic:before{content:"\e049"}#bookly-tbs .glyphicon-text-height:before{content:"\e050"}#bookly-tbs .glyphicon-text-width:before{content:"\e051"}#bookly-tbs .glyphicon-align-left:before{content:"\e052"}#bookly-tbs .glyphicon-align-center:before{content:"\e053"}#bookly-tbs .glyphicon-align-right:before{content:"\e054"}#bookly-tbs .glyphicon-align-justify:before{content:"\e055"}#bookly-tbs .glyphicon-list:before{content:"\e056"}#bookly-tbs .glyphicon-indent-left:before{content:"\e057"}#bookly-tbs .glyphicon-indent-right:before{content:"\e058"}#bookly-tbs .glyphicon-facetime-video:before{content:"\e059"}#bookly-tbs .glyphicon-picture:before{content:"\e060"}#bookly-tbs .glyphicon-map-marker:before{content:"\e062"}#bookly-tbs .glyphicon-adjust:before{content:"\e063"}#bookly-tbs .glyphicon-tint:before{content:"\e064"}#bookly-tbs .glyphicon-edit:before{content:"\e065"}#bookly-tbs .glyphicon-share:before{content:"\e066"}#bookly-tbs .glyphicon-check:before{content:"\e067"}#bookly-tbs .glyphicon-move:before{content:"\e068"}#bookly-tbs .glyphicon-step-backward:before{content:"\e069"}#bookly-tbs .glyphicon-fast-backward:before{content:"\e070"}#bookly-tbs .glyphicon-backward:before{content:"\e071"}#bookly-tbs .glyphicon-play:before{content:"\e072"}#bookly-tbs .glyphicon-pause:before{content:"\e073"}#bookly-tbs .glyphicon-stop:before{content:"\e074"}#bookly-tbs .glyphicon-forward:before{content:"\e075"}#bookly-tbs .glyphicon-fast-forward:before{content:"\e076"}#bookly-tbs .glyphicon-step-forward:before{content:"\e077"}#bookly-tbs .glyphicon-eject:before{content:"\e078"}#bookly-tbs .glyphicon-chevron-left:before{content:"\e079"}#bookly-tbs .glyphicon-chevron-right:before{content:"\e080"}#bookly-tbs .glyphicon-plus-sign:before{content:"\e081"}#bookly-tbs .glyphicon-minus-sign:before{content:"\e082"}#bookly-tbs .glyphicon-remove-sign:before{content:"\e083"}#bookly-tbs .glyphicon-ok-sign:before{content:"\e084"}#bookly-tbs .glyphicon-question-sign:before{content:"\e085"}#bookly-tbs .glyphicon-info-sign:before{content:"\e086"}#bookly-tbs .glyphicon-screenshot:before{content:"\e087"}#bookly-tbs .glyphicon-remove-circle:before{content:"\e088"}#bookly-tbs .glyphicon-ok-circle:before{content:"\e089"}#bookly-tbs .glyphicon-ban-circle:before{content:"\e090"}#bookly-tbs .glyphicon-arrow-left:before{content:"\e091"}#bookly-tbs .glyphicon-arrow-right:before{content:"\e092"}#bookly-tbs .glyphicon-arrow-up:before{content:"\e093"}#bookly-tbs .glyphicon-arrow-down:before{content:"\e094"}#bookly-tbs .glyphicon-share-alt:before{content:"\e095"}#bookly-tbs .glyphicon-resize-full:before{content:"\e096"}#bookly-tbs .glyphicon-resize-small:before{content:"\e097"}#bookly-tbs .glyphicon-exclamation-sign:before{content:"\e101"}#bookly-tbs .glyphicon-gift:before{content:"\e102"}#bookly-tbs .glyphicon-leaf:before{content:"\e103"}#bookly-tbs .glyphicon-fire:before{content:"\e104"}#bookly-tbs .glyphicon-eye-open:before{content:"\e105"}#bookly-tbs .glyphicon-eye-close:before{content:"\e106"}#bookly-tbs .glyphicon-warning-sign:before{content:"\e107"}#bookly-tbs .glyphicon-plane:before{content:"\e108"}#bookly-tbs .glyphicon-calendar:before{content:"\e109"}#bookly-tbs .glyphicon-random:before{content:"\e110"}#bookly-tbs .glyphicon-comment:before{content:"\e111"}#bookly-tbs .glyphicon-magnet:before{content:"\e112"}#bookly-tbs .glyphicon-chevron-up:before{content:"\e113"}#bookly-tbs .glyphicon-chevron-down:before{content:"\e114"}#bookly-tbs .glyphicon-retweet:before{content:"\e115"}#bookly-tbs .glyphicon-shopping-cart:before{content:"\e116"}#bookly-tbs .glyphicon-folder-close:before{content:"\e117"}#bookly-tbs .glyphicon-folder-open:before{content:"\e118"}#bookly-tbs .glyphicon-resize-vertical:before{content:"\e119"}#bookly-tbs .glyphicon-resize-horizontal:before{content:"\e120"}#bookly-tbs .glyphicon-hdd:before{content:"\e121"}#bookly-tbs .glyphicon-bullhorn:before{content:"\e122"}#bookly-tbs .glyphicon-bell:before{content:"\e123"}#bookly-tbs .glyphicon-certificate:before{content:"\e124"}#bookly-tbs .glyphicon-thumbs-up:before{content:"\e125"}#bookly-tbs .glyphicon-thumbs-down:before{content:"\e126"}#bookly-tbs .glyphicon-hand-right:before{content:"\e127"}#bookly-tbs .glyphicon-hand-left:before{content:"\e128"}#bookly-tbs .glyphicon-hand-up:before{content:"\e129"}#bookly-tbs .glyphicon-hand-down:before{content:"\e130"}#bookly-tbs .glyphicon-circle-arrow-right:before{content:"\e131"}#bookly-tbs .glyphicon-circle-arrow-left:before{content:"\e132"}#bookly-tbs .glyphicon-circle-arrow-up:before{content:"\e133"}#bookly-tbs .glyphicon-circle-arrow-down:before{content:"\e134"}#bookly-tbs .glyphicon-globe:before{content:"\e135"}#bookly-tbs .glyphicon-wrench:before{content:"\e136"}#bookly-tbs .glyphicon-tasks:before{content:"\e137"}#bookly-tbs .glyphicon-filter:before{content:"\e138"}#bookly-tbs .glyphicon-briefcase:before{content:"\e139"}#bookly-tbs .glyphicon-fullscreen:before{content:"\e140"}#bookly-tbs .glyphicon-dashboard:before{content:"\e141"}#bookly-tbs .glyphicon-paperclip:before{content:"\e142"}#bookly-tbs .glyphicon-heart-empty:before{content:"\e143"}#bookly-tbs .glyphicon-link:before{content:"\e144"}#bookly-tbs .glyphicon-phone:before{content:"\e145"}#bookly-tbs .glyphicon-pushpin:before{content:"\e146"}#bookly-tbs .glyphicon-usd:before{content:"\e148"}#bookly-tbs .glyphicon-gbp:before{content:"\e149"}#bookly-tbs .glyphicon-sort:before{content:"\e150"}#bookly-tbs .glyphicon-sort-by-alphabet:before{content:"\e151"}#bookly-tbs .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}#bookly-tbs .glyphicon-sort-by-order:before{content:"\e153"}#bookly-tbs .glyphicon-sort-by-order-alt:before{content:"\e154"}#bookly-tbs .glyphicon-sort-by-attributes:before{content:"\e155"}#bookly-tbs .glyphicon-sort-by-attributes-alt:before{content:"\e156"}#bookly-tbs .glyphicon-unchecked:before{content:"\e157"}#bookly-tbs .glyphicon-expand:before{content:"\e158"}#bookly-tbs .glyphicon-collapse-down:before{content:"\e159"}#bookly-tbs .glyphicon-collapse-up:before{content:"\e160"}#bookly-tbs .glyphicon-log-in:before{content:"\e161"}#bookly-tbs .glyphicon-flash:before{content:"\e162"}#bookly-tbs .glyphicon-log-out:before{content:"\e163"}#bookly-tbs .glyphicon-new-window:before{content:"\e164"}#bookly-tbs .glyphicon-record:before{content:"\e165"}#bookly-tbs .glyphicon-save:before{content:"\e166"}#bookly-tbs .glyphicon-open:before{content:"\e167"}#bookly-tbs .glyphicon-saved:before{content:"\e168"}#bookly-tbs .glyphicon-import:before{content:"\e169"}#bookly-tbs .glyphicon-export:before{content:"\e170"}#bookly-tbs .glyphicon-send:before{content:"\e171"}#bookly-tbs .glyphicon-floppy-disk:before{content:"\e172"}#bookly-tbs .glyphicon-floppy-saved:before{content:"\e173"}#bookly-tbs .glyphicon-floppy-remove:before{content:"\e174"}#bookly-tbs .glyphicon-floppy-save:before{content:"\e175"}#bookly-tbs .glyphicon-floppy-open:before{content:"\e176"}#bookly-tbs .glyphicon-credit-card:before{content:"\e177"}#bookly-tbs .glyphicon-transfer:before{content:"\e178"}#bookly-tbs .glyphicon-cutlery:before{content:"\e179"}#bookly-tbs .glyphicon-header:before{content:"\e180"}#bookly-tbs .glyphicon-compressed:before{content:"\e181"}#bookly-tbs .glyphicon-earphone:before{content:"\e182"}#bookly-tbs .glyphicon-phone-alt:before{content:"\e183"}#bookly-tbs .glyphicon-tower:before{content:"\e184"}#bookly-tbs .glyphicon-stats:before{content:"\e185"}#bookly-tbs .glyphicon-sd-video:before{content:"\e186"}#bookly-tbs .glyphicon-hd-video:before{content:"\e187"}#bookly-tbs .glyphicon-subtitles:before{content:"\e188"}#bookly-tbs .glyphicon-sound-stereo:before{content:"\e189"}#bookly-tbs .glyphicon-sound-dolby:before{content:"\e190"}#bookly-tbs .glyphicon-sound-5-1:before{content:"\e191"}#bookly-tbs .glyphicon-sound-6-1:before{content:"\e192"}#bookly-tbs .glyphicon-sound-7-1:before{content:"\e193"}#bookly-tbs .glyphicon-copyright-mark:before{content:"\e194"}#bookly-tbs .glyphicon-registration-mark:before{content:"\e195"}#bookly-tbs .glyphicon-cloud-download:before{content:"\e197"}#bookly-tbs .glyphicon-cloud-upload:before{content:"\e198"}#bookly-tbs .glyphicon-tree-conifer:before{content:"\e199"}#bookly-tbs .glyphicon-tree-deciduous:before{content:"\e200"}#bookly-tbs .glyphicon-cd:before{content:"\e201"}#bookly-tbs .glyphicon-save-file:before{content:"\e202"}#bookly-tbs .glyphicon-open-file:before{content:"\e203"}#bookly-tbs .glyphicon-level-up:before{content:"\e204"}#bookly-tbs .glyphicon-copy:before{content:"\e205"}#bookly-tbs .glyphicon-paste:before{content:"\e206"}#bookly-tbs .glyphicon-alert:before{content:"\e209"}#bookly-tbs .glyphicon-equalizer:before{content:"\e210"}#bookly-tbs .glyphicon-king:before{content:"\e211"}#bookly-tbs .glyphicon-queen:before{content:"\e212"}#bookly-tbs .glyphicon-pawn:before{content:"\e213"}#bookly-tbs .glyphicon-bishop:before{content:"\e214"}#bookly-tbs .glyphicon-knight:before{content:"\e215"}#bookly-tbs .glyphicon-baby-formula:before{content:"\e216"}#bookly-tbs .glyphicon-tent:before{content:"\26fa"}#bookly-tbs .glyphicon-blackboard:before{content:"\e218"}#bookly-tbs .glyphicon-bed:before{content:"\e219"}#bookly-tbs .glyphicon-apple:before{content:"\f8ff"}#bookly-tbs .glyphicon-erase:before{content:"\e221"}#bookly-tbs .glyphicon-hourglass:before{content:"\231b"}#bookly-tbs .glyphicon-lamp:before{content:"\e223"}#bookly-tbs .glyphicon-duplicate:before{content:"\e224"}#bookly-tbs .glyphicon-piggy-bank:before{content:"\e225"}#bookly-tbs .glyphicon-scissors:before{content:"\e226"}#bookly-tbs .glyphicon-bitcoin:before{content:"\e227"}#bookly-tbs .glyphicon-btc:before{content:"\e227"}#bookly-tbs .glyphicon-xbt:before{content:"\e227"}#bookly-tbs .glyphicon-yen:before{content:"\00a5"}#bookly-tbs .glyphicon-jpy:before{content:"\00a5"}#bookly-tbs .glyphicon-ruble:before{content:"\20bd"}#bookly-tbs .glyphicon-rub:before{content:"\20bd"}#bookly-tbs .glyphicon-scale:before{content:"\e230"}#bookly-tbs .glyphicon-ice-lolly:before{content:"\e231"}#bookly-tbs .glyphicon-ice-lolly-tasted:before{content:"\e232"}#bookly-tbs .glyphicon-education:before{content:"\e233"}#bookly-tbs .glyphicon-option-horizontal:before{content:"\e234"}#bookly-tbs .glyphicon-option-vertical:before{content:"\e235"}#bookly-tbs .glyphicon-menu-hamburger:before{content:"\e236"}#bookly-tbs .glyphicon-modal-window:before{content:"\e237"}#bookly-tbs .glyphicon-oil:before{content:"\e238"}#bookly-tbs .glyphicon-grain:before{content:"\e239"}#bookly-tbs .glyphicon-sunglasses:before{content:"\e240"}#bookly-tbs .glyphicon-text-size:before{content:"\e241"}#bookly-tbs .glyphicon-text-color:before{content:"\e242"}#bookly-tbs .glyphicon-text-background:before{content:"\e243"}#bookly-tbs .glyphicon-object-align-top:before{content:"\e244"}#bookly-tbs .glyphicon-object-align-bottom:before{content:"\e245"}#bookly-tbs .glyphicon-object-align-horizontal:before{content:"\e246"}#bookly-tbs .glyphicon-object-align-left:before{content:"\e247"}#bookly-tbs .glyphicon-object-align-vertical:before{content:"\e248"}#bookly-tbs .glyphicon-object-align-right:before{content:"\e249"}#bookly-tbs .glyphicon-triangle-right:before{content:"\e250"}#bookly-tbs .glyphicon-triangle-left:before{content:"\e251"}#bookly-tbs .glyphicon-triangle-bottom:before{content:"\e252"}#bookly-tbs .glyphicon-triangle-top:before{content:"\e253"}#bookly-tbs .glyphicon-console:before{content:"\e254"}#bookly-tbs .glyphicon-superscript:before{content:"\e255"}#bookly-tbs .glyphicon-subscript:before{content:"\e256"}#bookly-tbs .glyphicon-menu-left:before{content:"\e257"}#bookly-tbs .glyphicon-menu-right:before{content:"\e258"}#bookly-tbs .glyphicon-menu-down:before{content:"\e259"}#bookly-tbs .glyphicon-menu-up:before{content:"\e260"}#bookly-tbs *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs :after,#bookly-tbs :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs .bookly-tbs-body{font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;line-height:1.4;color:#3e424a;background-color:transparent;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bookly-tbs button,#bookly-tbs input,#bookly-tbs select,#bookly-tbs textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bookly-tbs a{color:#08c;text-decoration:none}#bookly-tbs a:focus,#bookly-tbs a:hover{color:#005580;text-decoration:none}#bookly-tbs a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs figure{margin:0}#bookly-tbs img{vertical-align:middle}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img,#bookly-tbs .img-responsive,#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{display:block;max-width:100%;height:auto}#bookly-tbs .img-rounded{border-radius:6px}#bookly-tbs .img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#bookly-tbs .img-circle{border-radius:50%}#bookly-tbs hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #d9dee4}#bookly-tbs .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bookly-tbs .sr-only-focusable:active,#bookly-tbs .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bookly-tbs [role=button]{cursor:pointer}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-weight:400;line-height:1;color:#d9dee4}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3{margin-top:21px;margin-bottom:10.5px}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small{font-size:65%}#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{margin-top:10.5px;margin-bottom:10.5px}#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-size:75%}#bookly-tbs .h1,#bookly-tbs h1{font-size:27px}#bookly-tbs .h2,#bookly-tbs h2{font-size:24px}#bookly-tbs .h3,#bookly-tbs h3{font-size:21px}#bookly-tbs .h4,#bookly-tbs h4{font-size:18px}#bookly-tbs .h5,#bookly-tbs h5{font-size:15px}#bookly-tbs .h6,#bookly-tbs h6{font-size:13px}#bookly-tbs p{margin:0 0 10.5px}#bookly-tbs .lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){#bookly-tbs .lead{font-size:22.5px}}#bookly-tbs .small,#bookly-tbs small{font-size:86%}#bookly-tbs .mark,#bookly-tbs mark{padding:.2em;background-color:#fcf8e3}#bookly-tbs .text-left{text-align:left}#bookly-tbs .text-right{text-align:right}#bookly-tbs .text-center{text-align:center}#bookly-tbs .text-justify{text-align:justify}#bookly-tbs .text-nowrap{white-space:nowrap}#bookly-tbs .text-lowercase{text-transform:lowercase}#bookly-tbs .text-uppercase{text-transform:uppercase}#bookly-tbs .text-capitalize{text-transform:capitalize}#bookly-tbs .text-muted{color:#d9dee4}#bookly-tbs .text-primary{color:#08c}#bookly-tbs a.text-primary:focus,#bookly-tbs a.text-primary:hover{color:#069}#bookly-tbs .text-success{color:#3c763d}#bookly-tbs a.text-success:focus,#bookly-tbs a.text-success:hover{color:#2b542c}#bookly-tbs .text-info{color:#31708f}#bookly-tbs a.text-info:focus,#bookly-tbs a.text-info:hover{color:#245269}#bookly-tbs .text-warning{color:#8a6d3b}#bookly-tbs a.text-warning:focus,#bookly-tbs a.text-warning:hover{color:#66512c}#bookly-tbs .text-danger{color:#a94442}#bookly-tbs a.text-danger:focus,#bookly-tbs a.text-danger:hover{color:#843534}#bookly-tbs .bg-primary{color:#fff;background-color:#08c}#bookly-tbs a.bg-primary:focus,#bookly-tbs a.bg-primary:hover{background-color:#069}#bookly-tbs .bg-success{background-color:#dff0d8}#bookly-tbs a.bg-success:focus,#bookly-tbs a.bg-success:hover{background-color:#c1e2b3}#bookly-tbs .bg-info{background-color:#d9edf7}#bookly-tbs a.bg-info:focus,#bookly-tbs a.bg-info:hover{background-color:#afd9ee}#bookly-tbs .bg-warning{background-color:#fcf8e3}#bookly-tbs a.bg-warning:focus,#bookly-tbs a.bg-warning:hover{background-color:#f7ecb5}#bookly-tbs .bg-danger{background-color:#f2dede}#bookly-tbs a.bg-danger:focus,#bookly-tbs a.bg-danger:hover{background-color:#e4b9b9}#bookly-tbs .page-header{padding-bottom:9.5px;margin:42px 0 10.5px;border-bottom:1px solid transparent}#bookly-tbs ol,#bookly-tbs ul{margin-top:0;margin-bottom:10.5px}#bookly-tbs ol ol,#bookly-tbs ol ul,#bookly-tbs ul ol,#bookly-tbs ul ul{margin-bottom:0}#bookly-tbs .list-unstyled{padding-left:0;list-style:none}#bookly-tbs .list-inline{padding-left:0;margin-left:-5px;list-style:none}#bookly-tbs .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bookly-tbs dl{margin-top:0;margin-bottom:21px}#bookly-tbs dd,#bookly-tbs dt{line-height:1.4}#bookly-tbs dt{font-weight:700}#bookly-tbs dd{margin-left:0}@media (min-width:768px){#bookly-tbs .dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .dl-horizontal dd{margin-left:180px}}#bookly-tbs abbr[data-original-title],#bookly-tbs abbr[title]{cursor:help;border-bottom:1px dotted #d9dee4}#bookly-tbs .initialism{font-size:90%;text-transform:uppercase}#bookly-tbs blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e8ebf0}#bookly-tbs blockquote ol:last-child,#bookly-tbs blockquote p:last-child,#bookly-tbs blockquote ul:last-child{margin-bottom:0}#bookly-tbs blockquote .small,#bookly-tbs blockquote footer,#bookly-tbs blockquote small{display:block;font-size:80%;line-height:1.4;color:#d9dee4}#bookly-tbs blockquote .small:before,#bookly-tbs blockquote footer:before,#bookly-tbs blockquote small:before{content:'\2014 \00A0'}#bookly-tbs .blockquote-reverse,#bookly-tbs blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #e8ebf0;border-left:0}#bookly-tbs .blockquote-reverse .small:before,#bookly-tbs .blockquote-reverse footer:before,#bookly-tbs .blockquote-reverse small:before,#bookly-tbs blockquote.pull-right .small:before,#bookly-tbs blockquote.pull-right footer:before,#bookly-tbs blockquote.pull-right small:before{content:''}#bookly-tbs .blockquote-reverse .small:after,#bookly-tbs .blockquote-reverse footer:after,#bookly-tbs .blockquote-reverse small:after,#bookly-tbs blockquote.pull-right .small:after,#bookly-tbs blockquote.pull-right footer:after,#bookly-tbs blockquote.pull-right small:after{content:'\00A0 \2014'}#bookly-tbs address{margin-bottom:21px;font-style:normal;line-height:1.4}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:menlo,monaco,consolas,"courier new",monospace}#bookly-tbs code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bookly-tbs kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bookly-tbs kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.4;color:#5b6470;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bookly-tbs pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bookly-tbs .pre-scrollable{max-height:340px;overflow-y:scroll}#bookly-tbs .container{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){#bookly-tbs .container{width:740px}}@media (min-width:992px){#bookly-tbs .container{width:960px}}@media (min-width:1200px){#bookly-tbs .container{width:1160px}}#bookly-tbs .container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}#bookly-tbs .row{margin-right:-10px;margin-left:-10px}#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9,#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9,#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9,#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{float:left}#bookly-tbs .col-xs-12{width:100%}#bookly-tbs .col-xs-11{width:91.66666667%}#bookly-tbs .col-xs-10{width:83.33333333%}#bookly-tbs .col-xs-9{width:75%}#bookly-tbs .col-xs-8{width:66.66666667%}#bookly-tbs .col-xs-7{width:58.33333333%}#bookly-tbs .col-xs-6{width:50%}#bookly-tbs .col-xs-5{width:41.66666667%}#bookly-tbs .col-xs-4{width:33.33333333%}#bookly-tbs .col-xs-3{width:25%}#bookly-tbs .col-xs-2{width:16.66666667%}#bookly-tbs .col-xs-1{width:8.33333333%}#bookly-tbs .col-xs-pull-12{right:100%}#bookly-tbs .col-xs-pull-11{right:91.66666667%}#bookly-tbs .col-xs-pull-10{right:83.33333333%}#bookly-tbs .col-xs-pull-9{right:75%}#bookly-tbs .col-xs-pull-8{right:66.66666667%}#bookly-tbs .col-xs-pull-7{right:58.33333333%}#bookly-tbs .col-xs-pull-6{right:50%}#bookly-tbs .col-xs-pull-5{right:41.66666667%}#bookly-tbs .col-xs-pull-4{right:33.33333333%}#bookly-tbs .col-xs-pull-3{right:25%}#bookly-tbs .col-xs-pull-2{right:16.66666667%}#bookly-tbs .col-xs-pull-1{right:8.33333333%}#bookly-tbs .col-xs-pull-0{right:auto}#bookly-tbs .col-xs-push-12{left:100%}#bookly-tbs .col-xs-push-11{left:91.66666667%}#bookly-tbs .col-xs-push-10{left:83.33333333%}#bookly-tbs .col-xs-push-9{left:75%}#bookly-tbs .col-xs-push-8{left:66.66666667%}#bookly-tbs .col-xs-push-7{left:58.33333333%}#bookly-tbs .col-xs-push-6{left:50%}#bookly-tbs .col-xs-push-5{left:41.66666667%}#bookly-tbs .col-xs-push-4{left:33.33333333%}#bookly-tbs .col-xs-push-3{left:25%}#bookly-tbs .col-xs-push-2{left:16.66666667%}#bookly-tbs .col-xs-push-1{left:8.33333333%}#bookly-tbs .col-xs-push-0{left:auto}#bookly-tbs .col-xs-offset-12{margin-left:100%}#bookly-tbs .col-xs-offset-11{margin-left:91.66666667%}#bookly-tbs .col-xs-offset-10{margin-left:83.33333333%}#bookly-tbs .col-xs-offset-9{margin-left:75%}#bookly-tbs .col-xs-offset-8{margin-left:66.66666667%}#bookly-tbs .col-xs-offset-7{margin-left:58.33333333%}#bookly-tbs .col-xs-offset-6{margin-left:50%}#bookly-tbs .col-xs-offset-5{margin-left:41.66666667%}#bookly-tbs .col-xs-offset-4{margin-left:33.33333333%}#bookly-tbs .col-xs-offset-3{margin-left:25%}#bookly-tbs .col-xs-offset-2{margin-left:16.66666667%}#bookly-tbs .col-xs-offset-1{margin-left:8.33333333%}#bookly-tbs .col-xs-offset-0{margin-left:0}@media (min-width:768px){#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9{float:left}#bookly-tbs .col-sm-12{width:100%}#bookly-tbs .col-sm-11{width:91.66666667%}#bookly-tbs .col-sm-10{width:83.33333333%}#bookly-tbs .col-sm-9{width:75%}#bookly-tbs .col-sm-8{width:66.66666667%}#bookly-tbs .col-sm-7{width:58.33333333%}#bookly-tbs .col-sm-6{width:50%}#bookly-tbs .col-sm-5{width:41.66666667%}#bookly-tbs .col-sm-4{width:33.33333333%}#bookly-tbs .col-sm-3{width:25%}#bookly-tbs .col-sm-2{width:16.66666667%}#bookly-tbs .col-sm-1{width:8.33333333%}#bookly-tbs .col-sm-pull-12{right:100%}#bookly-tbs .col-sm-pull-11{right:91.66666667%}#bookly-tbs .col-sm-pull-10{right:83.33333333%}#bookly-tbs .col-sm-pull-9{right:75%}#bookly-tbs .col-sm-pull-8{right:66.66666667%}#bookly-tbs .col-sm-pull-7{right:58.33333333%}#bookly-tbs .col-sm-pull-6{right:50%}#bookly-tbs .col-sm-pull-5{right:41.66666667%}#bookly-tbs .col-sm-pull-4{right:33.33333333%}#bookly-tbs .col-sm-pull-3{right:25%}#bookly-tbs .col-sm-pull-2{right:16.66666667%}#bookly-tbs .col-sm-pull-1{right:8.33333333%}#bookly-tbs .col-sm-pull-0{right:auto}#bookly-tbs .col-sm-push-12{left:100%}#bookly-tbs .col-sm-push-11{left:91.66666667%}#bookly-tbs .col-sm-push-10{left:83.33333333%}#bookly-tbs .col-sm-push-9{left:75%}#bookly-tbs .col-sm-push-8{left:66.66666667%}#bookly-tbs .col-sm-push-7{left:58.33333333%}#bookly-tbs .col-sm-push-6{left:50%}#bookly-tbs .col-sm-push-5{left:41.66666667%}#bookly-tbs .col-sm-push-4{left:33.33333333%}#bookly-tbs .col-sm-push-3{left:25%}#bookly-tbs .col-sm-push-2{left:16.66666667%}#bookly-tbs .col-sm-push-1{left:8.33333333%}#bookly-tbs .col-sm-push-0{left:auto}#bookly-tbs .col-sm-offset-12{margin-left:100%}#bookly-tbs .col-sm-offset-11{margin-left:91.66666667%}#bookly-tbs .col-sm-offset-10{margin-left:83.33333333%}#bookly-tbs .col-sm-offset-9{margin-left:75%}#bookly-tbs .col-sm-offset-8{margin-left:66.66666667%}#bookly-tbs .col-sm-offset-7{margin-left:58.33333333%}#bookly-tbs .col-sm-offset-6{margin-left:50%}#bookly-tbs .col-sm-offset-5{margin-left:41.66666667%}#bookly-tbs .col-sm-offset-4{margin-left:33.33333333%}#bookly-tbs .col-sm-offset-3{margin-left:25%}#bookly-tbs .col-sm-offset-2{margin-left:16.66666667%}#bookly-tbs .col-sm-offset-1{margin-left:8.33333333%}#bookly-tbs .col-sm-offset-0{margin-left:0}}@media (min-width:992px){#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9{float:left}#bookly-tbs .col-md-12{width:100%}#bookly-tbs .col-md-11{width:91.66666667%}#bookly-tbs .col-md-10{width:83.33333333%}#bookly-tbs .col-md-9{width:75%}#bookly-tbs .col-md-8{width:66.66666667%}#bookly-tbs .col-md-7{width:58.33333333%}#bookly-tbs .col-md-6{width:50%}#bookly-tbs .col-md-5{width:41.66666667%}#bookly-tbs .col-md-4{width:33.33333333%}#bookly-tbs .col-md-3{width:25%}#bookly-tbs .col-md-2{width:16.66666667%}#bookly-tbs .col-md-1{width:8.33333333%}#bookly-tbs .col-md-pull-12{right:100%}#bookly-tbs .col-md-pull-11{right:91.66666667%}#bookly-tbs .col-md-pull-10{right:83.33333333%}#bookly-tbs .col-md-pull-9{right:75%}#bookly-tbs .col-md-pull-8{right:66.66666667%}#bookly-tbs .col-md-pull-7{right:58.33333333%}#bookly-tbs .col-md-pull-6{right:50%}#bookly-tbs .col-md-pull-5{right:41.66666667%}#bookly-tbs .col-md-pull-4{right:33.33333333%}#bookly-tbs .col-md-pull-3{right:25%}#bookly-tbs .col-md-pull-2{right:16.66666667%}#bookly-tbs .col-md-pull-1{right:8.33333333%}#bookly-tbs .col-md-pull-0{right:auto}#bookly-tbs .col-md-push-12{left:100%}#bookly-tbs .col-md-push-11{left:91.66666667%}#bookly-tbs .col-md-push-10{left:83.33333333%}#bookly-tbs .col-md-push-9{left:75%}#bookly-tbs .col-md-push-8{left:66.66666667%}#bookly-tbs .col-md-push-7{left:58.33333333%}#bookly-tbs .col-md-push-6{left:50%}#bookly-tbs .col-md-push-5{left:41.66666667%}#bookly-tbs .col-md-push-4{left:33.33333333%}#bookly-tbs .col-md-push-3{left:25%}#bookly-tbs .col-md-push-2{left:16.66666667%}#bookly-tbs .col-md-push-1{left:8.33333333%}#bookly-tbs .col-md-push-0{left:auto}#bookly-tbs .col-md-offset-12{margin-left:100%}#bookly-tbs .col-md-offset-11{margin-left:91.66666667%}#bookly-tbs .col-md-offset-10{margin-left:83.33333333%}#bookly-tbs .col-md-offset-9{margin-left:75%}#bookly-tbs .col-md-offset-8{margin-left:66.66666667%}#bookly-tbs .col-md-offset-7{margin-left:58.33333333%}#bookly-tbs .col-md-offset-6{margin-left:50%}#bookly-tbs .col-md-offset-5{margin-left:41.66666667%}#bookly-tbs .col-md-offset-4{margin-left:33.33333333%}#bookly-tbs .col-md-offset-3{margin-left:25%}#bookly-tbs .col-md-offset-2{margin-left:16.66666667%}#bookly-tbs .col-md-offset-1{margin-left:8.33333333%}#bookly-tbs .col-md-offset-0{margin-left:0}}@media (min-width:1200px){#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9{float:left}#bookly-tbs .col-lg-12{width:100%}#bookly-tbs .col-lg-11{width:91.66666667%}#bookly-tbs .col-lg-10{width:83.33333333%}#bookly-tbs .col-lg-9{width:75%}#bookly-tbs .col-lg-8{width:66.66666667%}#bookly-tbs .col-lg-7{width:58.33333333%}#bookly-tbs .col-lg-6{width:50%}#bookly-tbs .col-lg-5{width:41.66666667%}#bookly-tbs .col-lg-4{width:33.33333333%}#bookly-tbs .col-lg-3{width:25%}#bookly-tbs .col-lg-2{width:16.66666667%}#bookly-tbs .col-lg-1{width:8.33333333%}#bookly-tbs .col-lg-pull-12{right:100%}#bookly-tbs .col-lg-pull-11{right:91.66666667%}#bookly-tbs .col-lg-pull-10{right:83.33333333%}#bookly-tbs .col-lg-pull-9{right:75%}#bookly-tbs .col-lg-pull-8{right:66.66666667%}#bookly-tbs .col-lg-pull-7{right:58.33333333%}#bookly-tbs .col-lg-pull-6{right:50%}#bookly-tbs .col-lg-pull-5{right:41.66666667%}#bookly-tbs .col-lg-pull-4{right:33.33333333%}#bookly-tbs .col-lg-pull-3{right:25%}#bookly-tbs .col-lg-pull-2{right:16.66666667%}#bookly-tbs .col-lg-pull-1{right:8.33333333%}#bookly-tbs .col-lg-pull-0{right:auto}#bookly-tbs .col-lg-push-12{left:100%}#bookly-tbs .col-lg-push-11{left:91.66666667%}#bookly-tbs .col-lg-push-10{left:83.33333333%}#bookly-tbs .col-lg-push-9{left:75%}#bookly-tbs .col-lg-push-8{left:66.66666667%}#bookly-tbs .col-lg-push-7{left:58.33333333%}#bookly-tbs .col-lg-push-6{left:50%}#bookly-tbs .col-lg-push-5{left:41.66666667%}#bookly-tbs .col-lg-push-4{left:33.33333333%}#bookly-tbs .col-lg-push-3{left:25%}#bookly-tbs .col-lg-push-2{left:16.66666667%}#bookly-tbs .col-lg-push-1{left:8.33333333%}#bookly-tbs .col-lg-push-0{left:auto}#bookly-tbs .col-lg-offset-12{margin-left:100%}#bookly-tbs .col-lg-offset-11{margin-left:91.66666667%}#bookly-tbs .col-lg-offset-10{margin-left:83.33333333%}#bookly-tbs .col-lg-offset-9{margin-left:75%}#bookly-tbs .col-lg-offset-8{margin-left:66.66666667%}#bookly-tbs .col-lg-offset-7{margin-left:58.33333333%}#bookly-tbs .col-lg-offset-6{margin-left:50%}#bookly-tbs .col-lg-offset-5{margin-left:41.66666667%}#bookly-tbs .col-lg-offset-4{margin-left:33.33333333%}#bookly-tbs .col-lg-offset-3{margin-left:25%}#bookly-tbs .col-lg-offset-2{margin-left:16.66666667%}#bookly-tbs .col-lg-offset-1{margin-left:8.33333333%}#bookly-tbs .col-lg-offset-0{margin-left:0}}#bookly-tbs table{background-color:transparent}#bookly-tbs caption{padding-top:8px;padding-bottom:8px;color:#d9dee4;text-align:left}#bookly-tbs th{text-align:left}#bookly-tbs .table{width:100%;max-width:100%;margin-bottom:21px}#bookly-tbs .table>tbody>tr>td,#bookly-tbs .table>tbody>tr>th,#bookly-tbs .table>tfoot>tr>td,#bookly-tbs .table>tfoot>tr>th,#bookly-tbs .table>thead>tr>td,#bookly-tbs .table>thead>tr>th{padding:8px;line-height:1.4;vertical-align:top;border-top:1px solid #d9dee4}#bookly-tbs .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #d9dee4}#bookly-tbs .table>caption+thead>tr:first-child>td,#bookly-tbs .table>caption+thead>tr:first-child>th,#bookly-tbs .table>colgroup+thead>tr:first-child>td,#bookly-tbs .table>colgroup+thead>tr:first-child>th,#bookly-tbs .table>thead:first-child>tr:first-child>td,#bookly-tbs .table>thead:first-child>tr:first-child>th{border-top:0}#bookly-tbs .table>tbody+tbody{border-top:2px solid #d9dee4}#bookly-tbs .table .table{background-color:transparent}#bookly-tbs .table-condensed>tbody>tr>td,#bookly-tbs .table-condensed>tbody>tr>th,#bookly-tbs .table-condensed>tfoot>tr>td,#bookly-tbs .table-condensed>tfoot>tr>th,#bookly-tbs .table-condensed>thead>tr>td,#bookly-tbs .table-condensed>thead>tr>th{padding:5px}#bookly-tbs .table-bordered{border:1px solid #d9dee4}#bookly-tbs .table-bordered>tbody>tr>td,#bookly-tbs .table-bordered>tbody>tr>th,#bookly-tbs .table-bordered>tfoot>tr>td,#bookly-tbs .table-bordered>tfoot>tr>th,#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border:1px solid #d9dee4}#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border-bottom-width:2px}#bookly-tbs .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bookly-tbs .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bookly-tbs table col[class*=col-]{position:static;display:table-column;float:none}#bookly-tbs table td[class*=col-],#bookly-tbs table th[class*=col-]{position:static;display:table-cell;float:none}#bookly-tbs .table>tbody>tr.active>td,#bookly-tbs .table>tbody>tr.active>th,#bookly-tbs .table>tbody>tr>td.active,#bookly-tbs .table>tbody>tr>th.active,#bookly-tbs .table>tfoot>tr.active>td,#bookly-tbs .table>tfoot>tr.active>th,#bookly-tbs .table>tfoot>tr>td.active,#bookly-tbs .table>tfoot>tr>th.active,#bookly-tbs .table>thead>tr.active>td,#bookly-tbs .table>thead>tr.active>th,#bookly-tbs .table>thead>tr>td.active,#bookly-tbs .table>thead>tr>th.active{background-color:#f5f5f5}#bookly-tbs .table-hover>tbody>tr.active:hover>td,#bookly-tbs .table-hover>tbody>tr.active:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.active,#bookly-tbs .table-hover>tbody>tr>td.active:hover,#bookly-tbs .table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}#bookly-tbs .table>tbody>tr.success>td,#bookly-tbs .table>tbody>tr.success>th,#bookly-tbs .table>tbody>tr>td.success,#bookly-tbs .table>tbody>tr>th.success,#bookly-tbs .table>tfoot>tr.success>td,#bookly-tbs .table>tfoot>tr.success>th,#bookly-tbs .table>tfoot>tr>td.success,#bookly-tbs .table>tfoot>tr>th.success,#bookly-tbs .table>thead>tr.success>td,#bookly-tbs .table>thead>tr.success>th,#bookly-tbs .table>thead>tr>td.success,#bookly-tbs .table>thead>tr>th.success{background-color:#dff0d8}#bookly-tbs .table-hover>tbody>tr.success:hover>td,#bookly-tbs .table-hover>tbody>tr.success:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.success,#bookly-tbs .table-hover>tbody>tr>td.success:hover,#bookly-tbs .table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}#bookly-tbs .table>tbody>tr.info>td,#bookly-tbs .table>tbody>tr.info>th,#bookly-tbs .table>tbody>tr>td.info,#bookly-tbs .table>tbody>tr>th.info,#bookly-tbs .table>tfoot>tr.info>td,#bookly-tbs .table>tfoot>tr.info>th,#bookly-tbs .table>tfoot>tr>td.info,#bookly-tbs .table>tfoot>tr>th.info,#bookly-tbs .table>thead>tr.info>td,#bookly-tbs .table>thead>tr.info>th,#bookly-tbs .table>thead>tr>td.info,#bookly-tbs .table>thead>tr>th.info{background-color:#d9edf7}#bookly-tbs .table-hover>tbody>tr.info:hover>td,#bookly-tbs .table-hover>tbody>tr.info:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.info,#bookly-tbs .table-hover>tbody>tr>td.info:hover,#bookly-tbs .table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}#bookly-tbs .table>tbody>tr.warning>td,#bookly-tbs .table>tbody>tr.warning>th,#bookly-tbs .table>tbody>tr>td.warning,#bookly-tbs .table>tbody>tr>th.warning,#bookly-tbs .table>tfoot>tr.warning>td,#bookly-tbs .table>tfoot>tr.warning>th,#bookly-tbs .table>tfoot>tr>td.warning,#bookly-tbs .table>tfoot>tr>th.warning,#bookly-tbs .table>thead>tr.warning>td,#bookly-tbs .table>thead>tr.warning>th,#bookly-tbs .table>thead>tr>td.warning,#bookly-tbs .table>thead>tr>th.warning{background-color:#fcf8e3}#bookly-tbs .table-hover>tbody>tr.warning:hover>td,#bookly-tbs .table-hover>tbody>tr.warning:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.warning,#bookly-tbs .table-hover>tbody>tr>td.warning:hover,#bookly-tbs .table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}#bookly-tbs .table>tbody>tr.danger>td,#bookly-tbs .table>tbody>tr.danger>th,#bookly-tbs .table>tbody>tr>td.danger,#bookly-tbs .table>tbody>tr>th.danger,#bookly-tbs .table>tfoot>tr.danger>td,#bookly-tbs .table>tfoot>tr.danger>th,#bookly-tbs .table>tfoot>tr>td.danger,#bookly-tbs .table>tfoot>tr>th.danger,#bookly-tbs .table>thead>tr.danger>td,#bookly-tbs .table>thead>tr.danger>th,#bookly-tbs .table>thead>tr>td.danger,#bookly-tbs .table>thead>tr>th.danger{background-color:#f2dede}#bookly-tbs .table-hover>tbody>tr.danger:hover>td,#bookly-tbs .table-hover>tbody>tr.danger:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.danger,#bookly-tbs .table-hover>tbody>tr>td.danger:hover,#bookly-tbs .table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}#bookly-tbs .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bookly-tbs .table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #d9dee4}#bookly-tbs .table-responsive>.table{margin-bottom:0}#bookly-tbs .table-responsive>.table>tbody>tr>td,#bookly-tbs .table-responsive>.table>tbody>tr>th,#bookly-tbs .table-responsive>.table>tfoot>tr>td,#bookly-tbs .table-responsive>.table>tfoot>tr>th,#bookly-tbs .table-responsive>.table>thead>tr>td,#bookly-tbs .table-responsive>.table>thead>tr>th{white-space:nowrap}#bookly-tbs .table-responsive>.table-bordered{border:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}#bookly-tbs fieldset{min-width:0;padding:0;margin:0;border:0}#bookly-tbs legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#5b6470;border:0;border-bottom:1px solid #e8ebf0}#bookly-tbs label{display:inline-block;max-width:100%;margin-bottom:7px;font-weight:700}#bookly-tbs input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{margin:3px 0 0;margin-top:1px\9;line-height:normal}#bookly-tbs input[type=file]{display:block}#bookly-tbs input[type=range]{display:block;width:100%}#bookly-tbs select[multiple],#bookly-tbs select[size]{height:auto}#bookly-tbs input[type=file]:focus,#bookly-tbs input[type=checkbox]:focus,#bookly-tbs input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs output{display:block;padding-top:7px;font-size:15px;line-height:1.4;color:#3e424a}#bookly-tbs .form-control{display:block;width:100%;height:35px;padding:6px 12px;font-size:15px;line-height:1.4;color:#3e424a;background-color:#fff;background-image:none;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bookly-tbs .form-control:focus{border-color:#08c;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0)}#bookly-tbs .form-control::-moz-placeholder{color:#8a929e;opacity:1}#bookly-tbs .form-control:-ms-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-webkit-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-ms-expand{background-color:transparent;border:0}#bookly-tbs .form-control[disabled],#bookly-tbs .form-control[readonly],#bookly-tbs fieldset[disabled] .form-control{background-color:rgba(232,235,240,.7);opacity:1}#bookly-tbs .form-control[disabled],#bookly-tbs fieldset[disabled] .form-control{cursor:not-allowed}#bookly-tbs textarea.form-control{height:auto}#bookly-tbs input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){#bookly-tbs input[type=date].form-control,#bookly-tbs input[type=time].form-control,#bookly-tbs input[type=datetime-local].form-control,#bookly-tbs input[type=month].form-control{line-height:35px}#bookly-tbs .input-group-sm input[type=date],#bookly-tbs .input-group-sm input[type=time],#bookly-tbs .input-group-sm input[type=datetime-local],#bookly-tbs .input-group-sm input[type=month],#bookly-tbs input[type=date].input-sm,#bookly-tbs input[type=time].input-sm,#bookly-tbs input[type=datetime-local].input-sm,#bookly-tbs input[type=month].input-sm{line-height:32px}#bookly-tbs .input-group-lg input[type=date],#bookly-tbs .input-group-lg input[type=time],#bookly-tbs .input-group-lg input[type=datetime-local],#bookly-tbs .input-group-lg input[type=month],#bookly-tbs input[type=date].input-lg,#bookly-tbs input[type=time].input-lg,#bookly-tbs input[type=datetime-local].input-lg,#bookly-tbs input[type=month].input-lg{line-height:46px}}#bookly-tbs .form-group{margin-bottom:20px}#bookly-tbs .checkbox,#bookly-tbs .radio{position:relative;display:block;margin-top:6px;margin-bottom:7px}#bookly-tbs .checkbox label,#bookly-tbs .radio label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bookly-tbs .checkbox input[type=checkbox],#bookly-tbs .checkbox-inline input[type=checkbox],#bookly-tbs .radio input[type=radio],#bookly-tbs .radio-inline input[type=radio]{position:absolute;margin-top:3px\9;margin-left:-20px}#bookly-tbs .checkbox+.checkbox,#bookly-tbs .radio+.radio{margin-top:-5px}#bookly-tbs .checkbox-inline,#bookly-tbs .radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bookly-tbs .checkbox-inline+.checkbox-inline,#bookly-tbs .radio-inline+.radio-inline{margin-top:0;margin-left:10px}#bookly-tbs fieldset[disabled] input[type=checkbox],#bookly-tbs fieldset[disabled] input[type=radio],#bookly-tbs input[type=checkbox].disabled,#bookly-tbs input[type=checkbox][disabled],#bookly-tbs input[type=radio].disabled,#bookly-tbs input[type=radio][disabled]{cursor:not-allowed}#bookly-tbs .checkbox-inline.disabled,#bookly-tbs .radio-inline.disabled,#bookly-tbs fieldset[disabled] .checkbox-inline,#bookly-tbs fieldset[disabled] .radio-inline{cursor:not-allowed}#bookly-tbs .checkbox.disabled label,#bookly-tbs .radio.disabled label,#bookly-tbs fieldset[disabled] .checkbox label,#bookly-tbs fieldset[disabled] .radio label{cursor:not-allowed}#bookly-tbs .form-control-static{min-height:36px;padding-top:7px;padding-bottom:7px;margin-bottom:0}#bookly-tbs .form-control-static.input-lg,#bookly-tbs .form-control-static.input-sm{padding-right:0;padding-left:0}#bookly-tbs .input-sm{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-sm{height:32px;line-height:32px}#bookly-tbs select[multiple].input-sm,#bookly-tbs textarea.input-sm{height:auto}#bookly-tbs .form-group-sm .form-control{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .form-group-sm select.form-control{height:32px;line-height:32px}#bookly-tbs .form-group-sm select[multiple].form-control,#bookly-tbs .form-group-sm textarea.form-control{height:auto}#bookly-tbs .form-group-sm .form-control-static{height:32px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-lg{height:46px;line-height:46px}#bookly-tbs select[multiple].input-lg,#bookly-tbs textarea.input-lg{height:auto}#bookly-tbs .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs .form-group-lg select.form-control{height:46px;line-height:46px}#bookly-tbs .form-group-lg select[multiple].form-control,#bookly-tbs .form-group-lg textarea.form-control{height:auto}#bookly-tbs .form-group-lg .form-control-static{height:46px;min-height:39px;padding:11px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .has-feedback{position:relative}#bookly-tbs .has-feedback .form-control{padding-right:43.75px}#bookly-tbs .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:35px;height:35px;line-height:35px;text-align:center;pointer-events:none}#bookly-tbs .form-group-lg .form-control+.form-control-feedback,#bookly-tbs .input-group-lg+.form-control-feedback,#bookly-tbs .input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}#bookly-tbs .form-group-sm .form-control+.form-control-feedback,#bookly-tbs .input-group-sm+.form-control-feedback,#bookly-tbs .input-sm+.form-control-feedback{width:32px;height:32px;line-height:32px}#bookly-tbs .has-success .checkbox,#bookly-tbs .has-success .checkbox-inline,#bookly-tbs .has-success .control-label,#bookly-tbs .has-success .help-block,#bookly-tbs .has-success .radio,#bookly-tbs .has-success .radio-inline,#bookly-tbs .has-success.checkbox label,#bookly-tbs .has-success.checkbox-inline label,#bookly-tbs .has-success.radio label,#bookly-tbs .has-success.radio-inline label{color:#3c763d}#bookly-tbs .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}#bookly-tbs .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}#bookly-tbs .has-success .form-control-feedback{color:#3c763d}#bookly-tbs .has-warning .checkbox,#bookly-tbs .has-warning .checkbox-inline,#bookly-tbs .has-warning .control-label,#bookly-tbs .has-warning .help-block,#bookly-tbs .has-warning .radio,#bookly-tbs .has-warning .radio-inline,#bookly-tbs .has-warning.checkbox label,#bookly-tbs .has-warning.checkbox-inline label,#bookly-tbs .has-warning.radio label,#bookly-tbs .has-warning.radio-inline label{color:#8a6d3b}#bookly-tbs .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}#bookly-tbs .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}#bookly-tbs .has-warning .form-control-feedback{color:#8a6d3b}#bookly-tbs .has-error .checkbox,#bookly-tbs .has-error .checkbox-inline,#bookly-tbs .has-error .control-label,#bookly-tbs .has-error .help-block,#bookly-tbs .has-error .radio,#bookly-tbs .has-error .radio-inline,#bookly-tbs .has-error.checkbox label,#bookly-tbs .has-error.checkbox-inline label,#bookly-tbs .has-error.radio label,#bookly-tbs .has-error.radio-inline label{color:#a94442}#bookly-tbs .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}#bookly-tbs .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}#bookly-tbs .has-error .form-control-feedback{color:#a94442}#bookly-tbs .has-feedback label~.form-control-feedback{top:26px}#bookly-tbs .has-feedback label.sr-only~.form-control-feedback{top:0}#bookly-tbs .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#8a929e}@media (min-width:768px){#bookly-tbs .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .form-inline .form-control-static{display:inline-block}#bookly-tbs .form-inline .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .form-inline .input-group .form-control,#bookly-tbs .form-inline .input-group .input-group-addon,#bookly-tbs .form-inline .input-group .input-group-btn{width:auto}#bookly-tbs .form-inline .input-group>.form-control{width:100%}#bookly-tbs .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .checkbox,#bookly-tbs .form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .has-feedback .form-control-feedback{top:0}}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .checkbox-inline,#bookly-tbs .form-horizontal .radio,#bookly-tbs .form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .radio{min-height:28px}#bookly-tbs .form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}#bookly-tbs .form-horizontal .has-feedback .form-control-feedback{right:10px}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}#bookly-tbs .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:15px;font-weight:400;line-height:1.4;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .btn.active.focus,#bookly-tbs .btn.active:focus,#bookly-tbs .btn.focus,#bookly-tbs .btn:active.focus,#bookly-tbs .btn:active:focus,#bookly-tbs .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs .btn.focus,#bookly-tbs .btn:focus,#bookly-tbs .btn:hover{color:#3e424a;text-decoration:none}#bookly-tbs .btn.active,#bookly-tbs .btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn.disabled,#bookly-tbs .btn[disabled],#bookly-tbs fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}#bookly-tbs a.btn.disabled,#bookly-tbs fieldset[disabled] a.btn{pointer-events:none}#bookly-tbs .btn-default{color:#3e424a;background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default.focus,#bookly-tbs .btn-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .btn-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active.focus,#bookly-tbs .btn-default.active:focus,#bookly-tbs .btn-default.active:hover,#bookly-tbs .btn-default:active.focus,#bookly-tbs .btn-default:active:focus,#bookly-tbs .btn-default:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-default.focus,#bookly-tbs .open>.dropdown-toggle.btn-default:focus,#bookly-tbs .open>.dropdown-toggle.btn-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{background-image:none}#bookly-tbs .btn-default.disabled.focus,#bookly-tbs .btn-default.disabled:focus,#bookly-tbs .btn-default.disabled:hover,#bookly-tbs .btn-default[disabled].focus,#bookly-tbs .btn-default[disabled]:focus,#bookly-tbs .btn-default[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-default.focus,#bookly-tbs fieldset[disabled] .btn-default:focus,#bookly-tbs fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .btn-primary{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary.focus,#bookly-tbs .btn-primary:focus{color:#fff;background-color:#069;border-color:#00334d}#bookly-tbs .btn-primary:hover{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active.focus,#bookly-tbs .btn-primary.active:focus,#bookly-tbs .btn-primary.active:hover,#bookly-tbs .btn-primary:active.focus,#bookly-tbs .btn-primary:active:focus,#bookly-tbs .btn-primary:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-primary.focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#004e75;border-color:#00334d}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{background-image:none}#bookly-tbs .btn-primary.disabled.focus,#bookly-tbs .btn-primary.disabled:focus,#bookly-tbs .btn-primary.disabled:hover,#bookly-tbs .btn-primary[disabled].focus,#bookly-tbs .btn-primary[disabled]:focus,#bookly-tbs .btn-primary[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-primary.focus,#bookly-tbs fieldset[disabled] .btn-primary:focus,#bookly-tbs fieldset[disabled] .btn-primary:hover{background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary .badge{color:#08c;background-color:#fff}#bookly-tbs .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success.focus,#bookly-tbs .btn-success:focus{color:#fff;background-color:#449d44;border-color:#2d672d}#bookly-tbs .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active.focus,#bookly-tbs .btn-success.active:focus,#bookly-tbs .btn-success.active:hover,#bookly-tbs .btn-success:active.focus,#bookly-tbs .btn-success:active:focus,#bookly-tbs .btn-success:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-success.focus,#bookly-tbs .open>.dropdown-toggle.btn-success:focus,#bookly-tbs .open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#2d672d}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{background-image:none}#bookly-tbs .btn-success.disabled.focus,#bookly-tbs .btn-success.disabled:focus,#bookly-tbs .btn-success.disabled:hover,#bookly-tbs .btn-success[disabled].focus,#bookly-tbs .btn-success[disabled]:focus,#bookly-tbs .btn-success[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-success.focus,#bookly-tbs fieldset[disabled] .btn-success:focus,#bookly-tbs fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success .badge{color:#5cb85c;background-color:#fff}#bookly-tbs .btn-info{color:#fff;background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info.focus,#bookly-tbs .btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#175b70}#bookly-tbs .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active.focus,#bookly-tbs .btn-info.active:focus,#bookly-tbs .btn-info.active:hover,#bookly-tbs .btn-info:active.focus,#bookly-tbs .btn-info:active:focus,#bookly-tbs .btn-info:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-info.focus,#bookly-tbs .open>.dropdown-toggle.btn-info:focus,#bookly-tbs .open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#175b70}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{background-image:none}#bookly-tbs .btn-info.disabled.focus,#bookly-tbs .btn-info.disabled:focus,#bookly-tbs .btn-info.disabled:hover,#bookly-tbs .btn-info[disabled].focus,#bookly-tbs .btn-info[disabled]:focus,#bookly-tbs .btn-info[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-info.focus,#bookly-tbs fieldset[disabled] .btn-info:focus,#bookly-tbs fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info .badge{color:#5bc0de;background-color:#fff}#bookly-tbs .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning.focus,#bookly-tbs .btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#b06d0f}#bookly-tbs .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active.focus,#bookly-tbs .btn-warning.active:focus,#bookly-tbs .btn-warning.active:hover,#bookly-tbs .btn-warning:active.focus,#bookly-tbs .btn-warning:active:focus,#bookly-tbs .btn-warning:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-warning.focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#b06d0f}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{background-image:none}#bookly-tbs .btn-warning.disabled.focus,#bookly-tbs .btn-warning.disabled:focus,#bookly-tbs .btn-warning.disabled:hover,#bookly-tbs .btn-warning[disabled].focus,#bookly-tbs .btn-warning[disabled]:focus,#bookly-tbs .btn-warning[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-warning.focus,#bookly-tbs fieldset[disabled] .btn-warning:focus,#bookly-tbs fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning .badge{color:#f0ad4e;background-color:#fff}#bookly-tbs .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger.focus,#bookly-tbs .btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#8b211e}#bookly-tbs .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active.focus,#bookly-tbs .btn-danger.active:focus,#bookly-tbs .btn-danger.active:hover,#bookly-tbs .btn-danger:active.focus,#bookly-tbs .btn-danger:active:focus,#bookly-tbs .btn-danger:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-danger.focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#8b211e}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{background-image:none}#bookly-tbs .btn-danger.disabled.focus,#bookly-tbs .btn-danger.disabled:focus,#bookly-tbs .btn-danger.disabled:hover,#bookly-tbs .btn-danger[disabled].focus,#bookly-tbs .btn-danger[disabled]:focus,#bookly-tbs .btn-danger[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-danger.focus,#bookly-tbs fieldset[disabled] .btn-danger:focus,#bookly-tbs fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger .badge{color:#d9534f;background-color:#fff}#bookly-tbs .btn-link{font-weight:400;color:#08c;border-radius:0}#bookly-tbs .btn-link,#bookly-tbs .btn-link.active,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link[disabled],#bookly-tbs fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn-link,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{border-color:transparent}#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{color:#005580;text-decoration:none;background-color:transparent}#bookly-tbs .btn-link[disabled]:focus,#bookly-tbs .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-link:focus,#bookly-tbs fieldset[disabled] .btn-link:hover{color:#8a929e;text-decoration:none}#bookly-tbs .btn-group-lg>.btn,#bookly-tbs .btn-lg{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:4px}#bookly-tbs .btn-group-sm>.btn,#bookly-tbs .btn-sm{padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-group-xs>.btn,#bookly-tbs .btn-xs{padding:1px 5px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-block{display:block;width:100%}#bookly-tbs .btn-block+.btn-block{margin-top:5px}#bookly-tbs input[type=button].btn-block,#bookly-tbs input[type=reset].btn-block,#bookly-tbs input[type=submit].btn-block{width:100%}#bookly-tbs .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bookly-tbs .fade.in{opacity:1}#bookly-tbs .collapse{display:none}#bookly-tbs .collapse.in{display:block}#bookly-tbs tr.collapse.in{display:table-row}#bookly-tbs tbody.collapse.in{display:table-row-group}#bookly-tbs .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}#bookly-tbs .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}#bookly-tbs .dropdown,#bookly-tbs .dropup{position:relative}#bookly-tbs .dropdown-toggle:focus{outline:0}#bookly-tbs .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;font-size:15px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bookly-tbs .dropdown-menu.pull-right{right:0;left:auto}#bookly-tbs .dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .dropdown-menu>li>a:focus,#bookly-tbs .dropdown-menu>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .dropdown-menu>.active>a,#bookly-tbs .dropdown-menu>.active>a:focus,#bookly-tbs .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#08c;outline:0}#bookly-tbs .dropdown-menu>.disabled>a,#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{color:#d9dee4}#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bookly-tbs .open>.dropdown-menu{display:block}#bookly-tbs .open>a{outline:0}#bookly-tbs .dropdown-menu-right{right:0;left:auto}#bookly-tbs .dropdown-menu-left{right:auto;left:0}#bookly-tbs .dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}#bookly-tbs .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bookly-tbs .pull-right>.dropdown-menu{right:0;left:auto}#bookly-tbs .dropup .caret,#bookly-tbs .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:5px dashed;border-bottom:5px solid\9}#bookly-tbs .dropup .dropdown-menu,#bookly-tbs .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bookly-tbs .navbar-right .dropdown-menu{right:0;left:auto}#bookly-tbs .navbar-right .dropdown-menu-left{right:auto;left:0}}#bookly-tbs .btn-group,#bookly-tbs .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group>.btn{position:relative;float:left}#bookly-tbs .btn-group-vertical>.btn.active,#bookly-tbs .btn-group-vertical>.btn:active,#bookly-tbs .btn-group-vertical>.btn:focus,#bookly-tbs .btn-group-vertical>.btn:hover,#bookly-tbs .btn-group>.btn.active,#bookly-tbs .btn-group>.btn:active,#bookly-tbs .btn-group>.btn:focus,#bookly-tbs .btn-group>.btn:hover{z-index:2}#bookly-tbs .btn-group .btn+.btn,#bookly-tbs .btn-group .btn+.btn-group,#bookly-tbs .btn-group .btn-group+.btn,#bookly-tbs .btn-group .btn-group+.btn-group{margin-left:-1px}#bookly-tbs .btn-toolbar{margin-left:-5px}#bookly-tbs .btn-toolbar .btn,#bookly-tbs .btn-toolbar .btn-group,#bookly-tbs .btn-toolbar .input-group{float:left}#bookly-tbs .btn-toolbar>.btn,#bookly-tbs .btn-toolbar>.btn-group,#bookly-tbs .btn-toolbar>.input-group{margin-left:5px}#bookly-tbs .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bookly-tbs .btn-group>.btn:first-child{margin-left:0}#bookly-tbs .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn:last-child:not(:first-child),#bookly-tbs .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group>.btn-group{float:left}#bookly-tbs .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group .dropdown-toggle:active,#bookly-tbs .btn-group.open .dropdown-toggle{outline:0}#bookly-tbs .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bookly-tbs .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}#bookly-tbs .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn .caret{margin-left:0}#bookly-tbs .btn-lg .caret{border-width:6px 6px 0;border-bottom-width:0}#bookly-tbs .dropup .btn-lg .caret{border-width:0 6px 6px}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group-vertical>.btn-group,#bookly-tbs .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bookly-tbs .btn-group-vertical>.btn-group>.btn{float:none}#bookly-tbs .btn-group-vertical>.btn+.btn,#bookly-tbs .btn-group-vertical>.btn+.btn-group,#bookly-tbs .btn-group-vertical>.btn-group+.btn,#bookly-tbs .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bookly-tbs .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bookly-tbs .btn-group-justified>.btn,#bookly-tbs .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bookly-tbs .btn-group-justified>.btn-group .btn{width:100%}#bookly-tbs .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bookly-tbs [data-toggle=buttons]>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn input[type=radio],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bookly-tbs .input-group{position:relative;display:table;border-collapse:separate}#bookly-tbs .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bookly-tbs .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bookly-tbs .input-group .form-control:focus{z-index:3}#bookly-tbs .input-group-lg>.form-control,#bookly-tbs .input-group-lg>.input-group-addon,#bookly-tbs .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-group-lg>.form-control,#bookly-tbs select.input-group-lg>.input-group-addon,#bookly-tbs select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}#bookly-tbs select[multiple].input-group-lg>.form-control,#bookly-tbs select[multiple].input-group-lg>.input-group-addon,#bookly-tbs select[multiple].input-group-lg>.input-group-btn>.btn,#bookly-tbs textarea.input-group-lg>.form-control,#bookly-tbs textarea.input-group-lg>.input-group-addon,#bookly-tbs textarea.input-group-lg>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group-sm>.form-control,#bookly-tbs .input-group-sm>.input-group-addon,#bookly-tbs .input-group-sm>.input-group-btn>.btn{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-group-sm>.form-control,#bookly-tbs select.input-group-sm>.input-group-addon,#bookly-tbs select.input-group-sm>.input-group-btn>.btn{height:32px;line-height:32px}#bookly-tbs select[multiple].input-group-sm>.form-control,#bookly-tbs select[multiple].input-group-sm>.input-group-addon,#bookly-tbs select[multiple].input-group-sm>.input-group-btn>.btn,#bookly-tbs textarea.input-group-sm>.form-control,#bookly-tbs textarea.input-group-sm>.input-group-addon,#bookly-tbs textarea.input-group-sm>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group .form-control,#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{display:table-cell}#bookly-tbs .input-group .form-control:not(:first-child):not(:last-child),#bookly-tbs .input-group-addon:not(:first-child):not(:last-child),#bookly-tbs .input-group-btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bookly-tbs .input-group-addon{padding:6px 12px;font-size:15px;font-weight:400;line-height:1;color:#3e424a;text-align:center;background-color:#e8ebf0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:3px}#bookly-tbs .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}#bookly-tbs .input-group-addon input[type=checkbox],#bookly-tbs .input-group-addon input[type=radio]{margin-top:0}#bookly-tbs .input-group .form-control:first-child,#bookly-tbs .input-group-addon:first-child,#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group>.btn,#bookly-tbs .input-group-btn:first-child>.dropdown-toggle,#bookly-tbs .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,#bookly-tbs .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .input-group-addon:first-child{border-right:0}#bookly-tbs .input-group .form-control:last-child,#bookly-tbs .input-group-addon:last-child,#bookly-tbs .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,#bookly-tbs .input-group-btn:first-child>.btn:not(:first-child),#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group>.btn,#bookly-tbs .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .input-group-addon:last-child{border-left:0}#bookly-tbs .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bookly-tbs .input-group-btn>.btn{position:relative}#bookly-tbs .input-group-btn>.btn+.btn{margin-left:-1px}#bookly-tbs .input-group-btn>.btn:active,#bookly-tbs .input-group-btn>.btn:focus,#bookly-tbs .input-group-btn>.btn:hover{z-index:2}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bookly-tbs .nav{padding-left:0;margin-bottom:0;list-style:none}#bookly-tbs .nav>li{position:relative;display:block}#bookly-tbs .nav>li>a{position:relative;display:block;padding:10px 15px}#bookly-tbs .nav>li>a:focus,#bookly-tbs .nav>li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .nav>li.disabled>a{color:#d9dee4}#bookly-tbs .nav>li.disabled>a:focus,#bookly-tbs .nav>li.disabled>a:hover{color:#d9dee4;text-decoration:none;cursor:not-allowed;background-color:transparent}#bookly-tbs .nav .open>a,#bookly-tbs .nav .open>a:focus,#bookly-tbs .nav .open>a:hover{background-color:#e8ebf0;border-color:#08c}#bookly-tbs .nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .nav>li>a>img{max-width:none}#bookly-tbs .nav-tabs{border-bottom:1px solid #d9dee4}#bookly-tbs .nav-tabs>li{float:left;margin-bottom:-1px}#bookly-tbs .nav-tabs>li>a{margin-right:2px;line-height:1.4;border:1px solid transparent;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs>li>a:hover{border-color:#e8ebf0 #e8ebf0 #d9dee4}#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#8a929e;cursor:default;background-color:transparent;border:1px solid transparent;border-bottom-color:transparent}#bookly-tbs .nav-tabs.nav-justified{width:100%;border-bottom:0}#bookly-tbs .nav-tabs.nav-justified>li{float:none}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs.nav-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .nav-pills>li{float:left}#bookly-tbs .nav-pills>li>a{border-radius:4px}#bookly-tbs .nav-pills>li+li{margin-left:2px}#bookly-tbs .nav-pills>li.active>a,#bookly-tbs .nav-pills>li.active>a:focus,#bookly-tbs .nav-pills>li.active>a:hover{color:#fff;background-color:#08c}#bookly-tbs .nav-stacked>li{float:none}#bookly-tbs .nav-stacked>li+li{margin-top:2px;margin-left:0}#bookly-tbs .nav-justified{width:100%}#bookly-tbs .nav-justified>li{float:none}#bookly-tbs .nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs-justified{border-bottom:0}#bookly-tbs .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .tab-content>.tab-pane{display:none}#bookly-tbs .tab-content>.active{display:block}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){#bookly-tbs .navbar{border-radius:4px}}@media (min-width:768px){#bookly-tbs .navbar-header{float:left}}#bookly-tbs .navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}#bookly-tbs .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bookly-tbs .navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}#bookly-tbs .navbar-collapse.in{overflow-y:visible}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse,#bookly-tbs .navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:200px}}#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:0;margin-left:0}}#bookly-tbs .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bookly-tbs .navbar-static-top{border-radius:0}}#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{border-radius:0}}#bookly-tbs .navbar-fixed-top{top:0;border-width:0 0 1px}#bookly-tbs .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bookly-tbs .navbar-brand{float:left;height:50px;padding:14.5px 10px;font-size:18px;line-height:21px}#bookly-tbs .navbar-brand:focus,#bookly-tbs .navbar-brand:hover{text-decoration:none}#bookly-tbs .navbar-brand>img{display:block}@media (min-width:768px){#bookly-tbs .navbar>.container .navbar-brand,#bookly-tbs .navbar>.container-fluid .navbar-brand{margin-left:-10px}}#bookly-tbs .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:10px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .navbar-toggle:focus{outline:0}#bookly-tbs .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bookly-tbs .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bookly-tbs .navbar-toggle{display:none}}#bookly-tbs .navbar-nav{margin:7.25px -10px}#bookly-tbs .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){#bookly-tbs .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-nav .open .dropdown-menu .dropdown-header,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{line-height:21px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){#bookly-tbs .navbar-nav{float:left;margin:0}#bookly-tbs .navbar-nav>li{float:left}#bookly-tbs .navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}#bookly-tbs .navbar-form{padding:10px 10px;margin-top:7.5px;margin-right:-10px;margin-bottom:7.5px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){#bookly-tbs .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .navbar-form .form-control-static{display:inline-block}#bookly-tbs .navbar-form .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .navbar-form .input-group .form-control,#bookly-tbs .navbar-form .input-group .input-group-addon,#bookly-tbs .navbar-form .input-group .input-group-btn{width:auto}#bookly-tbs .navbar-form .input-group>.form-control{width:100%}#bookly-tbs .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .checkbox,#bookly-tbs .navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bookly-tbs .navbar-form .form-group{margin-bottom:5px}#bookly-tbs .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bookly-tbs .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .navbar-btn{margin-top:7.5px;margin-bottom:7.5px}#bookly-tbs .navbar-btn.btn-sm{margin-top:9px;margin-bottom:9px}#bookly-tbs .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}#bookly-tbs .navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){#bookly-tbs .navbar-text{float:left;margin-right:10px;margin-left:10px}}@media (min-width:768px){#bookly-tbs .navbar-left{float:left!important}#bookly-tbs .navbar-right{float:right!important;margin-right:-10px}#bookly-tbs .navbar-right~.navbar-right{margin-right:0}}#bookly-tbs .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-brand{color:#777}#bookly-tbs .navbar-default .navbar-brand:focus,#bookly-tbs .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}#bookly-tbs .navbar-default .navbar-text{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a:focus,#bookly-tbs .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav>.active>a,#bookly-tbs .navbar-default .navbar-nav>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.disabled>a,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}#bookly-tbs .navbar-default .navbar-toggle{border-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle:focus,#bookly-tbs .navbar-default .navbar-toggle:hover{background-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle .icon-bar{background-color:#8a929e}#bookly-tbs .navbar-default .navbar-collapse,#bookly-tbs .navbar-default .navbar-form{border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.open>a,#bookly-tbs .navbar-default .navbar-nav>.open>a:focus,#bookly-tbs .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}#bookly-tbs .navbar-default .navbar-link{color:#777}#bookly-tbs .navbar-default .navbar-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link{color:#777}#bookly-tbs .navbar-default .btn-link:focus,#bookly-tbs .navbar-default .btn-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link[disabled]:focus,#bookly-tbs .navbar-default .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}#bookly-tbs .navbar-inverse{background-color:#222;border-color:#080808}#bookly-tbs .navbar-inverse .navbar-brand{color:#fff}#bookly-tbs .navbar-inverse .navbar-brand:focus,#bookly-tbs .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-text{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav>.active>a,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-toggle{border-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle:focus,#bookly-tbs .navbar-inverse .navbar-toggle:hover{background-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bookly-tbs .navbar-inverse .navbar-collapse,#bookly-tbs .navbar-inverse .navbar-form{border-color:#101010}#bookly-tbs .navbar-inverse .navbar-nav>.open>a,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}#bookly-tbs .navbar-inverse .navbar-link{color:#fff}#bookly-tbs .navbar-inverse .navbar-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link{color:#fff}#bookly-tbs .navbar-inverse .btn-link:focus,#bookly-tbs .navbar-inverse .btn-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link[disabled]:focus,#bookly-tbs .navbar-inverse .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}#bookly-tbs .breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bookly-tbs .breadcrumb>li{display:inline-block}#bookly-tbs .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}#bookly-tbs .breadcrumb>.active{color:#d9dee4}#bookly-tbs .pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}#bookly-tbs .pagination>li{display:inline}#bookly-tbs .pagination>li>a,#bookly-tbs .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.4;color:#08c;text-decoration:none;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .pagination>li:first-child>a,#bookly-tbs .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .pagination>li:last-child>a,#bookly-tbs .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bookly-tbs .pagination>li>a:focus,#bookly-tbs .pagination>li>a:hover,#bookly-tbs .pagination>li>span:focus,#bookly-tbs .pagination>li>span:hover{z-index:2;color:#005580;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .pagination>.active>a,#bookly-tbs .pagination>.active>a:focus,#bookly-tbs .pagination>.active>a:hover,#bookly-tbs .pagination>.active>span,#bookly-tbs .pagination>.active>span:focus,#bookly-tbs .pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#08c;border-color:#08c}#bookly-tbs .pagination>.disabled>a,#bookly-tbs .pagination>.disabled>a:focus,#bookly-tbs .pagination>.disabled>a:hover,#bookly-tbs .pagination>.disabled>span,#bookly-tbs .pagination>.disabled>span:focus,#bookly-tbs .pagination>.disabled>span:hover{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#e8ebf0}#bookly-tbs .pagination-lg>li>a,#bookly-tbs .pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .pagination-lg>li:first-child>a,#bookly-tbs .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bookly-tbs .pagination-lg>li:last-child>a,#bookly-tbs .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bookly-tbs .pagination-sm>li>a,#bookly-tbs .pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .pagination-sm>li:first-child>a,#bookly-tbs .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .pagination-sm>li:last-child>a,#bookly-tbs .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bookly-tbs .pager{padding-left:0;margin:21px 0;text-align:center;list-style:none}#bookly-tbs .pager li{display:inline}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #e8ebf0;border-radius:15px}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .pager .next>a,#bookly-tbs .pager .next>span{float:right}#bookly-tbs .pager .previous>a,#bookly-tbs .pager .previous>span{float:left}#bookly-tbs .pager .disabled>a,#bookly-tbs .pager .disabled>a:focus,#bookly-tbs .pager .disabled>a:hover,#bookly-tbs .pager .disabled>span{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff}#bookly-tbs .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}#bookly-tbs a.label:focus,#bookly-tbs a.label:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .label:empty{display:none}#bookly-tbs .btn .label{position:relative;top:-1px}#bookly-tbs .label-default{background-color:#d9dee4}#bookly-tbs .label-default[href]:focus,#bookly-tbs .label-default[href]:hover{background-color:#bbc4cf}#bookly-tbs .label-primary{background-color:#08c}#bookly-tbs .label-primary[href]:focus,#bookly-tbs .label-primary[href]:hover{background-color:#069}#bookly-tbs .label-success{background-color:#5cb85c}#bookly-tbs .label-success[href]:focus,#bookly-tbs .label-success[href]:hover{background-color:#449d44}#bookly-tbs .label-info{background-color:#5bc0de}#bookly-tbs .label-info[href]:focus,#bookly-tbs .label-info[href]:hover{background-color:#31b0d5}#bookly-tbs .label-warning{background-color:#f0ad4e}#bookly-tbs .label-warning[href]:focus,#bookly-tbs .label-warning[href]:hover{background-color:#ec971f}#bookly-tbs .label-danger{background-color:#d9534f}#bookly-tbs .label-danger[href]:focus,#bookly-tbs .label-danger[href]:hover{background-color:#c9302c}#bookly-tbs .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#d9dee4;border-radius:10px}#bookly-tbs .badge:empty{display:none}#bookly-tbs .btn .badge{position:relative;top:-1px}#bookly-tbs .btn-group-xs>.btn .badge,#bookly-tbs .btn-xs .badge{top:0;padding:1px 5px}#bookly-tbs a.badge:focus,#bookly-tbs a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .list-group-item.active>.badge,#bookly-tbs .nav-pills>.active>a>.badge{color:#08c;background-color:#fff}#bookly-tbs .list-group-item>.badge{float:right}#bookly-tbs .list-group-item>.badge+.badge{margin-right:5px}#bookly-tbs .nav-pills>li>a>.badge{margin-left:3px}#bookly-tbs .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e8ebf0}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{color:inherit}#bookly-tbs .jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}#bookly-tbs .jumbotron>hr{border-top-color:#c9d0dc}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:10px;padding-left:10px;border-radius:6px}#bookly-tbs .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bookly-tbs .jumbotron{padding-top:48px;padding-bottom:48px}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:60px;padding-left:60px}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{font-size:68px}}#bookly-tbs .thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{margin-right:auto;margin-left:auto}#bookly-tbs a.thumbnail.active,#bookly-tbs a.thumbnail:focus,#bookly-tbs a.thumbnail:hover{border-color:#08c}#bookly-tbs .thumbnail .caption{padding:9px;color:#3e424a}#bookly-tbs .alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}#bookly-tbs .alert h4{margin-top:0;color:inherit}#bookly-tbs .alert .alert-link{font-weight:700}#bookly-tbs .alert>p,#bookly-tbs .alert>ul{margin-bottom:0}#bookly-tbs .alert>p+p{margin-top:5px}#bookly-tbs .alert-dismissable,#bookly-tbs .alert-dismissible{padding-right:35px}#bookly-tbs .alert-dismissable .close,#bookly-tbs .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bookly-tbs .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .alert-success hr{border-top-color:#c9e2b3}#bookly-tbs .alert-success .alert-link{color:#2b542c}#bookly-tbs .alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .alert-info hr{border-top-color:#a6e1ec}#bookly-tbs .alert-info .alert-link{color:#245269}#bookly-tbs .alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .alert-warning hr{border-top-color:#f7e1b5}#bookly-tbs .alert-warning .alert-link{color:#66512c}#bookly-tbs .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .alert-danger hr{border-top-color:#e4b9c0}#bookly-tbs .alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-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}}#bookly-tbs .progress{height:21px;margin-bottom:21px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bookly-tbs .progress-bar{float:left;width:0;height:100%;font-size:13px;line-height:21px;color:#fff;text-align:center;background-color:#08c;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bookly-tbs .progress-bar-striped,#bookly-tbs .progress-striped .progress-bar{background-image:-webkit-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-image:-o-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-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);-webkit-background-size:40px 40px;background-size:40px 40px}#bookly-tbs .progress-bar.active,#bookly-tbs .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bookly-tbs .progress-bar-success{background-color:#5cb85c}#bookly-tbs .progress-striped .progress-bar-success{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .progress-bar-info{background-color:#5bc0de}#bookly-tbs .progress-striped .progress-bar-info{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .progress-bar-warning{background-color:#f0ad4e}#bookly-tbs .progress-striped .progress-bar-warning{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .progress-bar-danger{background-color:#d9534f}#bookly-tbs .progress-striped .progress-bar-danger{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .media{margin-top:15px}#bookly-tbs .media:first-child{margin-top:0}#bookly-tbs .media,#bookly-tbs .media-body{overflow:hidden;zoom:1}#bookly-tbs .media-body{width:10000px}#bookly-tbs .media-object{display:block}#bookly-tbs .media-object.img-thumbnail{max-width:none}#bookly-tbs .media-right,#bookly-tbs .media>.pull-right{padding-left:10px}#bookly-tbs .media-left,#bookly-tbs .media>.pull-left{padding-right:10px}#bookly-tbs .media-body,#bookly-tbs .media-left,#bookly-tbs .media-right{display:table-cell;vertical-align:top}#bookly-tbs .media-middle{vertical-align:middle}#bookly-tbs .media-bottom{vertical-align:bottom}#bookly-tbs .media-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .media-list{padding-left:0;list-style:none}#bookly-tbs .list-group{padding-left:0;margin-bottom:20px}#bookly-tbs .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bookly-tbs .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs a.list-group-item,#bookly-tbs button.list-group-item{color:#555}#bookly-tbs a.list-group-item .list-group-item-heading,#bookly-tbs button.list-group-item .list-group-item-heading{color:#333}#bookly-tbs a.list-group-item:focus,#bookly-tbs a.list-group-item:hover,#bookly-tbs button.list-group-item:focus,#bookly-tbs button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}#bookly-tbs button.list-group-item{width:100%;text-align:left}#bookly-tbs .list-group-item.disabled,#bookly-tbs .list-group-item.disabled:focus,#bookly-tbs .list-group-item.disabled:hover{color:#d9dee4;cursor:not-allowed;background-color:#e8ebf0}#bookly-tbs .list-group-item.disabled .list-group-item-heading,#bookly-tbs .list-group-item.disabled:focus .list-group-item-heading,#bookly-tbs .list-group-item.disabled:hover .list-group-item-heading{color:inherit}#bookly-tbs .list-group-item.disabled .list-group-item-text,#bookly-tbs .list-group-item.disabled:focus .list-group-item-text,#bookly-tbs .list-group-item.disabled:hover .list-group-item-text{color:#d9dee4}#bookly-tbs .list-group-item.active,#bookly-tbs .list-group-item.active:focus,#bookly-tbs .list-group-item.active:hover{z-index:2;color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .list-group-item.active .list-group-item-heading,#bookly-tbs .list-group-item.active .list-group-item-heading>.small,#bookly-tbs .list-group-item.active .list-group-item-heading>small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>small{color:inherit}#bookly-tbs .list-group-item.active .list-group-item-text,#bookly-tbs .list-group-item.active:focus .list-group-item-text,#bookly-tbs .list-group-item.active:hover .list-group-item-text{color:#9df}#bookly-tbs .list-group-item-success{color:#3c763d;background-color:#dff0d8}#bookly-tbs a.list-group-item-success,#bookly-tbs button.list-group-item-success{color:#3c763d}#bookly-tbs a.list-group-item-success .list-group-item-heading,#bookly-tbs button.list-group-item-success .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-success:focus,#bookly-tbs a.list-group-item-success:hover,#bookly-tbs button.list-group-item-success:focus,#bookly-tbs button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}#bookly-tbs a.list-group-item-success.active,#bookly-tbs a.list-group-item-success.active:focus,#bookly-tbs a.list-group-item-success.active:hover,#bookly-tbs button.list-group-item-success.active,#bookly-tbs button.list-group-item-success.active:focus,#bookly-tbs button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}#bookly-tbs .list-group-item-info{color:#31708f;background-color:#d9edf7}#bookly-tbs a.list-group-item-info,#bookly-tbs button.list-group-item-info{color:#31708f}#bookly-tbs a.list-group-item-info .list-group-item-heading,#bookly-tbs button.list-group-item-info .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-info:focus,#bookly-tbs a.list-group-item-info:hover,#bookly-tbs button.list-group-item-info:focus,#bookly-tbs button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}#bookly-tbs a.list-group-item-info.active,#bookly-tbs a.list-group-item-info.active:focus,#bookly-tbs a.list-group-item-info.active:hover,#bookly-tbs button.list-group-item-info.active,#bookly-tbs button.list-group-item-info.active:focus,#bookly-tbs button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}#bookly-tbs .list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}#bookly-tbs a.list-group-item-warning,#bookly-tbs button.list-group-item-warning{color:#8a6d3b}#bookly-tbs a.list-group-item-warning .list-group-item-heading,#bookly-tbs button.list-group-item-warning .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-warning:focus,#bookly-tbs a.list-group-item-warning:hover,#bookly-tbs button.list-group-item-warning:focus,#bookly-tbs button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}#bookly-tbs a.list-group-item-warning.active,#bookly-tbs a.list-group-item-warning.active:focus,#bookly-tbs a.list-group-item-warning.active:hover,#bookly-tbs button.list-group-item-warning.active,#bookly-tbs button.list-group-item-warning.active:focus,#bookly-tbs button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}#bookly-tbs .list-group-item-danger{color:#a94442;background-color:#f2dede}#bookly-tbs a.list-group-item-danger,#bookly-tbs button.list-group-item-danger{color:#a94442}#bookly-tbs a.list-group-item-danger .list-group-item-heading,#bookly-tbs button.list-group-item-danger .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-danger:focus,#bookly-tbs a.list-group-item-danger:hover,#bookly-tbs button.list-group-item-danger:focus,#bookly-tbs button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}#bookly-tbs a.list-group-item-danger.active,#bookly-tbs a.list-group-item-danger.active:focus,#bookly-tbs a.list-group-item-danger.active:hover,#bookly-tbs button.list-group-item-danger.active,#bookly-tbs button.list-group-item-danger.active:focus,#bookly-tbs button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}#bookly-tbs .list-group-item-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .list-group-item-text{margin-bottom:0;line-height:1.3}#bookly-tbs .panel{margin-bottom:21px;background-color:#fff;border:2px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .panel-body{padding:15px}#bookly-tbs .panel-heading{padding:15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bookly-tbs .panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}#bookly-tbs .panel-title>.small,#bookly-tbs .panel-title>.small>a,#bookly-tbs .panel-title>a,#bookly-tbs .panel-title>small,#bookly-tbs .panel-title>small>a{color:inherit}#bookly-tbs .panel-footer{padding:15px;background-color:#e8ebf0;border-top:1px solid #e8ebf0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.list-group,#bookly-tbs .panel>.panel-collapse>.list-group{margin-bottom:0}#bookly-tbs .panel>.list-group .list-group-item,#bookly-tbs .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bookly-tbs .panel>.list-group:first-child .list-group-item:first-child,#bookly-tbs .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.list-group:last-child .list-group-item:last-child,#bookly-tbs .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bookly-tbs .list-group+.panel-footer{border-top-width:0}#bookly-tbs .panel>.panel-collapse>.table,#bookly-tbs .panel>.table,#bookly-tbs .panel>.table-responsive>.table{margin-bottom:0}#bookly-tbs .panel>.panel-collapse>.table caption,#bookly-tbs .panel>.table caption,#bookly-tbs .panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child,#bookly-tbs .panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child,#bookly-tbs .panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bookly-tbs .panel>.panel-body+.table,#bookly-tbs .panel>.panel-body+.table-responsive,#bookly-tbs .panel>.table+.panel-body,#bookly-tbs .panel>.table-responsive+.panel-body{border-top:1px solid #d9dee4}#bookly-tbs .panel>.table>tbody:first-child>tr:first-child td,#bookly-tbs .panel>.table>tbody:first-child>tr:first-child th{border-top:0}#bookly-tbs .panel>.table-bordered,#bookly-tbs .panel>.table-responsive>.table-bordered{border:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bookly-tbs .panel>.table-responsive{margin-bottom:0;border:0}#bookly-tbs .panel-group{margin-bottom:21px}#bookly-tbs .panel-group .panel{margin-bottom:0;border-radius:4px}#bookly-tbs .panel-group .panel+.panel{margin-top:10px}#bookly-tbs .panel-group .panel-heading{border-bottom:0}#bookly-tbs .panel-group .panel-heading+.panel-collapse>.list-group,#bookly-tbs .panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #e8ebf0}#bookly-tbs .panel-group .panel-footer{border-top:0}#bookly-tbs .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #e8ebf0}#bookly-tbs .panel-default{border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading{color:#3e424a;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading .badge{color:#e8ebf0;background-color:#3e424a}#bookly-tbs .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e8ebf0}#bookly-tbs .panel-primary{border-color:#08c}#bookly-tbs .panel-primary>.panel-heading{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#08c}#bookly-tbs .panel-primary>.panel-heading .badge{color:#08c;background-color:#fff}#bookly-tbs .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#08c}#bookly-tbs .panel-success{border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}#bookly-tbs .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}#bookly-tbs .panel-info{border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}#bookly-tbs .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}#bookly-tbs .panel-warning{border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}#bookly-tbs .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}#bookly-tbs .panel-danger{border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}#bookly-tbs .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}#bookly-tbs .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bookly-tbs .embed-responsive .embed-responsive-item,#bookly-tbs .embed-responsive embed,#bookly-tbs .embed-responsive iframe,#bookly-tbs .embed-responsive object,#bookly-tbs .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bookly-tbs .embed-responsive-16by9{padding-bottom:56.25%}#bookly-tbs .embed-responsive-4by3{padding-bottom:75%}#bookly-tbs .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bookly-tbs .well-lg{padding:24px;border-radius:6px}#bookly-tbs .well-sm{padding:9px;border-radius:3px}#bookly-tbs .close{float:right;font-size:22.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}#bookly-tbs .close:focus,#bookly-tbs .close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}#bookly-tbs button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}#bookly-tbs .modal-open{overflow:hidden}#bookly-tbs .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bookly-tbs .modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}#bookly-tbs .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bookly-tbs .modal-dialog{position:relative;width:auto;margin:10px}#bookly-tbs .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}#bookly-tbs .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bookly-tbs .modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}#bookly-tbs .modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}#bookly-tbs .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bookly-tbs .modal-header .close{margin-top:-2px}#bookly-tbs .modal-title{margin:0;line-height:1.4}#bookly-tbs .modal-body{position:relative;padding:15px}#bookly-tbs .modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}#bookly-tbs .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bookly-tbs .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bookly-tbs .modal-footer .btn-block+.btn-block{margin-left:0}#bookly-tbs .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bookly-tbs .modal-dialog{width:600px;margin:30px auto}#bookly-tbs .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bookly-tbs .modal-sm{width:300px}}@media (min-width:992px){#bookly-tbs .modal-lg{width:900px}}#bookly-tbs .tooltip{position:absolute;z-index:1070;display:block;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:13px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}#bookly-tbs .tooltip.in{filter:alpha(opacity=90);opacity:.9}#bookly-tbs .tooltip.top{padding:5px 0;margin-top:-3px}#bookly-tbs .tooltip.right{padding:0 5px;margin-left:3px}#bookly-tbs .tooltip.bottom{padding:5px 0;margin-top:3px}#bookly-tbs .tooltip.left{padding:0 5px;margin-left:-3px}#bookly-tbs .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bookly-tbs .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bookly-tbs .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bookly-tbs .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:600px;padding:1px;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}#bookly-tbs .popover.top{margin-top:-10px}#bookly-tbs .popover.right{margin-left:10px}#bookly-tbs .popover.bottom{margin-top:10px}#bookly-tbs .popover.left{margin-left:-10px}#bookly-tbs .popover-title{padding:8px 14px;margin:0;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bookly-tbs .popover-content{padding:14px 20px}#bookly-tbs .popover>.popover-arrow,#bookly-tbs .popover>.popover-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .popover>.popover-arrow{border-width:11px}#bookly-tbs .popover>.popover-arrow:after{content:"";border-width:10px}#bookly-tbs .popover.top>.popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bookly-tbs .popover.top>.popover-arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bookly-tbs .popover.right>.popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bookly-tbs .popover.right>.popover-arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bookly-tbs .popover.bottom>.popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bookly-tbs .popover.bottom>.popover-arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bookly-tbs .popover.left>.popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bookly-tbs .popover.left>.popover-arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bookly-tbs .carousel{position:relative}#bookly-tbs .carousel-inner{position:relative;width:100%;overflow:hidden}#bookly-tbs .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){#bookly-tbs .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}#bookly-tbs .carousel-inner>.item.active.right,#bookly-tbs .carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}#bookly-tbs .carousel-inner>.item.active.left,#bookly-tbs .carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#bookly-tbs .carousel-inner>.item.active,#bookly-tbs .carousel-inner>.item.next.left,#bookly-tbs .carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}#bookly-tbs .carousel-inner>.active,#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{display:block}#bookly-tbs .carousel-inner>.active{left:0}#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{position:absolute;top:0;width:100%}#bookly-tbs .carousel-inner>.next{left:100%}#bookly-tbs .carousel-inner>.prev{left:-100%}#bookly-tbs .carousel-inner>.next.left,#bookly-tbs .carousel-inner>.prev.right{left:0}#bookly-tbs .carousel-inner>.active.left{left:-100%}#bookly-tbs .carousel-inner>.active.right{left:100%}#bookly-tbs .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}#bookly-tbs .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control:focus,#bookly-tbs .carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{left:50%;margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{right:50%;margin-right:-10px}#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}#bookly-tbs .carousel-control .icon-prev:before{content:'\2039'}#bookly-tbs .carousel-control .icon-next:before{content:'\203a'}#bookly-tbs .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bookly-tbs .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bookly-tbs .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bookly-tbs .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bookly-tbs .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{margin-right:-10px}#bookly-tbs .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bookly-tbs .carousel-indicators{bottom:20px}}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-group-vertical>.btn-group:before,#bookly-tbs .btn-toolbar:after,#bookly-tbs .btn-toolbar:before,#bookly-tbs .clearfix:after,#bookly-tbs .clearfix:before,#bookly-tbs .container-fluid:after,#bookly-tbs .container-fluid:before,#bookly-tbs .container:after,#bookly-tbs .container:before,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .dl-horizontal dd:before,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .form-horizontal .form-group:before,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-footer:before,#bookly-tbs .modal-header:after,#bookly-tbs .modal-header:before,#bookly-tbs .nav:after,#bookly-tbs .nav:before,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-collapse:before,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar-header:before,#bookly-tbs .navbar:after,#bookly-tbs .navbar:before,#bookly-tbs .pager:after,#bookly-tbs .pager:before,#bookly-tbs .panel-body:after,#bookly-tbs .panel-body:before,#bookly-tbs .row:after,#bookly-tbs .row:before{display:table;content:" "}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-toolbar:after,#bookly-tbs .clearfix:after,#bookly-tbs .container-fluid:after,#bookly-tbs .container:after,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-header:after,#bookly-tbs .nav:after,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar:after,#bookly-tbs .pager:after,#bookly-tbs .panel-body:after,#bookly-tbs .row:after{clear:both}#bookly-tbs .center-block{display:block;margin-right:auto;margin-left:auto}#bookly-tbs .pull-right{float:right!important}#bookly-tbs .pull-left{float:left!important}#bookly-tbs .hide{display:none!important}#bookly-tbs .show{display:block!important}#bookly-tbs .invisible{visibility:hidden}#bookly-tbs .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .hidden{display:none!important}#bookly-tbs .affix{position:fixed}@-ms-viewport{width:device-width}#bookly-tbs .visible-lg,#bookly-tbs .visible-md,#bookly-tbs .visible-sm,#bookly-tbs .visible-xs{display:none!important}#bookly-tbs .visible-lg-block,#bookly-tbs .visible-lg-inline,#bookly-tbs .visible-lg-inline-block,#bookly-tbs .visible-md-block,#bookly-tbs .visible-md-inline,#bookly-tbs .visible-md-inline-block,#bookly-tbs .visible-sm-block,#bookly-tbs .visible-sm-inline,#bookly-tbs .visible-sm-inline-block,#bookly-tbs .visible-xs-block,#bookly-tbs .visible-xs-inline,#bookly-tbs .visible-xs-inline-block{display:none!important}@media (max-width:767px){#bookly-tbs .visible-xs{display:block!important}#bookly-tbs table.visible-xs{display:table!important}#bookly-tbs tr.visible-xs{display:table-row!important}#bookly-tbs td.visible-xs,#bookly-tbs th.visible-xs{display:table-cell!important}}@media (max-width:767px){#bookly-tbs .visible-xs-block{display:block!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline{display:inline!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm{display:block!important}#bookly-tbs table.visible-sm{display:table!important}#bookly-tbs tr.visible-sm{display:table-row!important}#bookly-tbs td.visible-sm,#bookly-tbs th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md{display:block!important}#bookly-tbs table.visible-md{display:table!important}#bookly-tbs tr.visible-md{display:table-row!important}#bookly-tbs td.visible-md,#bookly-tbs th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg{display:block!important}#bookly-tbs table.visible-lg{display:table!important}#bookly-tbs tr.visible-lg{display:table-row!important}#bookly-tbs td.visible-lg,#bookly-tbs th.visible-lg{display:table-cell!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-block{display:block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline{display:inline!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){#bookly-tbs .hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .hidden-md{display:none!important}}@media (min-width:1200px){#bookly-tbs .hidden-lg{display:none!important}}#bookly-tbs .visible-print{display:none!important}@media print{#bookly-tbs .visible-print{display:block!important}#bookly-tbs table.visible-print{display:table!important}#bookly-tbs tr.visible-print{display:table-row!important}#bookly-tbs td.visible-print,#bookly-tbs th.visible-print{display:table-cell!important}}#bookly-tbs .visible-print-block{display:none!important}@media print{#bookly-tbs .visible-print-block{display:block!important}}#bookly-tbs .visible-print-inline{display:none!important}@media print{#bookly-tbs .visible-print-inline{display:inline!important}}#bookly-tbs .visible-print-inline-block{display:none!important}@media print{#bookly-tbs .visible-print-inline-block{display:inline-block!important}}@media print{#bookly-tbs .hidden-print{display:none!important}}#bookly-tbs [class*=block-grid-]{padding:0;margin:0;list-style:none;border:1px solid transparent;border-width:1px 0 0 1px}#bookly-tbs [class*=block-grid-]>*{display:block;float:left;height:auto;text-align:center;border:1px solid inherit;border-width:0 1px 1px 0}#bookly-tbs [class*=block-grid-]:after,#bookly-tbs [class*=block-grid-]:before{display:table;content:" "}#bookly-tbs .block-grid-16>:nth-of-type(16n+1),#bookly-tbs [class*=block-grid-]:after{clear:both}#bookly-tbs .block-grid-16>*{width:6.25%;line-height:49px}#bookly-tbs .btn-group-justified>.btn-group:not(:first-child) .btn,#bookly-tbs .btn-group-justified>.btn:not(:first-child){border-left:0}#bookly-tbs .btn-default-outline{color:#5b6470;background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline.focus,#bookly-tbs .btn-default-outline:focus{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active.focus,#bookly-tbs .btn-default-outline.active:focus,#bookly-tbs .btn-default-outline.active:hover,#bookly-tbs .btn-default-outline:active.focus,#bookly-tbs .btn-default-outline:active:focus,#bookly-tbs .btn-default-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-default-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{background-image:none}#bookly-tbs .btn-default-outline.disabled.focus,#bookly-tbs .btn-default-outline.disabled:focus,#bookly-tbs .btn-default-outline.disabled:hover,#bookly-tbs .btn-default-outline[disabled].focus,#bookly-tbs .btn-default-outline[disabled]:focus,#bookly-tbs .btn-default-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-default-outline.focus,fieldset[disabled] #bookly-tbs .btn-default-outline:focus,fieldset[disabled] #bookly-tbs .btn-default-outline:hover{background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline .badge{color:transparent;background-color:#5b6470}#bookly-tbs .btn-primary-outline{color:#08c;background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline.focus,#bookly-tbs .btn-primary-outline:focus{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active.focus,#bookly-tbs .btn-primary-outline.active:focus,#bookly-tbs .btn-primary-outline.active:hover,#bookly-tbs .btn-primary-outline:active.focus,#bookly-tbs .btn-primary-outline:active:focus,#bookly-tbs .btn-primary-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{background-image:none}#bookly-tbs .btn-primary-outline.disabled.focus,#bookly-tbs .btn-primary-outline.disabled:focus,#bookly-tbs .btn-primary-outline.disabled:hover,#bookly-tbs .btn-primary-outline[disabled].focus,#bookly-tbs .btn-primary-outline[disabled]:focus,#bookly-tbs .btn-primary-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-primary-outline.focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:hover{background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline .badge{color:transparent;background-color:#08c}#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline.focus,#bookly-tbs .btn-success-outline:focus{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active.focus,#bookly-tbs .btn-success-outline.active:focus,#bookly-tbs .btn-success-outline.active:hover,#bookly-tbs .btn-success-outline:active.focus,#bookly-tbs .btn-success-outline:active:focus,#bookly-tbs .btn-success-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-success-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{background-image:none}#bookly-tbs .btn-success-outline.disabled.focus,#bookly-tbs .btn-success-outline.disabled:focus,#bookly-tbs .btn-success-outline.disabled:hover,#bookly-tbs .btn-success-outline[disabled].focus,#bookly-tbs .btn-success-outline[disabled]:focus,#bookly-tbs .btn-success-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-success-outline.focus,fieldset[disabled] #bookly-tbs .btn-success-outline:focus,fieldset[disabled] #bookly-tbs .btn-success-outline:hover{background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline .badge{color:transparent;background-color:#5cb85c}#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline.focus,#bookly-tbs .btn-info-outline:focus{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active.focus,#bookly-tbs .btn-info-outline.active:focus,#bookly-tbs .btn-info-outline.active:hover,#bookly-tbs .btn-info-outline:active.focus,#bookly-tbs .btn-info-outline:active:focus,#bookly-tbs .btn-info-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-info-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{background-image:none}#bookly-tbs .btn-info-outline.disabled.focus,#bookly-tbs .btn-info-outline.disabled:focus,#bookly-tbs .btn-info-outline.disabled:hover,#bookly-tbs .btn-info-outline[disabled].focus,#bookly-tbs .btn-info-outline[disabled]:focus,#bookly-tbs .btn-info-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-info-outline.focus,fieldset[disabled] #bookly-tbs .btn-info-outline:focus,fieldset[disabled] #bookly-tbs .btn-info-outline:hover{background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline .badge{color:transparent;background-color:#5bc0de}#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline.focus,#bookly-tbs .btn-warning-outline:focus{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active.focus,#bookly-tbs .btn-warning-outline.active:focus,#bookly-tbs .btn-warning-outline.active:hover,#bookly-tbs .btn-warning-outline:active.focus,#bookly-tbs .btn-warning-outline:active:focus,#bookly-tbs .btn-warning-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{background-image:none}#bookly-tbs .btn-warning-outline.disabled.focus,#bookly-tbs .btn-warning-outline.disabled:focus,#bookly-tbs .btn-warning-outline.disabled:hover,#bookly-tbs .btn-warning-outline[disabled].focus,#bookly-tbs .btn-warning-outline[disabled]:focus,#bookly-tbs .btn-warning-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-warning-outline.focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:hover{background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline .badge{color:transparent;background-color:#f0ad4e}#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline.focus,#bookly-tbs .btn-danger-outline:focus{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active.focus,#bookly-tbs .btn-danger-outline.active:focus,#bookly-tbs .btn-danger-outline.active:hover,#bookly-tbs .btn-danger-outline:active.focus,#bookly-tbs .btn-danger-outline:active:focus,#bookly-tbs .btn-danger-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{background-image:none}#bookly-tbs .btn-danger-outline.disabled.focus,#bookly-tbs .btn-danger-outline.disabled:focus,#bookly-tbs .btn-danger-outline.disabled:hover,#bookly-tbs .btn-danger-outline[disabled].focus,#bookly-tbs .btn-danger-outline[disabled]:focus,#bookly-tbs .btn-danger-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-danger-outline.focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:hover{background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline .badge{color:transparent;background-color:#d9534f}#bookly-tbs .btn-xlg{padding:11px 22px;font-size:15px;line-height:1.9;border-radius:4px}#bookly-tbs .callout{padding:10px;margin:21px 0;border:1px solid #e8ebf0;border-left-width:4px;border-radius:4px}#bookly-tbs .callout .callout-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .callout p:last-child{margin-bottom:0}#bookly-tbs .callout+#bookly-tbs .callout{margin-top:-5px}#bookly-tbs .callout.callout-danger{border-left-color:#d9534f}#bookly-tbs .callout.callout-danger .callout-heading{color:#a94442}#bookly-tbs .callout.callout-warning{border-left-color:#f0ad4e}#bookly-tbs .callout.callout-warning .callout-heading{color:#8a6d3b}#bookly-tbs .callout.callout-info{border-left-color:#5bc0de}#bookly-tbs .callout.callout-info .callout-heading{color:#31708f}#bookly-tbs .close{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}#bookly-tbs .caret{margin-bottom:2px}#bookly-tbs .checkbox,#bookly-tbs .radio{line-height:1.4}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{width:16px;height:16px}#bookly-tbs input[type=checkbox]:checked:before{margin:-3px 0 0 -4px;font:400 21px/1 dashicons}#bookly-tbs input[type=radio]:checked:before{width:8px;height:8px;margin:3px}#bookly-tbs input[type=checkbox]:not(:checked)+.bookly-toggle-label,#bookly-tbs input[type=radio]:not(:checked)+.bookly-toggle-label{color:#8a929e}#bookly-tbs select.form-control{z-index:5;height:36px;-webkit-appearance:none;padding-right:22px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:-webkit-calc(100% - 4px) 50%;background-position:calc(100% - 4px) 50%;-webkit-background-size:24px 24px;background-size:24px 24px;-moz-appearance:none;appearance:none}@media screen and (min-width:0\0){#bookly-tbs select.form-control{padding:5px}}#bookly-tbs select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}#bookly-tbs .form-horizontal .form-inline .checkbox-inline,#bookly-tbs .form-horizontal .form-inline .radio-inline{padding-top:0}#bookly-tbs .form-horizontal .form-group .help-block{margin-bottom:0}#bookly-tbs button:active,#bookly-tbs button:focus,#bookly-tbs button:hover,#bookly-tbs input:active,#bookly-tbs input:focus,#bookly-tbs input:hover,#bookly-tbs textarea:active,#bookly-tbs textarea:focus,#bookly-tbs textarea:hover{outline:0}#bookly-tbs .help-block{margin-top:0;font-size:13px;line-height:1.3}#bookly-tbs .bookly-pretty input[type=file]{position:absolute;top:0;left:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;opacity:0}#bookly-tbs .bookly-pretty input[type=file]~.bookly-pretty-indicator{display:inline-block;font-weight:400}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{border-right:0}#bookly-tbs .input-group-btn:first-child>.btn:last-child{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{border-left:0}#bookly-tbs .list-group-item .badge{margin-top:2px}#bookly-tbs .navbar-nav>li>.dropdown-menu{border-top-width:0}#bookly-tbs .navbar-text{line-height:21px}#bookly-tbs .nav-tabs>li{margin-bottom:0}#bookly-tbs .nav-tabs>li>a{margin-right:0;color:#8a929e;border:0}#bookly-tbs .nav-tabs>li>a:after{position:absolute;right:0;bottom:0;left:0;width:100%;height:0;content:" ";border-bottom:3px solid transparent}#bookly-tbs .nav-tabs>li>a:focus,#bookly-tbs .nav-tabs>li>a:hover{background-color:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .nav-tabs>li>a:focus:after,#bookly-tbs .nav-tabs>li>a:hover:after{border-bottom-color:#d9dee4}#bookly-tbs .nav-tabs.nav-justified>li.active>a,#bookly-tbs .nav-tabs.nav-justified>li.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>li.active>a:hover,#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#08c;border-width:0 0 1px 0}#bookly-tbs .nav-tabs.nav-justified>li.active>a:after,#bookly-tbs .nav-tabs>li.active>a:after{border-bottom-color:#08c}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:0}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{line-height:1.4;color:#5b6470}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{color:#8a929e}#bookly-tbs .panel{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .panel>.panel-collapse>.table td,#bookly-tbs .panel>.panel-collapse>.table th,#bookly-tbs .panel>.table td,#bookly-tbs .panel>.table th,#bookly-tbs .panel>.table-responsive>.table td,#bookly-tbs .panel>.table-responsive>.table th{border-color:#d9dee4}#bookly-tbs .panel-title{font-weight:700;line-height:1.5}#bookly-tbs .btn.btn-pill{border-radius:24px}#bookly-tbs .btn.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .btn.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .form-control.input-pill{border-radius:24px}#bookly-tbs .form-control.input-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .form-control.input-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .label.label-pill{border-radius:.9em}#bookly-tbs .label.label-pill-left{border-top-left-radius:.9em;border-bottom-left-radius:.9em}#bookly-tbs .label.label-pill-right{border-top-right-radius:.9em;border-bottom-right-radius:.9em}#bookly-tbs .progress-lg{height:42px;border-radius:6px}#bookly-tbs .progress-lg .progress-bar{line-height:42px}#bookly-tbs .progress-sm{height:10.5px;border-radius:3px}#bookly-tbs .progress-sm .progress-bar{line-height:10.5px}#bookly-tbs .progress-xs{height:5.25px;border-radius:3px}#bookly-tbs .progress-xs .progress-bar{line-height:5.25px}#bookly-tbs a:focus,#bookly-tbs a:hover{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .social-behance{color:#1769ff!important}#bookly-tbs .social-fivehundredpix{color:#0a0100!important}#bookly-tbs .social-dribbble{color:#ea4c89!important}#bookly-tbs .social-dropbox{color:#1f8ce6!important}#bookly-tbs .social-email{color:#7f7f7f!important}#bookly-tbs .social-facebook{color:#3b5998!important}#bookly-tbs .social-flickr{color:#ff0084!important}#bookly-tbs .social-foursquare{color:#0072b1!important}#bookly-tbs .social-github{color:#4183c4!important}#bookly-tbs .social-google{color:#dd4b39!important}#bookly-tbs .social-instagram{color:#517fa4!important}#bookly-tbs .social-linkedin{color:#007bb6!important}#bookly-tbs .social-pinterest{color:#cb2027!important}#bookly-tbs .social-skype{color:#00aff0!important}#bookly-tbs .social-smugmug{color:#8cca1e!important}#bookly-tbs .social-tumblr{color:#32506d!important}#bookly-tbs .social-twitter{color:#00aced!important}#bookly-tbs .social-vimeo{color:#1ab7ea!important}#bookly-tbs .social-vk{color:#45668e!important}#bookly-tbs .social-youtube{color:#f33!important}#bookly-tbs .social-behance:hover{color:#4a8aff!important}#bookly-tbs .social-fivehundredpix:hover{color:#3d0600!important}#bookly-tbs .social-dribbble:hover{color:#ef7aa7!important}#bookly-tbs .social-dropbox:hover{color:#4da4eb!important}#bookly-tbs .social-email:hover{color:#999!important}#bookly-tbs .social-facebook:hover{color:#4c70ba!important}#bookly-tbs .social-flickr:hover{color:#ff339d!important}#bookly-tbs .social-foursquare:hover{color:#0093e4!important}#bookly-tbs .social-github:hover{color:#689cd0!important}#bookly-tbs .social-google:hover{color:#e47365!important}#bookly-tbs .social-instagram:hover{color:#7098b8!important}#bookly-tbs .social-linkedin:hover{color:#009de9!important}#bookly-tbs .social-pinterest:hover{color:#e03e44!important}#bookly-tbs .social-skype:hover{color:#24c4ff!important}#bookly-tbs .social-smugmug:hover{color:#a5e239!important}#bookly-tbs .social-tumblr:hover{color:#426a90!important}#bookly-tbs .social-twitter:hover{color:#21c2ff!important}#bookly-tbs .social-vimeo:hover{color:#49c6ee!important}#bookly-tbs .social-vk:hover{color:#587fae!important}#bookly-tbs .social-youtube:hover{color:#f66!important}#bookly-tbs .thumbnail{overflow:auto;-webkit-box-shadow:inset 0 0 0 2px #e8ebf0;box-shadow:inset 0 0 0 2px #e8ebf0}#bookly-tbs .thumbnail .caption p:last-child{margin-bottom:0}#bookly-tbs .thumbnail .caption .heading{margin:0 0 5px}#bookly-tbs blockquote p{font-family:georgia,"times new roman",times,serif;font-size:18px}#bookly-tbs p{font-size:15px}#bookly-tbs .bookly-letter-spacing-sm{letter-spacing:.05em}#bookly-tbs .bookly-letter-spacing-md{letter-spacing:.1em}#bookly-tbs .bookly-letter-spacing-lg{letter-spacing:.2em}#bookly-tbs .bookly-line-height-sm{line-height:1.53846154}#bookly-tbs .bookly-line-height-base{line-height:1.4}#bookly-tbs .bookly-line-height-lg{line-height:1.3333333}#bookly-tbs .bookly-line-height-computed{line-height:21px}#bookly-tbs .bookly-font-xs{font-size:12px}#bookly-tbs .bookly-font-sm{font-size:14px}#bookly-tbs .bookly-font-md{font-size:15px}#bookly-tbs .bookly-font-lg{font-size:20px}#bookly-tbs .bookly-font-smaller{font-size:13px;text-transform:uppercase}#bookly-tbs .bookly-font-lighter{font-weight:lighter}#bookly-tbs .bookly-font-normal{font-weight:400}#bookly-tbs .bookly-font-bold{font-weight:700}#bookly-tbs .bookly-font-serif{font-family:georgia,"times new roman",times,serif}#bookly-tbs .bookly-font-italic{font-style:italic}#bookly-tbs .bookly-text-wrap{word-wrap:break-word;white-space:normal}#bookly-tbs .bookly-inline{display:inline}#bookly-tbs .bookly-bl-ock{display:block}#bookly-tbs .bookly-inline-block{display:inline-block}#bookly-tbs .bookly-nowrap{white-space:nowrap}#bookly-tbs .bookly-break-word{word-wrap:break-word}#bookly-tbs .bookly-truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{position:absolute}#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{top:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right{bottom:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-top-left{left:0}#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-right{right:0}#bookly-tbs .bookly-relative{position:relative}#bookly-tbs .bookly-fixed{position:fixed}#bookly-tbs .bookly-vertical-top{vertical-align:top}#bookly-tbs .bookly-vertical-middle{vertical-align:middle}#bookly-tbs .bookly-vertical-bottom{vertical-align:bottom}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-left-remove,#bookly-tbs .bookly-margin-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-right-remove{margin-right:0!important}#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-top-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-left-xs,#bookly-tbs .bookly-margin-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-right-xs,#bookly-tbs .bookly-margin-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-top-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-left-sm,#bookly-tbs .bookly-margin-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-right-sm,#bookly-tbs .bookly-margin-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-top-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-sm,#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-left-md,#bookly-tbs .bookly-margin-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-right-md{margin-right:12px!important}#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-top-md,#bookly-tbs .bookly-margin-vertical-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-vertical-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-left-lg,#bookly-tbs .bookly-margin-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-right-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-top-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-left-xlg,#bookly-tbs .bookly-margin-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-right-xlg,#bookly-tbs .bookly-margin-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-top-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-bottom:32px!important}@media (max-width:767px){#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-left-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-right-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-top-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-left-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-right-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-top-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-left-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-right-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-top-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-left-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-right-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-top-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-left-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-right-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-top-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-left-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-right-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-top-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-bottom:32px!important}}@media (min-width:768px){#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-left-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-right-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-top-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-left-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-right-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-top-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-left-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-right-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-top-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-left-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-right-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-top-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screensm-md,#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-left-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-right-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-top-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-left-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-right-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-top-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-bottom:32px!important}}@media (min-width:992px){#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-left-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-right-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-top-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-left-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-right-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-top-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-left-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-right-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-top-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-left-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-right-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-top-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-left-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-right-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-top-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-left-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-right-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-top-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-bottom:32px!important}}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-left-remove,#bookly-tbs .bookly-padding-remove{padding-left:0!important}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-right-remove{padding-right:0!important}#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-top-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-top:0!important}#bookly-tbs .bookly-padding-bottom-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-bottom:0!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-left-xs,#bookly-tbs .bookly-padding-xs{padding-left:5px!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-right-xs,#bookly-tbs .bookly-padding-xs{padding-right:5px!important}#bookly-tbs .bookly-padding-top-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-top:5px!important}#bookly-tbs .bookly-padding-bottom-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-bottom:5px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-left-sm,#bookly-tbs .bookly-padding-sm{padding-left:10px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-right-sm,#bookly-tbs .bookly-padding-sm{padding-right:10px!important}#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-top-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-top:10px!important}#bookly-tbs .bookly-padding-bottom-sm,#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-bottom:10px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-left-md,#bookly-tbs .bookly-padding-md{padding-left:12px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-right-md{padding-right:12px!important}#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-top-md,#bookly-tbs .bookly-padding-vertical-md{padding-top:12px!important}#bookly-tbs .bookly-padding-bottom-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-vertical-md{padding-bottom:12px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-left-lg,#bookly-tbs .bookly-padding-lg{padding-left:16px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-right-lg{padding-right:16px!important}#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-top-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-top:16px!important}#bookly-tbs .bookly-padding-bottom-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-bottom:16px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-left-xlg,#bookly-tbs .bookly-padding-xlg{padding-left:32px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-right-xlg,#bookly-tbs .bookly-padding-xlg{padding-right:32px!important}#bookly-tbs .bookly-padding-top-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-top:32px!important}#bookly-tbs .bookly-padding-bottom-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-bottom:32px!important}#bookly-tbs .bookly-flexbox{display:table;width:100%;max-width:100%;height:100%}#bookly-tbs .bookly-flexbox .bookly-flex-row{display:table-row}#bookly-tbs .bookly-flexbox .bookly-flex-cell{display:table-cell;height:100%;word-wrap:break-word}@media (min-width:992px){#bookly-tbs .bookly-flexbox .bookly-flex-cell-sm{display:table-cell;height:100%;word-wrap:break-word}}#bookly-tbs .bookly-bg-transparent{background-color:transparent}#bookly-tbs .bookly-bg-white{background-color:#fff}#bookly-tbs .bookly-color-white{color:#fff}#bookly-tbs .bookly-bg-black{background-color:#000}#bookly-tbs .bookly-color-black{color:#000}#bookly-tbs .bookly-bg-gray{background-color:#8a929e}#bookly-tbs .bookly-color-gray{color:#8a929e}#bookly-tbs .bookly-bg-light{background-color:#d9dee4}#bookly-tbs .bookly-color-light{color:#d9dee4}#bookly-tbs .bookly-bg-brand-primary{background-color:#08c}#bookly-tbs .bookly-color-brand-primary{color:#08c}#bookly-tbs .bookly-bg-brand-success{background-color:#5cb85c}#bookly-tbs .bookly-color-brand-success{color:#5cb85c}#bookly-tbs .bookly-bg-brand-info{background-color:#5bc0de}#bookly-tbs .bookly-color-brand-info{color:#5bc0de}#bookly-tbs .bookly-bg-brand-warning{background-color:#f0ad4e}#bookly-tbs .bookly-color-brand-warning{color:#f0ad4e}#bookly-tbs .bookly-bg-brand-danger{background-color:#d9534f}#bookly-tbs .bookly-color-brand-danger{color:#d9534f}#bookly-tbs .bookly-cursor-pointer{cursor:pointer}#bookly-tbs .bookly-cursor-move{cursor:move}@media (max-width:767px){#bookly-tbs .bookly-text-xs-center{text-align:center!important}#bookly-tbs .bookly-text-xs-left{text-align:left!important}#bookly-tbs .bookly-text-xs-right{text-align:right!important}#bookly-tbs .bookly-btn-block-xs{display:block;width:100%}}#bookly-tbs table.dataTable{max-width:none!important;margin-top:6px!important;margin-bottom:6px!important;clear:both;border-collapse:separate!important}#bookly-tbs table.dataTable td,#bookly-tbs table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs table.dataTable td.dataTables_empty,#bookly-tbs table.dataTable th.dataTables_empty{text-align:center}#bookly-tbs table.dataTable.nowrap td,#bookly-tbs table.dataTable.nowrap th{white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length select{display:inline-block;width:75px}#bookly-tbs div.dataTables_wrapper div.dataTables_filter{text-align:right}#bookly-tbs div.dataTables_wrapper div.dataTables_filter label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_filter input{display:inline-block;width:auto;margin-left:.5em}#bookly-tbs div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{margin:0;text-align:right;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;padding:1em 0;margin-top:-26px;margin-left:-100px;text-align:center}#bookly-tbs table.dataTable thead>tr>td.sorting,#bookly-tbs table.dataTable thead>tr>td.sorting_asc,#bookly-tbs table.dataTable thead>tr>td.sorting_desc,#bookly-tbs table.dataTable thead>tr>th.sorting,#bookly-tbs table.dataTable thead>tr>th.sorting_asc,#bookly-tbs table.dataTable thead>tr>th.sorting_desc{padding-right:30px}#bookly-tbs table.dataTable thead>tr>td:active,#bookly-tbs table.dataTable thead>tr>th:active{outline:0}#bookly-tbs table.dataTable thead .sorting,#bookly-tbs table.dataTable thead .sorting_asc,#bookly-tbs table.dataTable thead .sorting_asc_disabled,#bookly-tbs table.dataTable thead .sorting_desc,#bookly-tbs table.dataTable thead .sorting_desc_disabled{position:relative;cursor:pointer}#bookly-tbs table.dataTable thead .sorting:after,#bookly-tbs table.dataTable thead .sorting_asc:after,#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{position:absolute;right:8px;bottom:-webkit-calc(50% - 9px);bottom:calc(50% - 9px);display:block;font-family:'Glyphicons Halflings';font-size:12px;opacity:.5}#bookly-tbs table.dataTable thead .sorting:after{content:"\e150";opacity:.2}#bookly-tbs table.dataTable thead .sorting_asc:after{content:"\e155"}#bookly-tbs table.dataTable thead .sorting_desc:after{content:"\e156"}#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{color:#eee}#bookly-tbs div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}#bookly-tbs div.dataTables_scrollBody table{margin-top:0!important;margin-bottom:0!important;border-top:none}#bookly-tbs div.dataTables_scrollBody table thead .sorting:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_asc:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_desc:after{display:none}#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child td,#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}#bookly-tbs div.dataTables_scrollFoot table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){#bookly-tbs div.dataTables_wrapper div.dataTables_filter,#bookly-tbs div.dataTables_wrapper div.dataTables_info,#bookly-tbs div.dataTables_wrapper div.dataTables_length,#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{text-align:center}}#bookly-tbs table.dataTable.table-condensed>thead>tr>th{padding-right:20px}#bookly-tbs table.dataTable.table-condensed .sorting:after,#bookly-tbs table.dataTable.table-condensed .sorting_asc:after,#bookly-tbs table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}#bookly-tbs table.table-bordered.dataTable td,#bookly-tbs table.table-bordered.dataTable th{border-left-width:0}#bookly-tbs table.table-bordered.dataTable td:last-child,#bookly-tbs table.table-bordered.dataTable th:last-child{border-right-width:0}#bookly-tbs table.table-bordered.dataTable tbody td,#bookly-tbs table.table-bordered.dataTable tbody th{border-bottom-width:0}#bookly-tbs div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row{margin:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}#bookly-tbs div.dt-button-info{position:fixed;top:50%;left:50%;z-index:21;width:400px;margin-top:-100px;margin-left:-200px;text-align:center;background-color:#fff;border:2px solid #111;border-radius:3px;-webkit-box-shadow:3px 3px 8px rgba(0,0,0,.3);box-shadow:3px 3px 8px rgba(0,0,0,.3)}#bookly-tbs div.dt-button-info h2{padding:.5em;margin:0;font-weight:400;background-color:#f3f3f3;border-bottom:1px solid #ddd}#bookly-tbs div.dt-button-info>div{padding:1em}#bookly-tbs ul.dt-button-collection.dropdown-menu{z-index:2002;display:block;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}#bookly-tbs ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}#bookly-tbs ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}#bookly-tbs ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}#bookly-tbs ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}#bookly-tbs div.dt-button-background{position:fixed;top:0;left:0;z-index:2001;width:100%;height:100%}@media screen and (max-width:767px){#bookly-tbs div.dt-buttons{float:none;width:100%;margin-bottom:.5em;text-align:center}#bookly-tbs div.dt-buttons a.btn{float:none}}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child{cursor:default!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before{display:none!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{position:absolute;top:9px;left:4px;display:block;width:18px;height:18px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;font-family:'Courier New',Courier,monospace;font-size:18px;font-weight:700;line-height:18px;color:#5b6470;text-align:center;content:'+';background-color:transparent;border:0;border-radius:18px;-webkit-box-shadow:0 0 2px #5b6470;box-shadow:0 0 2px #5b6470}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:transparent}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;width:14px;height:14px;line-height:14px;text-indent:3px;border-radius:14px}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control:before{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;margin-top:-10px;margin-left:-10px;font-family:'Courier New',Courier,monospace;line-height:14px;color:#fff;text-align:center;content:'+';background-color:#337ab7;border:2px solid #fff;border-radius:14px;-webkit-box-shadow:0 0 3px #444;box-shadow:0 0 3px #444}#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}#bookly-tbs table.dataTable>tbody>tr.child{padding:.5em 1em}#bookly-tbs table.dataTable>tbody>tr.child:hover{background:0 0!important}#bookly-tbs table.dataTable>tbody>tr.child ul{display:inline-block;width:100%;padding:0;margin:0;list-style-type:none}#bookly-tbs table.dataTable>tbody>tr.child ul li{padding:.3em 0;margin-bottom:.3em;border-bottom:1px solid #efefef}#bookly-tbs table.dataTable>tbody>tr.child ul li:first-child{padding-top:0}#bookly-tbs table.dataTable>tbody>tr.child ul li:last-child{border-bottom:none}#bookly-tbs table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:700}#bookly-tbs div.dtr-modal{position:fixed;top:0;left:0;z-index:100;width:100%;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10em 1em}#bookly-tbs div.dtr-modal div.dtr-modal-display{position:absolute;top:0;right:0;bottom:0;left:0;z-index:102;width:50%;height:50%;margin:auto;overflow:auto;background-color:#f5f5f7;border:1px solid #000;border-radius:.5em;-webkit-box-shadow:0 12px 30px rgba(0,0,0,.6);box-shadow:0 12px 30px rgba(0,0,0,.6)}#bookly-tbs div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}#bookly-tbs div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;z-index:12;width:22px;height:22px;text-align:center;cursor:pointer;background-color:#f9f9f9;border:1px solid #eaeaea;border-radius:3px}#bookly-tbs div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}#bookly-tbs div.dtr-modal div.dtr-modal-background{position:fixed;top:0;right:0;bottom:0;left:0;z-index:101;background:rgba(0,0,0,.6)}@media screen and (max-width:767px){#bookly-tbs div.dtr-modal div.dtr-modal-display{width:95%}}#bookly-tbs div.dtr-bs-modal table.table tr:first-child td{border-top:none}#bookly-tbs table.dt-rowReorder-float{position:absolute!important;z-index:2001;table-layout:fixed;outline:2px solid #337ab7;outline-offset:-2px;opacity:.8}#bookly-tbs tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}#bookly-tbs body.dt-rowReorder-noOverflow{overflow-x:hidden}#bookly-tbs table.dataTable td.reorder{text-align:center;cursor:move}#bookly-tbs .jCal-wrap{margin-right:-10px;margin-left:-10px}#bookly-tbs .jCal{position:relative;width:100%}#bookly-tbs .jCalMo{position:relative;display:block;padding:0 15px;margin-bottom:15px;white-space:nowrap}@media (min-width:768px){#bookly-tbs .jCalMo{height:257px}}#bookly-tbs .jCal .month,#bookly-tbs .jCal .monthName,#bookly-tbs .jCal .monthSelect,#bookly-tbs .jCal .monthYear{float:left}#bookly-tbs .jCal .monthName{width:100%;padding:10px 0;font-weight:700;text-align:center}#bookly-tbs .jCal .monthYear{float:right;text-align:left}#bookly-tbs .jCal .month{width:100%}#bookly-tbs .jCal .monthSelect{background:#e8ebf0}#bookly-tbs .jCal .monthSelector{position:absolute}#bookly-tbs .jCal .monthSelectorShadow{position:absolute;padding:0;background:#8a929e}#bookly-tbs .jCal .monthNameHover,#bookly-tbs .jCal .monthYearHover{color:#8a929e;background:#e8ebf0}#bookly-tbs .jCal .monthSelectHover{color:#fff;background:#08c}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .day,#bookly-tbs .jCalMo .dow,#bookly-tbs .jCalMo .invday,#bookly-tbs .jCalMo .overDay,#bookly-tbs .jCalMo .pday,#bookly-tbs .jCalMo .selectedDay{position:relative;float:left;width:-webkit-calc(14.2857% + 1px);width:calc(14.2857% + 1px);margin-right:-1px;text-align:center;cursor:default;border:1px solid #e8ebf0;border-width:0 1px 1px 1px}#bookly-tbs .jCalMo .dow{font-size:12px;line-height:30px;background:#e8ebf0;border-bottom:0}#bookly-tbs .jCalMo .day{font-size:13px;line-height:30px;cursor:pointer;background:#fff}#bookly-tbs .jCalMo .invday{color:#8a929e;text-decoration:line-through;background:#e8ebf0}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .pday{font-size:13px;line-height:30px;color:#d9dee4;background:rgba(232,235,240,.3)}#bookly-tbs .jCalMo .overDay{color:#3e424a;background:rgba(0,136,204,.2)}#bookly-tbs .jCalMo .holidayDay{color:#fff;background:#f0ad4e}#bookly-tbs .jCalMo .holidayDay.repeatDay{color:#fff;background:#d9534f}#bookly-tbs .jCalMo .selectedDay,#bookly-tbs .jCalMo .selectedDay.repeatDay{color:#fff;background:#08c}#bookly-tbs .jCal .left,#bookly-tbs .jCal .right{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .jCalMask,#bookly-tbs .jCalMove{position:absolute;width:700px;height:930px;overflow:hidden}@media (min-width:768px){#bookly-tbs .jCalMo{float:left;width:50%}}@media (min-width:1200px){#bookly-tbs .jCalMo{float:left;width:33.33333333%}}#bookly-tbs .bookly-loading{position:relative;height:100px}#bookly-tbs .bookly-loading:before{position:absolute;top:-webkit-calc(50% - 16px);top:calc(50% - 16px);left:-webkit-calc(50% - 16px);left:calc(50% - 16px);width:32px;height:32px;content:'';background:url(../../images/ajax_loader_32x32.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .bookly-loading-16{position:relative;display:inline-block;min-width:16px;min-height:16px}#bookly-tbs .bookly-loading-16:before{position:absolute;top:-webkit-calc(50% - 8px);top:calc(50% - 8px);left:-webkit-calc(50% - 8px);left:calc(50% - 8px);width:16px;height:16px;content:'';background:url(../../images/loading.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .select2 .select2-selection{height:35px!important;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .select2 .select2-selection__choice{display:none}#bookly-tbs .select2 .select2-selection ul{padding:0 16px;margin-bottom:0}#bookly-tbs .select2 .select2-search{float:none;margin:6px 0}#bookly-tbs .select2 .select2-search__field{width:100%!important;padding:0;margin:0;border:0;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs .select2 .select2-selection__clear{top:-2px}#bookly-tbs .select2 .select2-selection__arrow{top:-4px}#bookly-tbs .bookly-no-borders,#bookly-tbs .bookly-no-borders td{border:0!important}#bookly-tbs .panel.bookly-main{border-color:#d9dee4;border-width:1px}@media (min-width:992px){#bookly-tbs .panel.bookly-main>.panel-body{padding:25px}}#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 15px 15px}@media (min-width:992px){#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 25px 25px}}#bookly-tbs .panel.bookly-panel-unborder,#bookly-tbs .panel.bookly-panel-unborder .panel-heading,#bookly-tbs .panel.bookly-panel-unborder>.list-group .list-group-item,#bookly-tbs .panel.bookly-panel-unborder>.panel-collapse>.list-group .list-group-item{border-width:0}#bookly-tbs .panel.bookly-panel-unborder .panel-heading{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel .panel-heading .bookly-font-smaller{padding-top:4px}#bookly-tbs .panel .panel-footer{padding:21px 0 0 0;background-color:transparent}@media (min-width:768px){#bookly-tbs .panel .panel-footer{text-align:right}}@media (max-width:767px){#bookly-tbs .panel .panel-footer .btn{float:none!important}}#bookly-tbs .panel .panel-body .bookly-codes input{width:242px;border:none}#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(4),#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(5){text-align:right}#bookly-tbs .panel .padding-lr-none{padding-right:0;padding-left:0}#bookly-tbs .panel .panel-group .panel-footer{border-top:1px solid #e8ebf0}#bookly-tbs .bookly-collapse{margin-bottom:16px!important}#bookly-tbs .bookly-collapse a[data-toggle=collapse]{padding-right:25px;vertical-align:middle;background:url(../../../resources/images/notifications-arrow-up.png) 100% 50% no-repeat;-webkit-background-size:17px 17px!important;background-size:17px 17px!important;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-collapse a[data-toggle=collapse].collapsed{background:url(../../../resources/images/notifications-arrow-down.png) 100% 50% no-repeat}#bookly-tbs .help-block{margin-top:-5px;margin-bottom:7px}@media (min-width:768px){#bookly-tbs .form-inline .form-group+.form-group,#bookly-tbs .modal-footer .btn+.btn,#bookly-tbs .page-header .bookly-support-panel>*+*,#bookly-tbs .page-header .popover+.btn,#bookly-tbs .panel-footer .btn+.btn:not(.bookly-btn-unborder){margin-left:12px}}#bookly-tbs .bookly-block-head{margin-bottom:20px}#bookly-tbs .intl-tel-input{display:block}#bookly-tbs .intl-tel-input .flag-container{right:0;left:0}#bookly-tbs .intl-tel-input .selected-flag{width:42px;padding:0 0 0 8px}#bookly-tbs .intl-tel-input .selected-flag .arrow{right:4px;left:auto;border-top:4px solid #000;border-right:3px solid transparent;border-left:3px solid transparent}#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags.png)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-resolution:2dppx){#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags@2x.png)}}#bookly-tbs .intl-tel-input .form-control{padding-left:45px}#bookly-tbs .intl-tel-input .country-list{max-width:100%}#bookly-tbs .form-inline label{margin-bottom:0}#bookly-tbs .form-inline .intl-tel-input{display:inline-block}#bookly-tbs .form-inline .bookly-checkbox-text{font-weight:400;vertical-align:middle}#bookly-tbs .page-header{margin-top:0}#bookly-tbs .page-header .bookly-support-panel #bookly-bell+.badge{position:absolute;top:-17px;right:7px;background-color:red}#bookly-tbs .page-header .bookly-support-panel .dropdown-menu-right{margin-top:10px;margin-right:3px}#bookly-tbs .bookly-nav-justified.nav-justified{display:table;margin-bottom:30px;table-layout:fixed}#bookly-tbs .bookly-nav-justified.nav-justified>li{display:table-cell;width:100%}#bookly-tbs .bookly-nav-justified.nav-justified>li>a{padding:15px 5px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #d9dee4;border-radius:0}#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:focus,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:hover{border-bottom:1px solid #08c}#bookly-tbs .bookly-nav-justified.nav-justified>li .bookly-icon{margin:0 3px;vertical-align:bottom}#bookly-tbs .bookly-nav-tabs-title{font-size:17px}@media (max-width:991px){#bookly-tbs .bookly-nav-tabs-title{display:none}}#bookly-tbs .bookly-thumb{position:relative;display:block;width:76px;height:76px;overflow:hidden;background-color:#e8ebf0;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat;background-position:-106px 0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .bookly-thumb.bookly-thumb-sm{width:36px;height:36px;background-position:-182px 0}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{background-position:0 0}}#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-color:rgba(0,0,0,.05);background-image:none}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-position:0 0}}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:100%}}#bookly-tbs .bookly-thumb .bookly-thumb-delete{position:absolute;top:5px;right:5px}#bookly-tbs .bookly-thumb .bookly-thumb-edit{position:absolute;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.4)}#bookly-tbs .bookly-thumb .bookly-thumb-edit .bookly-thumb-edit-btn{width:100%;padding:0 3px;margin:0;overflow:hidden;font-size:13px;line-height:25px;color:#fff;text-align:center;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-staff-archived{background:rgba(232,235,240,.7)!important}#bookly-tbs .bookly-staff-archived .bookly-flex-cell{color:#d9dee4}#bookly-tbs .bookly-staff-archived .bookly-rating-right{color:#d9dee4}#bookly-tbs .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .btn.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .btn.btn-xlg .dashicons,#bookly-tbs .btn.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .btn.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-nav{margin-bottom:20px;font-size:0}#bookly-tbs .bookly-nav.bookly-nav-pills .bookly-nav-item{display:inline-block;margin:6px 10px 6px 0}#bookly-tbs .bookly-nav.bookly-nav-tabs{z-index:10;border-bottom:1px solid #e8ebf0}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs .bookly-nav-item{position:relative;display:inline-block;padding:12px 16px;margin:6px 10px -1px 0;border-bottom-right-radius:0;border-bottom-left-radius:0}}#bookly-tbs .bookly-nav .bookly-nav-item{position:relative;display:block;padding:10px 10px;margin-bottom:6px;font-size:15px;background:#fff;border:1px solid #e8ebf0;border-radius:4px}#bookly-tbs .bookly-nav .bookly-nav-item.active{color:#fff;background:#08c;border-color:#08c}#bookly-tbs .bookly-nav .bookly-nav-item.active a{color:#fff}#bookly-tbs .bookly-nav .bookly-nav-item.active a:focus,#bookly-tbs .bookly-nav .bookly-nav-item.active a:hover{color:#d9d9d9}#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):focus,#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):hover{cursor:pointer;background-color:#e8ebf0;border-color:#8a929e;-webkit-box-shadow:0 0 5px rgba(0,0,0,.2);box-shadow:0 0 5px rgba(0,0,0,.2)}#bookly-tbs .board-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.5)}#bookly-tbs .board-backdrop .bookly-board{width:50%;padding:20px;margin:10% 25%;background-color:#fefefe;border:1px solid rgba(0,0,0,.2)}@media (max-width:991px){#bookly-tbs .board-backdrop .bookly-board{width:90%;margin:10% 5%}}#bookly-tbs .board-backdrop .bookly-board .btn-group-vertical.align-left .btn{padding-left:6px;text-align:left}#bookly-tbs .board-backdrop .bookly-board ul{margin-left:15px!important;list-style:inside!important}#bookly-tbs .bookly-dropdown-menu>li:first-child{margin-left:0}#bookly-tbs .bookly-dropdown-menu li{margin-left:20px}#bookly-tbs .bookly-dropdown-menu ul>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .bookly-dropdown-menu ul>li>a:focus,#bookly-tbs .bookly-dropdown-menu ul>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .bookly-dropdown-block{display:block;width:100%;height:36px;line-height:1.4}#bookly-tbs .bookly-dropdown-block .bookly-flex-cell:last-child{position:absolute;top:7px;left:-webkit-calc(100% - 32px);left:calc(100% - 32px)}#bookly-tbs .bookly-service-color{display:inline-block;width:21px;height:21px;margin-left:-25px;border:2px solid #fff;border-radius:50%}#bookly-tbs .bookly-vertical-colors .bookly-service-color{position:absolute}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(1){margin-top:-15px}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(2){margin-top:-5px}#bookly-tbs .bookly-max-height-xs{max-height:200px!important;overflow:auto}#bookly-tbs .bookly-max-height-sm{max-height:300px!important;overflow:auto}#bookly-tbs .bookly-max-height-md{max-height:400px!important;overflow:auto}#bookly-tbs .bookly-max-height-lg{max-height:500px!important;overflow:auto}#bookly-tbs .bookly-holidays-nav{display:block;width:200px;margin:0 auto}#bookly-tbs .bookly-holidays-nav .btn-default,#bookly-tbs .bookly-holidays-nav .form-control{background-color:#eff1f4;border-color:transparent}#bookly-tbs .modal-body textarea.wp-editor-area{width:-webkit-calc(100% - 20px);width:calc(100% - 20px)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day{cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day.bookly-fc-day-active{background-color:#eafcff}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group .fc-button+.fc-button{margin-left:-1px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left):not(.fc-corner-right){border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child{margin-left:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child:not(.fc-corner-right){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group:not(:last-child){margin-right:16px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button{display:inline-block;height:auto;padding:6px 12px;margin-bottom:0;overflow:hidden;font-size:15px;font-weight:400;line-height:1.4;text-align:center;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill{border-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;text-shadow:none;background-color:#fff;background-image:none;border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:hover,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{background-image:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled].focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:hover,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active{z-index:1;color:#3e424a;background-color:#e6e6e6;background-image:none;border-color:#b5bfcb;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{position:relative;margin:0;font-size:20px;line-height:32px;cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:hover{color:#005580}@media (min-width:768px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{font-size:24px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:after{display:inline-block;width:0;height:0;margin-left:12px;vertical-align:middle;content:" ";border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}@media (max-width:767px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-left,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-right{display:inline-block;float:none;margin:0 12px 6px 12px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-head{background-color:#e8ebf0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-widget-header{padding:10px 0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-day-header{text-align:center}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc .fc-axis{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:0 4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view{min-height:.01%;overflow-x:auto}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view>table{min-width:768px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event{padding:3px 2px 3px 5px;margin-right:0;margin-left:0;color:#3e424a;cursor:pointer;border-width:0;border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:after{position:absolute;top:0;right:0;width:-webkit-calc(100% - 2px);width:calc(100% - 2px);height:100%;content:'';background-color:rgba(255,255,255,.6);border-bottom:1px solid rgba(255,255,255,.4)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:hover:after{background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time{font-size:inherit;font-weight:700}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon{float:right;color:#3e424a;opacity:.8}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon:hover{cursor:pointer;opacity:1}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-title{display:block;margin-top:3px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-ltr .fc-time-grid .fc-event-container,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-rtl .fc-time-grid .fc-event-container{margin:0}#bookly-tbs .bookly-fc-inner .fc-loading-inner{position:absolute;top:50px;right:0;bottom:0;left:0;z-index:9;background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .fc-loading-inner .fc-loading{position:absolute;top:50%;left:50%;width:auto;height:32px;padding-left:64px;background:rgba(255,0,0,0) url(../../images/ajax_loader_32x32.gif) no-repeat scroll 50% center}#bookly-tbs .bookly-fc-inner .bookly-margin-top-xlg{position:relative;min-height:.01%;overflow:visible}@media (min-width:768px){#bookly-tbs .daterangepicker.dropdown-menu.show-calendar{min-width:718px}}#bookly-tbs .daterangepicker .daterangepicker_input{margin-bottom:6px}#bookly-tbs .daterangepicker .daterangepicker_input .glyphicon{position:absolute;top:8px}#bookly-tbs .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .wp-switch-editor+.wp-switch-editor{margin-left:5px}#bookly-tbs .editable-container.popover{z-index:9999}#bookly-tbs .editable-input,#bookly-tbs .editable-input .form-control{width:100%}#bookly-tbs .editable-input textarea{resize:both}#bookly-tbs .editable-buttons{display:block;margin:6px 0;text-align:right}#bookly-tbs .editable-clear-x,#bookly-tbs .editable-click{cursor:pointer}#bookly-tbs .table>thead>tr>th{padding:16px 8px;background-color:#e8ebf0}#bookly-tbs .bookly-table-sortable.table>thead>tr>th{position:relative;padding-left:16px!important}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class],#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]{cursor:pointer}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class]:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]:after{position:absolute;bottom:22px;left:-4px;width:24px;height:15px;content:"";background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:0 -webkit-calc(50% + 2px);background-position:0 calc(50% + 2px);-webkit-background-size:24px 24px;background-size:24px 24px;opacity:.1}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].desc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].desc:after{opacity:1;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].asc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].asc:after{opacity:1}#bookly-tbs .table thead>tr>th{vertical-align:middle}#bookly-tbs .table thead>tr>th:not(:first-child){border-left:1px solid #d9dee4}#bookly-tbs .table td>input[type=checkbox],#bookly-tbs .table th>input[type=checkbox]{margin:0}#bookly-tbs .table td ul.bookly-list,#bookly-tbs .table th ul.bookly-list{padding-left:13px;margin:0}#bookly-tbs .table td ul.bookly-list.list-dots,#bookly-tbs .table th ul.bookly-list.list-dots{list-style:disc outside!important}#bookly-tbs .table td ul.bookly-list li,#bookly-tbs .table th ul.bookly-list li{margin:0}#bookly-tbs .bookly-color-picker-wrapper{position:relative;min-height:35px}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container{position:absolute;z-index:10;padding:6px;margin-left:-6px;background-color:#fff}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container,#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container.wp-picker-active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .wp-color-result{height:auto}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .button{margin-left:6px}#bookly-tbs .page-header .bookly-page-title{float:left;font-size:24px;line-height:38px}@media (max-width:767px){#bookly-tbs .page-header .bookly-page-title{font-size:22px}#bookly-tbs h3{font-size:18px}}#bookly-tbs .modal{top:46px!important}#bookly-tbs .modal .bookly-codes input{width:242px;border:none}#bookly-tbs .modal-header .close{margin-top:4px}@media (max-width:767px){#bookly-tbs .bookly-form .bookly-progress-tracker{display:none!important}}#bookly-tbs .bookly-form .picker__nav--next,#bookly-tbs .bookly-form .picker__nav--prev{width:26px;height:26px}@media (max-width:991px){#bookly-tbs .bookly-form .bookly-user-coupon{width:135px}}#bookly-tbs .bookly-form .bookly-box{padding-bottom:1px}#bookly-tbs .bookly-form input[type=checkbox],#bookly-tbs .bookly-form input[type=radio]{width:16px!important;height:16px!important}#bookly-tbs .bookly-icon{display:inline-block;width:24px;height:24px;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .bookly-icon.bookly-icon-draghandle{background-position:-154px -82px}#bookly-tbs .has-feedback .alert-icon{display:inline-block;width:24px;height:24px;margin:4px 6px 0 0;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .has-feedback.has-success .alert-icon{background-position:-24px -113px}#bookly-tbs .has-feedback.has-error .alert-icon{background-position:-48px -113px}#bookly-tbs .has-feedback.has-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .has-feedback.has-ajax .alert-icon{background-position:-72px -113px;-webkit-animation:spin 3s infinite;-o-animation:spin 3s infinite;animation:spin 3s infinite}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}#bookly-tbs .alert{margin-top:30px}#bookly-tbs .alert .alert-icon,#bookly-tbs .alert .close{display:inline-block;width:24px;height:24px;vertical-align:top;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .alert .close{margin-top:-2px}#bookly-tbs .alert.alert-info .alert-icon{background-position:0 -113px}#bookly-tbs .alert.alert-success .alert-icon{background-position:-24px -113px}#bookly-tbs .alert.alert-danger .alert-icon{background-position:-48px -113px}#bookly-tbs .alert.alert-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .bookly-alert{position:fixed;top:55px;right:13px;z-index:10000;text-align:left}@media (min-width:783px){#bookly-tbs .bookly-alert{right:21px}}#bookly-tbs .bookly-alert button{margin-left:10px}#bookly-tbs .pagination .next,#bookly-tbs .pagination .prev{position:inherit;width:inherit;height:inherit;padding:inherit}#bookly-tbs .pagination .next:before,#bookly-tbs .pagination .prev:before{position:inherit;width:inherit;height:inherit;padding:inherit;content:""}#bookly-tbs #bookly-appointments-list .popover .arrow{display:none}#bookly-tbs .bookly-rating-right{float:right}#bookly-tbs .bookly-rating-left{margin-left:10px}#bookly-tbs .bookly-rating-left i{margin-top:3px}#bookly-tbs .table.table-striped{border:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{background-color:transparent;border-top:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th:not(:first-child){border-left:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{border-bottom:none}#bookly-tbs .table.table-striped tbody>tr>td{border-top:1px solid #f4f4f4}#bookly-tbs .modal.fade.show{opacity:1}#bookly-tbs .modal .modal-header{display:block}#bookly-tbs .modal.show .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs h2:before{content:none}body.mobile.modal-open #wpwrap{position:inherit!important}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-backdrop+.modal-backdrop{display:none!important}.modal-open{overflow:hidden!important}.modal-open .modal{overflow-x:hidden!important;overflow-y:auto!important}.select2-container--bootstrap{display:block}.select2-container--bootstrap .select2-selection{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-selection.form-control{border-radius:4px}.select2-container--bootstrap .select2-search--dropdown .select2-search__field{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-search__field{outline:0}.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field:-moz-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field::-moz-placeholder{color:#8a929e;opacity:1}.select2-container--bootstrap .select2-search__field:-ms-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option[role=group]{padding:0}.select2-container--bootstrap .select2-results__option[aria-disabled=true]{color:#d9dee4;cursor:not-allowed}.select2-container--bootstrap .select2-results__option[aria-selected=true]{color:#505762;background-color:#f5f5f5}.select2-container--bootstrap .select2-results__option--highlighted[aria-selected]{color:#fff;background-color:#08c}.select2-container--bootstrap .select2-results__option .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*2;margin-left:-12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*3;margin-left:-12px*2}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*4;margin-left:-12px*3}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*5;margin-left:-12px*4}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*6;margin-left:-12px*5}.select2-container--bootstrap .select2-results__group{display:block;padding:6px 12px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}.select2-container--bootstrap.select2-container--focus .select2-selection,.select2-container--bootstrap.select2-container--open .select2-selection{border-color:#08c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 5px 5px 5px}.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection{border-top-color:transparent;border-top-left-radius:0;border-top-right-radius:0}.select2-container--bootstrap .select2-selection__clear{float:right;margin-right:10px;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection__clear:hover{color:#3e424a}.select2-container--bootstrap.select2-container--disabled .select2-selection{border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}.select2-container--bootstrap.select2-container--disabled .select2-search__field,.select2-container--bootstrap.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap.select2-container--disabled .select2-selection,.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:rgba(232,235,240,.7)}.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap .select2-dropdown{margin-top:-1px;overflow-x:hidden;border-color:#08c;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-dropdown--above{margin-top:1px;-webkit-box-shadow:0 -6px 12px rgba(0,0,0,.175);box-shadow:0 -6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap .select2-selection--single{height:35px;padding:6px 27px 6px 12px;line-height:1.4}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow{position:absolute;top:0;right:12px;bottom:0;width:5px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b{position:absolute;top:50%;left:0;width:0;height:0;margin-top:-5px/2;margin-left:-5px;border-color:#8a929e transparent transparent transparent;border-style:solid;border-width:5px 5px 0 5px}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{padding:0;color:#3e424a}.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{color:#8a929e}.select2-container--bootstrap .select2-selection--multiple{height:auto;min-height:35px;padding:0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;overflow:hidden;line-height:1.4;text-overflow:ellipsis;white-space:nowrap;list-style:none}.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder{float:left;margin-top:5px;color:#8a929e}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice{float:left;padding:0 6px;margin:5px 0 0 12px/2;color:#3e424a;cursor:default;background:#fff;border:1px solid #d9dee4;border-radius:4px}.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field{min-width:5em;height:35px - 2;padding:0 12px;margin-top:0;line-height:1.4;background:0 0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove{display:inline-block;margin-right:6px/2;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover{color:#3e424a}.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear{margin-top:6px}.form-group-sm .select2-container--bootstrap .select2-selection--single,.input-group-sm .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-sm{height:32px;padding:5px 10px + 5px*3 5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple,.input-group-sm .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-sm{min-height:32px;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__choice{padding:0 5px;margin:4px 0 0 10px/2;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{height:32px - 2;padding:0 10px;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single,.input-group-lg .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-lg{height:46px;padding:10px 16px + 6px*3 10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow{width:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow b{margin-top:-6px/2;margin-left:-6px;margin-left:-10px;border-width:6px 6px 0 6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple,.input-group-lg .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-lg{min-height:46px;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__choice{padding:0 10px;margin:9px 0 0 16px/2;font-size:18px;line-height:1.3333333;border-radius:4px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{height:46px - 2;padding:0 16px;font-size:18px;line-height:1.3333333}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:10px}.select2-container--bootstrap .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.input-group-lg .select2-container--bootstrap .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.select2-container--bootstrap[dir=rtl] .select2-selection--single{padding-right:12px;padding-left:12px + 5px*3}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow{right:auto;left:12px}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-right:12px/2;margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-right:auto;margin-left:2px}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#8a6d3b}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning.select2-drop-active{border-color:#66512c}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#66512c}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#a94442}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error.select2-drop-active{border-color:#843534}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#843534}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#3c763d}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success.select2-drop-active{border-color:#2b542c}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#2b542c}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection.form-control{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection.form-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.select2-container--bootstrap{position:relative;z-index:2;display:table;width:100%;margin-bottom:0;table-layout:fixed}.input-group>.select2-container--bootstrap>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap.select2-container--focus,.input-group>.select2-container--bootstrap.select2-container--open{z-index:3}.input-group>.select2-container--bootstrap,.input-group>.select2-container--bootstrap .input-group-btn,.input-group>.select2-container--bootstrap .input-group-btn .btn{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:768px){.form-inline .select2-container--bootstrap{display:inline-block}}.select2-results__option{padding:7px 12px;margin-bottom:1px!important}.select2-results__option[aria-selected=true]{color:#8a929e!important;background-color:inherit!important}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:400px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option{padding:2px 12px;margin-bottom:1px!important;font-size:15px;line-height:1.4em}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option i{margin-right:5px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__group{font-size:16px;color:#000}table.dt-rowReorder-float{position:absolute!important;outline:2px solid #888}
|
1 |
#bookly-tbs{
|
2 |
+
|
3 |
+
}#bookly-tbs html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}#bookly-tbs body{margin:0}#bookly-tbs article,#bookly-tbs aside,#bookly-tbs details,#bookly-tbs figcaption,#bookly-tbs figure,#bookly-tbs footer,#bookly-tbs header,#bookly-tbs hgroup,#bookly-tbs main,#bookly-tbs menu,#bookly-tbs nav,#bookly-tbs section,#bookly-tbs summary{display:block}#bookly-tbs audio,#bookly-tbs canvas,#bookly-tbs progress,#bookly-tbs video{display:inline-block;vertical-align:baseline}#bookly-tbs audio:not([controls]){display:none;height:0}#bookly-tbs [hidden],#bookly-tbs template{display:none}#bookly-tbs a{background-color:transparent}#bookly-tbs a:active,#bookly-tbs a:hover{outline:0}#bookly-tbs abbr[title]{border-bottom:1px dotted}#bookly-tbs b,#bookly-tbs strong{font-weight:700}#bookly-tbs dfn{font-style:italic}#bookly-tbs h1{margin:.67em 0;font-size:2em}#bookly-tbs mark{color:#000;background:#ff0}#bookly-tbs small{font-size:80%}#bookly-tbs sub,#bookly-tbs sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}#bookly-tbs sup{top:-.5em}#bookly-tbs sub{bottom:-.25em}#bookly-tbs img{border:0}#bookly-tbs svg:not(:root){overflow:hidden}#bookly-tbs figure{margin:1em 40px}#bookly-tbs hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs pre{overflow:auto}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:monospace,monospace;font-size:1em}#bookly-tbs button,#bookly-tbs input,#bookly-tbs optgroup,#bookly-tbs select,#bookly-tbs textarea{margin:0;font:inherit;color:inherit}#bookly-tbs button{overflow:visible}#bookly-tbs button,#bookly-tbs select{text-transform:none}#bookly-tbs button,#bookly-tbs html input[type=button],#bookly-tbs input[type=reset],#bookly-tbs input[type=submit]{-webkit-appearance:button;cursor:pointer}#bookly-tbs button[disabled],#bookly-tbs html input[disabled]{cursor:default}#bookly-tbs button::-moz-focus-inner,#bookly-tbs input::-moz-focus-inner{padding:0;border:0}#bookly-tbs input{line-height:normal}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}#bookly-tbs input[type=number]::-webkit-inner-spin-button,#bookly-tbs input[type=number]::-webkit-outer-spin-button{height:auto}#bookly-tbs input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}#bookly-tbs input[type=search]::-webkit-search-cancel-button,#bookly-tbs input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bookly-tbs fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}#bookly-tbs legend{padding:0;border:0}#bookly-tbs textarea{overflow:auto}#bookly-tbs optgroup{font-weight:700}#bookly-tbs table{border-spacing:0;border-collapse:collapse}#bookly-tbs td,#bookly-tbs th{padding:0}@media print{#bookly-tbs *,#bookly-tbs :after,#bookly-tbs :before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs a,#bookly-tbs a:visited{text-decoration:underline}#bookly-tbs a[href]:after{content:" (" attr(href) ")"}#bookly-tbs abbr[title]:after{content:" (" attr(title) ")"}#bookly-tbs a[href^="javascript:"]:after,#bookly-tbs a[href^="#"]:after{content:""}#bookly-tbs blockquote,#bookly-tbs pre{border:1px solid #999;page-break-inside:avoid}#bookly-tbs thead{display:table-header-group}#bookly-tbs img,#bookly-tbs tr{page-break-inside:avoid}#bookly-tbs img{max-width:100%!important}#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs p{orphans:3;widows:3}#bookly-tbs h2,#bookly-tbs h3{page-break-after:avoid}#bookly-tbs .navbar{display:none}#bookly-tbs .btn>.caret,#bookly-tbs .dropup>.btn>.caret{border-top-color:#000!important}#bookly-tbs .label{border:1px solid #000}#bookly-tbs .table{border-collapse:collapse!important}#bookly-tbs .table td,#bookly-tbs .table th{background-color:#fff!important}#bookly-tbs .table-bordered td,#bookly-tbs .table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}#bookly-tbs .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}#bookly-tbs .glyphicon-asterisk:before{content:"\002a"}#bookly-tbs .glyphicon-plus:before{content:"\002b"}#bookly-tbs .glyphicon-eur:before,#bookly-tbs .glyphicon-euro:before{content:"\20ac"}#bookly-tbs .glyphicon-minus:before{content:"\2212"}#bookly-tbs .glyphicon-cloud:before{content:"\2601"}#bookly-tbs .glyphicon-envelope:before{content:"\2709"}#bookly-tbs .glyphicon-pencil:before{content:"\270f"}#bookly-tbs .glyphicon-glass:before{content:"\e001"}#bookly-tbs .glyphicon-music:before{content:"\e002"}#bookly-tbs .glyphicon-search:before{content:"\e003"}#bookly-tbs .glyphicon-heart:before{content:"\e005"}#bookly-tbs .glyphicon-star:before{content:"\e006"}#bookly-tbs .glyphicon-star-empty:before{content:"\e007"}#bookly-tbs .glyphicon-user:before{content:"\e008"}#bookly-tbs .glyphicon-film:before{content:"\e009"}#bookly-tbs .glyphicon-th-large:before{content:"\e010"}#bookly-tbs .glyphicon-th:before{content:"\e011"}#bookly-tbs .glyphicon-th-list:before{content:"\e012"}#bookly-tbs .glyphicon-ok:before{content:"\e013"}#bookly-tbs .glyphicon-remove:before{content:"\e014"}#bookly-tbs .glyphicon-zoom-in:before{content:"\e015"}#bookly-tbs .glyphicon-zoom-out:before{content:"\e016"}#bookly-tbs .glyphicon-off:before{content:"\e017"}#bookly-tbs .glyphicon-signal:before{content:"\e018"}#bookly-tbs .glyphicon-cog:before{content:"\e019"}#bookly-tbs .glyphicon-trash:before{content:"\e020"}#bookly-tbs .glyphicon-home:before{content:"\e021"}#bookly-tbs .glyphicon-file:before{content:"\e022"}#bookly-tbs .glyphicon-time:before{content:"\e023"}#bookly-tbs .glyphicon-road:before{content:"\e024"}#bookly-tbs .glyphicon-download-alt:before{content:"\e025"}#bookly-tbs .glyphicon-download:before{content:"\e026"}#bookly-tbs .glyphicon-upload:before{content:"\e027"}#bookly-tbs .glyphicon-inbox:before{content:"\e028"}#bookly-tbs .glyphicon-play-circle:before{content:"\e029"}#bookly-tbs .glyphicon-repeat:before{content:"\e030"}#bookly-tbs .glyphicon-refresh:before{content:"\e031"}#bookly-tbs .glyphicon-list-alt:before{content:"\e032"}#bookly-tbs .glyphicon-lock:before{content:"\e033"}#bookly-tbs .glyphicon-flag:before{content:"\e034"}#bookly-tbs .glyphicon-headphones:before{content:"\e035"}#bookly-tbs .glyphicon-volume-off:before{content:"\e036"}#bookly-tbs .glyphicon-volume-down:before{content:"\e037"}#bookly-tbs .glyphicon-volume-up:before{content:"\e038"}#bookly-tbs .glyphicon-qrcode:before{content:"\e039"}#bookly-tbs .glyphicon-barcode:before{content:"\e040"}#bookly-tbs .glyphicon-tag:before{content:"\e041"}#bookly-tbs .glyphicon-tags:before{content:"\e042"}#bookly-tbs .glyphicon-book:before{content:"\e043"}#bookly-tbs .glyphicon-bookmark:before{content:"\e044"}#bookly-tbs .glyphicon-print:before{content:"\e045"}#bookly-tbs .glyphicon-camera:before{content:"\e046"}#bookly-tbs .glyphicon-font:before{content:"\e047"}#bookly-tbs .glyphicon-bold:before{content:"\e048"}#bookly-tbs .glyphicon-italic:before{content:"\e049"}#bookly-tbs .glyphicon-text-height:before{content:"\e050"}#bookly-tbs .glyphicon-text-width:before{content:"\e051"}#bookly-tbs .glyphicon-align-left:before{content:"\e052"}#bookly-tbs .glyphicon-align-center:before{content:"\e053"}#bookly-tbs .glyphicon-align-right:before{content:"\e054"}#bookly-tbs .glyphicon-align-justify:before{content:"\e055"}#bookly-tbs .glyphicon-list:before{content:"\e056"}#bookly-tbs .glyphicon-indent-left:before{content:"\e057"}#bookly-tbs .glyphicon-indent-right:before{content:"\e058"}#bookly-tbs .glyphicon-facetime-video:before{content:"\e059"}#bookly-tbs .glyphicon-picture:before{content:"\e060"}#bookly-tbs .glyphicon-map-marker:before{content:"\e062"}#bookly-tbs .glyphicon-adjust:before{content:"\e063"}#bookly-tbs .glyphicon-tint:before{content:"\e064"}#bookly-tbs .glyphicon-edit:before{content:"\e065"}#bookly-tbs .glyphicon-share:before{content:"\e066"}#bookly-tbs .glyphicon-check:before{content:"\e067"}#bookly-tbs .glyphicon-move:before{content:"\e068"}#bookly-tbs .glyphicon-step-backward:before{content:"\e069"}#bookly-tbs .glyphicon-fast-backward:before{content:"\e070"}#bookly-tbs .glyphicon-backward:before{content:"\e071"}#bookly-tbs .glyphicon-play:before{content:"\e072"}#bookly-tbs .glyphicon-pause:before{content:"\e073"}#bookly-tbs .glyphicon-stop:before{content:"\e074"}#bookly-tbs .glyphicon-forward:before{content:"\e075"}#bookly-tbs .glyphicon-fast-forward:before{content:"\e076"}#bookly-tbs .glyphicon-step-forward:before{content:"\e077"}#bookly-tbs .glyphicon-eject:before{content:"\e078"}#bookly-tbs .glyphicon-chevron-left:before{content:"\e079"}#bookly-tbs .glyphicon-chevron-right:before{content:"\e080"}#bookly-tbs .glyphicon-plus-sign:before{content:"\e081"}#bookly-tbs .glyphicon-minus-sign:before{content:"\e082"}#bookly-tbs .glyphicon-remove-sign:before{content:"\e083"}#bookly-tbs .glyphicon-ok-sign:before{content:"\e084"}#bookly-tbs .glyphicon-question-sign:before{content:"\e085"}#bookly-tbs .glyphicon-info-sign:before{content:"\e086"}#bookly-tbs .glyphicon-screenshot:before{content:"\e087"}#bookly-tbs .glyphicon-remove-circle:before{content:"\e088"}#bookly-tbs .glyphicon-ok-circle:before{content:"\e089"}#bookly-tbs .glyphicon-ban-circle:before{content:"\e090"}#bookly-tbs .glyphicon-arrow-left:before{content:"\e091"}#bookly-tbs .glyphicon-arrow-right:before{content:"\e092"}#bookly-tbs .glyphicon-arrow-up:before{content:"\e093"}#bookly-tbs .glyphicon-arrow-down:before{content:"\e094"}#bookly-tbs .glyphicon-share-alt:before{content:"\e095"}#bookly-tbs .glyphicon-resize-full:before{content:"\e096"}#bookly-tbs .glyphicon-resize-small:before{content:"\e097"}#bookly-tbs .glyphicon-exclamation-sign:before{content:"\e101"}#bookly-tbs .glyphicon-gift:before{content:"\e102"}#bookly-tbs .glyphicon-leaf:before{content:"\e103"}#bookly-tbs .glyphicon-fire:before{content:"\e104"}#bookly-tbs .glyphicon-eye-open:before{content:"\e105"}#bookly-tbs .glyphicon-eye-close:before{content:"\e106"}#bookly-tbs .glyphicon-warning-sign:before{content:"\e107"}#bookly-tbs .glyphicon-plane:before{content:"\e108"}#bookly-tbs .glyphicon-calendar:before{content:"\e109"}#bookly-tbs .glyphicon-random:before{content:"\e110"}#bookly-tbs .glyphicon-comment:before{content:"\e111"}#bookly-tbs .glyphicon-magnet:before{content:"\e112"}#bookly-tbs .glyphicon-chevron-up:before{content:"\e113"}#bookly-tbs .glyphicon-chevron-down:before{content:"\e114"}#bookly-tbs .glyphicon-retweet:before{content:"\e115"}#bookly-tbs .glyphicon-shopping-cart:before{content:"\e116"}#bookly-tbs .glyphicon-folder-close:before{content:"\e117"}#bookly-tbs .glyphicon-folder-open:before{content:"\e118"}#bookly-tbs .glyphicon-resize-vertical:before{content:"\e119"}#bookly-tbs .glyphicon-resize-horizontal:before{content:"\e120"}#bookly-tbs .glyphicon-hdd:before{content:"\e121"}#bookly-tbs .glyphicon-bullhorn:before{content:"\e122"}#bookly-tbs .glyphicon-bell:before{content:"\e123"}#bookly-tbs .glyphicon-certificate:before{content:"\e124"}#bookly-tbs .glyphicon-thumbs-up:before{content:"\e125"}#bookly-tbs .glyphicon-thumbs-down:before{content:"\e126"}#bookly-tbs .glyphicon-hand-right:before{content:"\e127"}#bookly-tbs .glyphicon-hand-left:before{content:"\e128"}#bookly-tbs .glyphicon-hand-up:before{content:"\e129"}#bookly-tbs .glyphicon-hand-down:before{content:"\e130"}#bookly-tbs .glyphicon-circle-arrow-right:before{content:"\e131"}#bookly-tbs .glyphicon-circle-arrow-left:before{content:"\e132"}#bookly-tbs .glyphicon-circle-arrow-up:before{content:"\e133"}#bookly-tbs .glyphicon-circle-arrow-down:before{content:"\e134"}#bookly-tbs .glyphicon-globe:before{content:"\e135"}#bookly-tbs .glyphicon-wrench:before{content:"\e136"}#bookly-tbs .glyphicon-tasks:before{content:"\e137"}#bookly-tbs .glyphicon-filter:before{content:"\e138"}#bookly-tbs .glyphicon-briefcase:before{content:"\e139"}#bookly-tbs .glyphicon-fullscreen:before{content:"\e140"}#bookly-tbs .glyphicon-dashboard:before{content:"\e141"}#bookly-tbs .glyphicon-paperclip:before{content:"\e142"}#bookly-tbs .glyphicon-heart-empty:before{content:"\e143"}#bookly-tbs .glyphicon-link:before{content:"\e144"}#bookly-tbs .glyphicon-phone:before{content:"\e145"}#bookly-tbs .glyphicon-pushpin:before{content:"\e146"}#bookly-tbs .glyphicon-usd:before{content:"\e148"}#bookly-tbs .glyphicon-gbp:before{content:"\e149"}#bookly-tbs .glyphicon-sort:before{content:"\e150"}#bookly-tbs .glyphicon-sort-by-alphabet:before{content:"\e151"}#bookly-tbs .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}#bookly-tbs .glyphicon-sort-by-order:before{content:"\e153"}#bookly-tbs .glyphicon-sort-by-order-alt:before{content:"\e154"}#bookly-tbs .glyphicon-sort-by-attributes:before{content:"\e155"}#bookly-tbs .glyphicon-sort-by-attributes-alt:before{content:"\e156"}#bookly-tbs .glyphicon-unchecked:before{content:"\e157"}#bookly-tbs .glyphicon-expand:before{content:"\e158"}#bookly-tbs .glyphicon-collapse-down:before{content:"\e159"}#bookly-tbs .glyphicon-collapse-up:before{content:"\e160"}#bookly-tbs .glyphicon-log-in:before{content:"\e161"}#bookly-tbs .glyphicon-flash:before{content:"\e162"}#bookly-tbs .glyphicon-log-out:before{content:"\e163"}#bookly-tbs .glyphicon-new-window:before{content:"\e164"}#bookly-tbs .glyphicon-record:before{content:"\e165"}#bookly-tbs .glyphicon-save:before{content:"\e166"}#bookly-tbs .glyphicon-open:before{content:"\e167"}#bookly-tbs .glyphicon-saved:before{content:"\e168"}#bookly-tbs .glyphicon-import:before{content:"\e169"}#bookly-tbs .glyphicon-export:before{content:"\e170"}#bookly-tbs .glyphicon-send:before{content:"\e171"}#bookly-tbs .glyphicon-floppy-disk:before{content:"\e172"}#bookly-tbs .glyphicon-floppy-saved:before{content:"\e173"}#bookly-tbs .glyphicon-floppy-remove:before{content:"\e174"}#bookly-tbs .glyphicon-floppy-save:before{content:"\e175"}#bookly-tbs .glyphicon-floppy-open:before{content:"\e176"}#bookly-tbs .glyphicon-credit-card:before{content:"\e177"}#bookly-tbs .glyphicon-transfer:before{content:"\e178"}#bookly-tbs .glyphicon-cutlery:before{content:"\e179"}#bookly-tbs .glyphicon-header:before{content:"\e180"}#bookly-tbs .glyphicon-compressed:before{content:"\e181"}#bookly-tbs .glyphicon-earphone:before{content:"\e182"}#bookly-tbs .glyphicon-phone-alt:before{content:"\e183"}#bookly-tbs .glyphicon-tower:before{content:"\e184"}#bookly-tbs .glyphicon-stats:before{content:"\e185"}#bookly-tbs .glyphicon-sd-video:before{content:"\e186"}#bookly-tbs .glyphicon-hd-video:before{content:"\e187"}#bookly-tbs .glyphicon-subtitles:before{content:"\e188"}#bookly-tbs .glyphicon-sound-stereo:before{content:"\e189"}#bookly-tbs .glyphicon-sound-dolby:before{content:"\e190"}#bookly-tbs .glyphicon-sound-5-1:before{content:"\e191"}#bookly-tbs .glyphicon-sound-6-1:before{content:"\e192"}#bookly-tbs .glyphicon-sound-7-1:before{content:"\e193"}#bookly-tbs .glyphicon-copyright-mark:before{content:"\e194"}#bookly-tbs .glyphicon-registration-mark:before{content:"\e195"}#bookly-tbs .glyphicon-cloud-download:before{content:"\e197"}#bookly-tbs .glyphicon-cloud-upload:before{content:"\e198"}#bookly-tbs .glyphicon-tree-conifer:before{content:"\e199"}#bookly-tbs .glyphicon-tree-deciduous:before{content:"\e200"}#bookly-tbs .glyphicon-cd:before{content:"\e201"}#bookly-tbs .glyphicon-save-file:before{content:"\e202"}#bookly-tbs .glyphicon-open-file:before{content:"\e203"}#bookly-tbs .glyphicon-level-up:before{content:"\e204"}#bookly-tbs .glyphicon-copy:before{content:"\e205"}#bookly-tbs .glyphicon-paste:before{content:"\e206"}#bookly-tbs .glyphicon-alert:before{content:"\e209"}#bookly-tbs .glyphicon-equalizer:before{content:"\e210"}#bookly-tbs .glyphicon-king:before{content:"\e211"}#bookly-tbs .glyphicon-queen:before{content:"\e212"}#bookly-tbs .glyphicon-pawn:before{content:"\e213"}#bookly-tbs .glyphicon-bishop:before{content:"\e214"}#bookly-tbs .glyphicon-knight:before{content:"\e215"}#bookly-tbs .glyphicon-baby-formula:before{content:"\e216"}#bookly-tbs .glyphicon-tent:before{content:"\26fa"}#bookly-tbs .glyphicon-blackboard:before{content:"\e218"}#bookly-tbs .glyphicon-bed:before{content:"\e219"}#bookly-tbs .glyphicon-apple:before{content:"\f8ff"}#bookly-tbs .glyphicon-erase:before{content:"\e221"}#bookly-tbs .glyphicon-hourglass:before{content:"\231b"}#bookly-tbs .glyphicon-lamp:before{content:"\e223"}#bookly-tbs .glyphicon-duplicate:before{content:"\e224"}#bookly-tbs .glyphicon-piggy-bank:before{content:"\e225"}#bookly-tbs .glyphicon-scissors:before{content:"\e226"}#bookly-tbs .glyphicon-bitcoin:before{content:"\e227"}#bookly-tbs .glyphicon-btc:before{content:"\e227"}#bookly-tbs .glyphicon-xbt:before{content:"\e227"}#bookly-tbs .glyphicon-yen:before{content:"\00a5"}#bookly-tbs .glyphicon-jpy:before{content:"\00a5"}#bookly-tbs .glyphicon-ruble:before{content:"\20bd"}#bookly-tbs .glyphicon-rub:before{content:"\20bd"}#bookly-tbs .glyphicon-scale:before{content:"\e230"}#bookly-tbs .glyphicon-ice-lolly:before{content:"\e231"}#bookly-tbs .glyphicon-ice-lolly-tasted:before{content:"\e232"}#bookly-tbs .glyphicon-education:before{content:"\e233"}#bookly-tbs .glyphicon-option-horizontal:before{content:"\e234"}#bookly-tbs .glyphicon-option-vertical:before{content:"\e235"}#bookly-tbs .glyphicon-menu-hamburger:before{content:"\e236"}#bookly-tbs .glyphicon-modal-window:before{content:"\e237"}#bookly-tbs .glyphicon-oil:before{content:"\e238"}#bookly-tbs .glyphicon-grain:before{content:"\e239"}#bookly-tbs .glyphicon-sunglasses:before{content:"\e240"}#bookly-tbs .glyphicon-text-size:before{content:"\e241"}#bookly-tbs .glyphicon-text-color:before{content:"\e242"}#bookly-tbs .glyphicon-text-background:before{content:"\e243"}#bookly-tbs .glyphicon-object-align-top:before{content:"\e244"}#bookly-tbs .glyphicon-object-align-bottom:before{content:"\e245"}#bookly-tbs .glyphicon-object-align-horizontal:before{content:"\e246"}#bookly-tbs .glyphicon-object-align-left:before{content:"\e247"}#bookly-tbs .glyphicon-object-align-vertical:before{content:"\e248"}#bookly-tbs .glyphicon-object-align-right:before{content:"\e249"}#bookly-tbs .glyphicon-triangle-right:before{content:"\e250"}#bookly-tbs .glyphicon-triangle-left:before{content:"\e251"}#bookly-tbs .glyphicon-triangle-bottom:before{content:"\e252"}#bookly-tbs .glyphicon-triangle-top:before{content:"\e253"}#bookly-tbs .glyphicon-console:before{content:"\e254"}#bookly-tbs .glyphicon-superscript:before{content:"\e255"}#bookly-tbs .glyphicon-subscript:before{content:"\e256"}#bookly-tbs .glyphicon-menu-left:before{content:"\e257"}#bookly-tbs .glyphicon-menu-right:before{content:"\e258"}#bookly-tbs .glyphicon-menu-down:before{content:"\e259"}#bookly-tbs .glyphicon-menu-up:before{content:"\e260"}#bookly-tbs *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs :after,#bookly-tbs :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs .bookly-tbs-body{font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;line-height:1.4;color:#3e424a;background-color:transparent;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bookly-tbs button,#bookly-tbs input,#bookly-tbs select,#bookly-tbs textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bookly-tbs a{color:#08c;text-decoration:none}#bookly-tbs a:focus,#bookly-tbs a:hover{color:#005580;text-decoration:none}#bookly-tbs a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs figure{margin:0}#bookly-tbs img{vertical-align:middle}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img,#bookly-tbs .img-responsive,#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{display:block;max-width:100%;height:auto}#bookly-tbs .img-rounded{border-radius:6px}#bookly-tbs .img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#bookly-tbs .img-circle{border-radius:50%}#bookly-tbs hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #d9dee4}#bookly-tbs .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bookly-tbs .sr-only-focusable:active,#bookly-tbs .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bookly-tbs [role=button]{cursor:pointer}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-weight:400;line-height:1;color:#d9dee4}#bookly-tbs .h1,#bookly-tbs .h2,#bookly-tbs .h3,#bookly-tbs h1,#bookly-tbs h2,#bookly-tbs h3{margin-top:21px;margin-bottom:10.5px}#bookly-tbs .h1 .small,#bookly-tbs .h1 small,#bookly-tbs .h2 .small,#bookly-tbs .h2 small,#bookly-tbs .h3 .small,#bookly-tbs .h3 small,#bookly-tbs h1 .small,#bookly-tbs h1 small,#bookly-tbs h2 .small,#bookly-tbs h2 small,#bookly-tbs h3 .small,#bookly-tbs h3 small{font-size:65%}#bookly-tbs .h4,#bookly-tbs .h5,#bookly-tbs .h6,#bookly-tbs h4,#bookly-tbs h5,#bookly-tbs h6{margin-top:10.5px;margin-bottom:10.5px}#bookly-tbs .h4 .small,#bookly-tbs .h4 small,#bookly-tbs .h5 .small,#bookly-tbs .h5 small,#bookly-tbs .h6 .small,#bookly-tbs .h6 small,#bookly-tbs h4 .small,#bookly-tbs h4 small,#bookly-tbs h5 .small,#bookly-tbs h5 small,#bookly-tbs h6 .small,#bookly-tbs h6 small{font-size:75%}#bookly-tbs .h1,#bookly-tbs h1{font-size:27px}#bookly-tbs .h2,#bookly-tbs h2{font-size:24px}#bookly-tbs .h3,#bookly-tbs h3{font-size:21px}#bookly-tbs .h4,#bookly-tbs h4{font-size:18px}#bookly-tbs .h5,#bookly-tbs h5{font-size:15px}#bookly-tbs .h6,#bookly-tbs h6{font-size:13px}#bookly-tbs p{margin:0 0 10.5px}#bookly-tbs .lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){#bookly-tbs .lead{font-size:22.5px}}#bookly-tbs .small,#bookly-tbs small{font-size:86%}#bookly-tbs .mark,#bookly-tbs mark{padding:.2em;background-color:#fcf8e3}#bookly-tbs .text-left{text-align:left}#bookly-tbs .text-right{text-align:right}#bookly-tbs .text-center{text-align:center}#bookly-tbs .text-justify{text-align:justify}#bookly-tbs .text-nowrap{white-space:nowrap}#bookly-tbs .text-lowercase{text-transform:lowercase}#bookly-tbs .text-uppercase{text-transform:uppercase}#bookly-tbs .text-capitalize{text-transform:capitalize}#bookly-tbs .text-muted{color:#d9dee4}#bookly-tbs .text-primary{color:#08c}#bookly-tbs a.text-primary:focus,#bookly-tbs a.text-primary:hover{color:#069}#bookly-tbs .text-success{color:#3c763d}#bookly-tbs a.text-success:focus,#bookly-tbs a.text-success:hover{color:#2b542c}#bookly-tbs .text-info{color:#31708f}#bookly-tbs a.text-info:focus,#bookly-tbs a.text-info:hover{color:#245269}#bookly-tbs .text-warning{color:#8a6d3b}#bookly-tbs a.text-warning:focus,#bookly-tbs a.text-warning:hover{color:#66512c}#bookly-tbs .text-danger{color:#a94442}#bookly-tbs a.text-danger:focus,#bookly-tbs a.text-danger:hover{color:#843534}#bookly-tbs .bg-primary{color:#fff;background-color:#08c}#bookly-tbs a.bg-primary:focus,#bookly-tbs a.bg-primary:hover{background-color:#069}#bookly-tbs .bg-success{background-color:#dff0d8}#bookly-tbs a.bg-success:focus,#bookly-tbs a.bg-success:hover{background-color:#c1e2b3}#bookly-tbs .bg-info{background-color:#d9edf7}#bookly-tbs a.bg-info:focus,#bookly-tbs a.bg-info:hover{background-color:#afd9ee}#bookly-tbs .bg-warning{background-color:#fcf8e3}#bookly-tbs a.bg-warning:focus,#bookly-tbs a.bg-warning:hover{background-color:#f7ecb5}#bookly-tbs .bg-danger{background-color:#f2dede}#bookly-tbs a.bg-danger:focus,#bookly-tbs a.bg-danger:hover{background-color:#e4b9b9}#bookly-tbs .page-header{padding-bottom:9.5px;margin:42px 0 10.5px;border-bottom:1px solid transparent}#bookly-tbs ol,#bookly-tbs ul{margin-top:0;margin-bottom:10.5px}#bookly-tbs ol ol,#bookly-tbs ol ul,#bookly-tbs ul ol,#bookly-tbs ul ul{margin-bottom:0}#bookly-tbs .list-unstyled{padding-left:0;list-style:none}#bookly-tbs .list-inline{padding-left:0;margin-left:-5px;list-style:none}#bookly-tbs .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bookly-tbs dl{margin-top:0;margin-bottom:21px}#bookly-tbs dd,#bookly-tbs dt{line-height:1.4}#bookly-tbs dt{font-weight:700}#bookly-tbs dd{margin-left:0}@media (min-width:768px){#bookly-tbs .dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .dl-horizontal dd{margin-left:180px}}#bookly-tbs abbr[data-original-title],#bookly-tbs abbr[title]{cursor:help;border-bottom:1px dotted #d9dee4}#bookly-tbs .initialism{font-size:90%;text-transform:uppercase}#bookly-tbs blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e8ebf0}#bookly-tbs blockquote ol:last-child,#bookly-tbs blockquote p:last-child,#bookly-tbs blockquote ul:last-child{margin-bottom:0}#bookly-tbs blockquote .small,#bookly-tbs blockquote footer,#bookly-tbs blockquote small{display:block;font-size:80%;line-height:1.4;color:#d9dee4}#bookly-tbs blockquote .small:before,#bookly-tbs blockquote footer:before,#bookly-tbs blockquote small:before{content:'\2014 \00A0'}#bookly-tbs .blockquote-reverse,#bookly-tbs blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #e8ebf0;border-left:0}#bookly-tbs .blockquote-reverse .small:before,#bookly-tbs .blockquote-reverse footer:before,#bookly-tbs .blockquote-reverse small:before,#bookly-tbs blockquote.pull-right .small:before,#bookly-tbs blockquote.pull-right footer:before,#bookly-tbs blockquote.pull-right small:before{content:''}#bookly-tbs .blockquote-reverse .small:after,#bookly-tbs .blockquote-reverse footer:after,#bookly-tbs .blockquote-reverse small:after,#bookly-tbs blockquote.pull-right .small:after,#bookly-tbs blockquote.pull-right footer:after,#bookly-tbs blockquote.pull-right small:after{content:'\00A0 \2014'}#bookly-tbs address{margin-bottom:21px;font-style:normal;line-height:1.4}#bookly-tbs code,#bookly-tbs kbd,#bookly-tbs pre,#bookly-tbs samp{font-family:menlo,monaco,consolas,"courier new",monospace}#bookly-tbs code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bookly-tbs kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bookly-tbs kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.4;color:#5b6470;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bookly-tbs pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bookly-tbs .pre-scrollable{max-height:340px;overflow-y:scroll}#bookly-tbs .container{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){#bookly-tbs .container{width:740px}}@media (min-width:992px){#bookly-tbs .container{width:960px}}@media (min-width:1200px){#bookly-tbs .container{width:1160px}}#bookly-tbs .container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}#bookly-tbs .row{margin-right:-10px;margin-left:-10px}#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9,#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9,#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9,#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}#bookly-tbs .col-xs-1,#bookly-tbs .col-xs-10,#bookly-tbs .col-xs-11,#bookly-tbs .col-xs-12,#bookly-tbs .col-xs-2,#bookly-tbs .col-xs-3,#bookly-tbs .col-xs-4,#bookly-tbs .col-xs-5,#bookly-tbs .col-xs-6,#bookly-tbs .col-xs-7,#bookly-tbs .col-xs-8,#bookly-tbs .col-xs-9{float:left}#bookly-tbs .col-xs-12{width:100%}#bookly-tbs .col-xs-11{width:91.66666667%}#bookly-tbs .col-xs-10{width:83.33333333%}#bookly-tbs .col-xs-9{width:75%}#bookly-tbs .col-xs-8{width:66.66666667%}#bookly-tbs .col-xs-7{width:58.33333333%}#bookly-tbs .col-xs-6{width:50%}#bookly-tbs .col-xs-5{width:41.66666667%}#bookly-tbs .col-xs-4{width:33.33333333%}#bookly-tbs .col-xs-3{width:25%}#bookly-tbs .col-xs-2{width:16.66666667%}#bookly-tbs .col-xs-1{width:8.33333333%}#bookly-tbs .col-xs-pull-12{right:100%}#bookly-tbs .col-xs-pull-11{right:91.66666667%}#bookly-tbs .col-xs-pull-10{right:83.33333333%}#bookly-tbs .col-xs-pull-9{right:75%}#bookly-tbs .col-xs-pull-8{right:66.66666667%}#bookly-tbs .col-xs-pull-7{right:58.33333333%}#bookly-tbs .col-xs-pull-6{right:50%}#bookly-tbs .col-xs-pull-5{right:41.66666667%}#bookly-tbs .col-xs-pull-4{right:33.33333333%}#bookly-tbs .col-xs-pull-3{right:25%}#bookly-tbs .col-xs-pull-2{right:16.66666667%}#bookly-tbs .col-xs-pull-1{right:8.33333333%}#bookly-tbs .col-xs-pull-0{right:auto}#bookly-tbs .col-xs-push-12{left:100%}#bookly-tbs .col-xs-push-11{left:91.66666667%}#bookly-tbs .col-xs-push-10{left:83.33333333%}#bookly-tbs .col-xs-push-9{left:75%}#bookly-tbs .col-xs-push-8{left:66.66666667%}#bookly-tbs .col-xs-push-7{left:58.33333333%}#bookly-tbs .col-xs-push-6{left:50%}#bookly-tbs .col-xs-push-5{left:41.66666667%}#bookly-tbs .col-xs-push-4{left:33.33333333%}#bookly-tbs .col-xs-push-3{left:25%}#bookly-tbs .col-xs-push-2{left:16.66666667%}#bookly-tbs .col-xs-push-1{left:8.33333333%}#bookly-tbs .col-xs-push-0{left:auto}#bookly-tbs .col-xs-offset-12{margin-left:100%}#bookly-tbs .col-xs-offset-11{margin-left:91.66666667%}#bookly-tbs .col-xs-offset-10{margin-left:83.33333333%}#bookly-tbs .col-xs-offset-9{margin-left:75%}#bookly-tbs .col-xs-offset-8{margin-left:66.66666667%}#bookly-tbs .col-xs-offset-7{margin-left:58.33333333%}#bookly-tbs .col-xs-offset-6{margin-left:50%}#bookly-tbs .col-xs-offset-5{margin-left:41.66666667%}#bookly-tbs .col-xs-offset-4{margin-left:33.33333333%}#bookly-tbs .col-xs-offset-3{margin-left:25%}#bookly-tbs .col-xs-offset-2{margin-left:16.66666667%}#bookly-tbs .col-xs-offset-1{margin-left:8.33333333%}#bookly-tbs .col-xs-offset-0{margin-left:0}@media (min-width:768px){#bookly-tbs .col-sm-1,#bookly-tbs .col-sm-10,#bookly-tbs .col-sm-11,#bookly-tbs .col-sm-12,#bookly-tbs .col-sm-2,#bookly-tbs .col-sm-3,#bookly-tbs .col-sm-4,#bookly-tbs .col-sm-5,#bookly-tbs .col-sm-6,#bookly-tbs .col-sm-7,#bookly-tbs .col-sm-8,#bookly-tbs .col-sm-9{float:left}#bookly-tbs .col-sm-12{width:100%}#bookly-tbs .col-sm-11{width:91.66666667%}#bookly-tbs .col-sm-10{width:83.33333333%}#bookly-tbs .col-sm-9{width:75%}#bookly-tbs .col-sm-8{width:66.66666667%}#bookly-tbs .col-sm-7{width:58.33333333%}#bookly-tbs .col-sm-6{width:50%}#bookly-tbs .col-sm-5{width:41.66666667%}#bookly-tbs .col-sm-4{width:33.33333333%}#bookly-tbs .col-sm-3{width:25%}#bookly-tbs .col-sm-2{width:16.66666667%}#bookly-tbs .col-sm-1{width:8.33333333%}#bookly-tbs .col-sm-pull-12{right:100%}#bookly-tbs .col-sm-pull-11{right:91.66666667%}#bookly-tbs .col-sm-pull-10{right:83.33333333%}#bookly-tbs .col-sm-pull-9{right:75%}#bookly-tbs .col-sm-pull-8{right:66.66666667%}#bookly-tbs .col-sm-pull-7{right:58.33333333%}#bookly-tbs .col-sm-pull-6{right:50%}#bookly-tbs .col-sm-pull-5{right:41.66666667%}#bookly-tbs .col-sm-pull-4{right:33.33333333%}#bookly-tbs .col-sm-pull-3{right:25%}#bookly-tbs .col-sm-pull-2{right:16.66666667%}#bookly-tbs .col-sm-pull-1{right:8.33333333%}#bookly-tbs .col-sm-pull-0{right:auto}#bookly-tbs .col-sm-push-12{left:100%}#bookly-tbs .col-sm-push-11{left:91.66666667%}#bookly-tbs .col-sm-push-10{left:83.33333333%}#bookly-tbs .col-sm-push-9{left:75%}#bookly-tbs .col-sm-push-8{left:66.66666667%}#bookly-tbs .col-sm-push-7{left:58.33333333%}#bookly-tbs .col-sm-push-6{left:50%}#bookly-tbs .col-sm-push-5{left:41.66666667%}#bookly-tbs .col-sm-push-4{left:33.33333333%}#bookly-tbs .col-sm-push-3{left:25%}#bookly-tbs .col-sm-push-2{left:16.66666667%}#bookly-tbs .col-sm-push-1{left:8.33333333%}#bookly-tbs .col-sm-push-0{left:auto}#bookly-tbs .col-sm-offset-12{margin-left:100%}#bookly-tbs .col-sm-offset-11{margin-left:91.66666667%}#bookly-tbs .col-sm-offset-10{margin-left:83.33333333%}#bookly-tbs .col-sm-offset-9{margin-left:75%}#bookly-tbs .col-sm-offset-8{margin-left:66.66666667%}#bookly-tbs .col-sm-offset-7{margin-left:58.33333333%}#bookly-tbs .col-sm-offset-6{margin-left:50%}#bookly-tbs .col-sm-offset-5{margin-left:41.66666667%}#bookly-tbs .col-sm-offset-4{margin-left:33.33333333%}#bookly-tbs .col-sm-offset-3{margin-left:25%}#bookly-tbs .col-sm-offset-2{margin-left:16.66666667%}#bookly-tbs .col-sm-offset-1{margin-left:8.33333333%}#bookly-tbs .col-sm-offset-0{margin-left:0}}@media (min-width:992px){#bookly-tbs .col-md-1,#bookly-tbs .col-md-10,#bookly-tbs .col-md-11,#bookly-tbs .col-md-12,#bookly-tbs .col-md-2,#bookly-tbs .col-md-3,#bookly-tbs .col-md-4,#bookly-tbs .col-md-5,#bookly-tbs .col-md-6,#bookly-tbs .col-md-7,#bookly-tbs .col-md-8,#bookly-tbs .col-md-9{float:left}#bookly-tbs .col-md-12{width:100%}#bookly-tbs .col-md-11{width:91.66666667%}#bookly-tbs .col-md-10{width:83.33333333%}#bookly-tbs .col-md-9{width:75%}#bookly-tbs .col-md-8{width:66.66666667%}#bookly-tbs .col-md-7{width:58.33333333%}#bookly-tbs .col-md-6{width:50%}#bookly-tbs .col-md-5{width:41.66666667%}#bookly-tbs .col-md-4{width:33.33333333%}#bookly-tbs .col-md-3{width:25%}#bookly-tbs .col-md-2{width:16.66666667%}#bookly-tbs .col-md-1{width:8.33333333%}#bookly-tbs .col-md-pull-12{right:100%}#bookly-tbs .col-md-pull-11{right:91.66666667%}#bookly-tbs .col-md-pull-10{right:83.33333333%}#bookly-tbs .col-md-pull-9{right:75%}#bookly-tbs .col-md-pull-8{right:66.66666667%}#bookly-tbs .col-md-pull-7{right:58.33333333%}#bookly-tbs .col-md-pull-6{right:50%}#bookly-tbs .col-md-pull-5{right:41.66666667%}#bookly-tbs .col-md-pull-4{right:33.33333333%}#bookly-tbs .col-md-pull-3{right:25%}#bookly-tbs .col-md-pull-2{right:16.66666667%}#bookly-tbs .col-md-pull-1{right:8.33333333%}#bookly-tbs .col-md-pull-0{right:auto}#bookly-tbs .col-md-push-12{left:100%}#bookly-tbs .col-md-push-11{left:91.66666667%}#bookly-tbs .col-md-push-10{left:83.33333333%}#bookly-tbs .col-md-push-9{left:75%}#bookly-tbs .col-md-push-8{left:66.66666667%}#bookly-tbs .col-md-push-7{left:58.33333333%}#bookly-tbs .col-md-push-6{left:50%}#bookly-tbs .col-md-push-5{left:41.66666667%}#bookly-tbs .col-md-push-4{left:33.33333333%}#bookly-tbs .col-md-push-3{left:25%}#bookly-tbs .col-md-push-2{left:16.66666667%}#bookly-tbs .col-md-push-1{left:8.33333333%}#bookly-tbs .col-md-push-0{left:auto}#bookly-tbs .col-md-offset-12{margin-left:100%}#bookly-tbs .col-md-offset-11{margin-left:91.66666667%}#bookly-tbs .col-md-offset-10{margin-left:83.33333333%}#bookly-tbs .col-md-offset-9{margin-left:75%}#bookly-tbs .col-md-offset-8{margin-left:66.66666667%}#bookly-tbs .col-md-offset-7{margin-left:58.33333333%}#bookly-tbs .col-md-offset-6{margin-left:50%}#bookly-tbs .col-md-offset-5{margin-left:41.66666667%}#bookly-tbs .col-md-offset-4{margin-left:33.33333333%}#bookly-tbs .col-md-offset-3{margin-left:25%}#bookly-tbs .col-md-offset-2{margin-left:16.66666667%}#bookly-tbs .col-md-offset-1{margin-left:8.33333333%}#bookly-tbs .col-md-offset-0{margin-left:0}}@media (min-width:1200px){#bookly-tbs .col-lg-1,#bookly-tbs .col-lg-10,#bookly-tbs .col-lg-11,#bookly-tbs .col-lg-12,#bookly-tbs .col-lg-2,#bookly-tbs .col-lg-3,#bookly-tbs .col-lg-4,#bookly-tbs .col-lg-5,#bookly-tbs .col-lg-6,#bookly-tbs .col-lg-7,#bookly-tbs .col-lg-8,#bookly-tbs .col-lg-9{float:left}#bookly-tbs .col-lg-12{width:100%}#bookly-tbs .col-lg-11{width:91.66666667%}#bookly-tbs .col-lg-10{width:83.33333333%}#bookly-tbs .col-lg-9{width:75%}#bookly-tbs .col-lg-8{width:66.66666667%}#bookly-tbs .col-lg-7{width:58.33333333%}#bookly-tbs .col-lg-6{width:50%}#bookly-tbs .col-lg-5{width:41.66666667%}#bookly-tbs .col-lg-4{width:33.33333333%}#bookly-tbs .col-lg-3{width:25%}#bookly-tbs .col-lg-2{width:16.66666667%}#bookly-tbs .col-lg-1{width:8.33333333%}#bookly-tbs .col-lg-pull-12{right:100%}#bookly-tbs .col-lg-pull-11{right:91.66666667%}#bookly-tbs .col-lg-pull-10{right:83.33333333%}#bookly-tbs .col-lg-pull-9{right:75%}#bookly-tbs .col-lg-pull-8{right:66.66666667%}#bookly-tbs .col-lg-pull-7{right:58.33333333%}#bookly-tbs .col-lg-pull-6{right:50%}#bookly-tbs .col-lg-pull-5{right:41.66666667%}#bookly-tbs .col-lg-pull-4{right:33.33333333%}#bookly-tbs .col-lg-pull-3{right:25%}#bookly-tbs .col-lg-pull-2{right:16.66666667%}#bookly-tbs .col-lg-pull-1{right:8.33333333%}#bookly-tbs .col-lg-pull-0{right:auto}#bookly-tbs .col-lg-push-12{left:100%}#bookly-tbs .col-lg-push-11{left:91.66666667%}#bookly-tbs .col-lg-push-10{left:83.33333333%}#bookly-tbs .col-lg-push-9{left:75%}#bookly-tbs .col-lg-push-8{left:66.66666667%}#bookly-tbs .col-lg-push-7{left:58.33333333%}#bookly-tbs .col-lg-push-6{left:50%}#bookly-tbs .col-lg-push-5{left:41.66666667%}#bookly-tbs .col-lg-push-4{left:33.33333333%}#bookly-tbs .col-lg-push-3{left:25%}#bookly-tbs .col-lg-push-2{left:16.66666667%}#bookly-tbs .col-lg-push-1{left:8.33333333%}#bookly-tbs .col-lg-push-0{left:auto}#bookly-tbs .col-lg-offset-12{margin-left:100%}#bookly-tbs .col-lg-offset-11{margin-left:91.66666667%}#bookly-tbs .col-lg-offset-10{margin-left:83.33333333%}#bookly-tbs .col-lg-offset-9{margin-left:75%}#bookly-tbs .col-lg-offset-8{margin-left:66.66666667%}#bookly-tbs .col-lg-offset-7{margin-left:58.33333333%}#bookly-tbs .col-lg-offset-6{margin-left:50%}#bookly-tbs .col-lg-offset-5{margin-left:41.66666667%}#bookly-tbs .col-lg-offset-4{margin-left:33.33333333%}#bookly-tbs .col-lg-offset-3{margin-left:25%}#bookly-tbs .col-lg-offset-2{margin-left:16.66666667%}#bookly-tbs .col-lg-offset-1{margin-left:8.33333333%}#bookly-tbs .col-lg-offset-0{margin-left:0}}#bookly-tbs table{background-color:transparent}#bookly-tbs caption{padding-top:8px;padding-bottom:8px;color:#d9dee4;text-align:left}#bookly-tbs th{text-align:left}#bookly-tbs .table{width:100%;max-width:100%;margin-bottom:21px}#bookly-tbs .table>tbody>tr>td,#bookly-tbs .table>tbody>tr>th,#bookly-tbs .table>tfoot>tr>td,#bookly-tbs .table>tfoot>tr>th,#bookly-tbs .table>thead>tr>td,#bookly-tbs .table>thead>tr>th{padding:8px;line-height:1.4;vertical-align:top;border-top:1px solid #d9dee4}#bookly-tbs .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #d9dee4}#bookly-tbs .table>caption+thead>tr:first-child>td,#bookly-tbs .table>caption+thead>tr:first-child>th,#bookly-tbs .table>colgroup+thead>tr:first-child>td,#bookly-tbs .table>colgroup+thead>tr:first-child>th,#bookly-tbs .table>thead:first-child>tr:first-child>td,#bookly-tbs .table>thead:first-child>tr:first-child>th{border-top:0}#bookly-tbs .table>tbody+tbody{border-top:2px solid #d9dee4}#bookly-tbs .table .table{background-color:transparent}#bookly-tbs .table-condensed>tbody>tr>td,#bookly-tbs .table-condensed>tbody>tr>th,#bookly-tbs .table-condensed>tfoot>tr>td,#bookly-tbs .table-condensed>tfoot>tr>th,#bookly-tbs .table-condensed>thead>tr>td,#bookly-tbs .table-condensed>thead>tr>th{padding:5px}#bookly-tbs .table-bordered{border:1px solid #d9dee4}#bookly-tbs .table-bordered>tbody>tr>td,#bookly-tbs .table-bordered>tbody>tr>th,#bookly-tbs .table-bordered>tfoot>tr>td,#bookly-tbs .table-bordered>tfoot>tr>th,#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border:1px solid #d9dee4}#bookly-tbs .table-bordered>thead>tr>td,#bookly-tbs .table-bordered>thead>tr>th{border-bottom-width:2px}#bookly-tbs .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bookly-tbs .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bookly-tbs table col[class*=col-]{position:static;display:table-column;float:none}#bookly-tbs table td[class*=col-],#bookly-tbs table th[class*=col-]{position:static;display:table-cell;float:none}#bookly-tbs .table>tbody>tr.active>td,#bookly-tbs .table>tbody>tr.active>th,#bookly-tbs .table>tbody>tr>td.active,#bookly-tbs .table>tbody>tr>th.active,#bookly-tbs .table>tfoot>tr.active>td,#bookly-tbs .table>tfoot>tr.active>th,#bookly-tbs .table>tfoot>tr>td.active,#bookly-tbs .table>tfoot>tr>th.active,#bookly-tbs .table>thead>tr.active>td,#bookly-tbs .table>thead>tr.active>th,#bookly-tbs .table>thead>tr>td.active,#bookly-tbs .table>thead>tr>th.active{background-color:#f5f5f5}#bookly-tbs .table-hover>tbody>tr.active:hover>td,#bookly-tbs .table-hover>tbody>tr.active:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.active,#bookly-tbs .table-hover>tbody>tr>td.active:hover,#bookly-tbs .table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}#bookly-tbs .table>tbody>tr.success>td,#bookly-tbs .table>tbody>tr.success>th,#bookly-tbs .table>tbody>tr>td.success,#bookly-tbs .table>tbody>tr>th.success,#bookly-tbs .table>tfoot>tr.success>td,#bookly-tbs .table>tfoot>tr.success>th,#bookly-tbs .table>tfoot>tr>td.success,#bookly-tbs .table>tfoot>tr>th.success,#bookly-tbs .table>thead>tr.success>td,#bookly-tbs .table>thead>tr.success>th,#bookly-tbs .table>thead>tr>td.success,#bookly-tbs .table>thead>tr>th.success{background-color:#dff0d8}#bookly-tbs .table-hover>tbody>tr.success:hover>td,#bookly-tbs .table-hover>tbody>tr.success:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.success,#bookly-tbs .table-hover>tbody>tr>td.success:hover,#bookly-tbs .table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}#bookly-tbs .table>tbody>tr.info>td,#bookly-tbs .table>tbody>tr.info>th,#bookly-tbs .table>tbody>tr>td.info,#bookly-tbs .table>tbody>tr>th.info,#bookly-tbs .table>tfoot>tr.info>td,#bookly-tbs .table>tfoot>tr.info>th,#bookly-tbs .table>tfoot>tr>td.info,#bookly-tbs .table>tfoot>tr>th.info,#bookly-tbs .table>thead>tr.info>td,#bookly-tbs .table>thead>tr.info>th,#bookly-tbs .table>thead>tr>td.info,#bookly-tbs .table>thead>tr>th.info{background-color:#d9edf7}#bookly-tbs .table-hover>tbody>tr.info:hover>td,#bookly-tbs .table-hover>tbody>tr.info:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.info,#bookly-tbs .table-hover>tbody>tr>td.info:hover,#bookly-tbs .table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}#bookly-tbs .table>tbody>tr.warning>td,#bookly-tbs .table>tbody>tr.warning>th,#bookly-tbs .table>tbody>tr>td.warning,#bookly-tbs .table>tbody>tr>th.warning,#bookly-tbs .table>tfoot>tr.warning>td,#bookly-tbs .table>tfoot>tr.warning>th,#bookly-tbs .table>tfoot>tr>td.warning,#bookly-tbs .table>tfoot>tr>th.warning,#bookly-tbs .table>thead>tr.warning>td,#bookly-tbs .table>thead>tr.warning>th,#bookly-tbs .table>thead>tr>td.warning,#bookly-tbs .table>thead>tr>th.warning{background-color:#fcf8e3}#bookly-tbs .table-hover>tbody>tr.warning:hover>td,#bookly-tbs .table-hover>tbody>tr.warning:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.warning,#bookly-tbs .table-hover>tbody>tr>td.warning:hover,#bookly-tbs .table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}#bookly-tbs .table>tbody>tr.danger>td,#bookly-tbs .table>tbody>tr.danger>th,#bookly-tbs .table>tbody>tr>td.danger,#bookly-tbs .table>tbody>tr>th.danger,#bookly-tbs .table>tfoot>tr.danger>td,#bookly-tbs .table>tfoot>tr.danger>th,#bookly-tbs .table>tfoot>tr>td.danger,#bookly-tbs .table>tfoot>tr>th.danger,#bookly-tbs .table>thead>tr.danger>td,#bookly-tbs .table>thead>tr.danger>th,#bookly-tbs .table>thead>tr>td.danger,#bookly-tbs .table>thead>tr>th.danger{background-color:#f2dede}#bookly-tbs .table-hover>tbody>tr.danger:hover>td,#bookly-tbs .table-hover>tbody>tr.danger:hover>th,#bookly-tbs .table-hover>tbody>tr:hover>.danger,#bookly-tbs .table-hover>tbody>tr>td.danger:hover,#bookly-tbs .table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}#bookly-tbs .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bookly-tbs .table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #d9dee4}#bookly-tbs .table-responsive>.table{margin-bottom:0}#bookly-tbs .table-responsive>.table>tbody>tr>td,#bookly-tbs .table-responsive>.table>tbody>tr>th,#bookly-tbs .table-responsive>.table>tfoot>tr>td,#bookly-tbs .table-responsive>.table>tfoot>tr>th,#bookly-tbs .table-responsive>.table>thead>tr>td,#bookly-tbs .table-responsive>.table>thead>tr>th{white-space:nowrap}#bookly-tbs .table-responsive>.table-bordered{border:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}#bookly-tbs fieldset{min-width:0;padding:0;margin:0;border:0}#bookly-tbs legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#5b6470;border:0;border-bottom:1px solid #e8ebf0}#bookly-tbs label{display:inline-block;max-width:100%;margin-bottom:7px;font-weight:700}#bookly-tbs input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{margin:3px 0 0;margin-top:1px\9;line-height:normal}#bookly-tbs input[type=file]{display:block}#bookly-tbs input[type=range]{display:block;width:100%}#bookly-tbs select[multiple],#bookly-tbs select[size]{height:auto}#bookly-tbs input[type=file]:focus,#bookly-tbs input[type=checkbox]:focus,#bookly-tbs input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs output{display:block;padding-top:7px;font-size:15px;line-height:1.4;color:#3e424a}#bookly-tbs .form-control{display:block;width:100%;height:35px;padding:6px 12px;font-size:15px;line-height:1.4;color:#3e424a;background-color:#fff;background-image:none;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bookly-tbs .form-control:focus{border-color:#08c;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0);box-shadow:inset 0 1px 1px rgba(0,0,0,0),0 0 8px rgba(0,136,204,0)}#bookly-tbs .form-control::-moz-placeholder{color:#8a929e;opacity:1}#bookly-tbs .form-control:-ms-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-webkit-input-placeholder{color:#8a929e}#bookly-tbs .form-control::-ms-expand{background-color:transparent;border:0}#bookly-tbs .form-control[disabled],#bookly-tbs .form-control[readonly],#bookly-tbs fieldset[disabled] .form-control{background-color:rgba(232,235,240,.7);opacity:1}#bookly-tbs .form-control[disabled],#bookly-tbs fieldset[disabled] .form-control{cursor:not-allowed}#bookly-tbs textarea.form-control{height:auto}#bookly-tbs input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){#bookly-tbs input[type=date].form-control,#bookly-tbs input[type=time].form-control,#bookly-tbs input[type=datetime-local].form-control,#bookly-tbs input[type=month].form-control{line-height:35px}#bookly-tbs .input-group-sm input[type=date],#bookly-tbs .input-group-sm input[type=time],#bookly-tbs .input-group-sm input[type=datetime-local],#bookly-tbs .input-group-sm input[type=month],#bookly-tbs input[type=date].input-sm,#bookly-tbs input[type=time].input-sm,#bookly-tbs input[type=datetime-local].input-sm,#bookly-tbs input[type=month].input-sm{line-height:32px}#bookly-tbs .input-group-lg input[type=date],#bookly-tbs .input-group-lg input[type=time],#bookly-tbs .input-group-lg input[type=datetime-local],#bookly-tbs .input-group-lg input[type=month],#bookly-tbs input[type=date].input-lg,#bookly-tbs input[type=time].input-lg,#bookly-tbs input[type=datetime-local].input-lg,#bookly-tbs input[type=month].input-lg{line-height:46px}}#bookly-tbs .form-group{margin-bottom:20px}#bookly-tbs .checkbox,#bookly-tbs .radio{position:relative;display:block;margin-top:6px;margin-bottom:7px}#bookly-tbs .checkbox label,#bookly-tbs .radio label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bookly-tbs .checkbox input[type=checkbox],#bookly-tbs .checkbox-inline input[type=checkbox],#bookly-tbs .radio input[type=radio],#bookly-tbs .radio-inline input[type=radio]{position:absolute;margin-top:3px\9;margin-left:-20px}#bookly-tbs .checkbox+.checkbox,#bookly-tbs .radio+.radio{margin-top:-5px}#bookly-tbs .checkbox-inline,#bookly-tbs .radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bookly-tbs .checkbox-inline+.checkbox-inline,#bookly-tbs .radio-inline+.radio-inline{margin-top:0;margin-left:10px}#bookly-tbs fieldset[disabled] input[type=checkbox],#bookly-tbs fieldset[disabled] input[type=radio],#bookly-tbs input[type=checkbox].disabled,#bookly-tbs input[type=checkbox][disabled],#bookly-tbs input[type=radio].disabled,#bookly-tbs input[type=radio][disabled]{cursor:not-allowed}#bookly-tbs .checkbox-inline.disabled,#bookly-tbs .radio-inline.disabled,#bookly-tbs fieldset[disabled] .checkbox-inline,#bookly-tbs fieldset[disabled] .radio-inline{cursor:not-allowed}#bookly-tbs .checkbox.disabled label,#bookly-tbs .radio.disabled label,#bookly-tbs fieldset[disabled] .checkbox label,#bookly-tbs fieldset[disabled] .radio label{cursor:not-allowed}#bookly-tbs .form-control-static{min-height:36px;padding-top:7px;padding-bottom:7px;margin-bottom:0}#bookly-tbs .form-control-static.input-lg,#bookly-tbs .form-control-static.input-sm{padding-right:0;padding-left:0}#bookly-tbs .input-sm{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-sm{height:32px;line-height:32px}#bookly-tbs select[multiple].input-sm,#bookly-tbs textarea.input-sm{height:auto}#bookly-tbs .form-group-sm .form-control{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .form-group-sm select.form-control{height:32px;line-height:32px}#bookly-tbs .form-group-sm select[multiple].form-control,#bookly-tbs .form-group-sm textarea.form-control{height:auto}#bookly-tbs .form-group-sm .form-control-static{height:32px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-lg{height:46px;line-height:46px}#bookly-tbs select[multiple].input-lg,#bookly-tbs textarea.input-lg{height:auto}#bookly-tbs .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs .form-group-lg select.form-control{height:46px;line-height:46px}#bookly-tbs .form-group-lg select[multiple].form-control,#bookly-tbs .form-group-lg textarea.form-control{height:auto}#bookly-tbs .form-group-lg .form-control-static{height:46px;min-height:39px;padding:11px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .has-feedback{position:relative}#bookly-tbs .has-feedback .form-control{padding-right:43.75px}#bookly-tbs .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:35px;height:35px;line-height:35px;text-align:center;pointer-events:none}#bookly-tbs .form-group-lg .form-control+.form-control-feedback,#bookly-tbs .input-group-lg+.form-control-feedback,#bookly-tbs .input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}#bookly-tbs .form-group-sm .form-control+.form-control-feedback,#bookly-tbs .input-group-sm+.form-control-feedback,#bookly-tbs .input-sm+.form-control-feedback{width:32px;height:32px;line-height:32px}#bookly-tbs .has-success .checkbox,#bookly-tbs .has-success .checkbox-inline,#bookly-tbs .has-success .control-label,#bookly-tbs .has-success .help-block,#bookly-tbs .has-success .radio,#bookly-tbs .has-success .radio-inline,#bookly-tbs .has-success.checkbox label,#bookly-tbs .has-success.checkbox-inline label,#bookly-tbs .has-success.radio label,#bookly-tbs .has-success.radio-inline label{color:#3c763d}#bookly-tbs .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}#bookly-tbs .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}#bookly-tbs .has-success .form-control-feedback{color:#3c763d}#bookly-tbs .has-warning .checkbox,#bookly-tbs .has-warning .checkbox-inline,#bookly-tbs .has-warning .control-label,#bookly-tbs .has-warning .help-block,#bookly-tbs .has-warning .radio,#bookly-tbs .has-warning .radio-inline,#bookly-tbs .has-warning.checkbox label,#bookly-tbs .has-warning.checkbox-inline label,#bookly-tbs .has-warning.radio label,#bookly-tbs .has-warning.radio-inline label{color:#8a6d3b}#bookly-tbs .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}#bookly-tbs .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}#bookly-tbs .has-warning .form-control-feedback{color:#8a6d3b}#bookly-tbs .has-error .checkbox,#bookly-tbs .has-error .checkbox-inline,#bookly-tbs .has-error .control-label,#bookly-tbs .has-error .help-block,#bookly-tbs .has-error .radio,#bookly-tbs .has-error .radio-inline,#bookly-tbs .has-error.checkbox label,#bookly-tbs .has-error.checkbox-inline label,#bookly-tbs .has-error.radio label,#bookly-tbs .has-error.radio-inline label{color:#a94442}#bookly-tbs .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bookly-tbs .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}#bookly-tbs .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}#bookly-tbs .has-error .form-control-feedback{color:#a94442}#bookly-tbs .has-feedback label~.form-control-feedback{top:26px}#bookly-tbs .has-feedback label.sr-only~.form-control-feedback{top:0}#bookly-tbs .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#8a929e}@media (min-width:768px){#bookly-tbs .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .form-inline .form-control-static{display:inline-block}#bookly-tbs .form-inline .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .form-inline .input-group .form-control,#bookly-tbs .form-inline .input-group .input-group-addon,#bookly-tbs .form-inline .input-group .input-group-btn{width:auto}#bookly-tbs .form-inline .input-group>.form-control{width:100%}#bookly-tbs .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .checkbox,#bookly-tbs .form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .form-inline .has-feedback .form-control-feedback{top:0}}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .checkbox-inline,#bookly-tbs .form-horizontal .radio,#bookly-tbs .form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}#bookly-tbs .form-horizontal .checkbox,#bookly-tbs .form-horizontal .radio{min-height:28px}#bookly-tbs .form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}#bookly-tbs .form-horizontal .has-feedback .form-control-feedback{right:10px}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){#bookly-tbs .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}#bookly-tbs .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:15px;font-weight:400;line-height:1.4;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .btn.active.focus,#bookly-tbs .btn.active:focus,#bookly-tbs .btn.focus,#bookly-tbs .btn:active.focus,#bookly-tbs .btn:active:focus,#bookly-tbs .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bookly-tbs .btn.focus,#bookly-tbs .btn:focus,#bookly-tbs .btn:hover{color:#3e424a;text-decoration:none}#bookly-tbs .btn.active,#bookly-tbs .btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn.disabled,#bookly-tbs .btn[disabled],#bookly-tbs fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}#bookly-tbs a.btn.disabled,#bookly-tbs fieldset[disabled] a.btn{pointer-events:none}#bookly-tbs .btn-default{color:#3e424a;background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default.focus,#bookly-tbs .btn-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .btn-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .btn-default.active.focus,#bookly-tbs .btn-default.active:focus,#bookly-tbs .btn-default.active:hover,#bookly-tbs .btn-default:active.focus,#bookly-tbs .btn-default:active:focus,#bookly-tbs .btn-default:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-default.focus,#bookly-tbs .open>.dropdown-toggle.btn-default:focus,#bookly-tbs .open>.dropdown-toggle.btn-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .btn-default.active,#bookly-tbs .btn-default:active,#bookly-tbs .open>.dropdown-toggle.btn-default{background-image:none}#bookly-tbs .btn-default.disabled.focus,#bookly-tbs .btn-default.disabled:focus,#bookly-tbs .btn-default.disabled:hover,#bookly-tbs .btn-default[disabled].focus,#bookly-tbs .btn-default[disabled]:focus,#bookly-tbs .btn-default[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-default.focus,#bookly-tbs fieldset[disabled] .btn-default:focus,#bookly-tbs fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .btn-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .btn-primary{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary.focus,#bookly-tbs .btn-primary:focus{color:#fff;background-color:#069;border-color:#00334d}#bookly-tbs .btn-primary:hover{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#069;border-color:#005f8f}#bookly-tbs .btn-primary.active.focus,#bookly-tbs .btn-primary.active:focus,#bookly-tbs .btn-primary.active:hover,#bookly-tbs .btn-primary:active.focus,#bookly-tbs .btn-primary:active:focus,#bookly-tbs .btn-primary:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-primary.focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:focus,#bookly-tbs .open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#004e75;border-color:#00334d}#bookly-tbs .btn-primary.active,#bookly-tbs .btn-primary:active,#bookly-tbs .open>.dropdown-toggle.btn-primary{background-image:none}#bookly-tbs .btn-primary.disabled.focus,#bookly-tbs .btn-primary.disabled:focus,#bookly-tbs .btn-primary.disabled:hover,#bookly-tbs .btn-primary[disabled].focus,#bookly-tbs .btn-primary[disabled]:focus,#bookly-tbs .btn-primary[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-primary.focus,#bookly-tbs fieldset[disabled] .btn-primary:focus,#bookly-tbs fieldset[disabled] .btn-primary:hover{background-color:#08c;border-color:#08c}#bookly-tbs .btn-primary .badge{color:#08c;background-color:#fff}#bookly-tbs .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success.focus,#bookly-tbs .btn-success:focus{color:#fff;background-color:#449d44;border-color:#2d672d}#bookly-tbs .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#419641}#bookly-tbs .btn-success.active.focus,#bookly-tbs .btn-success.active:focus,#bookly-tbs .btn-success.active:hover,#bookly-tbs .btn-success:active.focus,#bookly-tbs .btn-success:active:focus,#bookly-tbs .btn-success:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-success.focus,#bookly-tbs .open>.dropdown-toggle.btn-success:focus,#bookly-tbs .open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#2d672d}#bookly-tbs .btn-success.active,#bookly-tbs .btn-success:active,#bookly-tbs .open>.dropdown-toggle.btn-success{background-image:none}#bookly-tbs .btn-success.disabled.focus,#bookly-tbs .btn-success.disabled:focus,#bookly-tbs .btn-success.disabled:hover,#bookly-tbs .btn-success[disabled].focus,#bookly-tbs .btn-success[disabled]:focus,#bookly-tbs .btn-success[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-success.focus,#bookly-tbs fieldset[disabled] .btn-success:focus,#bookly-tbs fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#5cb85c}#bookly-tbs .btn-success .badge{color:#5cb85c;background-color:#fff}#bookly-tbs .btn-info{color:#fff;background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info.focus,#bookly-tbs .btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#175b70}#bookly-tbs .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#2289a7}#bookly-tbs .btn-info.active.focus,#bookly-tbs .btn-info.active:focus,#bookly-tbs .btn-info.active:hover,#bookly-tbs .btn-info:active.focus,#bookly-tbs .btn-info:active:focus,#bookly-tbs .btn-info:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-info.focus,#bookly-tbs .open>.dropdown-toggle.btn-info:focus,#bookly-tbs .open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#175b70}#bookly-tbs .btn-info.active,#bookly-tbs .btn-info:active,#bookly-tbs .open>.dropdown-toggle.btn-info{background-image:none}#bookly-tbs .btn-info.disabled.focus,#bookly-tbs .btn-info.disabled:focus,#bookly-tbs .btn-info.disabled:hover,#bookly-tbs .btn-info[disabled].focus,#bookly-tbs .btn-info[disabled]:focus,#bookly-tbs .btn-info[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-info.focus,#bookly-tbs fieldset[disabled] .btn-info:focus,#bookly-tbs fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#31b0d5}#bookly-tbs .btn-info .badge{color:#5bc0de;background-color:#fff}#bookly-tbs .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning.focus,#bookly-tbs .btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#b06d0f}#bookly-tbs .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#eb9316}#bookly-tbs .btn-warning.active.focus,#bookly-tbs .btn-warning.active:focus,#bookly-tbs .btn-warning.active:hover,#bookly-tbs .btn-warning:active.focus,#bookly-tbs .btn-warning:active:focus,#bookly-tbs .btn-warning:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-warning.focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:focus,#bookly-tbs .open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#b06d0f}#bookly-tbs .btn-warning.active,#bookly-tbs .btn-warning:active,#bookly-tbs .open>.dropdown-toggle.btn-warning{background-image:none}#bookly-tbs .btn-warning.disabled.focus,#bookly-tbs .btn-warning.disabled:focus,#bookly-tbs .btn-warning.disabled:hover,#bookly-tbs .btn-warning[disabled].focus,#bookly-tbs .btn-warning[disabled]:focus,#bookly-tbs .btn-warning[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-warning.focus,#bookly-tbs fieldset[disabled] .btn-warning:focus,#bookly-tbs fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ad4e}#bookly-tbs .btn-warning .badge{color:#f0ad4e;background-color:#fff}#bookly-tbs .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger.focus,#bookly-tbs .btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#8b211e}#bookly-tbs .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#c12e2a}#bookly-tbs .btn-danger.active.focus,#bookly-tbs .btn-danger.active:focus,#bookly-tbs .btn-danger.active:hover,#bookly-tbs .btn-danger:active.focus,#bookly-tbs .btn-danger:active:focus,#bookly-tbs .btn-danger:active:hover,#bookly-tbs .open>.dropdown-toggle.btn-danger.focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:focus,#bookly-tbs .open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#8b211e}#bookly-tbs .btn-danger.active,#bookly-tbs .btn-danger:active,#bookly-tbs .open>.dropdown-toggle.btn-danger{background-image:none}#bookly-tbs .btn-danger.disabled.focus,#bookly-tbs .btn-danger.disabled:focus,#bookly-tbs .btn-danger.disabled:hover,#bookly-tbs .btn-danger[disabled].focus,#bookly-tbs .btn-danger[disabled]:focus,#bookly-tbs .btn-danger[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-danger.focus,#bookly-tbs fieldset[disabled] .btn-danger:focus,#bookly-tbs fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d9534f}#bookly-tbs .btn-danger .badge{color:#d9534f;background-color:#fff}#bookly-tbs .btn-link{font-weight:400;color:#08c;border-radius:0}#bookly-tbs .btn-link,#bookly-tbs .btn-link.active,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link[disabled],#bookly-tbs fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn-link,#bookly-tbs .btn-link:active,#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{border-color:transparent}#bookly-tbs .btn-link:focus,#bookly-tbs .btn-link:hover{color:#005580;text-decoration:none;background-color:transparent}#bookly-tbs .btn-link[disabled]:focus,#bookly-tbs .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .btn-link:focus,#bookly-tbs fieldset[disabled] .btn-link:hover{color:#8a929e;text-decoration:none}#bookly-tbs .btn-group-lg>.btn,#bookly-tbs .btn-lg{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:4px}#bookly-tbs .btn-group-sm>.btn,#bookly-tbs .btn-sm{padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-group-xs>.btn,#bookly-tbs .btn-xs{padding:1px 5px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs .btn-block{display:block;width:100%}#bookly-tbs .btn-block+.btn-block{margin-top:5px}#bookly-tbs input[type=button].btn-block,#bookly-tbs input[type=reset].btn-block,#bookly-tbs input[type=submit].btn-block{width:100%}#bookly-tbs .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bookly-tbs .fade.in{opacity:1}#bookly-tbs .collapse{display:none}#bookly-tbs .collapse.in{display:block}#bookly-tbs tr.collapse.in{display:table-row}#bookly-tbs tbody.collapse.in{display:table-row-group}#bookly-tbs .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}#bookly-tbs .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}#bookly-tbs .dropdown,#bookly-tbs .dropup{position:relative}#bookly-tbs .dropdown-toggle:focus{outline:0}#bookly-tbs .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;font-size:15px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bookly-tbs .dropdown-menu.pull-right{right:0;left:auto}#bookly-tbs .dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .dropdown-menu>li>a:focus,#bookly-tbs .dropdown-menu>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .dropdown-menu>.active>a,#bookly-tbs .dropdown-menu>.active>a:focus,#bookly-tbs .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#08c;outline:0}#bookly-tbs .dropdown-menu>.disabled>a,#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{color:#d9dee4}#bookly-tbs .dropdown-menu>.disabled>a:focus,#bookly-tbs .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bookly-tbs .open>.dropdown-menu{display:block}#bookly-tbs .open>a{outline:0}#bookly-tbs .dropdown-menu-right{right:0;left:auto}#bookly-tbs .dropdown-menu-left{right:auto;left:0}#bookly-tbs .dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}#bookly-tbs .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bookly-tbs .pull-right>.dropdown-menu{right:0;left:auto}#bookly-tbs .dropup .caret,#bookly-tbs .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:5px dashed;border-bottom:5px solid\9}#bookly-tbs .dropup .dropdown-menu,#bookly-tbs .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bookly-tbs .navbar-right .dropdown-menu{right:0;left:auto}#bookly-tbs .navbar-right .dropdown-menu-left{right:auto;left:0}}#bookly-tbs .btn-group,#bookly-tbs .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group>.btn{position:relative;float:left}#bookly-tbs .btn-group-vertical>.btn.active,#bookly-tbs .btn-group-vertical>.btn:active,#bookly-tbs .btn-group-vertical>.btn:focus,#bookly-tbs .btn-group-vertical>.btn:hover,#bookly-tbs .btn-group>.btn.active,#bookly-tbs .btn-group>.btn:active,#bookly-tbs .btn-group>.btn:focus,#bookly-tbs .btn-group>.btn:hover{z-index:2}#bookly-tbs .btn-group .btn+.btn,#bookly-tbs .btn-group .btn+.btn-group,#bookly-tbs .btn-group .btn-group+.btn,#bookly-tbs .btn-group .btn-group+.btn-group{margin-left:-1px}#bookly-tbs .btn-toolbar{margin-left:-5px}#bookly-tbs .btn-toolbar .btn,#bookly-tbs .btn-toolbar .btn-group,#bookly-tbs .btn-toolbar .input-group{float:left}#bookly-tbs .btn-toolbar>.btn,#bookly-tbs .btn-toolbar>.btn-group,#bookly-tbs .btn-toolbar>.input-group{margin-left:5px}#bookly-tbs .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bookly-tbs .btn-group>.btn:first-child{margin-left:0}#bookly-tbs .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn:last-child:not(:first-child),#bookly-tbs .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group>.btn-group{float:left}#bookly-tbs .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group .dropdown-toggle:active,#bookly-tbs .btn-group.open .dropdown-toggle{outline:0}#bookly-tbs .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bookly-tbs .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}#bookly-tbs .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .btn .caret{margin-left:0}#bookly-tbs .btn-lg .caret{border-width:6px 6px 0;border-bottom-width:0}#bookly-tbs .dropup .btn-lg .caret{border-width:0 6px 6px}#bookly-tbs .btn-group-vertical>.btn,#bookly-tbs .btn-group-vertical>.btn-group,#bookly-tbs .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bookly-tbs .btn-group-vertical>.btn-group>.btn{float:none}#bookly-tbs .btn-group-vertical>.btn+.btn,#bookly-tbs .btn-group-vertical>.btn+.btn-group,#bookly-tbs .btn-group-vertical>.btn-group+.btn,#bookly-tbs .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bookly-tbs .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bookly-tbs .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bookly-tbs .btn-group-justified>.btn,#bookly-tbs .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bookly-tbs .btn-group-justified>.btn-group .btn{width:100%}#bookly-tbs .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bookly-tbs [data-toggle=buttons]>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn input[type=radio],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=checkbox],#bookly-tbs [data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bookly-tbs .input-group{position:relative;display:table;border-collapse:separate}#bookly-tbs .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bookly-tbs .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bookly-tbs .input-group .form-control:focus{z-index:3}#bookly-tbs .input-group-lg>.form-control,#bookly-tbs .input-group-lg>.input-group-addon,#bookly-tbs .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bookly-tbs select.input-group-lg>.form-control,#bookly-tbs select.input-group-lg>.input-group-addon,#bookly-tbs select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}#bookly-tbs select[multiple].input-group-lg>.form-control,#bookly-tbs select[multiple].input-group-lg>.input-group-addon,#bookly-tbs select[multiple].input-group-lg>.input-group-btn>.btn,#bookly-tbs textarea.input-group-lg>.form-control,#bookly-tbs textarea.input-group-lg>.input-group-addon,#bookly-tbs textarea.input-group-lg>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group-sm>.form-control,#bookly-tbs .input-group-sm>.input-group-addon,#bookly-tbs .input-group-sm>.input-group-btn>.btn{height:32px;padding:5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}#bookly-tbs select.input-group-sm>.form-control,#bookly-tbs select.input-group-sm>.input-group-addon,#bookly-tbs select.input-group-sm>.input-group-btn>.btn{height:32px;line-height:32px}#bookly-tbs select[multiple].input-group-sm>.form-control,#bookly-tbs select[multiple].input-group-sm>.input-group-addon,#bookly-tbs select[multiple].input-group-sm>.input-group-btn>.btn,#bookly-tbs textarea.input-group-sm>.form-control,#bookly-tbs textarea.input-group-sm>.input-group-addon,#bookly-tbs textarea.input-group-sm>.input-group-btn>.btn{height:auto}#bookly-tbs .input-group .form-control,#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{display:table-cell}#bookly-tbs .input-group .form-control:not(:first-child):not(:last-child),#bookly-tbs .input-group-addon:not(:first-child):not(:last-child),#bookly-tbs .input-group-btn:not(:first-child):not(:last-child){border-radius:0}#bookly-tbs .input-group-addon,#bookly-tbs .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bookly-tbs .input-group-addon{padding:6px 12px;font-size:15px;font-weight:400;line-height:1;color:#3e424a;text-align:center;background-color:#e8ebf0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:3px}#bookly-tbs .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}#bookly-tbs .input-group-addon input[type=checkbox],#bookly-tbs .input-group-addon input[type=radio]{margin-top:0}#bookly-tbs .input-group .form-control:first-child,#bookly-tbs .input-group-addon:first-child,#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group>.btn,#bookly-tbs .input-group-btn:first-child>.dropdown-toggle,#bookly-tbs .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,#bookly-tbs .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .input-group-addon:first-child{border-right:0}#bookly-tbs .input-group .form-control:last-child,#bookly-tbs .input-group-addon:last-child,#bookly-tbs .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,#bookly-tbs .input-group-btn:first-child>.btn:not(:first-child),#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group>.btn,#bookly-tbs .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .input-group-addon:last-child{border-left:0}#bookly-tbs .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bookly-tbs .input-group-btn>.btn{position:relative}#bookly-tbs .input-group-btn>.btn+.btn{margin-left:-1px}#bookly-tbs .input-group-btn>.btn:active,#bookly-tbs .input-group-btn>.btn:focus,#bookly-tbs .input-group-btn>.btn:hover{z-index:2}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bookly-tbs .nav{padding-left:0;margin-bottom:0;list-style:none}#bookly-tbs .nav>li{position:relative;display:block}#bookly-tbs .nav>li>a{position:relative;display:block;padding:10px 15px}#bookly-tbs .nav>li>a:focus,#bookly-tbs .nav>li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .nav>li.disabled>a{color:#d9dee4}#bookly-tbs .nav>li.disabled>a:focus,#bookly-tbs .nav>li.disabled>a:hover{color:#d9dee4;text-decoration:none;cursor:not-allowed;background-color:transparent}#bookly-tbs .nav .open>a,#bookly-tbs .nav .open>a:focus,#bookly-tbs .nav .open>a:hover{background-color:#e8ebf0;border-color:#08c}#bookly-tbs .nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}#bookly-tbs .nav>li>a>img{max-width:none}#bookly-tbs .nav-tabs{border-bottom:1px solid #d9dee4}#bookly-tbs .nav-tabs>li{float:left;margin-bottom:-1px}#bookly-tbs .nav-tabs>li>a{margin-right:2px;line-height:1.4;border:1px solid transparent;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs>li>a:hover{border-color:#e8ebf0 #e8ebf0 #d9dee4}#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#8a929e;cursor:default;background-color:transparent;border:1px solid transparent;border-bottom-color:transparent}#bookly-tbs .nav-tabs.nav-justified{width:100%;border-bottom:0}#bookly-tbs .nav-tabs.nav-justified>li{float:none}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs.nav-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs.nav-justified>.active>a,#bookly-tbs .nav-tabs.nav-justified>.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .nav-pills>li{float:left}#bookly-tbs .nav-pills>li>a{border-radius:4px}#bookly-tbs .nav-pills>li+li{margin-left:2px}#bookly-tbs .nav-pills>li.active>a,#bookly-tbs .nav-pills>li.active>a:focus,#bookly-tbs .nav-pills>li.active>a:hover{color:#fff;background-color:#08c}#bookly-tbs .nav-stacked>li{float:none}#bookly-tbs .nav-stacked>li+li{margin-top:2px;margin-left:0}#bookly-tbs .nav-justified{width:100%}#bookly-tbs .nav-justified>li{float:none}#bookly-tbs .nav-justified>li>a{margin-bottom:5px;text-align:center}#bookly-tbs .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:1px){#bookly-tbs .nav-justified>li{display:table-cell;width:1%}#bookly-tbs .nav-justified>li>a{margin-bottom:0}}#bookly-tbs .nav-tabs-justified{border-bottom:0}#bookly-tbs .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border:1px solid #08c}@media (min-width:768px){#bookly-tbs .nav-tabs-justified>li>a{border-bottom:1px solid #d9dee4;border-radius:4px 4px 0 0}#bookly-tbs .nav-tabs-justified>.active>a,#bookly-tbs .nav-tabs-justified>.active>a:focus,#bookly-tbs .nav-tabs-justified>.active>a:hover{border-bottom-color:#08c}}#bookly-tbs .tab-content>.tab-pane{display:none}#bookly-tbs .tab-content>.active{display:block}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){#bookly-tbs .navbar{border-radius:4px}}@media (min-width:768px){#bookly-tbs .navbar-header{float:left}}#bookly-tbs .navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}#bookly-tbs .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bookly-tbs .navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}#bookly-tbs .navbar-collapse.in{overflow-y:visible}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse,#bookly-tbs .navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bookly-tbs .navbar-fixed-bottom .navbar-collapse,#bookly-tbs .navbar-fixed-top .navbar-collapse{max-height:200px}}#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){#bookly-tbs .container-fluid>.navbar-collapse,#bookly-tbs .container-fluid>.navbar-header,#bookly-tbs .container>.navbar-collapse,#bookly-tbs .container>.navbar-header{margin-right:0;margin-left:0}}#bookly-tbs .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bookly-tbs .navbar-static-top{border-radius:0}}#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){#bookly-tbs .navbar-fixed-bottom,#bookly-tbs .navbar-fixed-top{border-radius:0}}#bookly-tbs .navbar-fixed-top{top:0;border-width:0 0 1px}#bookly-tbs .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bookly-tbs .navbar-brand{float:left;height:50px;padding:14.5px 10px;font-size:18px;line-height:21px}#bookly-tbs .navbar-brand:focus,#bookly-tbs .navbar-brand:hover{text-decoration:none}#bookly-tbs .navbar-brand>img{display:block}@media (min-width:768px){#bookly-tbs .navbar>.container .navbar-brand,#bookly-tbs .navbar>.container-fluid .navbar-brand{margin-left:-10px}}#bookly-tbs .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:10px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .navbar-toggle:focus{outline:0}#bookly-tbs .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bookly-tbs .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bookly-tbs .navbar-toggle{display:none}}#bookly-tbs .navbar-nav{margin:7.25px -10px}#bookly-tbs .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){#bookly-tbs .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .navbar-nav .open .dropdown-menu .dropdown-header,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a{line-height:21px}#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){#bookly-tbs .navbar-nav{float:left;margin:0}#bookly-tbs .navbar-nav>li{float:left}#bookly-tbs .navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}#bookly-tbs .navbar-form{padding:10px 10px;margin-top:7.5px;margin-right:-10px;margin-bottom:7.5px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){#bookly-tbs .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bookly-tbs .navbar-form .form-control-static{display:inline-block}#bookly-tbs .navbar-form .input-group{display:inline-table;vertical-align:middle}#bookly-tbs .navbar-form .input-group .form-control,#bookly-tbs .navbar-form .input-group .input-group-addon,#bookly-tbs .navbar-form .input-group .input-group-btn{width:auto}#bookly-tbs .navbar-form .input-group>.form-control{width:100%}#bookly-tbs .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .checkbox,#bookly-tbs .navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bookly-tbs .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bookly-tbs .navbar-form .form-group{margin-bottom:5px}#bookly-tbs .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bookly-tbs .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bookly-tbs .navbar-btn{margin-top:7.5px;margin-bottom:7.5px}#bookly-tbs .navbar-btn.btn-sm{margin-top:9px;margin-bottom:9px}#bookly-tbs .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}#bookly-tbs .navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){#bookly-tbs .navbar-text{float:left;margin-right:10px;margin-left:10px}}@media (min-width:768px){#bookly-tbs .navbar-left{float:left!important}#bookly-tbs .navbar-right{float:right!important;margin-right:-10px}#bookly-tbs .navbar-right~.navbar-right{margin-right:0}}#bookly-tbs .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-brand{color:#777}#bookly-tbs .navbar-default .navbar-brand:focus,#bookly-tbs .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}#bookly-tbs .navbar-default .navbar-text{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav>li>a:focus,#bookly-tbs .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav>.active>a,#bookly-tbs .navbar-default .navbar-nav>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.disabled>a,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}#bookly-tbs .navbar-default .navbar-toggle{border-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle:focus,#bookly-tbs .navbar-default .navbar-toggle:hover{background-color:#e8ebf0}#bookly-tbs .navbar-default .navbar-toggle .icon-bar{background-color:#8a929e}#bookly-tbs .navbar-default .navbar-collapse,#bookly-tbs .navbar-default .navbar-form{border-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav>.open>a,#bookly-tbs .navbar-default .navbar-nav>.open>a:focus,#bookly-tbs .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}#bookly-tbs .navbar-default .navbar-link{color:#777}#bookly-tbs .navbar-default .navbar-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link{color:#777}#bookly-tbs .navbar-default .btn-link:focus,#bookly-tbs .navbar-default .btn-link:hover{color:#333}#bookly-tbs .navbar-default .btn-link[disabled]:focus,#bookly-tbs .navbar-default .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}#bookly-tbs .navbar-inverse{background-color:#222;border-color:#080808}#bookly-tbs .navbar-inverse .navbar-brand{color:#fff}#bookly-tbs .navbar-inverse .navbar-brand:focus,#bookly-tbs .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-text{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav>.active>a,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-toggle{border-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle:focus,#bookly-tbs .navbar-inverse .navbar-toggle:hover{background-color:#333}#bookly-tbs .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bookly-tbs .navbar-inverse .navbar-collapse,#bookly-tbs .navbar-inverse .navbar-form{border-color:#101010}#bookly-tbs .navbar-inverse .navbar-nav>.open>a,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:focus,#bookly-tbs .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,#bookly-tbs .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}#bookly-tbs .navbar-inverse .navbar-link{color:#fff}#bookly-tbs .navbar-inverse .navbar-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link{color:#fff}#bookly-tbs .navbar-inverse .btn-link:focus,#bookly-tbs .navbar-inverse .btn-link:hover{color:#fff}#bookly-tbs .navbar-inverse .btn-link[disabled]:focus,#bookly-tbs .navbar-inverse .btn-link[disabled]:hover,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:focus,#bookly-tbs fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}#bookly-tbs .breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bookly-tbs .breadcrumb>li{display:inline-block}#bookly-tbs .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}#bookly-tbs .breadcrumb>.active{color:#d9dee4}#bookly-tbs .pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}#bookly-tbs .pagination>li{display:inline}#bookly-tbs .pagination>li>a,#bookly-tbs .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.4;color:#08c;text-decoration:none;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .pagination>li:first-child>a,#bookly-tbs .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bookly-tbs .pagination>li:last-child>a,#bookly-tbs .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bookly-tbs .pagination>li>a:focus,#bookly-tbs .pagination>li>a:hover,#bookly-tbs .pagination>li>span:focus,#bookly-tbs .pagination>li>span:hover{z-index:2;color:#005580;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .pagination>.active>a,#bookly-tbs .pagination>.active>a:focus,#bookly-tbs .pagination>.active>a:hover,#bookly-tbs .pagination>.active>span,#bookly-tbs .pagination>.active>span:focus,#bookly-tbs .pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#08c;border-color:#08c}#bookly-tbs .pagination>.disabled>a,#bookly-tbs .pagination>.disabled>a:focus,#bookly-tbs .pagination>.disabled>a:hover,#bookly-tbs .pagination>.disabled>span,#bookly-tbs .pagination>.disabled>span:focus,#bookly-tbs .pagination>.disabled>span:hover{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#e8ebf0}#bookly-tbs .pagination-lg>li>a,#bookly-tbs .pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}#bookly-tbs .pagination-lg>li:first-child>a,#bookly-tbs .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bookly-tbs .pagination-lg>li:last-child>a,#bookly-tbs .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bookly-tbs .pagination-sm>li>a,#bookly-tbs .pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.53846154}#bookly-tbs .pagination-sm>li:first-child>a,#bookly-tbs .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .pagination-sm>li:last-child>a,#bookly-tbs .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bookly-tbs .pager{padding-left:0;margin:21px 0;text-align:center;list-style:none}#bookly-tbs .pager li{display:inline}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #e8ebf0;border-radius:15px}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{text-decoration:none;background-color:#e8ebf0}#bookly-tbs .pager .next>a,#bookly-tbs .pager .next>span{float:right}#bookly-tbs .pager .previous>a,#bookly-tbs .pager .previous>span{float:left}#bookly-tbs .pager .disabled>a,#bookly-tbs .pager .disabled>a:focus,#bookly-tbs .pager .disabled>a:hover,#bookly-tbs .pager .disabled>span{color:#d9dee4;pointer-events:none;cursor:not-allowed;background-color:#fff}#bookly-tbs .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}#bookly-tbs a.label:focus,#bookly-tbs a.label:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .label:empty{display:none}#bookly-tbs .btn .label{position:relative;top:-1px}#bookly-tbs .label-default{background-color:#d9dee4}#bookly-tbs .label-default[href]:focus,#bookly-tbs .label-default[href]:hover{background-color:#bbc4cf}#bookly-tbs .label-primary{background-color:#08c}#bookly-tbs .label-primary[href]:focus,#bookly-tbs .label-primary[href]:hover{background-color:#069}#bookly-tbs .label-success{background-color:#5cb85c}#bookly-tbs .label-success[href]:focus,#bookly-tbs .label-success[href]:hover{background-color:#449d44}#bookly-tbs .label-info{background-color:#5bc0de}#bookly-tbs .label-info[href]:focus,#bookly-tbs .label-info[href]:hover{background-color:#31b0d5}#bookly-tbs .label-warning{background-color:#f0ad4e}#bookly-tbs .label-warning[href]:focus,#bookly-tbs .label-warning[href]:hover{background-color:#ec971f}#bookly-tbs .label-danger{background-color:#d9534f}#bookly-tbs .label-danger[href]:focus,#bookly-tbs .label-danger[href]:hover{background-color:#c9302c}#bookly-tbs .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#d9dee4;border-radius:10px}#bookly-tbs .badge:empty{display:none}#bookly-tbs .btn .badge{position:relative;top:-1px}#bookly-tbs .btn-group-xs>.btn .badge,#bookly-tbs .btn-xs .badge{top:0;padding:1px 5px}#bookly-tbs a.badge:focus,#bookly-tbs a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}#bookly-tbs .list-group-item.active>.badge,#bookly-tbs .nav-pills>.active>a>.badge{color:#08c;background-color:#fff}#bookly-tbs .list-group-item>.badge{float:right}#bookly-tbs .list-group-item>.badge+.badge{margin-right:5px}#bookly-tbs .nav-pills>li>a>.badge{margin-left:3px}#bookly-tbs .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e8ebf0}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{color:inherit}#bookly-tbs .jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}#bookly-tbs .jumbotron>hr{border-top-color:#c9d0dc}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:10px;padding-left:10px;border-radius:6px}#bookly-tbs .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bookly-tbs .jumbotron{padding-top:48px;padding-bottom:48px}#bookly-tbs .container .jumbotron,#bookly-tbs .container-fluid .jumbotron{padding-right:60px;padding-left:60px}#bookly-tbs .jumbotron .h1,#bookly-tbs .jumbotron h1{font-size:68px}}#bookly-tbs .thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.4;background-color:transparent;border:1px solid #e8ebf0;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bookly-tbs .thumbnail a>img,#bookly-tbs .thumbnail>img{margin-right:auto;margin-left:auto}#bookly-tbs a.thumbnail.active,#bookly-tbs a.thumbnail:focus,#bookly-tbs a.thumbnail:hover{border-color:#08c}#bookly-tbs .thumbnail .caption{padding:9px;color:#3e424a}#bookly-tbs .alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}#bookly-tbs .alert h4{margin-top:0;color:inherit}#bookly-tbs .alert .alert-link{font-weight:700}#bookly-tbs .alert>p,#bookly-tbs .alert>ul{margin-bottom:0}#bookly-tbs .alert>p+p{margin-top:5px}#bookly-tbs .alert-dismissable,#bookly-tbs .alert-dismissible{padding-right:35px}#bookly-tbs .alert-dismissable .close,#bookly-tbs .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bookly-tbs .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .alert-success hr{border-top-color:#c9e2b3}#bookly-tbs .alert-success .alert-link{color:#2b542c}#bookly-tbs .alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .alert-info hr{border-top-color:#a6e1ec}#bookly-tbs .alert-info .alert-link{color:#245269}#bookly-tbs .alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .alert-warning hr{border-top-color:#f7e1b5}#bookly-tbs .alert-warning .alert-link{color:#66512c}#bookly-tbs .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .alert-danger hr{border-top-color:#e4b9c0}#bookly-tbs .alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-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}}#bookly-tbs .progress{height:21px;margin-bottom:21px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bookly-tbs .progress-bar{float:left;width:0;height:100%;font-size:13px;line-height:21px;color:#fff;text-align:center;background-color:#08c;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bookly-tbs .progress-bar-striped,#bookly-tbs .progress-striped .progress-bar{background-image:-webkit-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-image:-o-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-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);-webkit-background-size:40px 40px;background-size:40px 40px}#bookly-tbs .progress-bar.active,#bookly-tbs .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bookly-tbs .progress-bar-success{background-color:#5cb85c}#bookly-tbs .progress-striped .progress-bar-success{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .progress-bar-info{background-color:#5bc0de}#bookly-tbs .progress-striped .progress-bar-info{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .progress-bar-warning{background-color:#f0ad4e}#bookly-tbs .progress-striped .progress-bar-warning{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .progress-bar-danger{background-color:#d9534f}#bookly-tbs .progress-striped .progress-bar-danger{background-image:-webkit-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-image:-o-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-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)}#bookly-tbs .media{margin-top:15px}#bookly-tbs .media:first-child{margin-top:0}#bookly-tbs .media,#bookly-tbs .media-body{overflow:hidden;zoom:1}#bookly-tbs .media-body{width:10000px}#bookly-tbs .media-object{display:block}#bookly-tbs .media-object.img-thumbnail{max-width:none}#bookly-tbs .media-right,#bookly-tbs .media>.pull-right{padding-left:10px}#bookly-tbs .media-left,#bookly-tbs .media>.pull-left{padding-right:10px}#bookly-tbs .media-body,#bookly-tbs .media-left,#bookly-tbs .media-right{display:table-cell;vertical-align:top}#bookly-tbs .media-middle{vertical-align:middle}#bookly-tbs .media-bottom{vertical-align:bottom}#bookly-tbs .media-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .media-list{padding-left:0;list-style:none}#bookly-tbs .list-group{padding-left:0;margin-bottom:20px}#bookly-tbs .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #e8ebf0}#bookly-tbs .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bookly-tbs .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bookly-tbs a.list-group-item,#bookly-tbs button.list-group-item{color:#555}#bookly-tbs a.list-group-item .list-group-item-heading,#bookly-tbs button.list-group-item .list-group-item-heading{color:#333}#bookly-tbs a.list-group-item:focus,#bookly-tbs a.list-group-item:hover,#bookly-tbs button.list-group-item:focus,#bookly-tbs button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}#bookly-tbs button.list-group-item{width:100%;text-align:left}#bookly-tbs .list-group-item.disabled,#bookly-tbs .list-group-item.disabled:focus,#bookly-tbs .list-group-item.disabled:hover{color:#d9dee4;cursor:not-allowed;background-color:#e8ebf0}#bookly-tbs .list-group-item.disabled .list-group-item-heading,#bookly-tbs .list-group-item.disabled:focus .list-group-item-heading,#bookly-tbs .list-group-item.disabled:hover .list-group-item-heading{color:inherit}#bookly-tbs .list-group-item.disabled .list-group-item-text,#bookly-tbs .list-group-item.disabled:focus .list-group-item-text,#bookly-tbs .list-group-item.disabled:hover .list-group-item-text{color:#d9dee4}#bookly-tbs .list-group-item.active,#bookly-tbs .list-group-item.active:focus,#bookly-tbs .list-group-item.active:hover{z-index:2;color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .list-group-item.active .list-group-item-heading,#bookly-tbs .list-group-item.active .list-group-item-heading>.small,#bookly-tbs .list-group-item.active .list-group-item-heading>small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:focus .list-group-item-heading>small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>.small,#bookly-tbs .list-group-item.active:hover .list-group-item-heading>small{color:inherit}#bookly-tbs .list-group-item.active .list-group-item-text,#bookly-tbs .list-group-item.active:focus .list-group-item-text,#bookly-tbs .list-group-item.active:hover .list-group-item-text{color:#9df}#bookly-tbs .list-group-item-success{color:#3c763d;background-color:#dff0d8}#bookly-tbs a.list-group-item-success,#bookly-tbs button.list-group-item-success{color:#3c763d}#bookly-tbs a.list-group-item-success .list-group-item-heading,#bookly-tbs button.list-group-item-success .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-success:focus,#bookly-tbs a.list-group-item-success:hover,#bookly-tbs button.list-group-item-success:focus,#bookly-tbs button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}#bookly-tbs a.list-group-item-success.active,#bookly-tbs a.list-group-item-success.active:focus,#bookly-tbs a.list-group-item-success.active:hover,#bookly-tbs button.list-group-item-success.active,#bookly-tbs button.list-group-item-success.active:focus,#bookly-tbs button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}#bookly-tbs .list-group-item-info{color:#31708f;background-color:#d9edf7}#bookly-tbs a.list-group-item-info,#bookly-tbs button.list-group-item-info{color:#31708f}#bookly-tbs a.list-group-item-info .list-group-item-heading,#bookly-tbs button.list-group-item-info .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-info:focus,#bookly-tbs a.list-group-item-info:hover,#bookly-tbs button.list-group-item-info:focus,#bookly-tbs button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}#bookly-tbs a.list-group-item-info.active,#bookly-tbs a.list-group-item-info.active:focus,#bookly-tbs a.list-group-item-info.active:hover,#bookly-tbs button.list-group-item-info.active,#bookly-tbs button.list-group-item-info.active:focus,#bookly-tbs button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}#bookly-tbs .list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}#bookly-tbs a.list-group-item-warning,#bookly-tbs button.list-group-item-warning{color:#8a6d3b}#bookly-tbs a.list-group-item-warning .list-group-item-heading,#bookly-tbs button.list-group-item-warning .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-warning:focus,#bookly-tbs a.list-group-item-warning:hover,#bookly-tbs button.list-group-item-warning:focus,#bookly-tbs button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}#bookly-tbs a.list-group-item-warning.active,#bookly-tbs a.list-group-item-warning.active:focus,#bookly-tbs a.list-group-item-warning.active:hover,#bookly-tbs button.list-group-item-warning.active,#bookly-tbs button.list-group-item-warning.active:focus,#bookly-tbs button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}#bookly-tbs .list-group-item-danger{color:#a94442;background-color:#f2dede}#bookly-tbs a.list-group-item-danger,#bookly-tbs button.list-group-item-danger{color:#a94442}#bookly-tbs a.list-group-item-danger .list-group-item-heading,#bookly-tbs button.list-group-item-danger .list-group-item-heading{color:inherit}#bookly-tbs a.list-group-item-danger:focus,#bookly-tbs a.list-group-item-danger:hover,#bookly-tbs button.list-group-item-danger:focus,#bookly-tbs button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}#bookly-tbs a.list-group-item-danger.active,#bookly-tbs a.list-group-item-danger.active:focus,#bookly-tbs a.list-group-item-danger.active:hover,#bookly-tbs button.list-group-item-danger.active,#bookly-tbs button.list-group-item-danger.active:focus,#bookly-tbs button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}#bookly-tbs .list-group-item-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .list-group-item-text{margin-bottom:0;line-height:1.3}#bookly-tbs .panel{margin-bottom:21px;background-color:#fff;border:2px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .panel-body{padding:15px}#bookly-tbs .panel-heading{padding:15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bookly-tbs .panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}#bookly-tbs .panel-title>.small,#bookly-tbs .panel-title>.small>a,#bookly-tbs .panel-title>a,#bookly-tbs .panel-title>small,#bookly-tbs .panel-title>small>a{color:inherit}#bookly-tbs .panel-footer{padding:15px;background-color:#e8ebf0;border-top:1px solid #e8ebf0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.list-group,#bookly-tbs .panel>.panel-collapse>.list-group{margin-bottom:0}#bookly-tbs .panel>.list-group .list-group-item,#bookly-tbs .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bookly-tbs .panel>.list-group:first-child .list-group-item:first-child,#bookly-tbs .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.list-group:last-child .list-group-item:last-child,#bookly-tbs .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bookly-tbs .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bookly-tbs .list-group+.panel-footer{border-top-width:0}#bookly-tbs .panel>.panel-collapse>.table,#bookly-tbs .panel>.table,#bookly-tbs .panel>.table-responsive>.table{margin-bottom:0}#bookly-tbs .panel>.panel-collapse>.table caption,#bookly-tbs .panel>.table caption,#bookly-tbs .panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child,#bookly-tbs .panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bookly-tbs .panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child,#bookly-tbs .panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bookly-tbs .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bookly-tbs .panel>.panel-body+.table,#bookly-tbs .panel>.panel-body+.table-responsive,#bookly-tbs .panel>.table+.panel-body,#bookly-tbs .panel>.table-responsive+.panel-body{border-top:1px solid #d9dee4}#bookly-tbs .panel>.table>tbody:first-child>tr:first-child td,#bookly-tbs .panel>.table>tbody:first-child>tr:first-child th{border-top:0}#bookly-tbs .panel>.table-bordered,#bookly-tbs .panel>.table-responsive>.table-bordered{border:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}#bookly-tbs .panel>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-bordered>thead>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-bordered>thead>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-bordered>tfoot>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bookly-tbs .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bookly-tbs .panel>.table-responsive{margin-bottom:0;border:0}#bookly-tbs .panel-group{margin-bottom:21px}#bookly-tbs .panel-group .panel{margin-bottom:0;border-radius:4px}#bookly-tbs .panel-group .panel+.panel{margin-top:10px}#bookly-tbs .panel-group .panel-heading{border-bottom:0}#bookly-tbs .panel-group .panel-heading+.panel-collapse>.list-group,#bookly-tbs .panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #e8ebf0}#bookly-tbs .panel-group .panel-footer{border-top:0}#bookly-tbs .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #e8ebf0}#bookly-tbs .panel-default{border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading{color:#3e424a;background-color:#e8ebf0;border-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e8ebf0}#bookly-tbs .panel-default>.panel-heading .badge{color:#e8ebf0;background-color:#3e424a}#bookly-tbs .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e8ebf0}#bookly-tbs .panel-primary{border-color:#08c}#bookly-tbs .panel-primary>.panel-heading{color:#fff;background-color:#08c;border-color:#08c}#bookly-tbs .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#08c}#bookly-tbs .panel-primary>.panel-heading .badge{color:#08c;background-color:#fff}#bookly-tbs .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#08c}#bookly-tbs .panel-success{border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}#bookly-tbs .panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}#bookly-tbs .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}#bookly-tbs .panel-info{border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}#bookly-tbs .panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}#bookly-tbs .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}#bookly-tbs .panel-warning{border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}#bookly-tbs .panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}#bookly-tbs .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}#bookly-tbs .panel-danger{border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}#bookly-tbs .panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}#bookly-tbs .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}#bookly-tbs .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bookly-tbs .embed-responsive .embed-responsive-item,#bookly-tbs .embed-responsive embed,#bookly-tbs .embed-responsive iframe,#bookly-tbs .embed-responsive object,#bookly-tbs .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bookly-tbs .embed-responsive-16by9{padding-bottom:56.25%}#bookly-tbs .embed-responsive-4by3{padding-bottom:75%}#bookly-tbs .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bookly-tbs .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bookly-tbs .well-lg{padding:24px;border-radius:6px}#bookly-tbs .well-sm{padding:9px;border-radius:3px}#bookly-tbs .close{float:right;font-size:22.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}#bookly-tbs .close:focus,#bookly-tbs .close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}#bookly-tbs button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}#bookly-tbs .modal-open{overflow:hidden}#bookly-tbs .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bookly-tbs .modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}#bookly-tbs .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bookly-tbs .modal-dialog{position:relative;width:auto;margin:10px}#bookly-tbs .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}#bookly-tbs .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bookly-tbs .modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}#bookly-tbs .modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}#bookly-tbs .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bookly-tbs .modal-header .close{margin-top:-2px}#bookly-tbs .modal-title{margin:0;line-height:1.4}#bookly-tbs .modal-body{position:relative;padding:15px}#bookly-tbs .modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}#bookly-tbs .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bookly-tbs .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bookly-tbs .modal-footer .btn-block+.btn-block{margin-left:0}#bookly-tbs .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bookly-tbs .modal-dialog{width:600px;margin:30px auto}#bookly-tbs .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bookly-tbs .modal-sm{width:300px}}@media (min-width:992px){#bookly-tbs .modal-lg{width:900px}}#bookly-tbs .tooltip{position:absolute;z-index:1070;display:block;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:13px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}#bookly-tbs .tooltip.in{filter:alpha(opacity=90);opacity:.9}#bookly-tbs .tooltip.top{padding:5px 0;margin-top:-3px}#bookly-tbs .tooltip.right{padding:0 5px;margin-left:3px}#bookly-tbs .tooltip.bottom{padding:5px 0;margin-top:3px}#bookly-tbs .tooltip.left{padding:0 5px;margin-left:-3px}#bookly-tbs .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bookly-tbs .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bookly-tbs .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bookly-tbs .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bookly-tbs .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bookly-tbs .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:600px;padding:1px;font-family:"open sans","helvetica neue",helvetica,arial,sans-serif;font-size:15px;font-style:normal;font-weight:400;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}#bookly-tbs .popover.top{margin-top:-10px}#bookly-tbs .popover.right{margin-left:10px}#bookly-tbs .popover.bottom{margin-top:10px}#bookly-tbs .popover.left{margin-left:-10px}#bookly-tbs .popover-title{padding:8px 14px;margin:0;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bookly-tbs .popover-content{padding:14px 20px}#bookly-tbs .popover>.popover-arrow,#bookly-tbs .popover>.popover-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bookly-tbs .popover>.popover-arrow{border-width:11px}#bookly-tbs .popover>.popover-arrow:after{content:"";border-width:10px}#bookly-tbs .popover.top>.popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bookly-tbs .popover.top>.popover-arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bookly-tbs .popover.right>.popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bookly-tbs .popover.right>.popover-arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bookly-tbs .popover.bottom>.popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bookly-tbs .popover.bottom>.popover-arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bookly-tbs .popover.left>.popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bookly-tbs .popover.left>.popover-arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bookly-tbs .carousel{position:relative}#bookly-tbs .carousel-inner{position:relative;width:100%;overflow:hidden}#bookly-tbs .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bookly-tbs .carousel-inner>.item>a>img,#bookly-tbs .carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){#bookly-tbs .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}#bookly-tbs .carousel-inner>.item.active.right,#bookly-tbs .carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}#bookly-tbs .carousel-inner>.item.active.left,#bookly-tbs .carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#bookly-tbs .carousel-inner>.item.active,#bookly-tbs .carousel-inner>.item.next.left,#bookly-tbs .carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}#bookly-tbs .carousel-inner>.active,#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{display:block}#bookly-tbs .carousel-inner>.active{left:0}#bookly-tbs .carousel-inner>.next,#bookly-tbs .carousel-inner>.prev{position:absolute;top:0;width:100%}#bookly-tbs .carousel-inner>.next{left:100%}#bookly-tbs .carousel-inner>.prev{left:-100%}#bookly-tbs .carousel-inner>.next.left,#bookly-tbs .carousel-inner>.prev.right{left:0}#bookly-tbs .carousel-inner>.active.left{left:-100%}#bookly-tbs .carousel-inner>.active.right{left:100%}#bookly-tbs .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}#bookly-tbs .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}#bookly-tbs .carousel-control:focus,#bookly-tbs .carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{left:50%;margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{right:50%;margin-right:-10px}#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}#bookly-tbs .carousel-control .icon-prev:before{content:'\2039'}#bookly-tbs .carousel-control .icon-next:before{content:'\203a'}#bookly-tbs .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bookly-tbs .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bookly-tbs .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bookly-tbs .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bookly-tbs .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next,#bookly-tbs .carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}#bookly-tbs .carousel-control .glyphicon-chevron-left,#bookly-tbs .carousel-control .icon-prev{margin-left:-10px}#bookly-tbs .carousel-control .glyphicon-chevron-right,#bookly-tbs .carousel-control .icon-next{margin-right:-10px}#bookly-tbs .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bookly-tbs .carousel-indicators{bottom:20px}}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-group-vertical>.btn-group:before,#bookly-tbs .btn-toolbar:after,#bookly-tbs .btn-toolbar:before,#bookly-tbs .clearfix:after,#bookly-tbs .clearfix:before,#bookly-tbs .container-fluid:after,#bookly-tbs .container-fluid:before,#bookly-tbs .container:after,#bookly-tbs .container:before,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .dl-horizontal dd:before,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .form-horizontal .form-group:before,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-footer:before,#bookly-tbs .modal-header:after,#bookly-tbs .modal-header:before,#bookly-tbs .nav:after,#bookly-tbs .nav:before,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-collapse:before,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar-header:before,#bookly-tbs .navbar:after,#bookly-tbs .navbar:before,#bookly-tbs .pager:after,#bookly-tbs .pager:before,#bookly-tbs .panel-body:after,#bookly-tbs .panel-body:before,#bookly-tbs .row:after,#bookly-tbs .row:before{display:table;content:" "}#bookly-tbs .btn-group-vertical>.btn-group:after,#bookly-tbs .btn-toolbar:after,#bookly-tbs .clearfix:after,#bookly-tbs .container-fluid:after,#bookly-tbs .container:after,#bookly-tbs .dl-horizontal dd:after,#bookly-tbs .form-horizontal .form-group:after,#bookly-tbs .modal-footer:after,#bookly-tbs .modal-header:after,#bookly-tbs .nav:after,#bookly-tbs .navbar-collapse:after,#bookly-tbs .navbar-header:after,#bookly-tbs .navbar:after,#bookly-tbs .pager:after,#bookly-tbs .panel-body:after,#bookly-tbs .row:after{clear:both}#bookly-tbs .center-block{display:block;margin-right:auto;margin-left:auto}#bookly-tbs .pull-right{float:right!important}#bookly-tbs .pull-left{float:left!important}#bookly-tbs .hide{display:none!important}#bookly-tbs .show{display:block!important}#bookly-tbs .invisible{visibility:hidden}#bookly-tbs .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .hidden{display:none!important}#bookly-tbs .affix{position:fixed}@-ms-viewport{width:device-width}#bookly-tbs .visible-lg,#bookly-tbs .visible-md,#bookly-tbs .visible-sm,#bookly-tbs .visible-xs{display:none!important}#bookly-tbs .visible-lg-block,#bookly-tbs .visible-lg-inline,#bookly-tbs .visible-lg-inline-block,#bookly-tbs .visible-md-block,#bookly-tbs .visible-md-inline,#bookly-tbs .visible-md-inline-block,#bookly-tbs .visible-sm-block,#bookly-tbs .visible-sm-inline,#bookly-tbs .visible-sm-inline-block,#bookly-tbs .visible-xs-block,#bookly-tbs .visible-xs-inline,#bookly-tbs .visible-xs-inline-block{display:none!important}@media (max-width:767px){#bookly-tbs .visible-xs{display:block!important}#bookly-tbs table.visible-xs{display:table!important}#bookly-tbs tr.visible-xs{display:table-row!important}#bookly-tbs td.visible-xs,#bookly-tbs th.visible-xs{display:table-cell!important}}@media (max-width:767px){#bookly-tbs .visible-xs-block{display:block!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline{display:inline!important}}@media (max-width:767px){#bookly-tbs .visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm{display:block!important}#bookly-tbs table.visible-sm{display:table!important}#bookly-tbs tr.visible-sm{display:table-row!important}#bookly-tbs td.visible-sm,#bookly-tbs th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md{display:block!important}#bookly-tbs table.visible-md{display:table!important}#bookly-tbs tr.visible-md{display:table-row!important}#bookly-tbs td.visible-md,#bookly-tbs th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg{display:block!important}#bookly-tbs table.visible-lg{display:table!important}#bookly-tbs tr.visible-lg{display:table-row!important}#bookly-tbs td.visible-lg,#bookly-tbs th.visible-lg{display:table-cell!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-block{display:block!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline{display:inline!important}}@media (min-width:1200px){#bookly-tbs .visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){#bookly-tbs .hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){#bookly-tbs .hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){#bookly-tbs .hidden-md{display:none!important}}@media (min-width:1200px){#bookly-tbs .hidden-lg{display:none!important}}#bookly-tbs .visible-print{display:none!important}@media print{#bookly-tbs .visible-print{display:block!important}#bookly-tbs table.visible-print{display:table!important}#bookly-tbs tr.visible-print{display:table-row!important}#bookly-tbs td.visible-print,#bookly-tbs th.visible-print{display:table-cell!important}}#bookly-tbs .visible-print-block{display:none!important}@media print{#bookly-tbs .visible-print-block{display:block!important}}#bookly-tbs .visible-print-inline{display:none!important}@media print{#bookly-tbs .visible-print-inline{display:inline!important}}#bookly-tbs .visible-print-inline-block{display:none!important}@media print{#bookly-tbs .visible-print-inline-block{display:inline-block!important}}@media print{#bookly-tbs .hidden-print{display:none!important}}#bookly-tbs [class*=block-grid-]{padding:0;margin:0;list-style:none;border:1px solid transparent;border-width:1px 0 0 1px}#bookly-tbs [class*=block-grid-]>*{display:block;float:left;height:auto;text-align:center;border:1px solid inherit;border-width:0 1px 1px 0}#bookly-tbs [class*=block-grid-]:after,#bookly-tbs [class*=block-grid-]:before{display:table;content:" "}#bookly-tbs .block-grid-16>:nth-of-type(16n+1),#bookly-tbs [class*=block-grid-]:after{clear:both}#bookly-tbs .block-grid-16>*{width:6.25%;line-height:49px}#bookly-tbs .btn-group-justified>.btn-group:not(:first-child) .btn,#bookly-tbs .btn-group-justified>.btn:not(:first-child){border-left:0}#bookly-tbs .btn-default-outline{color:#5b6470;background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline.focus,#bookly-tbs .btn-default-outline:focus{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#40464e}#bookly-tbs .btn-default-outline.active.focus,#bookly-tbs .btn-default-outline.active:focus,#bookly-tbs .btn-default-outline.active:hover,#bookly-tbs .btn-default-outline:active.focus,#bookly-tbs .btn-default-outline:active:focus,#bookly-tbs .btn-default-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-default-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-default-outline:hover{color:#5b6470;background-color:rgba(0,0,0,0);border-color:#22252a}#bookly-tbs .btn-default-outline.active,#bookly-tbs .btn-default-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-default-outline{background-image:none}#bookly-tbs .btn-default-outline.disabled.focus,#bookly-tbs .btn-default-outline.disabled:focus,#bookly-tbs .btn-default-outline.disabled:hover,#bookly-tbs .btn-default-outline[disabled].focus,#bookly-tbs .btn-default-outline[disabled]:focus,#bookly-tbs .btn-default-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-default-outline.focus,fieldset[disabled] #bookly-tbs .btn-default-outline:focus,fieldset[disabled] #bookly-tbs .btn-default-outline:hover{background-color:transparent;border-color:#5b6470}#bookly-tbs .btn-default-outline .badge{color:transparent;background-color:#5b6470}#bookly-tbs .btn-primary-outline{color:#08c;background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline.focus,#bookly-tbs .btn-primary-outline:focus{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{color:#08c;background-color:rgba(0,0,0,0);border-color:#005f8f}#bookly-tbs .btn-primary-outline.active.focus,#bookly-tbs .btn-primary-outline.active:focus,#bookly-tbs .btn-primary-outline.active:hover,#bookly-tbs .btn-primary-outline:active.focus,#bookly-tbs .btn-primary-outline:active:focus,#bookly-tbs .btn-primary-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline:hover{color:#08c;background-color:rgba(0,0,0,0);border-color:#00334d}#bookly-tbs .btn-primary-outline.active,#bookly-tbs .btn-primary-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-primary-outline{background-image:none}#bookly-tbs .btn-primary-outline.disabled.focus,#bookly-tbs .btn-primary-outline.disabled:focus,#bookly-tbs .btn-primary-outline.disabled:hover,#bookly-tbs .btn-primary-outline[disabled].focus,#bookly-tbs .btn-primary-outline[disabled]:focus,#bookly-tbs .btn-primary-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-primary-outline.focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:focus,fieldset[disabled] #bookly-tbs .btn-primary-outline:hover{background-color:transparent;border-color:#08c}#bookly-tbs .btn-primary-outline .badge{color:transparent;background-color:#08c}#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline.focus,#bookly-tbs .btn-success-outline:focus{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#419641}#bookly-tbs .btn-success-outline.active.focus,#bookly-tbs .btn-success-outline.active:focus,#bookly-tbs .btn-success-outline.active:hover,#bookly-tbs .btn-success-outline:active.focus,#bookly-tbs .btn-success-outline:active:focus,#bookly-tbs .btn-success-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-success-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-success-outline:hover{color:#5cb85c;background-color:rgba(0,0,0,0);border-color:#2d672d}#bookly-tbs .btn-success-outline.active,#bookly-tbs .btn-success-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-success-outline{background-image:none}#bookly-tbs .btn-success-outline.disabled.focus,#bookly-tbs .btn-success-outline.disabled:focus,#bookly-tbs .btn-success-outline.disabled:hover,#bookly-tbs .btn-success-outline[disabled].focus,#bookly-tbs .btn-success-outline[disabled]:focus,#bookly-tbs .btn-success-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-success-outline.focus,fieldset[disabled] #bookly-tbs .btn-success-outline:focus,fieldset[disabled] #bookly-tbs .btn-success-outline:hover{background-color:transparent;border-color:#5cb85c}#bookly-tbs .btn-success-outline .badge{color:transparent;background-color:#5cb85c}#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline.focus,#bookly-tbs .btn-info-outline:focus{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#2aabd2}#bookly-tbs .btn-info-outline.active.focus,#bookly-tbs .btn-info-outline.active:focus,#bookly-tbs .btn-info-outline.active:hover,#bookly-tbs .btn-info-outline:active.focus,#bookly-tbs .btn-info-outline:active:focus,#bookly-tbs .btn-info-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-info-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-info-outline:hover{color:#5bc0de;background-color:rgba(0,0,0,0);border-color:#1f7e9a}#bookly-tbs .btn-info-outline.active,#bookly-tbs .btn-info-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-info-outline{background-image:none}#bookly-tbs .btn-info-outline.disabled.focus,#bookly-tbs .btn-info-outline.disabled:focus,#bookly-tbs .btn-info-outline.disabled:hover,#bookly-tbs .btn-info-outline[disabled].focus,#bookly-tbs .btn-info-outline[disabled]:focus,#bookly-tbs .btn-info-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-info-outline.focus,fieldset[disabled] #bookly-tbs .btn-info-outline:focus,fieldset[disabled] #bookly-tbs .btn-info-outline:hover{background-color:transparent;border-color:#5bc0de}#bookly-tbs .btn-info-outline .badge{color:transparent;background-color:#5bc0de}#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline.focus,#bookly-tbs .btn-warning-outline:focus{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#eb9316}#bookly-tbs .btn-warning-outline.active.focus,#bookly-tbs .btn-warning-outline.active:focus,#bookly-tbs .btn-warning-outline.active:hover,#bookly-tbs .btn-warning-outline:active.focus,#bookly-tbs .btn-warning-outline:active:focus,#bookly-tbs .btn-warning-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline:hover{color:#f0ad4e;background-color:rgba(0,0,0,0);border-color:#b06d0f}#bookly-tbs .btn-warning-outline.active,#bookly-tbs .btn-warning-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-warning-outline{background-image:none}#bookly-tbs .btn-warning-outline.disabled.focus,#bookly-tbs .btn-warning-outline.disabled:focus,#bookly-tbs .btn-warning-outline.disabled:hover,#bookly-tbs .btn-warning-outline[disabled].focus,#bookly-tbs .btn-warning-outline[disabled]:focus,#bookly-tbs .btn-warning-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-warning-outline.focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:focus,fieldset[disabled] #bookly-tbs .btn-warning-outline:hover{background-color:transparent;border-color:#f0ad4e}#bookly-tbs .btn-warning-outline .badge{color:transparent;background-color:#f0ad4e}#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline.focus,#bookly-tbs .btn-danger-outline:focus{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#c12e2a}#bookly-tbs .btn-danger-outline.active.focus,#bookly-tbs .btn-danger-outline.active:focus,#bookly-tbs .btn-danger-outline.active:hover,#bookly-tbs .btn-danger-outline:active.focus,#bookly-tbs .btn-danger-outline:active:focus,#bookly-tbs .btn-danger-outline:active:hover,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline.focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:focus,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline:hover{color:#d9534f;background-color:rgba(0,0,0,0);border-color:#8b211e}#bookly-tbs .btn-danger-outline.active,#bookly-tbs .btn-danger-outline:active,.open>.dropdown-toggle#bookly-tbs .btn-danger-outline{background-image:none}#bookly-tbs .btn-danger-outline.disabled.focus,#bookly-tbs .btn-danger-outline.disabled:focus,#bookly-tbs .btn-danger-outline.disabled:hover,#bookly-tbs .btn-danger-outline[disabled].focus,#bookly-tbs .btn-danger-outline[disabled]:focus,#bookly-tbs .btn-danger-outline[disabled]:hover,fieldset[disabled] #bookly-tbs .btn-danger-outline.focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:focus,fieldset[disabled] #bookly-tbs .btn-danger-outline:hover{background-color:transparent;border-color:#d9534f}#bookly-tbs .btn-danger-outline .badge{color:transparent;background-color:#d9534f}#bookly-tbs .btn-xlg{padding:11px 22px;font-size:15px;line-height:1.9;border-radius:4px}#bookly-tbs .callout{padding:10px;margin:21px 0;border:1px solid #e8ebf0;border-left-width:4px;border-radius:4px}#bookly-tbs .callout .callout-heading{margin-top:0;margin-bottom:5px}#bookly-tbs .callout p:last-child{margin-bottom:0}#bookly-tbs .callout+#bookly-tbs .callout{margin-top:-5px}#bookly-tbs .callout.callout-danger{border-left-color:#d9534f}#bookly-tbs .callout.callout-danger .callout-heading{color:#a94442}#bookly-tbs .callout.callout-warning{border-left-color:#f0ad4e}#bookly-tbs .callout.callout-warning .callout-heading{color:#8a6d3b}#bookly-tbs .callout.callout-info{border-left-color:#5bc0de}#bookly-tbs .callout.callout-info .callout-heading{color:#31708f}#bookly-tbs .close{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}#bookly-tbs .caret{margin-bottom:2px}#bookly-tbs .checkbox,#bookly-tbs .radio{line-height:1.4}#bookly-tbs input[type=checkbox],#bookly-tbs input[type=radio]{width:16px;height:16px}#bookly-tbs input[type=checkbox]:checked:before{margin:-3px 0 0 -4px;font:400 21px/1 dashicons}#bookly-tbs input[type=radio]:checked:before{width:8px;height:8px;margin:3px}#bookly-tbs input[type=checkbox]:not(:checked)+.bookly-toggle-label,#bookly-tbs input[type=radio]:not(:checked)+.bookly-toggle-label{color:#8a929e}#bookly-tbs select.form-control{z-index:5;height:36px;-webkit-appearance:none;padding-right:22px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:-webkit-calc(100% - 4px) 50%;background-position:calc(100% - 4px) 50%;-webkit-background-size:24px 24px;background-size:24px 24px;-moz-appearance:none;appearance:none}@media screen and (min-width:0\0){#bookly-tbs select.form-control{padding:5px}}#bookly-tbs select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}#bookly-tbs .form-horizontal .form-inline .checkbox-inline,#bookly-tbs .form-horizontal .form-inline .radio-inline{padding-top:0}#bookly-tbs .form-horizontal .form-group .help-block{margin-bottom:0}#bookly-tbs button:active,#bookly-tbs button:focus,#bookly-tbs button:hover,#bookly-tbs input:active,#bookly-tbs input:focus,#bookly-tbs input:hover,#bookly-tbs textarea:active,#bookly-tbs textarea:focus,#bookly-tbs textarea:hover{outline:0}#bookly-tbs .help-block{margin-top:0;font-size:13px;line-height:1.3}#bookly-tbs .bookly-pretty input[type=file]{position:absolute;top:0;left:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;opacity:0}#bookly-tbs .bookly-pretty input[type=file]~.bookly-pretty-indicator{display:inline-block;font-weight:400}#bookly-tbs .input-group-btn:first-child>.btn,#bookly-tbs .input-group-btn:first-child>.btn-group{border-right:0}#bookly-tbs .input-group-btn:first-child>.btn:last-child{margin-right:-1px}#bookly-tbs .input-group-btn:last-child>.btn,#bookly-tbs .input-group-btn:last-child>.btn-group{border-left:0}#bookly-tbs .list-group-item .badge{margin-top:2px}#bookly-tbs .navbar-nav>li>.dropdown-menu{border-top-width:0}#bookly-tbs .navbar-text{line-height:21px}#bookly-tbs .nav-tabs>li{margin-bottom:0}#bookly-tbs .nav-tabs>li>a{margin-right:0;color:#8a929e;border:0}#bookly-tbs .nav-tabs>li>a:after{position:absolute;right:0;bottom:0;left:0;width:100%;height:0;content:" ";border-bottom:3px solid transparent}#bookly-tbs .nav-tabs>li>a:focus,#bookly-tbs .nav-tabs>li>a:hover{background-color:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .nav-tabs>li>a:focus:after,#bookly-tbs .nav-tabs>li>a:hover:after{border-bottom-color:#d9dee4}#bookly-tbs .nav-tabs.nav-justified>li.active>a,#bookly-tbs .nav-tabs.nav-justified>li.active>a:focus,#bookly-tbs .nav-tabs.nav-justified>li.active>a:hover,#bookly-tbs .nav-tabs>li.active>a,#bookly-tbs .nav-tabs>li.active>a:focus,#bookly-tbs .nav-tabs>li.active>a:hover{color:#08c;border-width:0 0 1px 0}#bookly-tbs .nav-tabs.nav-justified>li.active>a:after,#bookly-tbs .nav-tabs>li.active>a:after{border-bottom-color:#08c}#bookly-tbs .nav-tabs .dropdown-menu{margin-top:0}#bookly-tbs .pager li>a,#bookly-tbs .pager li>span{line-height:1.4;color:#5b6470}#bookly-tbs .pager li>a:focus,#bookly-tbs .pager li>a:hover{color:#8a929e}#bookly-tbs .panel{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .panel>.panel-collapse>.table td,#bookly-tbs .panel>.panel-collapse>.table th,#bookly-tbs .panel>.table td,#bookly-tbs .panel>.table th,#bookly-tbs .panel>.table-responsive>.table td,#bookly-tbs .panel>.table-responsive>.table th{border-color:#d9dee4}#bookly-tbs .panel-title{font-weight:700;line-height:1.5}#bookly-tbs .btn.btn-pill{border-radius:24px}#bookly-tbs .btn.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .btn.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .form-control.input-pill{border-radius:24px}#bookly-tbs .form-control.input-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .form-control.input-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .label.label-pill{border-radius:.9em}#bookly-tbs .label.label-pill-left{border-top-left-radius:.9em;border-bottom-left-radius:.9em}#bookly-tbs .label.label-pill-right{border-top-right-radius:.9em;border-bottom-right-radius:.9em}#bookly-tbs .progress-lg{height:42px;border-radius:6px}#bookly-tbs .progress-lg .progress-bar{line-height:42px}#bookly-tbs .progress-sm{height:10.5px;border-radius:3px}#bookly-tbs .progress-sm .progress-bar{line-height:10.5px}#bookly-tbs .progress-xs{height:5.25px;border-radius:3px}#bookly-tbs .progress-xs .progress-bar{line-height:5.25px}#bookly-tbs a:focus,#bookly-tbs a:hover{-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .social-behance{color:#1769ff!important}#bookly-tbs .social-fivehundredpix{color:#0a0100!important}#bookly-tbs .social-dribbble{color:#ea4c89!important}#bookly-tbs .social-dropbox{color:#1f8ce6!important}#bookly-tbs .social-email{color:#7f7f7f!important}#bookly-tbs .social-facebook{color:#3b5998!important}#bookly-tbs .social-flickr{color:#ff0084!important}#bookly-tbs .social-foursquare{color:#0072b1!important}#bookly-tbs .social-github{color:#4183c4!important}#bookly-tbs .social-google{color:#dd4b39!important}#bookly-tbs .social-instagram{color:#517fa4!important}#bookly-tbs .social-linkedin{color:#007bb6!important}#bookly-tbs .social-pinterest{color:#cb2027!important}#bookly-tbs .social-skype{color:#00aff0!important}#bookly-tbs .social-smugmug{color:#8cca1e!important}#bookly-tbs .social-tumblr{color:#32506d!important}#bookly-tbs .social-twitter{color:#00aced!important}#bookly-tbs .social-vimeo{color:#1ab7ea!important}#bookly-tbs .social-vk{color:#45668e!important}#bookly-tbs .social-youtube{color:#f33!important}#bookly-tbs .social-behance:hover{color:#4a8aff!important}#bookly-tbs .social-fivehundredpix:hover{color:#3d0600!important}#bookly-tbs .social-dribbble:hover{color:#ef7aa7!important}#bookly-tbs .social-dropbox:hover{color:#4da4eb!important}#bookly-tbs .social-email:hover{color:#999!important}#bookly-tbs .social-facebook:hover{color:#4c70ba!important}#bookly-tbs .social-flickr:hover{color:#ff339d!important}#bookly-tbs .social-foursquare:hover{color:#0093e4!important}#bookly-tbs .social-github:hover{color:#689cd0!important}#bookly-tbs .social-google:hover{color:#e47365!important}#bookly-tbs .social-instagram:hover{color:#7098b8!important}#bookly-tbs .social-linkedin:hover{color:#009de9!important}#bookly-tbs .social-pinterest:hover{color:#e03e44!important}#bookly-tbs .social-skype:hover{color:#24c4ff!important}#bookly-tbs .social-smugmug:hover{color:#a5e239!important}#bookly-tbs .social-tumblr:hover{color:#426a90!important}#bookly-tbs .social-twitter:hover{color:#21c2ff!important}#bookly-tbs .social-vimeo:hover{color:#49c6ee!important}#bookly-tbs .social-vk:hover{color:#587fae!important}#bookly-tbs .social-youtube:hover{color:#f66!important}#bookly-tbs .thumbnail{overflow:auto;-webkit-box-shadow:inset 0 0 0 2px #e8ebf0;box-shadow:inset 0 0 0 2px #e8ebf0}#bookly-tbs .thumbnail .caption p:last-child{margin-bottom:0}#bookly-tbs .thumbnail .caption .heading{margin:0 0 5px}#bookly-tbs blockquote p{font-family:georgia,"times new roman",times,serif;font-size:18px}#bookly-tbs p{font-size:15px}#bookly-tbs .bookly-letter-spacing-sm{letter-spacing:.05em}#bookly-tbs .bookly-letter-spacing-md{letter-spacing:.1em}#bookly-tbs .bookly-letter-spacing-lg{letter-spacing:.2em}#bookly-tbs .bookly-line-height-sm{line-height:1.53846154}#bookly-tbs .bookly-line-height-base{line-height:1.4}#bookly-tbs .bookly-line-height-lg{line-height:1.3333333}#bookly-tbs .bookly-line-height-computed{line-height:21px}#bookly-tbs .bookly-font-xs{font-size:12px}#bookly-tbs .bookly-font-sm{font-size:14px}#bookly-tbs .bookly-font-md{font-size:15px}#bookly-tbs .bookly-font-lg{font-size:20px}#bookly-tbs .bookly-font-smaller{font-size:13px;text-transform:uppercase}#bookly-tbs .bookly-font-lighter{font-weight:lighter}#bookly-tbs .bookly-font-normal{font-weight:400}#bookly-tbs .bookly-font-bold{font-weight:700}#bookly-tbs .bookly-font-serif{font-family:georgia,"times new roman",times,serif}#bookly-tbs .bookly-font-italic{font-style:italic}#bookly-tbs .bookly-text-wrap{word-wrap:break-word;white-space:normal}#bookly-tbs .bookly-inline{display:inline}#bookly-tbs .bookly-bl-ock{display:block}#bookly-tbs .bookly-inline-block{display:inline-block}#bookly-tbs .bookly-nowrap{white-space:nowrap}#bookly-tbs .bookly-break-word{word-wrap:break-word}#bookly-tbs .bookly-truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{position:absolute}#bookly-tbs .bookly-top-left,#bookly-tbs .bookly-top-right{top:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-bottom-right{bottom:0}#bookly-tbs .bookly-bottom-left,#bookly-tbs .bookly-top-left{left:0}#bookly-tbs .bookly-bottom-right,#bookly-tbs .bookly-top-right{right:0}#bookly-tbs .bookly-relative{position:relative}#bookly-tbs .bookly-fixed{position:fixed}#bookly-tbs .bookly-vertical-top{vertical-align:top}#bookly-tbs .bookly-vertical-middle{vertical-align:middle}#bookly-tbs .bookly-vertical-bottom{vertical-align:bottom}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-left-remove,#bookly-tbs .bookly-margin-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-right-remove{margin-right:0!important}#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-top-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-remove,#bookly-tbs .bookly-margin-remove,#bookly-tbs .bookly-margin-vertical-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-left-xs,#bookly-tbs .bookly-margin-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-xs,#bookly-tbs .bookly-margin-right-xs,#bookly-tbs .bookly-margin-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-top-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-xs,#bookly-tbs .bookly-margin-vertical-xs,#bookly-tbs .bookly-margin-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-left-sm,#bookly-tbs .bookly-margin-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-sm,#bookly-tbs .bookly-margin-right-sm,#bookly-tbs .bookly-margin-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-top-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-sm,#bookly-tbs .bookly-margin-sm,#bookly-tbs .bookly-margin-vertical-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-left-md,#bookly-tbs .bookly-margin-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-right-md{margin-right:12px!important}#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-top-md,#bookly-tbs .bookly-margin-vertical-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-md,#bookly-tbs .bookly-margin-md,#bookly-tbs .bookly-margin-vertical-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-left-lg,#bookly-tbs .bookly-margin-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-right-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-top-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-lg,#bookly-tbs .bookly-margin-lg,#bookly-tbs .bookly-margin-vertical-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-left-xlg,#bookly-tbs .bookly-margin-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-xlg,#bookly-tbs .bookly-margin-right-xlg,#bookly-tbs .bookly-margin-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-top-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-xlg,#bookly-tbs .bookly-margin-vertical-xlg,#bookly-tbs .bookly-margin-xlg{margin-bottom:32px!important}@media (max-width:767px){#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-left-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-remove,#bookly-tbs .bookly-margin-right-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-top-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenxs-remove,#bookly-tbs .bookly-margin-screenxs-remove,#bookly-tbs .bookly-margin-vertical-screenxs-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-left-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xs,#bookly-tbs .bookly-margin-right-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-top-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xs,#bookly-tbs .bookly-margin-screenxs-xs,#bookly-tbs .bookly-margin-vertical-screenxs-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-left-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-sm,#bookly-tbs .bookly-margin-right-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-top-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenxs-sm,#bookly-tbs .bookly-margin-screenxs-sm,#bookly-tbs .bookly-margin-vertical-screenxs-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-left-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-md,#bookly-tbs .bookly-margin-right-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-top-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenxs-md,#bookly-tbs .bookly-margin-screenxs-md,#bookly-tbs .bookly-margin-vertical-screenxs-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-left-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-lg,#bookly-tbs .bookly-margin-right-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-top-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenxs-lg,#bookly-tbs .bookly-margin-screenxs-lg,#bookly-tbs .bookly-margin-vertical-screenxs-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-left-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenxs-xlg,#bookly-tbs .bookly-margin-right-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-top-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenxs-xlg,#bookly-tbs .bookly-margin-screenxs-xlg,#bookly-tbs .bookly-margin-vertical-screenxs-xlg{margin-bottom:32px!important}}@media (min-width:768px){#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-left-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-remove,#bookly-tbs .bookly-margin-right-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-top-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screensm-remove,#bookly-tbs .bookly-margin-screensm-remove,#bookly-tbs .bookly-margin-vertical-screensm-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-left-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xs,#bookly-tbs .bookly-margin-right-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-top-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screensm-xs,#bookly-tbs .bookly-margin-screensm-xs,#bookly-tbs .bookly-margin-vertical-screensm-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-left-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-sm,#bookly-tbs .bookly-margin-right-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-top-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screensm-sm,#bookly-tbs .bookly-margin-screensm-sm,#bookly-tbs .bookly-margin-vertical-screensm-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-left-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-md,#bookly-tbs .bookly-margin-right-screensm-md,#bookly-tbs .bookly-margin-screensm-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-top-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screensm-md,#bookly-tbs .bookly-margin-screensm-md,#bookly-tbs .bookly-margin-vertical-screensm-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-left-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-lg,#bookly-tbs .bookly-margin-right-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-top-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screensm-lg,#bookly-tbs .bookly-margin-screensm-lg,#bookly-tbs .bookly-margin-vertical-screensm-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-left-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screensm-xlg,#bookly-tbs .bookly-margin-right-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-top-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screensm-xlg,#bookly-tbs .bookly-margin-screensm-xlg,#bookly-tbs .bookly-margin-vertical-screensm-xlg{margin-bottom:32px!important}}@media (min-width:992px){#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-left-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-left:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-remove,#bookly-tbs .bookly-margin-right-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove{margin-right:0!important}#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-top-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-top:0!important}#bookly-tbs .bookly-margin-bottom-screenmd-remove,#bookly-tbs .bookly-margin-screenmd-remove,#bookly-tbs .bookly-margin-vertical-screenmd-remove{margin-bottom:0!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-left-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-left:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xs,#bookly-tbs .bookly-margin-right-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs{margin-right:5px!important}#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-top-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-top:5px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xs,#bookly-tbs .bookly-margin-screenmd-xs,#bookly-tbs .bookly-margin-vertical-screenmd-xs{margin-bottom:5px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-left-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-left:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-sm,#bookly-tbs .bookly-margin-right-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm{margin-right:10px!important}#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-top-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-top:10px!important}#bookly-tbs .bookly-margin-bottom-screenmd-sm,#bookly-tbs .bookly-margin-screenmd-sm,#bookly-tbs .bookly-margin-vertical-screenmd-sm{margin-bottom:10px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-left-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-left:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-md,#bookly-tbs .bookly-margin-right-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md{margin-right:12px!important}#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-top-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-top:12px!important}#bookly-tbs .bookly-margin-bottom-screenmd-md,#bookly-tbs .bookly-margin-screenmd-md,#bookly-tbs .bookly-margin-vertical-screenmd-md{margin-bottom:12px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-left-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-left:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-lg,#bookly-tbs .bookly-margin-right-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg{margin-right:16px!important}#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-top-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-top:16px!important}#bookly-tbs .bookly-margin-bottom-screenmd-lg,#bookly-tbs .bookly-margin-screenmd-lg,#bookly-tbs .bookly-margin-vertical-screenmd-lg{margin-bottom:16px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-left-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-left:32px!important}#bookly-tbs .bookly-margin-horizontal-screenmd-xlg,#bookly-tbs .bookly-margin-right-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg{margin-right:32px!important}#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-top-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-top:32px!important}#bookly-tbs .bookly-margin-bottom-screenmd-xlg,#bookly-tbs .bookly-margin-screenmd-xlg,#bookly-tbs .bookly-margin-vertical-screenmd-xlg{margin-bottom:32px!important}}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-left-remove,#bookly-tbs .bookly-padding-remove{padding-left:0!important}#bookly-tbs .bookly-padding-horizontal-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-right-remove{padding-right:0!important}#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-top-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-top:0!important}#bookly-tbs .bookly-padding-bottom-remove,#bookly-tbs .bookly-padding-remove,#bookly-tbs .bookly-padding-vertical-remove{padding-bottom:0!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-left-xs,#bookly-tbs .bookly-padding-xs{padding-left:5px!important}#bookly-tbs .bookly-padding-horizontal-xs,#bookly-tbs .bookly-padding-right-xs,#bookly-tbs .bookly-padding-xs{padding-right:5px!important}#bookly-tbs .bookly-padding-top-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-top:5px!important}#bookly-tbs .bookly-padding-bottom-xs,#bookly-tbs .bookly-padding-vertical-xs,#bookly-tbs .bookly-padding-xs{padding-bottom:5px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-left-sm,#bookly-tbs .bookly-padding-sm{padding-left:10px!important}#bookly-tbs .bookly-padding-horizontal-sm,#bookly-tbs .bookly-padding-right-sm,#bookly-tbs .bookly-padding-sm{padding-right:10px!important}#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-top-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-top:10px!important}#bookly-tbs .bookly-padding-bottom-sm,#bookly-tbs .bookly-padding-sm,#bookly-tbs .bookly-padding-vertical-sm{padding-bottom:10px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-left-md,#bookly-tbs .bookly-padding-md{padding-left:12px!important}#bookly-tbs .bookly-padding-horizontal-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-right-md{padding-right:12px!important}#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-top-md,#bookly-tbs .bookly-padding-vertical-md{padding-top:12px!important}#bookly-tbs .bookly-padding-bottom-md,#bookly-tbs .bookly-padding-md,#bookly-tbs .bookly-padding-vertical-md{padding-bottom:12px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-left-lg,#bookly-tbs .bookly-padding-lg{padding-left:16px!important}#bookly-tbs .bookly-padding-horizontal-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-right-lg{padding-right:16px!important}#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-top-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-top:16px!important}#bookly-tbs .bookly-padding-bottom-lg,#bookly-tbs .bookly-padding-lg,#bookly-tbs .bookly-padding-vertical-lg{padding-bottom:16px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-left-xlg,#bookly-tbs .bookly-padding-xlg{padding-left:32px!important}#bookly-tbs .bookly-padding-horizontal-xlg,#bookly-tbs .bookly-padding-right-xlg,#bookly-tbs .bookly-padding-xlg{padding-right:32px!important}#bookly-tbs .bookly-padding-top-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-top:32px!important}#bookly-tbs .bookly-padding-bottom-xlg,#bookly-tbs .bookly-padding-vertical-xlg,#bookly-tbs .bookly-padding-xlg{padding-bottom:32px!important}#bookly-tbs .bookly-flexbox{display:table;width:100%;max-width:100%;height:100%}#bookly-tbs .bookly-flexbox .bookly-flex-row{display:table-row}#bookly-tbs .bookly-flexbox .bookly-flex-cell{display:table-cell;height:100%;word-wrap:break-word}@media (min-width:992px){#bookly-tbs .bookly-flexbox .bookly-flex-cell-sm{display:table-cell;height:100%;word-wrap:break-word}}#bookly-tbs .bookly-bg-transparent{background-color:transparent}#bookly-tbs .bookly-bg-white{background-color:#fff}#bookly-tbs .bookly-color-white{color:#fff}#bookly-tbs .bookly-bg-black{background-color:#000}#bookly-tbs .bookly-color-black{color:#000}#bookly-tbs .bookly-bg-gray{background-color:#8a929e}#bookly-tbs .bookly-color-gray{color:#8a929e}#bookly-tbs .bookly-bg-light{background-color:#d9dee4}#bookly-tbs .bookly-color-light{color:#d9dee4}#bookly-tbs .bookly-bg-brand-primary{background-color:#08c}#bookly-tbs .bookly-color-brand-primary{color:#08c}#bookly-tbs .bookly-bg-brand-success{background-color:#5cb85c}#bookly-tbs .bookly-color-brand-success{color:#5cb85c}#bookly-tbs .bookly-bg-brand-info{background-color:#5bc0de}#bookly-tbs .bookly-color-brand-info{color:#5bc0de}#bookly-tbs .bookly-bg-brand-warning{background-color:#f0ad4e}#bookly-tbs .bookly-color-brand-warning{color:#f0ad4e}#bookly-tbs .bookly-bg-brand-danger{background-color:#d9534f}#bookly-tbs .bookly-color-brand-danger{color:#d9534f}#bookly-tbs .bookly-cursor-pointer{cursor:pointer}#bookly-tbs .bookly-cursor-move{cursor:move}@media (max-width:767px){#bookly-tbs .bookly-text-xs-center{text-align:center!important}#bookly-tbs .bookly-text-xs-left{text-align:left!important}#bookly-tbs .bookly-text-xs-right{text-align:right!important}#bookly-tbs .bookly-btn-block-xs{display:block;width:100%}}#bookly-tbs table.dataTable{max-width:none!important;margin-top:6px!important;margin-bottom:6px!important;clear:both;border-collapse:separate!important}#bookly-tbs table.dataTable td,#bookly-tbs table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs table.dataTable td.dataTables_empty,#bookly-tbs table.dataTable th.dataTables_empty{text-align:center}#bookly-tbs table.dataTable.nowrap td,#bookly-tbs table.dataTable.nowrap th{white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_length select{display:inline-block;width:75px}#bookly-tbs div.dataTables_wrapper div.dataTables_filter{text-align:right}#bookly-tbs div.dataTables_wrapper div.dataTables_filter label{font-weight:400;text-align:left;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_filter input{display:inline-block;width:auto;margin-left:.5em}#bookly-tbs div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{margin:0;text-align:right;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}#bookly-tbs div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;padding:1em 0;margin-top:-26px;margin-left:-100px;text-align:center}#bookly-tbs table.dataTable thead>tr>td.sorting,#bookly-tbs table.dataTable thead>tr>td.sorting_asc,#bookly-tbs table.dataTable thead>tr>td.sorting_desc,#bookly-tbs table.dataTable thead>tr>th.sorting,#bookly-tbs table.dataTable thead>tr>th.sorting_asc,#bookly-tbs table.dataTable thead>tr>th.sorting_desc{padding-right:30px}#bookly-tbs table.dataTable thead>tr>td:active,#bookly-tbs table.dataTable thead>tr>th:active{outline:0}#bookly-tbs table.dataTable thead .sorting,#bookly-tbs table.dataTable thead .sorting_asc,#bookly-tbs table.dataTable thead .sorting_asc_disabled,#bookly-tbs table.dataTable thead .sorting_desc,#bookly-tbs table.dataTable thead .sorting_desc_disabled{position:relative;cursor:pointer}#bookly-tbs table.dataTable thead .sorting:after,#bookly-tbs table.dataTable thead .sorting_asc:after,#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{position:absolute;right:8px;bottom:-webkit-calc(50% - 9px);bottom:calc(50% - 9px);display:block;font-family:'Glyphicons Halflings';font-size:12px;opacity:.5}#bookly-tbs table.dataTable thead .sorting:after{content:"\e150";opacity:.2}#bookly-tbs table.dataTable thead .sorting_asc:after{content:"\e155"}#bookly-tbs table.dataTable thead .sorting_desc:after{content:"\e156"}#bookly-tbs table.dataTable thead .sorting_asc_disabled:after,#bookly-tbs table.dataTable thead .sorting_desc_disabled:after{color:#eee}#bookly-tbs div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}#bookly-tbs div.dataTables_scrollBody table{margin-top:0!important;margin-bottom:0!important;border-top:none}#bookly-tbs div.dataTables_scrollBody table thead .sorting:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_asc:after,#bookly-tbs div.dataTables_scrollBody table thead .sorting_desc:after{display:none}#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child td,#bookly-tbs div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}#bookly-tbs div.dataTables_scrollFoot table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){#bookly-tbs div.dataTables_wrapper div.dataTables_filter,#bookly-tbs div.dataTables_wrapper div.dataTables_info,#bookly-tbs div.dataTables_wrapper div.dataTables_length,#bookly-tbs div.dataTables_wrapper div.dataTables_paginate{text-align:center}}#bookly-tbs table.dataTable.table-condensed>thead>tr>th{padding-right:20px}#bookly-tbs table.dataTable.table-condensed .sorting:after,#bookly-tbs table.dataTable.table-condensed .sorting_asc:after,#bookly-tbs table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}#bookly-tbs table.table-bordered.dataTable td,#bookly-tbs table.table-bordered.dataTable th{border-left-width:0}#bookly-tbs table.table-bordered.dataTable td:last-child,#bookly-tbs table.table-bordered.dataTable th:last-child{border-right-width:0}#bookly-tbs table.table-bordered.dataTable tbody td,#bookly-tbs table.table-bordered.dataTable tbody th{border-bottom-width:0}#bookly-tbs div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row{margin:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}#bookly-tbs div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}#bookly-tbs div.dt-button-info{position:fixed;top:50%;left:50%;z-index:21;width:400px;margin-top:-100px;margin-left:-200px;text-align:center;background-color:#fff;border:2px solid #111;border-radius:3px;-webkit-box-shadow:3px 3px 8px rgba(0,0,0,.3);box-shadow:3px 3px 8px rgba(0,0,0,.3)}#bookly-tbs div.dt-button-info h2{padding:.5em;margin:0;font-weight:400;background-color:#f3f3f3;border-bottom:1px solid #ddd}#bookly-tbs div.dt-button-info>div{padding:1em}#bookly-tbs ul.dt-button-collection.dropdown-menu{z-index:2002;display:block;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}#bookly-tbs ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}#bookly-tbs ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}#bookly-tbs ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}#bookly-tbs ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}#bookly-tbs ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}#bookly-tbs div.dt-button-background{position:fixed;top:0;left:0;z-index:2001;width:100%;height:100%}@media screen and (max-width:767px){#bookly-tbs div.dt-buttons{float:none;width:100%;margin-bottom:.5em;text-align:center}#bookly-tbs div.dt-buttons a.btn{float:none}}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child{cursor:default!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before{display:none!important}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{position:absolute;top:9px;left:4px;display:block;width:18px;height:18px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;font-family:'Courier New',Courier,monospace;font-size:18px;font-weight:700;line-height:18px;color:#5b6470;text-align:center;content:'+';background-color:transparent;border:0;border-radius:18px;-webkit-box-shadow:0 0 2px #5b6470;box-shadow:0 0 2px #5b6470}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:transparent}#bookly-tbs table.dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,#bookly-tbs table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;width:14px;height:14px;line-height:14px;text-indent:3px;border-radius:14px}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}#bookly-tbs table.dataTable.dtr-column>tbody>tr>td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr>th.control:before{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;margin-top:-10px;margin-left:-10px;font-family:'Courier New',Courier,monospace;line-height:14px;color:#fff;text-align:center;content:'+';background-color:#337ab7;border:2px solid #fff;border-radius:14px;-webkit-box-shadow:0 0 3px #444;box-shadow:0 0 3px #444}#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent td.control:before,#bookly-tbs table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}#bookly-tbs table.dataTable>tbody>tr.child{padding:.5em 1em}#bookly-tbs table.dataTable>tbody>tr.child:hover{background:0 0!important}#bookly-tbs table.dataTable>tbody>tr.child ul{display:inline-block;width:100%;padding:0;margin:0;list-style-type:none}#bookly-tbs table.dataTable>tbody>tr.child ul li{padding:.3em 0;margin-bottom:.3em;border-bottom:1px solid #efefef}#bookly-tbs table.dataTable>tbody>tr.child ul li:first-child{padding-top:0}#bookly-tbs table.dataTable>tbody>tr.child ul li:last-child{border-bottom:none}#bookly-tbs table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:700}#bookly-tbs div.dtr-modal{position:fixed;top:0;left:0;z-index:100;width:100%;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10em 1em}#bookly-tbs div.dtr-modal div.dtr-modal-display{position:absolute;top:0;right:0;bottom:0;left:0;z-index:102;width:50%;height:50%;margin:auto;overflow:auto;background-color:#f5f5f7;border:1px solid #000;border-radius:.5em;-webkit-box-shadow:0 12px 30px rgba(0,0,0,.6);box-shadow:0 12px 30px rgba(0,0,0,.6)}#bookly-tbs div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}#bookly-tbs div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;z-index:12;width:22px;height:22px;text-align:center;cursor:pointer;background-color:#f9f9f9;border:1px solid #eaeaea;border-radius:3px}#bookly-tbs div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}#bookly-tbs div.dtr-modal div.dtr-modal-background{position:fixed;top:0;right:0;bottom:0;left:0;z-index:101;background:rgba(0,0,0,.6)}@media screen and (max-width:767px){#bookly-tbs div.dtr-modal div.dtr-modal-display{width:95%}}#bookly-tbs div.dtr-bs-modal table.table tr:first-child td{border-top:none}#bookly-tbs table.dt-rowReorder-float{position:absolute!important;z-index:2001;table-layout:fixed;outline:2px solid #337ab7;outline-offset:-2px;opacity:.8}#bookly-tbs tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}#bookly-tbs body.dt-rowReorder-noOverflow{overflow-x:hidden}#bookly-tbs table.dataTable td.reorder{text-align:center;cursor:move}#bookly-tbs .jCal-wrap{margin-right:-10px;margin-left:-10px}#bookly-tbs .jCal{position:relative;width:100%}#bookly-tbs .jCalMo{position:relative;display:block;padding:0 15px;margin-bottom:15px;white-space:nowrap}@media (min-width:768px){#bookly-tbs .jCalMo{height:257px}}#bookly-tbs .jCal .month,#bookly-tbs .jCal .monthName,#bookly-tbs .jCal .monthSelect,#bookly-tbs .jCal .monthYear{float:left}#bookly-tbs .jCal .monthName{width:100%;padding:10px 0;font-weight:700;text-align:center}#bookly-tbs .jCal .monthYear{float:right;text-align:left}#bookly-tbs .jCal .month{width:100%}#bookly-tbs .jCal .monthSelect{background:#e8ebf0}#bookly-tbs .jCal .monthSelector{position:absolute}#bookly-tbs .jCal .monthSelectorShadow{position:absolute;padding:0;background:#8a929e}#bookly-tbs .jCal .monthNameHover,#bookly-tbs .jCal .monthYearHover{color:#8a929e;background:#e8ebf0}#bookly-tbs .jCal .monthSelectHover{color:#fff;background:#08c}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .day,#bookly-tbs .jCalMo .dow,#bookly-tbs .jCalMo .invday,#bookly-tbs .jCalMo .overDay,#bookly-tbs .jCalMo .pday,#bookly-tbs .jCalMo .selectedDay{position:relative;float:left;width:-webkit-calc(14.2857% + 1px);width:calc(14.2857% + 1px);margin-right:-1px;text-align:center;cursor:default;border:1px solid #e8ebf0;border-width:0 1px 1px 1px}#bookly-tbs .jCalMo .dow{font-size:12px;line-height:30px;background:#e8ebf0;border-bottom:0}#bookly-tbs .jCalMo .day{font-size:13px;line-height:30px;cursor:pointer;background:#fff}#bookly-tbs .jCalMo .invday{color:#8a929e;text-decoration:line-through;background:#e8ebf0}#bookly-tbs .jCalMo .aday,#bookly-tbs .jCalMo .pday{font-size:13px;line-height:30px;color:#d9dee4;background:rgba(232,235,240,.3)}#bookly-tbs .jCalMo .overDay{color:#3e424a;background:rgba(0,136,204,.2)}#bookly-tbs .jCalMo .holidayDay{color:#fff;background:#f0ad4e}#bookly-tbs .jCalMo .holidayDay.repeatDay{color:#fff;background:#d9534f}#bookly-tbs .jCalMo .selectedDay,#bookly-tbs .jCalMo .selectedDay.repeatDay{color:#fff;background:#08c}#bookly-tbs .jCal .left,#bookly-tbs .jCal .right{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bookly-tbs .jCalMask,#bookly-tbs .jCalMove{position:absolute;width:700px;height:930px;overflow:hidden}@media (min-width:768px){#bookly-tbs .jCalMo{float:left;width:50%}}@media (min-width:1200px){#bookly-tbs .jCalMo{float:left;width:33.33333333%}}#bookly-tbs .bookly-loading{position:relative;height:100px}#bookly-tbs .bookly-loading:before{position:absolute;top:-webkit-calc(50% - 16px);top:calc(50% - 16px);left:-webkit-calc(50% - 16px);left:calc(50% - 16px);width:32px;height:32px;content:'';background:url(../../images/ajax_loader_32x32.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .bookly-loading-16{position:relative;display:inline-block;min-width:16px;min-height:16px}#bookly-tbs .bookly-loading-16:before{position:absolute;top:-webkit-calc(50% - 8px);top:calc(50% - 8px);left:-webkit-calc(50% - 8px);left:calc(50% - 8px);width:16px;height:16px;content:'';background:url(../../images/loading.gif) no-repeat;-webkit-background-size:contain;background-size:contain}#bookly-tbs .select2 .select2-selection{height:35px!important;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .select2 .select2-selection__choice{display:none}#bookly-tbs .select2 .select2-selection ul{padding:0 16px;margin-bottom:0}#bookly-tbs .select2 .select2-search{float:none;margin:6px 0}#bookly-tbs .select2 .select2-search__field{width:100%!important;padding:0;margin:0;border:0;-webkit-box-shadow:none!important;box-shadow:none!important}#bookly-tbs .select2 .select2-selection__clear{top:-2px}#bookly-tbs .select2 .select2-selection__arrow{top:-4px}#bookly-tbs .bookly-no-borders,#bookly-tbs .bookly-no-borders td{border:0!important}#bookly-tbs .panel.bookly-main{border-color:#d9dee4;border-width:1px}@media (min-width:992px){#bookly-tbs .panel.bookly-main>.panel-body{padding:25px}}#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 15px 15px}@media (min-width:992px){#bookly-tbs .panel.bookly-main .panel-body+.panel-footer{margin:0 25px 25px}}#bookly-tbs .panel.bookly-panel-unborder,#bookly-tbs .panel.bookly-panel-unborder .panel-heading,#bookly-tbs .panel.bookly-panel-unborder>.list-group .list-group-item,#bookly-tbs .panel.bookly-panel-unborder>.panel-collapse>.list-group .list-group-item{border-width:0}#bookly-tbs .panel.bookly-panel-unborder .panel-heading{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bookly-tbs .panel .panel-heading .bookly-font-smaller{padding-top:4px}#bookly-tbs .panel .panel-footer{padding:21px 0 0 0;background-color:transparent}@media (min-width:768px){#bookly-tbs .panel .panel-footer{text-align:right}}@media (max-width:767px){#bookly-tbs .panel .panel-footer .btn{float:none!important}}#bookly-tbs .panel .panel-body .bookly-codes input{width:242px;border:none}#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(4),#bookly-tbs .panel .panel-body #bookly-prices tr td:nth-child(5){text-align:right}#bookly-tbs .panel .padding-lr-none{padding-right:0;padding-left:0}#bookly-tbs .panel .panel-group .panel-footer{border-top:1px solid #e8ebf0}#bookly-tbs .bookly-collapse{margin-bottom:16px!important}#bookly-tbs .bookly-collapse a[data-toggle=collapse]{padding-right:25px;vertical-align:middle;background:url(../../../resources/images/notifications-arrow-up.png) 100% 50% no-repeat;-webkit-background-size:17px 17px!important;background-size:17px 17px!important;outline:0;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-collapse a[data-toggle=collapse].collapsed{background:url(../../../resources/images/notifications-arrow-down.png) 100% 50% no-repeat}#bookly-tbs .help-block{margin-top:-5px;margin-bottom:7px}@media (min-width:768px){#bookly-tbs .form-inline .form-group+.form-group,#bookly-tbs .modal-footer .btn+.btn,#bookly-tbs .page-header .bookly-support-panel>*+*,#bookly-tbs .page-header .popover+.btn,#bookly-tbs .panel-footer .btn+.btn:not(.bookly-btn-unborder){margin-left:12px}}#bookly-tbs .bookly-block-head{margin-bottom:20px}#bookly-tbs .intl-tel-input{display:block}#bookly-tbs .intl-tel-input .flag-container{right:0;left:0}#bookly-tbs .intl-tel-input .selected-flag{width:42px;padding:0 0 0 8px}#bookly-tbs .intl-tel-input .selected-flag .arrow{right:4px;left:auto;border-top:4px solid #000;border-right:3px solid transparent;border-left:3px solid transparent}#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags.png)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-resolution:2dppx){#bookly-tbs .intl-tel-input .iti-flag{background-image:url(../../../../frontend/resources/images/flags@2x.png)}}#bookly-tbs .intl-tel-input .form-control{padding-left:45px}#bookly-tbs .intl-tel-input .country-list{max-width:100%}#bookly-tbs .form-inline label{margin-bottom:0}#bookly-tbs .form-inline .intl-tel-input{display:inline-block}#bookly-tbs .form-inline .bookly-checkbox-text{font-weight:400;vertical-align:middle}#bookly-tbs .page-header{margin-top:0}#bookly-tbs .page-header .bookly-support-panel #bookly-bell+.badge{position:absolute;top:-17px;right:7px;background-color:red}#bookly-tbs .page-header .bookly-support-panel .dropdown-menu-right{margin-top:10px;margin-right:3px}#bookly-tbs .bookly-nav-justified.nav-justified{display:table;margin-bottom:30px;table-layout:fixed}#bookly-tbs .bookly-nav-justified.nav-justified>li{display:table-cell;width:100%}#bookly-tbs .bookly-nav-justified.nav-justified>li>a{padding:15px 5px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #d9dee4;border-radius:0}#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:focus,#bookly-tbs .bookly-nav-justified.nav-justified>li>.active>a:hover{border-bottom:1px solid #08c}#bookly-tbs .bookly-nav-justified.nav-justified>li .bookly-icon{margin:0 3px;vertical-align:bottom}#bookly-tbs .bookly-nav-tabs-title{font-size:17px}@media (max-width:991px){#bookly-tbs .bookly-nav-tabs-title{display:none}}#bookly-tbs .bookly-thumb{position:relative;display:block;width:76px;height:76px;overflow:hidden;background-color:#e8ebf0;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat;background-position:-106px 0;border:1px solid #d9dee4;border-radius:4px}#bookly-tbs .bookly-thumb.bookly-thumb-sm{width:36px;height:36px;background-position:-182px 0}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg{background-position:0 0}}#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-color:rgba(0,0,0,.05);background-image:none}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:106px;height:106px;background-position:0 0}}@media (max-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{background-position:0 0}}@media (min-width:992px){#bookly-tbs .bookly-thumb.bookly-thumb-lg-w100{width:100%}}#bookly-tbs .bookly-thumb .bookly-thumb-delete{position:absolute;top:5px;right:5px}#bookly-tbs .bookly-thumb .bookly-thumb-edit{position:absolute;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.4)}#bookly-tbs .bookly-thumb .bookly-thumb-edit .bookly-thumb-edit-btn{width:100%;padding:0 3px;margin:0;overflow:hidden;font-size:13px;line-height:25px;color:#fff;text-align:center;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .bookly-staff-archived{background:rgba(232,235,240,.7)!important}#bookly-tbs .bookly-staff-archived .bookly-flex-cell{color:#d9dee4}#bookly-tbs .bookly-staff-archived .bookly-rating-right{color:#d9dee4}#bookly-tbs .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bookly-tbs .btn.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .btn.btn-xlg .dashicons,#bookly-tbs .btn.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .btn.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-nav{margin-bottom:20px;font-size:0}#bookly-tbs .bookly-nav.bookly-nav-pills .bookly-nav-item{display:inline-block;margin:6px 10px 6px 0}#bookly-tbs .bookly-nav.bookly-nav-tabs{z-index:10;border-bottom:1px solid #e8ebf0}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs{margin-bottom:0}}@media (min-width:768px){#bookly-tbs .bookly-nav.bookly-nav-tabs .bookly-nav-item{position:relative;display:inline-block;padding:12px 16px;margin:6px 10px -1px 0;border-bottom-right-radius:0;border-bottom-left-radius:0}}#bookly-tbs .bookly-nav .bookly-nav-item{position:relative;display:block;padding:10px 10px;margin-bottom:6px;font-size:15px;background:#fff;border:1px solid #e8ebf0;border-radius:4px}#bookly-tbs .bookly-nav .bookly-nav-item.active{color:#fff;background:#08c;border-color:#08c}#bookly-tbs .bookly-nav .bookly-nav-item.active a{color:#fff}#bookly-tbs .bookly-nav .bookly-nav-item.active a:focus,#bookly-tbs .bookly-nav .bookly-nav-item.active a:hover{color:#d9d9d9}#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):focus,#bookly-tbs .bookly-nav .bookly-nav-item:not(.active):hover{cursor:pointer;background-color:#e8ebf0;border-color:#8a929e;-webkit-box-shadow:0 0 5px rgba(0,0,0,.2);box-shadow:0 0 5px rgba(0,0,0,.2)}#bookly-tbs .board-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.5)}#bookly-tbs .board-backdrop .bookly-board{width:50%;padding:20px;margin:10% 25%;background-color:#fefefe;border:1px solid rgba(0,0,0,.2)}@media (max-width:991px){#bookly-tbs .board-backdrop .bookly-board{width:90%;margin:10% 5%}}#bookly-tbs .board-backdrop .bookly-board .btn-group-vertical.align-left .btn{padding-left:6px;text-align:left}#bookly-tbs .board-backdrop .bookly-board ul{margin-left:15px!important;list-style:inside!important}#bookly-tbs .bookly-dropdown-menu>li:first-child{margin-left:0}#bookly-tbs .bookly-dropdown-menu li{margin-left:20px}#bookly-tbs .bookly-dropdown-menu ul>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4;color:#5b6470;white-space:nowrap}#bookly-tbs .bookly-dropdown-menu ul>li>a:focus,#bookly-tbs .bookly-dropdown-menu ul>li>a:hover{color:#505762;text-decoration:none;background-color:#f5f5f5}#bookly-tbs .bookly-dropdown-block{display:block;width:100%;height:36px;line-height:1.4}#bookly-tbs .bookly-dropdown-block .bookly-flex-cell:last-child{position:absolute;top:7px;left:-webkit-calc(100% - 32px);left:calc(100% - 32px)}#bookly-tbs .bookly-service-color{display:inline-block;width:21px;height:21px;margin-left:-25px;border:2px solid #fff;border-radius:50%}#bookly-tbs .bookly-vertical-colors .bookly-service-color{position:absolute}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(1){margin-top:-15px}#bookly-tbs .bookly-vertical-colors .bookly-service-color:nth-child(2){margin-top:-5px}#bookly-tbs .bookly-max-height-xs{max-height:200px!important;overflow:auto}#bookly-tbs .bookly-max-height-sm{max-height:300px!important;overflow:auto}#bookly-tbs .bookly-max-height-md{max-height:400px!important;overflow:auto}#bookly-tbs .bookly-max-height-lg{max-height:500px!important;overflow:auto}#bookly-tbs .bookly-holidays-nav{display:block;width:200px;margin:0 auto}#bookly-tbs .bookly-holidays-nav .btn-default,#bookly-tbs .bookly-holidays-nav .form-control{background-color:#eff1f4;border-color:transparent}#bookly-tbs .modal-body textarea.wp-editor-area{width:-webkit-calc(100% - 20px);width:calc(100% - 20px)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day{cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-day.bookly-fc-day-active{background-color:#eafcff}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group{position:relative;display:inline-block;vertical-align:middle}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group .fc-button+.fc-button{margin-left:-1px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left):not(.fc-corner-right){border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child{margin-left:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:first-child:not(.fc-corner-right){border-top-right-radius:0;border-bottom-right-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group>.fc-button:not(.fc-corner-left){border-top-left-radius:0;border-bottom-left-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button-group:not(:last-child){margin-right:16px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button{display:inline-block;height:auto;padding:6px 12px;margin-bottom:0;overflow:hidden;font-size:15px;font-weight:400;line-height:1.4;text-align:center;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill{border-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-left{border-top-left-radius:24px;border-bottom-left-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-pill-right{border-top-right-radius:24px;border-bottom-right-radius:24px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-lg{padding-right:32px;padding-left:32px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.btn-xlg .dashicons-before:before{width:30px;height:30px;font-size:30px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-button.bookly-btn-unborder{padding-right:0;padding-left:0;border-color:transparent}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;text-shadow:none;background-color:#fff;background-image:none;border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus{color:#3e424a;background-color:#e6e6e6;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{color:#3e424a;background-color:#e6e6e6;border-color:#b5bfcb}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active:hover,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.active,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:active,.open>.dropdown-toggle#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default{background-image:none}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.disabled:hover,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled].focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default[disabled]:hover,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:focus,fieldset[disabled] #bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default:hover{background-color:#fff;border-color:#d9dee4}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default .badge{color:#fff;background-color:#3e424a}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active{z-index:1;color:#3e424a;background-color:#e6e6e6;background-image:none;border-color:#b5bfcb;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active.focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:focus,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-state-default.fc-state-active:hover{color:#3e424a;background-color:#d4d4d4;border-color:#8e9daf}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{position:relative;margin:0;font-size:20px;line-height:32px;cursor:pointer}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:hover{color:#005580}@media (min-width:768px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2{font-size:24px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar h2:after{display:inline-block;width:0;height:0;margin-left:12px;vertical-align:middle;content:" ";border-top:5px dashed;border-top:5px solid\9;border-right:5px solid transparent;border-left:5px solid transparent}@media (max-width:767px){#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-left,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-toolbar .fc-right{display:inline-block;float:none;margin:0 12px 6px 12px}}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-head{background-color:#e8ebf0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-widget-header{padding:10px 0}#bookly-tbs .bookly-fc-inner .bookly-calendar th.fc-day-header{text-align:center}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc .fc-axis{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:0 4px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view{min-height:.01%;overflow-x:auto}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-view>table{min-width:768px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event{padding:3px 2px 3px 5px;margin-right:0;margin-left:0;color:#3e424a;cursor:pointer;border-width:0;border-radius:0}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:after{position:absolute;top:0;right:0;width:-webkit-calc(100% - 2px);width:calc(100% - 2px);height:100%;content:'';background-color:rgba(255,255,255,.6);border-bottom:1px solid rgba(255,255,255,.4)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-event:hover:after{background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time{font-size:inherit;font-weight:700}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon{float:right;color:#3e424a;opacity:.8}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-time .bookly-fc-icon:hover{cursor:pointer;opacity:1}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-title{display:block;margin-top:3px}#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-ltr .fc-time-grid .fc-event-container,#bookly-tbs .bookly-fc-inner .bookly-calendar .fc-rtl .fc-time-grid .fc-event-container{margin:0}#bookly-tbs .bookly-fc-inner .fc-loading-inner{position:absolute;top:50px;right:0;bottom:0;left:0;z-index:9;background-color:rgba(255,255,255,.7)}#bookly-tbs .bookly-fc-inner .fc-loading-inner .fc-loading{position:absolute;top:50%;left:50%;width:auto;height:32px;padding-left:64px;background:rgba(255,0,0,0) url(../../images/ajax_loader_32x32.gif) no-repeat scroll 50% center}#bookly-tbs .bookly-fc-inner .bookly-margin-top-xlg{position:relative;min-height:.01%;overflow:visible}@media (min-width:768px){#bookly-tbs .daterangepicker.dropdown-menu.show-calendar{min-width:718px}}#bookly-tbs .daterangepicker .daterangepicker_input{margin-bottom:6px}#bookly-tbs .daterangepicker .daterangepicker_input .glyphicon{position:absolute;top:8px}#bookly-tbs .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .wp-switch-editor+.wp-switch-editor{margin-left:5px}#bookly-tbs .editable-container.popover{z-index:9999}#bookly-tbs .editable-input,#bookly-tbs .editable-input .form-control{width:100%}#bookly-tbs .editable-input textarea{resize:both}#bookly-tbs .editable-buttons{display:block;margin:6px 0;text-align:right}#bookly-tbs .editable-clear-x,#bookly-tbs .editable-click{cursor:pointer}#bookly-tbs .table>thead>tr>th{padding:16px 8px;background-color:#e8ebf0}#bookly-tbs .bookly-table-sortable.table>thead>tr>th{position:relative;padding-left:16px!important}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class],#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]{cursor:pointer}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class]:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by]:after{position:absolute;bottom:22px;left:-4px;width:24px;height:15px;content:"";background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiB3aWR0aD0iNDgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDIwbDEwIDEwIDEwLTEweiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:0 -webkit-calc(50% + 2px);background-position:0 calc(50% + 2px);-webkit-background-size:24px 24px;background-size:24px 24px;opacity:.1}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].desc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].desc:after{opacity:1;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}#bookly-tbs .bookly-table-sortable.table>thead>tr>th[ng-class].asc:after,#bookly-tbs .bookly-table-sortable.table>thead>tr>th[order-by].asc:after{opacity:1}#bookly-tbs .table thead>tr>th{vertical-align:middle}#bookly-tbs .table thead>tr>th:not(:first-child){border-left:1px solid #d9dee4}#bookly-tbs .table td>input[type=checkbox],#bookly-tbs .table th>input[type=checkbox]{margin:0}#bookly-tbs .table td ul.bookly-list,#bookly-tbs .table th ul.bookly-list{padding-left:13px;margin:0!important}#bookly-tbs .table td ul.bookly-list.list-dots,#bookly-tbs .table th ul.bookly-list.list-dots{list-style:disc outside!important}#bookly-tbs .table td ul.bookly-list li,#bookly-tbs .table th ul.bookly-list li{margin:0}#bookly-tbs .bookly-color-picker-wrapper{position:relative;min-height:35px}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container{position:absolute;z-index:10;padding:6px;margin-left:-6px;background-color:#fff}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container,#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container.wp-picker-active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .wp-color-result{height:auto}#bookly-tbs .bookly-color-picker-wrapper .wp-picker-container .button{margin-left:6px}#bookly-tbs .page-header .bookly-page-title{float:left;font-size:24px;line-height:38px}@media (max-width:767px){#bookly-tbs .page-header .bookly-page-title{font-size:22px}#bookly-tbs h3{font-size:18px}}#bookly-tbs .modal{top:46px!important;font-size:15px}#bookly-tbs .modal table{font-family:Arial,Helvetica,sans-serif}#bookly-tbs .modal table th{word-break:normal}#bookly-tbs .modal table td{word-break:normal}#bookly-tbs .modal .bookly-codes input{width:242px;border:none}#bookly-tbs .modal-header .close{margin-top:4px}@media (max-width:767px){#bookly-tbs .bookly-form .bookly-progress-tracker{display:none!important}}#bookly-tbs .bookly-form .picker__nav--next,#bookly-tbs .bookly-form .picker__nav--prev{width:26px;height:26px}@media (max-width:991px){#bookly-tbs .bookly-form .bookly-user-coupon{width:135px}}#bookly-tbs .bookly-form .bookly-box{padding-bottom:1px}#bookly-tbs .bookly-form input[type=checkbox],#bookly-tbs .bookly-form input[type=radio]{width:16px!important;height:16px!important}#bookly-tbs .bookly-icon{display:inline-block;width:24px;height:24px;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .bookly-icon.bookly-icon-draghandle{background-position:-154px -82px}#bookly-tbs .has-feedback .alert-icon{display:inline-block;width:24px;height:24px;margin:4px 6px 0 0;vertical-align:middle;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .has-feedback.has-success .alert-icon{background-position:-24px -113px}#bookly-tbs .has-feedback.has-error .alert-icon{background-position:-48px -113px}#bookly-tbs .has-feedback.has-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .has-feedback.has-ajax .alert-icon{background-position:-72px -113px;-webkit-animation:spin 3s infinite;-o-animation:spin 3s infinite;animation:spin 3s infinite}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spin{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}#bookly-tbs .alert{margin-top:30px}#bookly-tbs .alert .alert-icon,#bookly-tbs .alert .close{display:inline-block;width:24px;height:24px;vertical-align:top;background-color:transparent;background-image:url(../../../../backend/resources/images/sprite.png);background-repeat:no-repeat}#bookly-tbs .alert .close{margin-top:-2px}#bookly-tbs .alert.alert-info .alert-icon{background-position:0 -113px}#bookly-tbs .alert.alert-success .alert-icon{background-position:-24px -113px}#bookly-tbs .alert.alert-danger .alert-icon{background-position:-48px -113px}#bookly-tbs .alert.alert-warning .alert-icon{background-position:-72px -113px}#bookly-tbs .bookly-alert{position:fixed;top:55px;right:13px;z-index:10000;text-align:left}@media (min-width:783px){#bookly-tbs .bookly-alert{right:21px}}#bookly-tbs .bookly-alert button{margin-left:10px}#bookly-tbs .pagination .next,#bookly-tbs .pagination .prev{position:inherit;width:inherit;height:inherit;padding:inherit}#bookly-tbs .pagination .next:before,#bookly-tbs .pagination .prev:before{position:inherit;width:inherit;height:inherit;padding:inherit;content:""}#bookly-tbs #bookly-appointments-list .popover .arrow{display:none}#bookly-tbs .bookly-rating-right{float:right}#bookly-tbs .bookly-rating-left{margin-left:10px}#bookly-tbs .bookly-rating-left i{margin-top:3px}#bookly-tbs .table.table-striped{border:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{background-color:transparent;border-top:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th:not(:first-child){border-left:1px solid #f4f4f4}#bookly-tbs .table.table-striped thead>tr>th{border-bottom:none}#bookly-tbs .table.table-striped tbody>tr>td{border-top:1px solid #f4f4f4}#bookly-tbs .modal.fade.show{opacity:1}#bookly-tbs .modal .modal-header{display:block}#bookly-tbs ul{list-style:none}#bookly-tbs .modal.show .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bookly-tbs h2:before{content:none}#bookly-tbs .dataTables_wrapper{display:block}body.mobile.modal-open #wpwrap{position:inherit!important}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-backdrop+.modal-backdrop{display:none!important}.modal-open{overflow:hidden!important}.modal-open .modal{overflow-x:hidden!important;overflow-y:auto!important}.select2-container--bootstrap{display:block}.select2-container--bootstrap .select2-selection{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-selection.form-control{border-radius:4px}.select2-container--bootstrap .select2-search--dropdown .select2-search__field{font-size:15px;color:#3e424a;background-color:#fff;border:1px solid #d9dee4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.select2-container--bootstrap .select2-search__field{outline:0}.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field:-moz-placeholder{color:#8a929e}.select2-container--bootstrap .select2-search__field::-moz-placeholder{color:#8a929e;opacity:1}.select2-container--bootstrap .select2-search__field:-ms-input-placeholder{color:#8a929e}.select2-container--bootstrap .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option[role=group]{padding:0}.select2-container--bootstrap .select2-results__option[aria-disabled=true]{color:#d9dee4;cursor:not-allowed}.select2-container--bootstrap .select2-results__option[aria-selected=true]{color:#505762;background-color:#f5f5f5}.select2-container--bootstrap .select2-results__option--highlighted[aria-selected]{color:#fff;background-color:#08c}.select2-container--bootstrap .select2-results__option .select2-results__option{padding:6px 12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*2;margin-left:-12px}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*3;margin-left:-12px*2}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*4;margin-left:-12px*3}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*5;margin-left:-12px*4}.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{padding-left:12px*6;margin-left:-12px*5}.select2-container--bootstrap .select2-results__group{display:block;padding:6px 12px;font-size:13px;line-height:1.4;color:#d9dee4;white-space:nowrap}.select2-container--bootstrap.select2-container--focus .select2-selection,.select2-container--bootstrap.select2-container--open .select2-selection{border-color:#08c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,136,204,.6);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 5px 5px 5px}.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection{border-top-color:transparent;border-top-left-radius:0;border-top-right-radius:0}.select2-container--bootstrap .select2-selection__clear{float:right;margin-right:10px;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection__clear:hover{color:#3e424a}.select2-container--bootstrap.select2-container--disabled .select2-selection{border-color:#d9dee4;-webkit-box-shadow:none;box-shadow:none}.select2-container--bootstrap.select2-container--disabled .select2-search__field,.select2-container--bootstrap.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap.select2-container--disabled .select2-selection,.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:rgba(232,235,240,.7)}.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap .select2-dropdown{margin-top:-1px;overflow-x:hidden;border-color:#08c;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-dropdown--above{margin-top:1px;-webkit-box-shadow:0 -6px 12px rgba(0,0,0,.175);box-shadow:0 -6px 12px rgba(0,0,0,.175)}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap .select2-selection--single{height:35px;padding:6px 27px 6px 12px;line-height:1.4}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow{position:absolute;top:0;right:12px;bottom:0;width:5px}.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b{position:absolute;top:50%;left:0;width:0;height:0;margin-top:-5px/2;margin-left:-5px;border-color:#8a929e transparent transparent transparent;border-style:solid;border-width:5px 5px 0 5px}.select2-container--bootstrap .select2-selection--single .select2-selection__rendered{padding:0;color:#3e424a}.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{color:#8a929e}.select2-container--bootstrap .select2-selection--multiple{height:auto;min-height:35px;padding:0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0;overflow:hidden;line-height:1.4;text-overflow:ellipsis;white-space:nowrap;list-style:none}.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder{float:left;margin-top:5px;color:#8a929e}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice{float:left;padding:0 6px;margin:5px 0 0 12px/2;color:#3e424a;cursor:default;background:#fff;border:1px solid #d9dee4;border-radius:4px}.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field{min-width:5em;height:35px - 2;padding:0 12px;margin-top:0;line-height:1.4;background:0 0}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove{display:inline-block;margin-right:6px/2;font-weight:700;color:#8a929e;cursor:pointer}.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover{color:#3e424a}.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear{margin-top:6px}.form-group-sm .select2-container--bootstrap .select2-selection--single,.input-group-sm .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-sm{height:32px;padding:5px 10px + 5px*3 5px 10px;font-size:13px;line-height:1.53846154;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-5px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple,.input-group-sm .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-sm{min-height:32px;border-radius:3px}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__choice{padding:0 5px;margin:4px 0 0 10px/2;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{height:32px - 2;padding:0 10px;font-size:13px;line-height:1.53846154}.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:5px}.form-group-lg .select2-container--bootstrap .select2-selection--single,.input-group-lg .select2-container--bootstrap .select2-selection--single,.select2-container--bootstrap .select2-selection--single.input-lg{height:46px;padding:10px 16px + 6px*3 10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow{width:6px}.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap .select2-selection--single.input-lg .select2-selection__arrow b{margin-top:-6px/2;margin-left:-6px;margin-left:-10px;border-width:6px 6px 0 6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple,.input-group-lg .select2-container--bootstrap .select2-selection--multiple,.select2-container--bootstrap .select2-selection--multiple.input-lg{min-height:46px;border-radius:6px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__choice{padding:0 10px;margin:9px 0 0 16px/2;font-size:18px;line-height:1.3333333;border-radius:4px}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{height:46px - 2;padding:0 16px;font-size:18px;line-height:1.3333333}.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:10px}.select2-container--bootstrap .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.input-group-lg .select2-container--bootstrap .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #8a929e transparent;border-width:0 6px 6px 6px}.select2-container--bootstrap[dir=rtl] .select2-selection--single{padding-right:12px;padding-left:12px + 5px*3}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow{right:auto;left:12px}.select2-container--bootstrap[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-right:12px/2;margin-left:0}.select2-container--bootstrap[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-right:auto;margin-left:2px}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#8a6d3b}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning.select2-drop-active{border-color:#66512c}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#66512c}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#a94442}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error.select2-drop-active{border-color:#843534}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#843534}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#3c763d}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success.select2-drop-active{border-color:#2b542c}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#2b542c}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap>.selection>.select2-selection.form-control{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap:last-child>.selection>.select2-selection.form-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.select2-container--bootstrap{position:relative;z-index:2;display:table;width:100%;margin-bottom:0;table-layout:fixed}.input-group>.select2-container--bootstrap>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap.select2-container--focus,.input-group>.select2-container--bootstrap.select2-container--open{z-index:3}.input-group>.select2-container--bootstrap,.input-group>.select2-container--bootstrap .input-group-btn,.input-group>.select2-container--bootstrap .input-group-btn .btn{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:768px){.form-inline .select2-container--bootstrap{display:inline-block}}.select2-results__option{padding:7px 12px;margin-bottom:1px!important}.select2-results__option[aria-selected=true]{color:#8a929e!important;background-color:inherit!important}.select2-container--bootstrap .select2-results>.select2-results__options{max-height:400px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option{padding:2px 12px;margin-bottom:1px!important;font-size:15px;line-height:1.4em}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__option i{margin-right:5px}.select2-container--bootstrap .select2-results>.select2-results__options .select2-results__group{font-size:16px;color:#000}#select2-bookly-appointment-dialog-select2-results .select2-results__option[aria-selected=true]{color:#444!important}table.dt-rowReorder-float{position:absolute!important;outline:2px solid #888}
|
backend/resources/css/select2.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
|
1 |
+
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
|
backend/resources/js/jCal.js
CHANGED
@@ -82,8 +82,8 @@
|
|
82 |
// save right arrow
|
83 |
var right = null;
|
84 |
// create new previous 12 months
|
85 |
-
for (var i =
|
86 |
-
$(e.data._target).prepend('<div class="jCalMo"></div>');
|
87 |
e.data.day = new Date( $('div[id*=' + e.data.cID + 'd_]:first', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
|
88 |
e.data.day.setDate(1);
|
89 |
e.data.day.setMonth( e.data.day.getMonth() - 1);
|
@@ -115,7 +115,7 @@
|
|
115 |
var left = false;
|
116 |
// create new next 12 month
|
117 |
for (var i = 0; i < 12; i++) {
|
118 |
-
$(e.data._target).append('<div class="jCalMo"></div>');
|
119 |
e.data.day = new Date( $('div[id^=' + e.data.cID + 'd_]:last', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
|
120 |
e.data.day.setDate(1);
|
121 |
e.data.day.setMonth( e.data.day.getMonth() + 1 );
|
82 |
// save right arrow
|
83 |
var right = null;
|
84 |
// create new previous 12 months
|
85 |
+
for (var i = 11; i >= 0; i-- ) {
|
86 |
+
$(e.data._target).prepend('<div class="jCalMo" data-index="' + i + '"></div>');
|
87 |
e.data.day = new Date( $('div[id*=' + e.data.cID + 'd_]:first', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
|
88 |
e.data.day.setDate(1);
|
89 |
e.data.day.setMonth( e.data.day.getMonth() - 1);
|
115 |
var left = false;
|
116 |
// create new next 12 month
|
117 |
for (var i = 0; i < 12; i++) {
|
118 |
+
$(e.data._target).append('<div class="jCalMo" data-index="' + i + '"></div>');
|
119 |
e.data.day = new Date( $('div[id^=' + e.data.cID + 'd_]:last', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
|
120 |
e.data.day.setDate(1);
|
121 |
e.data.day.setMonth( e.data.day.getMonth() + 1 );
|
backend/resources/js/select2.full.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
/*! Select2 4.0.4 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()});b.$results.find(".select2-results__option[aria-selected]").each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");if("true"===c.attr("aria-selected"))return void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{}));d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2");a(".select2.select2-container--open").each(function(){var b=a(this);this!=d[0]&&b.data("element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">×</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var f=document.documentMode,g=f&&f<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(g)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),void 0!==a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(null!=(b=c.data(a[0],"data")))return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f];b(c.term,g.text,g)||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c,this.options.get("query").call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){c.find(".dropdown-wrapper").append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120==0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
|
1 |
+
/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.__cache={};var e=0;return c.GetUniqueElementId=function(a){var b=a.getAttribute("data-select2-id");return null==b&&(a.id?(b=a.id,a.setAttribute("data-select2-id",b)):(a.setAttribute("data-select2-id",++e),b=e.toString())),b},c.StoreData=function(a,b,d){var e=c.GetUniqueElementId(a);c.__cache[e]||(c.__cache[e]={}),c.__cache[e][b]=d},c.GetData=function(b,d){var e=c.GetUniqueElementId(b);return d?c.__cache[e]&&null!=c.__cache[e][d]?c.__cache[e][d]:a(b).data(d):c.__cache[e]},c.RemoveData=function(a){var b=c.GetUniqueElementId(a);null!=c.__cache[b]&&delete c.__cache[b]},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var c=this;this.data.current(function(d){var e=a.map(d,function(a){return a.id.toString()});c.$results.find(".select2-results__option[aria-selected]").each(function(){var c=a(this),d=b.GetData(this,"data"),f=""+d.id;null!=d.element&&d.element.selected||null==d.element&&a.inArray(f,e)>-1?c.attr("aria-selected","true"):c.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(c){var d=document.createElement("li");d.className="select2-results__option";var e={role:"treeitem","aria-selected":"false"};c.disabled&&(delete e["aria-selected"],e["aria-disabled"]="true"),null==c.id&&delete e["aria-selected"],null!=c._resultId&&(d.id=c._resultId),c.title&&(d.title=c.title),c.children&&(e.role="group",e["aria-label"]=c.text,delete e["aria-selected"]);for(var f in e){var g=e[f];d.setAttribute(f,g)}if(c.children){var h=a(d),i=document.createElement("strong");i.className="select2-results__group";a(i);this.template(c,i);for(var j=[],k=0;k<c.children.length;k++){var l=c.children[k],m=this.option(l);j.push(m)}var n=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});n.append(j),h.append(i),h.append(n)}else this.template(c,d);return b.StoreData(d,"data",c),d},c.prototype.bind=function(c,d){var e=this,f=c.id+"-results";this.$results.attr("id",f),c.on("results:all",function(a){e.clear(),e.append(a.data),c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("results:append",function(a){e.append(a.data),c.isOpen()&&e.setClasses()}),c.on("query",function(a){e.hideMessages(),e.showLoading(a)}),c.on("select",function(){c.isOpen()&&(e.setClasses(),e.options.get("scrollAfterSelect")&&e.highlightFirstItem())}),c.on("unselect",function(){c.isOpen()&&(e.setClasses(),e.options.get("scrollAfterSelect")&&e.highlightFirstItem())}),c.on("open",function(){e.$results.attr("aria-expanded","true"),e.$results.attr("aria-hidden","false"),e.setClasses(),e.ensureHighlightVisible()}),c.on("close",function(){e.$results.attr("aria-expanded","false"),e.$results.attr("aria-hidden","true"),e.$results.removeAttr("aria-activedescendant")}),c.on("results:toggle",function(){var a=e.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),c.on("results:select",function(){var a=e.getHighlightedResults();if(0!==a.length){var c=b.GetData(a[0],"data");"true"==a.attr("aria-selected")?e.trigger("close",{}):e.trigger("select",{data:c})}}),c.on("results:previous",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a);if(!(c<=0)){var d=c-1;0===a.length&&(d=0);var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top,h=f.offset().top,i=e.$results.scrollTop()+(h-g);0===d?e.$results.scrollTop(0):h-g<0&&e.$results.scrollTop(i)}}),c.on("results:next",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a),d=c+1;if(!(d>=b.length)){var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top+e.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=e.$results.scrollTop()+h-g;0===d?e.$results.scrollTop(0):h>g&&e.$results.scrollTop(i)}}),c.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),c.on("results:message",function(a){e.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=e.$results.scrollTop(),c=e.$results.get(0).scrollHeight-b+a.deltaY,d=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=e.$results.height();d?(e.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(e.$results.scrollTop(e.$results.get(0).scrollHeight-e.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(c){var d=a(this),f=b.GetData(this,"data");if("true"===d.attr("aria-selected"))return void(e.options.get("multiple")?e.trigger("unselect",{originalEvent:c,data:f}):e.trigger("close",{}));e.trigger("select",{originalEvent:c,data:f})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(c){var d=b.GetData(this,"data");e.getHighlightedResults().removeClass("select2-results__option--highlighted"),e.trigger("results:focus",{data:d,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var c=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=b.GetData(this.$element[0],"old-tabindex")?this._tabindex=b.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),c.attr("title",this.$element.attr("title")),c.attr("tabindex",this._tabindex),this.$selection=c,c},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),window.setTimeout(function(){d.$selection.focus()},0),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(c){a(document.body).on("mousedown.select2."+c.id,function(c){var d=a(c.target),e=d.closest(".select2");a(".select2.select2-container--open").each(function(){a(this),this!=e[0]&&b.GetData(this,"element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()})},e.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.attr("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,e){var f=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){f.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!f.options.get("disabled")){var d=a(this),e=d.parent(),g=c.GetData(e[0],"data");f.trigger("unselect",{originalEvent:b,data:g})}})},d.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.attr("title",e.title||e.text),c.StoreData(f[0],"data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(a,b,c){function d(){}return d.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},d.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var d=this.$selection.find(".select2-selection__clear");if(0!==d.length){b.stopPropagation();var e=c.GetData(d[0],"data"),f=this.$element.val();this.$element.val(this.placeholder.id);var g={data:e};if(this.trigger("clear",g),g.prevented)return void this.$element.val(f);for(var h=0;h<e.length;h++)if(g={data:e[h]},this.trigger("unselect",g),g.prevented)return void this.$element.val(f);this.$element.trigger("change"),this.trigger("toggle",{})}}},d.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},d.prototype.update=function(b,d){if(b.call(this,d),!(this.$selection.find(".select2-selection__placeholder").length>0||0===d.length)){var e=this.options.get("translations").get("removeAllItems"),f=a('<span class="select2-selection__clear" title="'+e()+'">×</span>');c.StoreData(f[0],"data",d),this.$selection.find(".select2-selection__rendered").prepend(f)}},d}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,d,e){var f=this;a.call(this,d,e),d.on("open",function(){f.$search.trigger("focus")}),d.on("close",function(){f.$search.val(""),f.$search.removeAttr("aria-activedescendant"),f.$search.trigger("focus")}),d.on("enable",function(){f.$search.prop("disabled",!1),f._transferTabIndex()}),d.on("disable",function(){f.$search.prop("disabled",!0)}),d.on("focus",function(a){f.$search.trigger("focus")}),d.on("results:focus",function(a){f.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){f.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){f._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),f.trigger("keypress",a),f._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===f.$search.val()){var d=f.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var e=b.GetData(d[0],"data");f.searchRemoveChoice(e),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void f.$selection.off("input.search input.searchcheck");f.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void f.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&f.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;if(this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c){this.$element.find("[data-select2-tag]").length?this.$element.focus():this.$search.focus()}},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],g=["opening","closing","selecting","unselecting","clearing"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){b.RemoveData(this)})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var d;a.children?(d=document.createElement("optgroup"),d.label=a.text):(d=document.createElement("option"),void 0!==d.textContent?d.textContent=a.text:d.innerText=a.text),void 0!==a.id&&(d.value=a.id),a.disabled&&(d.disabled=!0),a.selected&&(d.selected=!0),a.title&&(d.title=a.title);var e=c(d),f=this._normalizeItem(a);return f.element=d,b.StoreData(d,"data",f),e},d.prototype.item=function(a){var d={};if(null!=(d=b.GetData(a[0],"data")))return d;if(a.is("option"))d={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){d={text:a.prop("label"),children:[],title:a.prop("title")};for(var e=a.children("option"),f=[],g=0;g<e.length;g++){var h=c(e[g]),i=this.item(h);f.push(i)}d.children=f}return d=this._normalizeItem(d),d.element=a[0],b.StoreData(a[0],"data",d),d},d.prototype._normalizeItem=function(a){a!==Object(a)&&(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){"status"in d&&(0===d.status||"0"===d.status)||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.blur()}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){b.StoreData(this,"select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(c){var d=b.GetData(this,"select2-scroll-position");a(this).scrollTop(d.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",["../utils"],function(a){function b(){}return b.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},b.prototype._handleSelectOnClose=function(b,c){if(c&&null!=c.originalSelect2Event){var d=c.originalSelect2Event;if("select"===d._type||"unselect"===d._type)return}var e=this.getHighlightedResults();if(!(e.length<1)){var f=a.GetData(e[0],"data");null!=f.element&&f.element.selected||null==f.element&&f.selected||this.trigger("select",{data:f})}},b}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&(c.ctrlKey||c.metaKey)||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(!0,this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){function c(a,b){return b.toUpperCase()}var e=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),d.GetData(a[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),d.StoreData(a[0],"data",d.GetData(a[0],"select2Tags")),d.StoreData(a[0],"tags",!0)),d.GetData(a[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",d.GetData(a[0],"ajaxUrl")),d.StoreData(a[0],"ajax-Url",d.GetData(a[0],"ajaxUrl")));for(var f={},g=0;g<a[0].attributes.length;g++){var h=a[0].attributes[g].name,i="data-";if(h.substr(0,i.length)==i){var j=h.substring(i.length),k=d.GetData(a[0],j);f[j.replace(/-([a-z])/g,c)]=k}}b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset&&(f=b.extend(!0,{},a[0].dataset,f));var l=b.extend(!0,{},d.GetData(a[0]),f);l=d._convertData(l);for(var m in l)b.inArray(m,e)>-1||(b.isPlainObject(this.options[m])?b.extend(this.options[m],l[m]):this.options[m]=l[m]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,d){null!=c.GetData(a[0],"select2")&&c.GetData(a[0],"select2").destroy(),this.$element=a,this.id=this._generateId(a),d=d||{},this.options=new b(d,a),e.__super__.constructor.call(this);var f=a.attr("tabindex")||0;c.StoreData(a[0],"old-tabindex",f),a.attr("tabindex","-1");var g=this.options.get("dataAdapter");this.dataAdapter=new g(a,this.options);var h=this.render();this._placeContainer(h);var i=this.options.get("selectionAdapter");this.selection=new i(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,h);var j=this.options.get("dropdownAdapter");this.dropdown=new j(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,h);var k=this.options.get("resultsAdapter");this.results=new k(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){l.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),c.StoreData(a[0],"select2",this),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",c.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),c.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),c.StoreData(b[0],"element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery","../utils"],function(a,b){function c(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return c.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},c.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},c.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},c.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},c.prototype.addOptions=function(c,d){var e=a.map(d,function(a){return b.GetData(a[0],"data")});this._currentData.push.apply(this._currentData,e)},c}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f];b(c.term,g.text,g)||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c,this.options.get("query").call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){c.find(".dropdown-wrapper").append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120==0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(a,b,c,d,e){if(null==a.fn.select2){var f=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,g=Array.prototype.slice.call(arguments,1);return this.each(function(){var a=e.GetData(this,"select2");null==a&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=a[b].apply(a,g)}),a.inArray(b,f)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
|
frontend/modules/booking/Ajax.php
CHANGED
@@ -498,8 +498,9 @@ class Ajax extends Lib\Base\Ajax
|
|
498 |
$userData = new Lib\UserBookingData( self::parameter( 'form_id' ) );
|
499 |
|
500 |
if ( $userData->load() ) {
|
501 |
-
$
|
502 |
-
$
|
|
|
503 |
if ( ! $show_cart ) {
|
504 |
$userData->addChainToCart();
|
505 |
}
|
@@ -513,52 +514,72 @@ class Ajax extends Lib\Base\Ajax
|
|
513 |
$cart_info = $userData->cart->getInfo();
|
514 |
|
515 |
if ( $cart_info->getTotal() <= 0 || $cart_info->getDeposit() <= 0 ) {
|
516 |
-
$
|
|
|
|
|
|
|
|
|
517 |
}
|
518 |
|
519 |
-
if ( $
|
520 |
$progress_tracker = self::_prepareProgressTracker( Steps::PAYMENT, $userData );
|
|
|
521 |
|
522 |
// Prepare info texts.
|
523 |
$cart_items_count = count( $userData->cart->getItems() );
|
524 |
-
$
|
525 |
-
$
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
530 |
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
$options,
|
537 |
-
self::parameter( 'form_id' ),
|
538 |
-
Lib\Proxy\Shared::showPaymentSpecificPrices( false ),
|
539 |
-
$cart_info,
|
540 |
-
$userData->extractPaymentStatus()
|
541 |
-
);
|
542 |
-
$order = explode( ',', get_option( 'bookly_pmt_order' ) );
|
543 |
-
$payment_options = array();
|
544 |
-
if ( $order ) {
|
545 |
-
foreach ( $order as $payment_system ) {
|
546 |
-
if ( array_key_exists( $payment_system, $options ) ) {
|
547 |
-
$payment_options[] = $options[ $payment_system ];
|
548 |
}
|
549 |
}
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
|
|
|
|
|
|
|
|
|
|
554 |
}
|
555 |
}
|
556 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
557 |
// Set response.
|
558 |
$response = array(
|
559 |
-
'success'
|
560 |
-
'disabled'
|
561 |
-
'html'
|
562 |
'form_id' => self::parameter( 'form_id' ),
|
563 |
'progress_tracker' => $progress_tracker,
|
564 |
'info_text' => $info_text,
|
@@ -702,7 +723,7 @@ class Ajax extends Lib\Base\Ajax
|
|
702 |
$failed_cart_key = $userData->cart->getFailedKey();
|
703 |
if ( $failed_cart_key === null ) {
|
704 |
$cart_info = $userData->cart->getInfo();
|
705 |
-
$is_payment_disabled
|
706 |
$is_pay_locally_enabled = Lib\Config::payLocallyEnabled();
|
707 |
if ( $is_payment_disabled || $is_pay_locally_enabled || $cart_info->getPayNow() <= 0 ) {
|
708 |
// Handle coupon.
|
@@ -713,23 +734,42 @@ class Ajax extends Lib\Base\Ajax
|
|
713 |
// Handle payment.
|
714 |
$payment = null;
|
715 |
if ( ! $is_payment_disabled ) {
|
716 |
-
if ( $
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
$payment = new Lib\Entities\Payment();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
729 |
$payment
|
730 |
-
->
|
|
|
731 |
->setPaidType( Lib\Entities\Payment::PAY_IN_FULL )
|
732 |
-
->setType( Lib\Entities\Payment::TYPE_LOCAL )
|
733 |
->setTotal( $cart_info->getTotal() )
|
734 |
->setTax( $cart_info->getTotalTax() )
|
735 |
->setPaid( 0 )
|
@@ -878,7 +918,7 @@ class Ajax extends Lib\Base\Ajax
|
|
878 |
// Outlook Calendar.
|
879 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
880 |
// Waiting list.
|
881 |
-
Lib\Proxy\WaitingList::handleParticipantsChange( $appointment );
|
882 |
}
|
883 |
}
|
884 |
Lib\Notifications\Booking\Sender::send( $item );
|
@@ -928,7 +968,7 @@ class Ajax extends Lib\Base\Ajax
|
|
928 |
// Outlook Calendar.
|
929 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
930 |
// Waiting list.
|
931 |
-
Lib\Proxy\WaitingList::handleParticipantsChange( $appointment );
|
932 |
}
|
933 |
}
|
934 |
$url = get_option( 'bookly_url_reject_page_url' );
|
@@ -1011,22 +1051,22 @@ class Ajax extends Lib\Base\Ajax
|
|
1011 |
$result = '';
|
1012 |
|
1013 |
if ( get_option( 'bookly_app_show_progress_tracker' ) ) {
|
1014 |
-
$
|
1015 |
-
if ( ! $
|
1016 |
if ( $step < Steps::CART ) {
|
1017 |
// step Cart.
|
1018 |
// Assume that payment is disabled and check chain items.
|
1019 |
// If one is incomplete or its price is more than zero then the payment step should be displayed.
|
1020 |
-
$
|
1021 |
foreach ( $userData->chain->getItems() as $item ) {
|
1022 |
if ( $item->hasPayableExtras() ) {
|
1023 |
-
$
|
1024 |
break;
|
1025 |
} else {
|
1026 |
if ( $item->getService()->getType() == Lib\Entities\Service::TYPE_SIMPLE ) {
|
1027 |
$staff_ids = $item->getStaffIds();
|
1028 |
$staff = null;
|
1029 |
-
if ( count( $staff_ids )
|
1030 |
$staff = Lib\Entities\Staff::find( $staff_ids[0] );
|
1031 |
}
|
1032 |
if ( $staff ) {
|
@@ -1037,17 +1077,17 @@ class Ajax extends Lib\Base\Ajax
|
|
1037 |
'location_id' => Lib\Proxy\Locations::prepareStaffLocationId( $item->getLocationId(), $staff->getId() ) ?: null,
|
1038 |
) );
|
1039 |
if ( $staff_service->getPrice() > 0 ) {
|
1040 |
-
$
|
1041 |
break;
|
1042 |
}
|
1043 |
} else {
|
1044 |
-
$
|
1045 |
break;
|
1046 |
}
|
1047 |
} else {
|
1048 |
// Service::TYPE_COMPOUND
|
1049 |
if ( $item->getService()->getPrice() > 0 ) {
|
1050 |
-
$
|
1051 |
break;
|
1052 |
}
|
1053 |
}
|
@@ -1056,18 +1096,21 @@ class Ajax extends Lib\Base\Ajax
|
|
1056 |
} else {
|
1057 |
$cart_info = $userData->cart->getInfo();
|
1058 |
if ( $cart_info->getTotal() == 0 || $cart_info->getDeposit() == 0 ) {
|
1059 |
-
$
|
1060 |
}
|
1061 |
}
|
1062 |
}
|
1063 |
|
1064 |
$result = self::renderTemplate( '_progress_tracker', array(
|
1065 |
-
'step'
|
1066 |
-
'
|
1067 |
-
|
1068 |
-
|
|
|
|
|
|
|
1069 |
// step extras before step time
|
1070 |
-
'step_extras_active' => $step > 3 || ( $step >= 2 && self::parameter( 'action' ) == 'bookly_render_extras' )
|
1071 |
), false );
|
1072 |
}
|
1073 |
|
498 |
$userData = new Lib\UserBookingData( self::parameter( 'form_id' ) );
|
499 |
|
500 |
if ( $userData->load() ) {
|
501 |
+
/** @var string $payment_step 'skip' | 'show' | 'show-100%-discount' */
|
502 |
+
$payment_step = Lib\Config::paymentStepDisabled() ? 'skip' : 'show';
|
503 |
+
$show_cart = Lib\Config::showStepCart();
|
504 |
if ( ! $show_cart ) {
|
505 |
$userData->addChainToCart();
|
506 |
}
|
514 |
$cart_info = $userData->cart->getInfo();
|
515 |
|
516 |
if ( $cart_info->getTotal() <= 0 || $cart_info->getDeposit() <= 0 ) {
|
517 |
+
if ( $cart_info->withDiscount() ) {
|
518 |
+
$payment_step = 'show-100%-discount';
|
519 |
+
} else {
|
520 |
+
$payment_step = 'skip';
|
521 |
+
}
|
522 |
}
|
523 |
|
524 |
+
if ( $payment_step !== 'skip' ) {
|
525 |
$progress_tracker = self::_prepareProgressTracker( Steps::PAYMENT, $userData );
|
526 |
+
$payment_options = array();
|
527 |
|
528 |
// Prepare info texts.
|
529 |
$cart_items_count = count( $userData->cart->getItems() );
|
530 |
+
if ( $payment_step === 'show' ) {
|
531 |
+
$options = array();
|
532 |
+
if ( Lib\Config::payLocallyEnabled() ) {
|
533 |
+
$options['local'] = array(
|
534 |
+
'html' => self::renderTemplate( '_payment_local', array( 'form_id' => self::parameter( 'form_id' ) ), false ),
|
535 |
+
'pay' => $cart_info->getPayNow(),
|
536 |
+
);
|
537 |
+
}
|
538 |
+
$options = Proxy\Shared::preparePaymentOptions(
|
539 |
+
$options,
|
540 |
+
self::parameter( 'form_id' ),
|
541 |
+
Lib\Proxy\Shared::showPaymentSpecificPrices( false ),
|
542 |
+
$cart_info,
|
543 |
+
$userData->extractPaymentStatus()
|
544 |
+
);
|
545 |
+
$order = explode( ',', get_option( 'bookly_pmt_order' ) );
|
546 |
|
547 |
+
if ( $order ) {
|
548 |
+
foreach ( $order as $payment_system ) {
|
549 |
+
if ( array_key_exists( $payment_system, $options ) ) {
|
550 |
+
$payment_options[] = $options[ $payment_system ]['html'];
|
551 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
552 |
}
|
553 |
}
|
554 |
+
foreach ( $options as $slug => $data ) {
|
555 |
+
if ( ! $order || ! in_array( $slug, $order ) ) {
|
556 |
+
if ( $data['pay'] == 0 ) {
|
557 |
+
$payment_step = 'show-100%-discount';
|
558 |
+
$payment_options = array();
|
559 |
+
break;
|
560 |
+
}
|
561 |
+
$payment_options[] = $data['html'];
|
562 |
+
}
|
563 |
}
|
564 |
}
|
565 |
|
566 |
+
if ( $payment_step === 'show-100%-discount' ) {
|
567 |
+
$info_text_tpl = Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_info_payment_step_with_100percents_off_price' );
|
568 |
+
} else {
|
569 |
+
$info_text_tpl = Lib\Utils\Common::getTranslatedOption(
|
570 |
+
$cart_items_count > 1
|
571 |
+
? 'bookly_l10n_info_payment_step_several_apps'
|
572 |
+
: 'bookly_l10n_info_payment_step_single_app'
|
573 |
+
);
|
574 |
+
}
|
575 |
+
|
576 |
+
$info_text = InfoText::prepare( Steps::PAYMENT, $info_text_tpl, $userData );
|
577 |
+
|
578 |
// Set response.
|
579 |
$response = array(
|
580 |
+
'success' => true,
|
581 |
+
'disabled' => false,
|
582 |
+
'html' => self::renderTemplate( '7_payment', array(
|
583 |
'form_id' => self::parameter( 'form_id' ),
|
584 |
'progress_tracker' => $progress_tracker,
|
585 |
'info_text' => $info_text,
|
723 |
$failed_cart_key = $userData->cart->getFailedKey();
|
724 |
if ( $failed_cart_key === null ) {
|
725 |
$cart_info = $userData->cart->getInfo();
|
726 |
+
$is_payment_disabled = Lib\Config::paymentStepDisabled();
|
727 |
$is_pay_locally_enabled = Lib\Config::payLocallyEnabled();
|
728 |
if ( $is_payment_disabled || $is_pay_locally_enabled || $cart_info->getPayNow() <= 0 ) {
|
729 |
// Handle coupon.
|
734 |
// Handle payment.
|
735 |
$payment = null;
|
736 |
if ( ! $is_payment_disabled ) {
|
737 |
+
if ( $cart_info->getTotal() <= 0 ) {
|
738 |
+
if ( $cart_info->withDiscount() ) {
|
739 |
+
$payment = new Lib\Entities\Payment();
|
740 |
+
$payment
|
741 |
+
->setType( Lib\Entities\Payment::TYPE_FREE )
|
742 |
+
->setStatus( Lib\Entities\Payment::STATUS_COMPLETED )
|
743 |
+
->setPaidType( Lib\Entities\Payment::PAY_IN_FULL )
|
744 |
+
->setTotal( 0 )
|
745 |
+
->setPaid( 0 )
|
746 |
+
->save();
|
747 |
+
}
|
748 |
+
} else {
|
749 |
$payment = new Lib\Entities\Payment();
|
750 |
+
$options = Proxy\Shared::preparePaymentOptions(
|
751 |
+
array(),
|
752 |
+
self::parameter( 'form_id' ),
|
753 |
+
Lib\Proxy\Shared::showPaymentSpecificPrices( false ),
|
754 |
+
$cart_info,
|
755 |
+
$userData->extractPaymentStatus()
|
756 |
+
);
|
757 |
+
$status = Lib\Entities\Payment::STATUS_PENDING;
|
758 |
+
$type = Lib\Entities\Payment::TYPE_LOCAL;
|
759 |
+
foreach ( $options as $gateway => $data ) {
|
760 |
+
if ( $data['pay'] == 0 ) {
|
761 |
+
$status = Lib\Entities\Payment::STATUS_COMPLETED;
|
762 |
+
$type = Lib\Entities\Payment::TYPE_FREE;
|
763 |
+
$cart_info->setGateway( $gateway );
|
764 |
+
$payment->setGatewayPriceCorrection( $cart_info->getPriceCorrection() );
|
765 |
+
break;
|
766 |
+
}
|
767 |
+
}
|
768 |
+
|
769 |
$payment
|
770 |
+
->setType( $type )
|
771 |
+
->setStatus( $status )
|
772 |
->setPaidType( Lib\Entities\Payment::PAY_IN_FULL )
|
|
|
773 |
->setTotal( $cart_info->getTotal() )
|
774 |
->setTax( $cart_info->getTotalTax() )
|
775 |
->setPaid( 0 )
|
918 |
// Outlook Calendar.
|
919 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
920 |
// Waiting list.
|
921 |
+
Lib\Proxy\WaitingList::handleParticipantsChange( false, $appointment );
|
922 |
}
|
923 |
}
|
924 |
Lib\Notifications\Booking\Sender::send( $item );
|
968 |
// Outlook Calendar.
|
969 |
Lib\Proxy\OutlookCalendar::syncEvent( $appointment );
|
970 |
// Waiting list.
|
971 |
+
Lib\Proxy\WaitingList::handleParticipantsChange( false, $appointment );
|
972 |
}
|
973 |
}
|
974 |
$url = get_option( 'bookly_url_reject_page_url' );
|
1051 |
$result = '';
|
1052 |
|
1053 |
if ( get_option( 'bookly_app_show_progress_tracker' ) ) {
|
1054 |
+
$skip_payment_step = Lib\Config::paymentStepDisabled();
|
1055 |
+
if ( ! $skip_payment_step && $step > Steps::SERVICE ) {
|
1056 |
if ( $step < Steps::CART ) {
|
1057 |
// step Cart.
|
1058 |
// Assume that payment is disabled and check chain items.
|
1059 |
// If one is incomplete or its price is more than zero then the payment step should be displayed.
|
1060 |
+
$skip_payment_step = true;
|
1061 |
foreach ( $userData->chain->getItems() as $item ) {
|
1062 |
if ( $item->hasPayableExtras() ) {
|
1063 |
+
$skip_payment_step = false;
|
1064 |
break;
|
1065 |
} else {
|
1066 |
if ( $item->getService()->getType() == Lib\Entities\Service::TYPE_SIMPLE ) {
|
1067 |
$staff_ids = $item->getStaffIds();
|
1068 |
$staff = null;
|
1069 |
+
if ( count( $staff_ids ) === 1 ) {
|
1070 |
$staff = Lib\Entities\Staff::find( $staff_ids[0] );
|
1071 |
}
|
1072 |
if ( $staff ) {
|
1077 |
'location_id' => Lib\Proxy\Locations::prepareStaffLocationId( $item->getLocationId(), $staff->getId() ) ?: null,
|
1078 |
) );
|
1079 |
if ( $staff_service->getPrice() > 0 ) {
|
1080 |
+
$skip_payment_step = false;
|
1081 |
break;
|
1082 |
}
|
1083 |
} else {
|
1084 |
+
$skip_payment_step = false;
|
1085 |
break;
|
1086 |
}
|
1087 |
} else {
|
1088 |
// Service::TYPE_COMPOUND
|
1089 |
if ( $item->getService()->getPrice() > 0 ) {
|
1090 |
+
$skip_payment_step = false;
|
1091 |
break;
|
1092 |
}
|
1093 |
}
|
1096 |
} else {
|
1097 |
$cart_info = $userData->cart->getInfo();
|
1098 |
if ( $cart_info->getTotal() == 0 || $cart_info->getDeposit() == 0 ) {
|
1099 |
+
$skip_payment_step = !$cart_info->withDiscount();
|
1100 |
}
|
1101 |
}
|
1102 |
}
|
1103 |
|
1104 |
$result = self::renderTemplate( '_progress_tracker', array(
|
1105 |
+
'step' => $step,
|
1106 |
+
'skip_steps' => array(
|
1107 |
+
'service' => Lib\Session::hasFormVar( self::parameter( 'form_id' ), 'skip_service_step' ),
|
1108 |
+
'extras' => ! ( Lib\Config::serviceExtrasActive() && get_option( 'bookly_service_extras_enabled' ) ),
|
1109 |
+
'cart' => ! Lib\Config::showStepCart(),
|
1110 |
+
'payment' => $skip_payment_step,
|
1111 |
+
),
|
1112 |
// step extras before step time
|
1113 |
+
'step_extras_active' => $step > 3 || ( $step >= 2 && self::parameter( 'action' ) == 'bookly_render_extras' ),
|
1114 |
), false );
|
1115 |
}
|
1116 |
|
frontend/modules/booking/templates/7_payment.php
CHANGED
@@ -16,12 +16,24 @@ Proxy\DepositPayments::renderPaymentStep( $userData );
|
|
16 |
<?php echo $payment_option ?>
|
17 |
<?php endforeach ?>
|
18 |
</div>
|
|
|
|
|
19 |
|
20 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
<button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
|
25 |
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
|
26 |
</button>
|
27 |
<div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
|
@@ -30,22 +42,11 @@ Proxy\DepositPayments::renderPaymentStep( $userData );
|
|
30 |
</button>
|
31 |
</div>
|
32 |
</div>
|
33 |
-
<?php endif ?>
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
|
38 |
-
</button>
|
39 |
-
<div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
|
40 |
-
<button class="bookly-next-step bookly-js-next-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
|
41 |
-
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_step_payment_button_next' ) ?></span>
|
42 |
-
</button>
|
43 |
-
</div>
|
44 |
-
</div>
|
45 |
-
|
46 |
-
<?php Proxy\Shared::renderPaymentForms( $form_id, $page_url ) ?>
|
47 |
|
48 |
-
<div class="bookly-gateway-buttons pay-coupon bookly-box bookly-nav-steps" style="display: none"
|
49 |
<button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
|
50 |
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
|
51 |
</button>
|
16 |
<?php echo $payment_option ?>
|
17 |
<?php endforeach ?>
|
18 |
</div>
|
19 |
+
<?php if ( $payment_options ) : ?>
|
20 |
+
<?php Proxy\RecurringAppointments::renderInfoMessage( $userData ) ?>
|
21 |
|
22 |
+
<?php if ( $pay_local ) : ?>
|
23 |
+
<div class="bookly-gateway-buttons pay-local bookly-box bookly-nav-steps">
|
24 |
+
<button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
|
25 |
+
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
|
26 |
+
</button>
|
27 |
+
<div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
|
28 |
+
<button class="bookly-next-step bookly-js-next-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
|
29 |
+
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_step_payment_button_next' ) ?></span>
|
30 |
+
</button>
|
31 |
+
</div>
|
32 |
+
</div>
|
33 |
+
<?php endif ?>
|
34 |
|
35 |
+
<div class="bookly-gateway-buttons pay-card bookly-box bookly-nav-steps" style="display:none">
|
36 |
+
<button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
|
|
|
37 |
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
|
38 |
</button>
|
39 |
<div class="<?php echo get_option( 'bookly_app_align_buttons_left' ) ? 'bookly-left' : 'bookly-right' ?>">
|
42 |
</button>
|
43 |
</div>
|
44 |
</div>
|
|
|
45 |
|
46 |
+
<?php Proxy\Shared::renderPaymentForms( $form_id, $page_url ) ?>
|
47 |
+
<?php endif ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
+
<div class="bookly-gateway-buttons pay-coupon bookly-box bookly-nav-steps" <?php if ( $payment_options ) : ?>style="display: none"<?php endif ?>>
|
50 |
<button class="bookly-back-step bookly-js-back-step bookly-btn ladda-button" data-style="zoom-in" data-spinner-size="40">
|
51 |
<span class="ladda-label"><?php echo Common::getTranslatedOption( 'bookly_l10n_button_back' ) ?></span>
|
52 |
</button>
|
frontend/modules/booking/templates/_progress_tracker.php
CHANGED
@@ -1,26 +1,25 @@
|
|
1 |
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
2 |
use Bookly\Lib;
|
3 |
$i = 1;
|
4 |
-
$extras_enabled = Lib\Config::serviceExtrasActive() && get_option( 'bookly_service_extras_enabled' );
|
5 |
?>
|
6 |
<div class="bookly-progress-tracker bookly-table">
|
7 |
-
<?php if ( $
|
8 |
<div <?php if ( $step >= 1 ) : ?>class="active"<?php endif ?>>
|
9 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_service' ) ?>
|
10 |
<div class=step></div>
|
11 |
</div>
|
12 |
<?php endif ?>
|
13 |
-
<?php if ( $
|
14 |
<div <?php if ( $step >= 2 ) : ?>class="active"<?php endif ?>>
|
15 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
|
16 |
<div class=step></div>
|
17 |
</div>
|
18 |
<?php endif ?>
|
19 |
-
<div <?php if ( $step >= 3 - (int) ( $
|
20 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_time' ) ?>
|
21 |
<div class=step></div>
|
22 |
</div>
|
23 |
-
<?php if ( $
|
24 |
<div <?php if ( $step_extras_active ) : ?>class="active"<?php endif ?>>
|
25 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
|
26 |
<div class=step></div>
|
@@ -32,7 +31,7 @@ $extras_enabled = Lib\Config::serviceExtrasActive() && get_option( 'bookly_servi
|
|
32 |
<div class=step></div>
|
33 |
</div>
|
34 |
<?php endif ?>
|
35 |
-
<?php if ( $
|
36 |
<div <?php if ( $step >= 5 ) : ?>class="active"<?php endif ?>>
|
37 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_cart' ) ?>
|
38 |
<div class=step></div>
|
@@ -42,7 +41,7 @@ $extras_enabled = Lib\Config::serviceExtrasActive() && get_option( 'bookly_servi
|
|
42 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_details' ) ?>
|
43 |
<div class=step></div>
|
44 |
</div>
|
45 |
-
<?php if ( $
|
46 |
<div <?php if ( $step >= 7 ) : ?>class="active"<?php endif ?>>
|
47 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_payment' ) ?>
|
48 |
<div class=step></div>
|
1 |
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
2 |
use Bookly\Lib;
|
3 |
$i = 1;
|
|
|
4 |
?>
|
5 |
<div class="bookly-progress-tracker bookly-table">
|
6 |
+
<?php if ( ! $skip_steps['service'] ) : ?>
|
7 |
<div <?php if ( $step >= 1 ) : ?>class="active"<?php endif ?>>
|
8 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_service' ) ?>
|
9 |
<div class=step></div>
|
10 |
</div>
|
11 |
<?php endif ?>
|
12 |
+
<?php if ( ! $skip_steps['extras'] && get_option( 'bookly_service_extras_after_step_time' ) == '0' ) : ?>
|
13 |
<div <?php if ( $step >= 2 ) : ?>class="active"<?php endif ?>>
|
14 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
|
15 |
<div class=step></div>
|
16 |
</div>
|
17 |
<?php endif ?>
|
18 |
+
<div <?php if ( $step >= 3 - (int) ( ! $skip_steps['extras'] && get_option( 'bookly_service_extras_after_step_time' ) == '1' ) ) : ?>class="active"<?php endif ?>>
|
19 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_time' ) ?>
|
20 |
<div class=step></div>
|
21 |
</div>
|
22 |
+
<?php if ( ! $skip_steps['extras'] && get_option( 'bookly_service_extras_after_step_time' ) == '1' ) : ?>
|
23 |
<div <?php if ( $step_extras_active ) : ?>class="active"<?php endif ?>>
|
24 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_extras' ) ?>
|
25 |
<div class=step></div>
|
31 |
<div class=step></div>
|
32 |
</div>
|
33 |
<?php endif ?>
|
34 |
+
<?php if ( ! $skip_steps['cart'] ) : ?>
|
35 |
<div <?php if ( $step >= 5 ) : ?>class="active"<?php endif ?>>
|
36 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_cart' ) ?>
|
37 |
<div class=step></div>
|
41 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_details' ) ?>
|
42 |
<div class=step></div>
|
43 |
</div>
|
44 |
+
<?php if ( ! $skip_steps['payment'] ) : ?>
|
45 |
<div <?php if ( $step >= 7 ) : ?>class="active"<?php endif ?>>
|
46 |
<?php echo $i ++ . '. ' . Lib\Utils\Common::getTranslatedOption( 'bookly_l10n_step_payment' ) ?>
|
47 |
<div class=step></div>
|
frontend/modules/booking/templates/short_code.php
CHANGED
@@ -10,6 +10,12 @@ Version: <?php echo Lib\Plugin::getVersion() ?>
|
|
10 |
<div id="bookly-form-<?php echo $form_id ?>" class="bookly-form" data-form_id="<?php echo $form_id ?>">
|
11 |
<div style="text-align: center"><img src="<?php echo includes_url( 'js/tinymce/skins/lightgray/img/loader.gif' ) ?>" alt="<?php esc_attr_e( 'Loading...', 'bookly' ) ?>" /></div>
|
12 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
<script type="text/javascript">
|
14 |
(function (win, fn) {
|
15 |
var done = false, top = true,
|
10 |
<div id="bookly-form-<?php echo $form_id ?>" class="bookly-form" data-form_id="<?php echo $form_id ?>">
|
11 |
<div style="text-align: center"><img src="<?php echo includes_url( 'js/tinymce/skins/lightgray/img/loader.gif' ) ?>" alt="<?php esc_attr_e( 'Loading...', 'bookly' ) ?>" /></div>
|
12 |
</div>
|
13 |
+
<?php if ( get_option( 'bookly_app_show_powered_by' ) ) : ?>
|
14 |
+
<div class="powered-by-bookly"><?php esc_html_e( 'Powered by', 'bookly' ) ?>
|
15 |
+
<a href="https://www.booking-wp-plugin.com/?utm_source=referral&utm_medium=booking_widget" target="_blank">Bookly</a> —
|
16 |
+
<a href="https://www.booking-wp-plugin.com/?utm_source=referral&utm_medium=booking_widget" target="_blank">WordPress Booking Plugin</a>
|
17 |
+
</div>
|
18 |
+
<?php endif ?>
|
19 |
<script type="text/javascript">
|
20 |
(function (win, fn) {
|
21 |
var done = false, top = true,
|
frontend/resources/css/bookly-main.css
CHANGED
@@ -1292,6 +1292,17 @@ label.bookly-square {
|
|
1292 |
width: 8.33333333%;
|
1293 |
}
|
1294 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1295 |
|
1296 |
/* Other */
|
1297 |
::-webkit-input-placeholder {color:#bbb!important;}
|
1292 |
width: 8.33333333%;
|
1293 |
}
|
1294 |
|
1295 |
+
.powered-by-bookly {
|
1296 |
+
font-size: 14px !important;
|
1297 |
+
color: #666666;
|
1298 |
+
text-align: center;
|
1299 |
+
}
|
1300 |
+
.powered-by-bookly a {
|
1301 |
+
color: inherit;
|
1302 |
+
}
|
1303 |
+
.powered-by-bookly a:first-child {
|
1304 |
+
text-decoration: none !important;
|
1305 |
+
}
|
1306 |
|
1307 |
/* Other */
|
1308 |
::-webkit-input-placeholder {color:#bbb!important;}
|
languages/bookly-ar.mo
ADDED
Binary file
|
languages/bookly-ar.po
ADDED
@@ -0,0 +1,7384 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"MIME-Version: 1.0\n"
|
4 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
5 |
+
"Content-Transfer-Encoding: 8bit\n"
|
6 |
+
"X-Generator: POEditor.com\n"
|
7 |
+
"Project-Id-Version: Bookly\n"
|
8 |
+
"Language: ar\n"
|
9 |
+
"Plural-Forms: nplurals=6; plural= n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
10 |
+
|
11 |
+
#:
|
12 |
+
msgid "Calendar"
|
13 |
+
msgstr "التقويم"
|
14 |
+
|
15 |
+
#:
|
16 |
+
msgid "Appointments"
|
17 |
+
msgstr "المواعيد"
|
18 |
+
|
19 |
+
#:
|
20 |
+
msgid "Staff Members"
|
21 |
+
msgstr "الأعضاء العاملون"
|
22 |
+
|
23 |
+
#:
|
24 |
+
msgid "Services"
|
25 |
+
msgstr "الخدمات"
|
26 |
+
|
27 |
+
#:
|
28 |
+
msgid "SMS Notifications"
|
29 |
+
msgstr "الإشعارات عبر الرسائل القصيرة"
|
30 |
+
|
31 |
+
#:
|
32 |
+
msgid "Email Notifications"
|
33 |
+
msgstr "الإشعارات عبر البريد الإلكتروني"
|
34 |
+
|
35 |
+
#:
|
36 |
+
msgid "Customers"
|
37 |
+
msgstr "العملاء"
|
38 |
+
|
39 |
+
#:
|
40 |
+
msgid "Payments"
|
41 |
+
msgstr "المدفوعات"
|
42 |
+
|
43 |
+
#:
|
44 |
+
msgid "Appearance"
|
45 |
+
msgstr "المظهر"
|
46 |
+
|
47 |
+
#:
|
48 |
+
msgid "Settings"
|
49 |
+
msgstr "الإعدادات"
|
50 |
+
|
51 |
+
#:
|
52 |
+
msgid "Custom Fields"
|
53 |
+
msgstr "حقول مخصصة"
|
54 |
+
|
55 |
+
#:
|
56 |
+
msgid "Profile"
|
57 |
+
msgstr "الملف الشخصي"
|
58 |
+
|
59 |
+
#:
|
60 |
+
msgid "Messages"
|
61 |
+
msgstr "الرسائل"
|
62 |
+
|
63 |
+
#:
|
64 |
+
msgid "Today"
|
65 |
+
msgstr "اليوم"
|
66 |
+
|
67 |
+
#:
|
68 |
+
msgid "Next month"
|
69 |
+
msgstr "الشهر القادم"
|
70 |
+
|
71 |
+
#:
|
72 |
+
msgid "Previous month"
|
73 |
+
msgstr "الشهر الماضي"
|
74 |
+
|
75 |
+
#:
|
76 |
+
msgid "Settings saved."
|
77 |
+
msgstr "تم حفظ الإعدادات"
|
78 |
+
|
79 |
+
#:
|
80 |
+
msgid "Your custom CSS was saved. Please refresh the page to see your changes."
|
81 |
+
msgstr "تم حفظ الغييرات على ملف CSS، نرجو تحديث اصفحة لترى التغييرات"
|
82 |
+
|
83 |
+
#:
|
84 |
+
msgid "Visible when the chosen time slot has been already booked"
|
85 |
+
msgstr "ستظهر عندما تكون خانة الوقت المختار محجوزة فعلاً"
|
86 |
+
|
87 |
+
#:
|
88 |
+
msgid "Date"
|
89 |
+
msgstr "تاريخ"
|
90 |
+
|
91 |
+
#:
|
92 |
+
msgid "Time"
|
93 |
+
msgstr "الوقت"
|
94 |
+
|
95 |
+
#:
|
96 |
+
msgid "Price"
|
97 |
+
msgstr "السعر"
|
98 |
+
|
99 |
+
#:
|
100 |
+
msgid "Edit"
|
101 |
+
msgstr "تعديل"
|
102 |
+
|
103 |
+
#:
|
104 |
+
msgid "Total"
|
105 |
+
msgstr "الإجمالي"
|
106 |
+
|
107 |
+
#:
|
108 |
+
msgid "Visible to non-logged in customers only"
|
109 |
+
msgstr "ستظهر فقط للعملاء غير المسجلين"
|
110 |
+
|
111 |
+
#:
|
112 |
+
msgid "total quantity of appointments in cart"
|
113 |
+
msgstr "إجمالي عدد المواعيد في السلة"
|
114 |
+
|
115 |
+
#:
|
116 |
+
msgid "booking number"
|
117 |
+
msgstr "رقم الحجز"
|
118 |
+
|
119 |
+
#:
|
120 |
+
msgid "name of category"
|
121 |
+
msgstr "اسم التصنيف"
|
122 |
+
|
123 |
+
#:
|
124 |
+
msgid "login form"
|
125 |
+
msgstr "استمارة تسجيل الدخول"
|
126 |
+
|
127 |
+
#:
|
128 |
+
msgid "number of persons"
|
129 |
+
msgstr "عدد الأشخاص"
|
130 |
+
|
131 |
+
#:
|
132 |
+
msgid "date of service"
|
133 |
+
msgstr "تاريخ الخدمة"
|
134 |
+
|
135 |
+
#:
|
136 |
+
msgid "info of service"
|
137 |
+
msgstr "معلومات الخدمة"
|
138 |
+
|
139 |
+
#:
|
140 |
+
msgid "name of service"
|
141 |
+
msgstr "اسم الخدمة"
|
142 |
+
|
143 |
+
#:
|
144 |
+
msgid "price of service"
|
145 |
+
msgstr "سعر الخدمة"
|
146 |
+
|
147 |
+
#:
|
148 |
+
msgid "time of service"
|
149 |
+
msgstr "وقت الخدمة"
|
150 |
+
|
151 |
+
#:
|
152 |
+
msgid "info of staff"
|
153 |
+
msgstr "معلومات العاملين"
|
154 |
+
|
155 |
+
#:
|
156 |
+
msgid "name of staff"
|
157 |
+
msgstr "اسماء العاملين"
|
158 |
+
|
159 |
+
#:
|
160 |
+
msgid "total price of booking"
|
161 |
+
msgstr "السعر الإجمالي للحجوزات"
|
162 |
+
|
163 |
+
#:
|
164 |
+
msgid "Edit custom CSS"
|
165 |
+
msgstr "تحرير مخصص لمللف CSS"
|
166 |
+
|
167 |
+
#:
|
168 |
+
msgid "Set up your custom CSS styles"
|
169 |
+
msgstr "حرر ملفك الخاص من CSS"
|
170 |
+
|
171 |
+
#:
|
172 |
+
msgid "Save"
|
173 |
+
msgstr "حفظ"
|
174 |
+
|
175 |
+
#:
|
176 |
+
msgid "Cancel"
|
177 |
+
msgstr "إلغاء"
|
178 |
+
|
179 |
+
#:
|
180 |
+
msgid "Show form progress tracker"
|
181 |
+
msgstr "اظهر متابعة تقدم النموذج"
|
182 |
+
|
183 |
+
#:
|
184 |
+
msgid "Click on the underlined text to edit."
|
185 |
+
msgstr "اضغط على النص الذي أسفله خط لتحريره"
|
186 |
+
|
187 |
+
#:
|
188 |
+
msgid "Make selecting employee required"
|
189 |
+
msgstr "اجعل اختيار الموظف مطلوباً"
|
190 |
+
|
191 |
+
#:
|
192 |
+
msgid "Show service price next to employee name"
|
193 |
+
msgstr "أظهر سعر الخدمة بجانب اسم الموظف"
|
194 |
+
|
195 |
+
#:
|
196 |
+
msgid "Show service duration next to service name"
|
197 |
+
msgstr "أظهر مدة الخدمة بجانب اسمها"
|
198 |
+
|
199 |
+
#:
|
200 |
+
msgid "Show calendar"
|
201 |
+
msgstr "اظهر التقويم"
|
202 |
+
|
203 |
+
#:
|
204 |
+
msgid "Show blocked timeslots"
|
205 |
+
msgstr "اظهر التواريخ المغلقة"
|
206 |
+
|
207 |
+
#:
|
208 |
+
msgid "Show each day in one column"
|
209 |
+
msgstr "اظهر كل يوم في عمود مستقل"
|
210 |
+
|
211 |
+
#:
|
212 |
+
msgid "Show Login button"
|
213 |
+
msgstr "اظهر زر الدخول"
|
214 |
+
|
215 |
+
#:
|
216 |
+
msgid "Do not forget to update your email and SMS codes for customer names"
|
217 |
+
msgstr "لا تنس تحديث بريدك الإلكتروني والرمز المرسل عبر الرسائل القصيرة لأسماء العملاء"
|
218 |
+
|
219 |
+
#:
|
220 |
+
msgid "Use first and last name instead of full name"
|
221 |
+
msgstr "استخدم الاسم الأول والأخير بدلاً من الاسم الكامل"
|
222 |
+
|
223 |
+
#:
|
224 |
+
msgid "The booking form on this step may have different set or states of its elements. It depends on various conditions such as installed/activated add-ons, settings configuration or choices made on previous steps. Select option and click on the underlined text to edit."
|
225 |
+
msgstr "قد يكون نموذج الحجز في هذه الخطوة مجموعة مختلفة أو حالات من عناصرها. يعتمد ذلك على العديد من الشروط مثل الوظائف الإضافية المثبتة / النشطة ، الإعدادات أو الخيارات التي تم إجراؤها على الخطوات السابقة. حدد الخيار وانقر على النص الذي تحته خط لتحريره.\n"
|
226 |
+
""
|
227 |
+
|
228 |
+
#:
|
229 |
+
msgid "Tomorrow"
|
230 |
+
msgstr "غداً"
|
231 |
+
|
232 |
+
#:
|
233 |
+
msgid "Yesterday"
|
234 |
+
msgstr "أمس"
|
235 |
+
|
236 |
+
#:
|
237 |
+
msgid "Apply"
|
238 |
+
msgstr "تطبيق"
|
239 |
+
|
240 |
+
#:
|
241 |
+
msgid "To"
|
242 |
+
msgstr "الى"
|
243 |
+
|
244 |
+
#:
|
245 |
+
msgid "From"
|
246 |
+
msgstr "من"
|
247 |
+
|
248 |
+
#:
|
249 |
+
msgid "Are you sure?"
|
250 |
+
msgstr "هل أنت متأكد؟\n"
|
251 |
+
""
|
252 |
+
|
253 |
+
#:
|
254 |
+
msgid "No appointments for selected period."
|
255 |
+
msgstr "لا توجد مواعيد للفترة المختارة.\n"
|
256 |
+
""
|
257 |
+
|
258 |
+
#:
|
259 |
+
msgid "Processing..."
|
260 |
+
msgstr "جاري المعالجة..."
|
261 |
+
|
262 |
+
#:
|
263 |
+
msgid "%s of %s"
|
264 |
+
msgstr "%s من %s"
|
265 |
+
|
266 |
+
#:
|
267 |
+
msgid "No."
|
268 |
+
msgstr "لا."
|
269 |
+
|
270 |
+
#:
|
271 |
+
msgid "Customer Name"
|
272 |
+
msgstr "اسم العميل"
|
273 |
+
|
274 |
+
#:
|
275 |
+
msgid "Customer Phone"
|
276 |
+
msgstr "هاتف العميل"
|
277 |
+
|
278 |
+
#:
|
279 |
+
msgid "Customer Email"
|
280 |
+
msgstr "البريد الإلكتروني للعميل"
|
281 |
+
|
282 |
+
#:
|
283 |
+
msgid "Duration"
|
284 |
+
msgstr "المدة"
|
285 |
+
|
286 |
+
#:
|
287 |
+
msgid "Status"
|
288 |
+
msgstr "الحالة"
|
289 |
+
|
290 |
+
#:
|
291 |
+
msgid "Payment"
|
292 |
+
msgstr "طرق الدفع"
|
293 |
+
|
294 |
+
#:
|
295 |
+
msgid "Appointment Date"
|
296 |
+
msgstr "تاريخ الموعد"
|
297 |
+
|
298 |
+
#:
|
299 |
+
msgid "New appointment"
|
300 |
+
msgstr "موعد جديد\n"
|
301 |
+
""
|
302 |
+
|
303 |
+
#:
|
304 |
+
msgid "Customer"
|
305 |
+
msgstr "العميل"
|
306 |
+
|
307 |
+
#:
|
308 |
+
msgid "Edit appointment"
|
309 |
+
msgstr "تعديل الموعد"
|
310 |
+
|
311 |
+
#:
|
312 |
+
msgid "Week"
|
313 |
+
msgstr "الأسبوع"
|
314 |
+
|
315 |
+
#:
|
316 |
+
msgid "Day"
|
317 |
+
msgstr "اليوم"
|
318 |
+
|
319 |
+
#:
|
320 |
+
msgid "Month"
|
321 |
+
msgstr "الشهر"
|
322 |
+
|
323 |
+
#:
|
324 |
+
msgid "All Day"
|
325 |
+
msgstr "طوال اليوم"
|
326 |
+
|
327 |
+
#:
|
328 |
+
msgid "Delete"
|
329 |
+
msgstr "حذف"
|
330 |
+
|
331 |
+
#:
|
332 |
+
msgid "No staff selected"
|
333 |
+
msgstr "لم يتم اختيار أي موظف\n"
|
334 |
+
""
|
335 |
+
|
336 |
+
#:
|
337 |
+
msgid "Recurring appointments"
|
338 |
+
msgstr "مواعيد متكررة\n"
|
339 |
+
""
|
340 |
+
|
341 |
+
#:
|
342 |
+
msgid "On waiting list"
|
343 |
+
msgstr "في قائمة الانتظار\n"
|
344 |
+
""
|
345 |
+
|
346 |
+
#:
|
347 |
+
msgid "Start time must not be empty"
|
348 |
+
msgstr "وقت بدأ الموعد يجب ألا يكون فارغًا\n"
|
349 |
+
""
|
350 |
+
|
351 |
+
#:
|
352 |
+
msgid "End time must not be empty"
|
353 |
+
msgstr "وقت انتهاء الموعد يجب ألا يكون فارغًا\n"
|
354 |
+
""
|
355 |
+
|
356 |
+
#:
|
357 |
+
msgid "End time must not be equal to start time"
|
358 |
+
msgstr "وقت انتهاء الموعد يجب ألا يكون مساويًا لوقت بدأ الموعد\n"
|
359 |
+
""
|
360 |
+
|
361 |
+
#:
|
362 |
+
msgid "The number of customers should not be more than %d"
|
363 |
+
msgstr "يجب ألا يكون عدد العملاء أكثر من %d"
|
364 |
+
|
365 |
+
#:
|
366 |
+
msgid "Could not save appointment in database."
|
367 |
+
msgstr "لا يمكن حفظ الموعد في قاعدة البيانات\n"
|
368 |
+
""
|
369 |
+
|
370 |
+
#:
|
371 |
+
msgid "Untitled"
|
372 |
+
msgstr "بدون عنوان"
|
373 |
+
|
374 |
+
#:
|
375 |
+
msgid "Provider"
|
376 |
+
msgstr "مقدم الخدمة"
|
377 |
+
|
378 |
+
#:
|
379 |
+
msgid "Service"
|
380 |
+
msgstr "الخدمة"
|
381 |
+
|
382 |
+
#:
|
383 |
+
msgid "-- Select a service --"
|
384 |
+
msgstr "- اختر خدمة -\n"
|
385 |
+
""
|
386 |
+
|
387 |
+
#:
|
388 |
+
msgid "Please select a service"
|
389 |
+
msgstr "يرجى اختيار خدمة\n"
|
390 |
+
""
|
391 |
+
|
392 |
+
#:
|
393 |
+
msgid "Location"
|
394 |
+
msgstr "الموقع"
|
395 |
+
|
396 |
+
#:
|
397 |
+
msgid "Period"
|
398 |
+
msgstr "الفترة"
|
399 |
+
|
400 |
+
#:
|
401 |
+
msgid "to"
|
402 |
+
msgstr "الى"
|
403 |
+
|
404 |
+
#:
|
405 |
+
msgid "Selected period doesn't match service duration"
|
406 |
+
msgstr "الفترة المحددة لا تتطابق مع مدة الخدمة\n"
|
407 |
+
""
|
408 |
+
|
409 |
+
#:
|
410 |
+
msgid "The selected period is occupied by another appointment"
|
411 |
+
msgstr "الفترة المختارة محجوزة من قبل موعد آخر\n"
|
412 |
+
""
|
413 |
+
|
414 |
+
#:
|
415 |
+
msgid "Selected / maximum"
|
416 |
+
msgstr "المختارة / الحد الأعلى"
|
417 |
+
|
418 |
+
#:
|
419 |
+
msgid "Minimum capacity"
|
420 |
+
msgstr "سعة الحد الأدنى"
|
421 |
+
|
422 |
+
#:
|
423 |
+
msgid "Edit booking details"
|
424 |
+
msgstr "تعديل تفاصيل الحجز\n"
|
425 |
+
""
|
426 |
+
|
427 |
+
#:
|
428 |
+
msgid "Remove customer"
|
429 |
+
msgstr "حذف العميل"
|
430 |
+
|
431 |
+
#:
|
432 |
+
msgid "-- Search customers --"
|
433 |
+
msgstr "- البحث عن العملاء -\n"
|
434 |
+
""
|
435 |
+
|
436 |
+
#:
|
437 |
+
msgid "New customer"
|
438 |
+
msgstr "عميل جديد\n"
|
439 |
+
""
|
440 |
+
|
441 |
+
#:
|
442 |
+
msgid "Send notifications"
|
443 |
+
msgstr "إرسال التنبيهات"
|
444 |
+
|
445 |
+
#:
|
446 |
+
msgid "Internal note"
|
447 |
+
msgstr "ملاحظات خاصة"
|
448 |
+
|
449 |
+
#:
|
450 |
+
msgid "Number of persons"
|
451 |
+
msgstr "عدد الأشخاص"
|
452 |
+
|
453 |
+
#:
|
454 |
+
msgid "Cancellation reason (optional)"
|
455 |
+
msgstr "سبب الإلغاء (إختياري)\n"
|
456 |
+
""
|
457 |
+
|
458 |
+
#:
|
459 |
+
msgid "All"
|
460 |
+
msgstr "الكل"
|
461 |
+
|
462 |
+
#:
|
463 |
+
msgid "All staff"
|
464 |
+
msgstr "جميع الأعضاء العاملون\n"
|
465 |
+
""
|
466 |
+
|
467 |
+
#:
|
468 |
+
msgid "Add staff members."
|
469 |
+
msgstr "اضافة اعضاء عاملون"
|
470 |
+
|
471 |
+
#:
|
472 |
+
msgid "Add Staff Members"
|
473 |
+
msgstr "اضافة اعضاء عاملون"
|
474 |
+
|
475 |
+
#:
|
476 |
+
msgid "Add Services"
|
477 |
+
msgstr "اضافة خدمات\n"
|
478 |
+
""
|
479 |
+
|
480 |
+
#:
|
481 |
+
msgid "All services"
|
482 |
+
msgstr "جميع الخدمات\n"
|
483 |
+
""
|
484 |
+
|
485 |
+
#:
|
486 |
+
msgid "Code"
|
487 |
+
msgstr "الشفرة"
|
488 |
+
|
489 |
+
#:
|
490 |
+
msgid "Reorder"
|
491 |
+
msgstr "إعادة ترتيب"
|
492 |
+
|
493 |
+
#:
|
494 |
+
msgid "No customers found."
|
495 |
+
msgstr "لم يتم العثور على عملاء.\n"
|
496 |
+
""
|
497 |
+
|
498 |
+
#:
|
499 |
+
msgid "Edit customer"
|
500 |
+
msgstr "تعديل العميل"
|
501 |
+
|
502 |
+
#:
|
503 |
+
msgid "Create customer"
|
504 |
+
msgstr "عميل جديد"
|
505 |
+
|
506 |
+
#:
|
507 |
+
msgid "Quick search customer"
|
508 |
+
msgstr "البحث عن عملاء\n"
|
509 |
+
""
|
510 |
+
|
511 |
+
#:
|
512 |
+
msgid "User"
|
513 |
+
msgstr "المستخدم"
|
514 |
+
|
515 |
+
#:
|
516 |
+
msgid "Notes"
|
517 |
+
msgstr "ملاحظات"
|
518 |
+
|
519 |
+
#:
|
520 |
+
msgid "Last appointment"
|
521 |
+
msgstr "آخر موعد"
|
522 |
+
|
523 |
+
#:
|
524 |
+
msgid "Total appointments"
|
525 |
+
msgstr "مجموع المواعيد"
|
526 |
+
|
527 |
+
#:
|
528 |
+
msgid "New Customer"
|
529 |
+
msgstr "عميل جديد"
|
530 |
+
|
531 |
+
#:
|
532 |
+
msgid "First name"
|
533 |
+
msgstr "الاسم الأول"
|
534 |
+
|
535 |
+
#:
|
536 |
+
msgid "Required"
|
537 |
+
msgstr "مطلوب"
|
538 |
+
|
539 |
+
#:
|
540 |
+
msgid "Last name"
|
541 |
+
msgstr "اسم العائل"
|
542 |
+
|
543 |
+
#:
|
544 |
+
msgid "Name"
|
545 |
+
msgstr "الاسم"
|
546 |
+
|
547 |
+
#:
|
548 |
+
msgid "Phone"
|
549 |
+
msgstr "الهاتف"
|
550 |
+
|
551 |
+
#:
|
552 |
+
msgid "Email"
|
553 |
+
msgstr "البريد الإلكتروني"
|
554 |
+
|
555 |
+
#:
|
556 |
+
msgid "Delete customers"
|
557 |
+
msgstr "حذف العملاء"
|
558 |
+
|
559 |
+
#:
|
560 |
+
msgid "Remember my choice"
|
561 |
+
msgstr "تذكر اختياري"
|
562 |
+
|
563 |
+
#:
|
564 |
+
msgid "Yes"
|
565 |
+
msgstr "نعم"
|
566 |
+
|
567 |
+
#:
|
568 |
+
msgid "%d day"
|
569 |
+
msgid_plural "%d days"
|
570 |
+
msgstr[0] "%d يوم"
|
571 |
+
msgstr[1] "%d يوم"
|
572 |
+
msgstr[2] "%d أيام"
|
573 |
+
msgstr[3] "%d أيام"
|
574 |
+
msgstr[4] "%d أيام"
|
575 |
+
msgstr[5] "%d أيام"
|
576 |
+
|
577 |
+
#:
|
578 |
+
msgid "Sent successfully."
|
579 |
+
msgstr "أرسل بنجاح."
|
580 |
+
|
581 |
+
#:
|
582 |
+
msgid "Subject"
|
583 |
+
msgstr "الموضوع"
|
584 |
+
|
585 |
+
#:
|
586 |
+
msgid "Message"
|
587 |
+
msgstr "الرسالة"
|
588 |
+
|
589 |
+
#:
|
590 |
+
msgid "date of appointment"
|
591 |
+
msgstr "تاريخ الموعد"
|
592 |
+
|
593 |
+
#:
|
594 |
+
msgid "time of appointment"
|
595 |
+
msgstr "وقت الموعد"
|
596 |
+
|
597 |
+
#:
|
598 |
+
msgid "end date of appointment"
|
599 |
+
msgstr "نهاية تاريخ الموعد"
|
600 |
+
|
601 |
+
#:
|
602 |
+
msgid "end time of appointment"
|
603 |
+
msgstr "نهاية وقت الموعد"
|
604 |
+
|
605 |
+
#:
|
606 |
+
msgid "URL of approve appointment link (to use inside <a> tag)"
|
607 |
+
msgstr "رابط لقبول الموعد (لاستخدامه داخل الوسم <a>)"
|
608 |
+
|
609 |
+
#:
|
610 |
+
msgid "cancel appointment link"
|
611 |
+
msgstr "رابط إلغاء الموعد\n"
|
612 |
+
""
|
613 |
+
|
614 |
+
#:
|
615 |
+
msgid "URL of cancel appointment link (to use inside <a> tag)"
|
616 |
+
msgstr "الرابط لإلغاء الموعد (لاستخدامه في داخل الوسم <a>)"
|
617 |
+
|
618 |
+
#:
|
619 |
+
msgid "reason you mentioned while deleting appointment"
|
620 |
+
msgstr "السبب الذي ذكرته أثناء حذف الموعد"
|
621 |
+
|
622 |
+
#:
|
623 |
+
msgid "email of client"
|
624 |
+
msgstr "البريد الإلكتروني للعميل"
|
625 |
+
|
626 |
+
#:
|
627 |
+
msgid "full name of client"
|
628 |
+
msgstr "الاسم الكامل للعميل"
|
629 |
+
|
630 |
+
#:
|
631 |
+
msgid "first name of client"
|
632 |
+
msgstr "الاسم الأول للعميل"
|
633 |
+
|
634 |
+
#:
|
635 |
+
msgid "last name of client"
|
636 |
+
msgstr "الاسم الأخير للعميل"
|
637 |
+
|
638 |
+
#:
|
639 |
+
msgid "phone of client"
|
640 |
+
msgstr "هاتف العميل"
|
641 |
+
|
642 |
+
#:
|
643 |
+
msgid "name of company"
|
644 |
+
msgstr "اسم الشركة"
|
645 |
+
|
646 |
+
#:
|
647 |
+
msgid "company logo"
|
648 |
+
msgstr "شعار الشركة"
|
649 |
+
|
650 |
+
#:
|
651 |
+
msgid "address of company"
|
652 |
+
msgstr "عنوان الشركة"
|
653 |
+
|
654 |
+
#:
|
655 |
+
msgid "company phone"
|
656 |
+
msgstr "هاتف الشركة"
|
657 |
+
|
658 |
+
#:
|
659 |
+
msgid "company web-site address"
|
660 |
+
msgstr "عنوان موقع الشركة على الويب"
|
661 |
+
|
662 |
+
#:
|
663 |
+
msgid "URL for adding event to client's Google Calendar (to use inside <a> tag)"
|
664 |
+
msgstr "الرابط لإضافة حدث إلى تقويم Google الخاص بالعميل (لاستخدامه في داخل الوسم <a>)\n"
|
665 |
+
""
|
666 |
+
|
667 |
+
#:
|
668 |
+
msgid "payment type"
|
669 |
+
msgstr "طريقة الدفع"
|
670 |
+
|
671 |
+
#:
|
672 |
+
msgid "duration of service"
|
673 |
+
msgstr "مدة الخدمة"
|
674 |
+
|
675 |
+
#:
|
676 |
+
msgid "email of staff"
|
677 |
+
msgstr "البريد الإلكتروني للموظف\n"
|
678 |
+
""
|
679 |
+
|
680 |
+
#:
|
681 |
+
msgid "phone of staff"
|
682 |
+
msgstr "هاتف الموظف"
|
683 |
+
|
684 |
+
#:
|
685 |
+
msgid "photo of staff"
|
686 |
+
msgstr "صورة للموظف"
|
687 |
+
|
688 |
+
#:
|
689 |
+
msgid "total price of booking (sum of all cart items after applying coupon)"
|
690 |
+
msgstr "السعر الاجمالي للحجز (مجموع كل عناصر العربة بعد تطبيق القسيمة)\n"
|
691 |
+
""
|
692 |
+
|
693 |
+
#:
|
694 |
+
msgid "cart information"
|
695 |
+
msgstr "معلومات سلة التسوق\n"
|
696 |
+
""
|
697 |
+
|
698 |
+
#:
|
699 |
+
msgid "cart information with cancel"
|
700 |
+
msgstr "معلومات سلة التسوق مع إلغاء"
|
701 |
+
|
702 |
+
#:
|
703 |
+
msgid "customer new username"
|
704 |
+
msgstr "اسم مستخدم جديد للعميل"
|
705 |
+
|
706 |
+
#:
|
707 |
+
msgid "customer new password"
|
708 |
+
msgstr "كلمة المرور الجديدة للعميل"
|
709 |
+
|
710 |
+
#:
|
711 |
+
msgid "site address"
|
712 |
+
msgstr "عنوان الموقع"
|
713 |
+
|
714 |
+
#:
|
715 |
+
msgid "date of next day"
|
716 |
+
msgstr "تاريخ اليوم التالي"
|
717 |
+
|
718 |
+
#:
|
719 |
+
msgid "staff agenda for next day"
|
720 |
+
msgstr "جدول أعمال الموظفين لليوم التالي"
|
721 |
+
|
722 |
+
#:
|
723 |
+
msgid "To email"
|
724 |
+
msgstr "الى البريد الإلكتروني"
|
725 |
+
|
726 |
+
#:
|
727 |
+
msgid "Sender name"
|
728 |
+
msgstr "اسم المرسل"
|
729 |
+
|
730 |
+
#:
|
731 |
+
msgid "Sender email"
|
732 |
+
msgstr "البريد الإلكتروني المرسل"
|
733 |
+
|
734 |
+
#:
|
735 |
+
msgid "Reply directly to customers"
|
736 |
+
msgstr "الرد مباشرة على العملاء"
|
737 |
+
|
738 |
+
#:
|
739 |
+
msgid "Disabled"
|
740 |
+
msgstr "تعطيل"
|
741 |
+
|
742 |
+
#:
|
743 |
+
msgid "Enabled"
|
744 |
+
msgstr "تفعيل"
|
745 |
+
|
746 |
+
#:
|
747 |
+
msgid "Send emails as"
|
748 |
+
msgstr "ارسال البريد بصيغة"
|
749 |
+
|
750 |
+
#:
|
751 |
+
msgid "HTML"
|
752 |
+
msgstr "HTML"
|
753 |
+
|
754 |
+
#:
|
755 |
+
msgid "Text"
|
756 |
+
msgstr "نص"
|
757 |
+
|
758 |
+
#:
|
759 |
+
msgid "Notification templates"
|
760 |
+
msgstr "قوالب التنبيه"
|
761 |
+
|
762 |
+
#:
|
763 |
+
msgid "All templates"
|
764 |
+
msgstr "جميع القوالب"
|
765 |
+
|
766 |
+
#:
|
767 |
+
msgid "Send"
|
768 |
+
msgstr "ارسال"
|
769 |
+
|
770 |
+
#:
|
771 |
+
msgid "Close"
|
772 |
+
msgstr "إغلاق"
|
773 |
+
|
774 |
+
#:
|
775 |
+
msgid "HTML allows formatting, colors, fonts, positioning, etc. With Text you must use Text mode of rich-text editors below. On some servers only text emails are sent successfully."
|
776 |
+
msgstr "يسمح HTML بتنسيق الألوان ، والخطوط ، وتحديد المواقع ، وما إلى ذلك. باستخدام النص ، يجب استخدام وضع النص في برامج تحرير النصوص المنسقية أدناه. على بعض الخوادم فقط يتم إرسال رسائل البريد الإلكتروني النصية بنجاح.\n"
|
777 |
+
""
|
778 |
+
|
779 |
+
#:
|
780 |
+
msgid "If this option is enabled then the email address of the customer is used as a sender email address for notifications sent to staff members and administrators."
|
781 |
+
msgstr "إذا تم تفعيل هذا الخيار ، فسيتم استخدام عنوان البريد الإلكتروني للعميل كعنوان بريد إلكتروني للمرسل لإرسال التنبيهات إلى الموظفين والمدراء.\n"
|
782 |
+
""
|
783 |
+
|
784 |
+
#:
|
785 |
+
msgid "Codes"
|
786 |
+
msgstr "الأكواد البرمجية"
|
787 |
+
|
788 |
+
#:
|
789 |
+
msgid "To send scheduled notifications please refer to <a href=\"%1$s\">Bookly Multisite</a> add-on <a href=\"%2$s\">message</a>."
|
790 |
+
msgstr "لإرسال تنبيهات مجدولة ، يرجى الرجوع إلى اضافه <a href=\"%1$s\">بوكلي متعددة المواقع</a> <a href=\"%2$s\">رسالة</a>.\n"
|
791 |
+
""
|
792 |
+
|
793 |
+
#:
|
794 |
+
msgid "To send scheduled notifications please execute the following command hourly with your cron:"
|
795 |
+
msgstr "لإرسال تنبيهات مجدولة ، يرجى تنفيذ الأمر التالي كل ساعة باستخدام كرون:"
|
796 |
+
|
797 |
+
#:
|
798 |
+
msgid "No payments for selected period and criteria."
|
799 |
+
msgstr "لا توجد مدفوعات للفترة المحددة والمعايير."
|
800 |
+
|
801 |
+
#:
|
802 |
+
msgid "Details"
|
803 |
+
msgstr "تفاصيل"
|
804 |
+
|
805 |
+
#:
|
806 |
+
msgid "See details for more items"
|
807 |
+
msgstr "عرض التفاصيل لمزيد من العناصر\n"
|
808 |
+
""
|
809 |
+
|
810 |
+
#:
|
811 |
+
msgid "Type"
|
812 |
+
msgstr "الطريقة"
|
813 |
+
|
814 |
+
#:
|
815 |
+
msgid "Deposit"
|
816 |
+
msgstr "عربون مقدم"
|
817 |
+
|
818 |
+
#:
|
819 |
+
msgid "Subtotal"
|
820 |
+
msgstr "حاصل الجمع"
|
821 |
+
|
822 |
+
#:
|
823 |
+
msgid "Paid"
|
824 |
+
msgstr "دفع"
|
825 |
+
|
826 |
+
#:
|
827 |
+
msgid "Due"
|
828 |
+
msgstr "مستحق"
|
829 |
+
|
830 |
+
#:
|
831 |
+
msgid "Complete payment"
|
832 |
+
msgstr "اكمل الدفع"
|
833 |
+
|
834 |
+
#:
|
835 |
+
msgid "Amount"
|
836 |
+
msgstr "الكمية"
|
837 |
+
|
838 |
+
#:
|
839 |
+
msgid "Min capacity should not be greater than max capacity."
|
840 |
+
msgstr "يجب ألا تكون سعة الحد الأدنى أكبر من السعة القصوى"
|
841 |
+
|
842 |
+
#:
|
843 |
+
msgid "%d service"
|
844 |
+
msgid_plural "%d services"
|
845 |
+
msgstr[0] "%d خدمة"
|
846 |
+
msgstr[1] "%d خدمة"
|
847 |
+
msgstr[2] "%d خدمات"
|
848 |
+
msgstr[3] "%d خدمات"
|
849 |
+
msgstr[4] "%d خدمات"
|
850 |
+
msgstr[5] "%d خدمات"
|
851 |
+
|
852 |
+
#:
|
853 |
+
msgid "Simple"
|
854 |
+
msgstr "بسيط"
|
855 |
+
|
856 |
+
#:
|
857 |
+
msgid "Title"
|
858 |
+
msgstr "العنوان"
|
859 |
+
|
860 |
+
#:
|
861 |
+
msgid "Color"
|
862 |
+
msgstr "لون"
|
863 |
+
|
864 |
+
#:
|
865 |
+
msgid "Visibility"
|
866 |
+
msgstr "رؤية"
|
867 |
+
|
868 |
+
#:
|
869 |
+
msgid "Public"
|
870 |
+
msgstr "عام"
|
871 |
+
|
872 |
+
#:
|
873 |
+
msgid "Private"
|
874 |
+
msgstr "خاص"
|
875 |
+
|
876 |
+
#:
|
877 |
+
msgid "OFF"
|
878 |
+
msgstr "إيقاف"
|
879 |
+
|
880 |
+
#:
|
881 |
+
msgid "Providers"
|
882 |
+
msgstr "مقدمي"
|
883 |
+
|
884 |
+
#:
|
885 |
+
msgid "Category"
|
886 |
+
msgstr "الصنف"
|
887 |
+
|
888 |
+
#:
|
889 |
+
msgid "Uncategorized"
|
890 |
+
msgstr "غير مصنف"
|
891 |
+
|
892 |
+
#:
|
893 |
+
msgid "Info"
|
894 |
+
msgstr "معلومات"
|
895 |
+
|
896 |
+
#:
|
897 |
+
msgid "This text can be inserted into notifications with %s code."
|
898 |
+
msgstr "يمكن إدراج هذا النص في الإشعارات باستخدام رمز %s."
|
899 |
+
|
900 |
+
#:
|
901 |
+
msgid "Add Service"
|
902 |
+
msgstr "اضف خدمة"
|
903 |
+
|
904 |
+
#:
|
905 |
+
msgid "No services found. Please add services."
|
906 |
+
msgstr "لم يتم العثور على خدمات. يرجى إضافة الخدمات."
|
907 |
+
|
908 |
+
#:
|
909 |
+
msgid "Update service setting"
|
910 |
+
msgstr "تحديث إعداد الخدمة"
|
911 |
+
|
912 |
+
#:
|
913 |
+
msgid "You are about to change a service setting which is also configured separately for each staff member. Do you want to update it in staff settings too?"
|
914 |
+
msgstr "أنت على وشك تغيير إعداد خدمة تم تكوينه أيضًا بشكل منفصل لكل موظف. هل تريد تحديثه في إعدادات الموظفين أيضًا؟"
|
915 |
+
|
916 |
+
#:
|
917 |
+
msgid "No, update just here in services"
|
918 |
+
msgstr "لا، قم بتحديث في الخدمات هنا فقط"
|
919 |
+
|
920 |
+
#:
|
921 |
+
msgid "WooCommerce cart is not set up. Follow the <a href=\"%s\">link</a> to correct this problem."
|
922 |
+
msgstr "لم يتم إعداد عربة WooCommerce. اتبع <a href=\"%s\"> الرابط </a> لتصحيح هذه المشكلة."
|
923 |
+
|
924 |
+
#:
|
925 |
+
msgid "Repeat every year"
|
926 |
+
msgstr "كرر كل عام"
|
927 |
+
|
928 |
+
#:
|
929 |
+
msgid "We are not working on this day"
|
930 |
+
msgstr "نحن لا نعمل في هذا اليوم"
|
931 |
+
|
932 |
+
#:
|
933 |
+
msgid "Appointment with one participant"
|
934 |
+
msgstr "موعد مع مشارك واحد"
|
935 |
+
|
936 |
+
#:
|
937 |
+
msgid "Appointment with many participants"
|
938 |
+
msgstr "موعد مع العديد من المشاركين"
|
939 |
+
|
940 |
+
#:
|
941 |
+
msgid "Enter a value"
|
942 |
+
msgstr "أدخل قيمة"
|
943 |
+
|
944 |
+
#:
|
945 |
+
msgid "capacity of service"
|
946 |
+
msgstr "سعة الخدمة"
|
947 |
+
|
948 |
+
#:
|
949 |
+
msgid "number of persons already in the list"
|
950 |
+
msgstr "عدد الأشخاص الموجودين بالفعل في القائمة"
|
951 |
+
|
952 |
+
#:
|
953 |
+
msgid "status of payment"
|
954 |
+
msgstr "حالة الدفع"
|
955 |
+
|
956 |
+
#:
|
957 |
+
msgid "status of appointment"
|
958 |
+
msgstr "حالة الموعد"
|
959 |
+
|
960 |
+
#:
|
961 |
+
msgid "Cart"
|
962 |
+
msgstr "عربة التسوق"
|
963 |
+
|
964 |
+
#:
|
965 |
+
msgid "Image"
|
966 |
+
msgstr "صورة"
|
967 |
+
|
968 |
+
#:
|
969 |
+
msgid "Company name"
|
970 |
+
msgstr "اسم الشركة"
|
971 |
+
|
972 |
+
#:
|
973 |
+
msgid "Address"
|
974 |
+
msgstr "العنوان"
|
975 |
+
|
976 |
+
#:
|
977 |
+
msgid "Website"
|
978 |
+
msgstr "موقع الكتروني"
|
979 |
+
|
980 |
+
#:
|
981 |
+
msgid "Phone field default country"
|
982 |
+
msgstr "حقل الهاتف الافتراضي للبلد"
|
983 |
+
|
984 |
+
#:
|
985 |
+
msgid "Select default country for the phone field in the 'Details' step of booking. You can also let Bookly determine the country based on the IP address of the client."
|
986 |
+
msgstr "حدد البلد الافتراضي لحقل الهاتف في خطوة \"تفاصيل\" الحجز. يمكنك أيضًا السماح لـ Bookly بتحديد البلد استنادًا إلى عنوان IP الخاص بالعميل."
|
987 |
+
|
988 |
+
#:
|
989 |
+
msgid "Guess country by user's IP address"
|
990 |
+
msgstr "خمن الدولة عن طريق عنوان بروتوكول الإنترنت للمستخدم"
|
991 |
+
|
992 |
+
#:
|
993 |
+
msgid "Default country code"
|
994 |
+
msgstr "رمز البلد الافتراضي"
|
995 |
+
|
996 |
+
#:
|
997 |
+
msgid "Your clients must have their phone numbers in international format in order to receive text messages. However you can specify a default country code that will be used as a prefix for all phone numbers that do not start with \"+\" or \"00\". E.g. if you enter \"1\" as the default country code and a client enters their phone as \"(600) 555-2222\" the resulting phone number to send the SMS to will be \"+1600555222\"."
|
998 |
+
msgstr "يجب أن يكون لعملائك أرقام هواتفهم بالتنسيق الدولي لتلقي رسائل نصية. ومع ذلك ، يمكنك تحديد رمز البلد الافتراضي الذي سيتم استخدامه كبادئة لجميع أرقام الهواتف التي لا تبدأ بـ \"+\" أو \"00\". مثلا إذا أدخلت \"1\" كرمز البلد الافتراضي ، فسيرسل العميل هاتفه باسم \"(600) 555-2222\" ، وسيكون رقم الهاتف الناتج لإرسال الرسالة القصيرة هو \"+1600555222\"."
|
999 |
+
|
1000 |
+
#:
|
1001 |
+
msgid "Remember personal information in cookies"
|
1002 |
+
msgstr "حفظ المعلومات الشخصية في الكوكيز"
|
1003 |
+
|
1004 |
+
#:
|
1005 |
+
msgid "If this setting is enabled then returning customers will have their personal information fields filled in at the Details step with the data previously saved in cookies."
|
1006 |
+
msgstr "إذا تم تمكين هذا الإعداد ، فسيكون لدى العملاء العائدين حقول معلوماتهم الشخصية معبأة في خطوة التفاصيل مع البيانات المحفوظة مسبقًا في ملفات تعريف الارتباط."
|
1007 |
+
|
1008 |
+
#:
|
1009 |
+
msgid "Time slot length"
|
1010 |
+
msgstr "طول الفترة الزمنية"
|
1011 |
+
|
1012 |
+
#:
|
1013 |
+
msgid "Select a time interval which will be used as a step when building all time slots in the system."
|
1014 |
+
msgstr "حدد الفاصل الزمني الذي سيتم استخدامه كخطوة عند إنشاء جميع فترات الوقت في النظام."
|
1015 |
+
|
1016 |
+
#:
|
1017 |
+
msgid "Enable this option to make slot length equal to service duration at the Time step of booking form."
|
1018 |
+
msgstr "قم بتمكين هذا الخيار لجعل طول الفترة الزمنية مساويًا لمدة الخدمة في استمارة الحجز."
|
1019 |
+
|
1020 |
+
#:
|
1021 |
+
msgid "Default appointment status"
|
1022 |
+
msgstr "حالة الموعد الافتراضية"
|
1023 |
+
|
1024 |
+
#:
|
1025 |
+
msgid "Select status for newly booked appointments."
|
1026 |
+
msgstr "حدد حالة المواعيد المحجوزة حديثًا."
|
1027 |
+
|
1028 |
+
#:
|
1029 |
+
msgid "Pending"
|
1030 |
+
msgstr "قيد الانتظار"
|
1031 |
+
|
1032 |
+
#:
|
1033 |
+
msgid "Approved"
|
1034 |
+
msgstr "موافق عليه"
|
1035 |
+
|
1036 |
+
#:
|
1037 |
+
msgid "Approve appointment URL (success)"
|
1038 |
+
msgstr "الموافقة على عنوان URL للتعيين (النجاح)"
|
1039 |
+
|
1040 |
+
#:
|
1041 |
+
msgid "Set the URL of a page that is shown to staff after they successfully approved the appointment."
|
1042 |
+
msgstr "قم بتعيين عنوان URL لصفحة يتم عرضها للموظفين بعد أن يتم قبول الموعد بنجاح."
|
1043 |
+
|
1044 |
+
#:
|
1045 |
+
msgid "Approve appointment URL (denied)"
|
1046 |
+
msgstr "الموافقة على عنوان URL الموعد (مرفوض)"
|
1047 |
+
|
1048 |
+
#:
|
1049 |
+
msgid "Set the URL of a page that is shown to staff when the approval of appointment cannot be done (due to capacity, changed status, etc.)."
|
1050 |
+
msgstr "قم بتعيين عنوان URL الخاص بصفحة تظهر للموظفين عندما لا يمكن إجراء الموافقة على التعيين (بسبب السعة أو الحالة المتغيرة ، إلخ)."
|
1051 |
+
|
1052 |
+
#:
|
1053 |
+
msgid "Cancel appointment URL (success)"
|
1054 |
+
msgstr "إلغاء عنوان URL الخاص بالتعيين (النجاح)"
|
1055 |
+
|
1056 |
+
#:
|
1057 |
+
msgid "Set the URL of a page that is shown to clients after they successfully cancelled their appointment."
|
1058 |
+
msgstr "قم بتعيين عنوان URL الخاص بصفحة تظهر للعملاء بعد قيامهم بإلغاء الموعد بنجاح."
|
1059 |
+
|
1060 |
+
#:
|
1061 |
+
msgid "Cancel appointment URL (denied)"
|
1062 |
+
msgstr "إلغاء عنوان URL الموعد (مرفوض)"
|
1063 |
+
|
1064 |
+
#:
|
1065 |
+
msgid "Set the URL of a page that is shown to clients when the cancellation of appointment is not available anymore."
|
1066 |
+
msgstr "قم بتعيين عنوان URL الخاص بصفحة تظهر للعملاء عندما لا يكون إلغاء الموعد متاحًا بعد الآن."
|
1067 |
+
|
1068 |
+
#:
|
1069 |
+
msgid "Number of days available for booking"
|
1070 |
+
msgstr "عدد الأيام المتاحة للحجز"
|
1071 |
+
|
1072 |
+
#:
|
1073 |
+
msgid "Set how far in the future the clients can book appointments."
|
1074 |
+
msgstr "حدد إلى أي مدى يمكن للعملاء حجز المواعيد في المستقبل."
|
1075 |
+
|
1076 |
+
#:
|
1077 |
+
msgid "Display available time slots in client's time zone"
|
1078 |
+
msgstr "عرض الفترات الزمنية المتاحة في المنطقة الزمنية للعميل"
|
1079 |
+
|
1080 |
+
#:
|
1081 |
+
msgid "Allow staff members to edit their profiles"
|
1082 |
+
msgstr "اسمح للموظفين بتعديل ملفاتهم الشخصية"
|
1083 |
+
|
1084 |
+
#:
|
1085 |
+
msgid "If this option is enabled then all staff members who are associated with WordPress users will be able to edit their own profiles, services, schedule and days off."
|
1086 |
+
msgstr "إذا تم تمكين هذا الخيار ، فسيتمكن جميع الموظفين المرتبطين بمستخدمي WordPress من تعديل ملفاتهم الشخصية والخدمات والجدول الزمني وأيام العطلة."
|
1087 |
+
|
1088 |
+
#:
|
1089 |
+
msgid "Method to include Bookly JavaScript and CSS files on the page"
|
1090 |
+
msgstr "طريقة تضمين ملفات JavaScript وCSS في الصفحة"
|
1091 |
+
|
1092 |
+
#:
|
1093 |
+
msgid "With \"Enqueue\" method the JavaScript and CSS files of Bookly will be included on all pages of your website. This method should work with all themes. With \"Print\" method the files will be included only on the pages which contain Bookly booking form. This method may not work with all themes."
|
1094 |
+
msgstr "باستخدام أسلوب \"إدراج بقائمة الانتظار\" ، سيتم تضمين ملفات JavaScript و CSS في Bookly على جميع صفحات موقعك. يجب أن تعمل هذه الطريقة مع جميع الموضوعات. مع طريقة \"الطباعة\" سيتم تضمين الملفات فقط على الصفحات التي تحتوي على نموذج الحجز Bookly. قد لا تعمل هذه الطريقة مع جميع الموضوعات."
|
1095 |
+
|
1096 |
+
#:
|
1097 |
+
msgid "Help us improve Bookly by sending anonymous usage stats"
|
1098 |
+
msgstr "ساعدنا في تحسين Bookly بإرسال إحصائيات استخدام مجهولة"
|
1099 |
+
|
1100 |
+
#:
|
1101 |
+
msgid "Instructions"
|
1102 |
+
msgstr "التعليمات"
|
1103 |
+
|
1104 |
+
#:
|
1105 |
+
msgid "Please note, the business hours below work as a template for all new staff members. To render a list of available time slots the system takes into account only staff members' schedule, not the company business hours. Be sure to check the schedule of your staff members if you have some unexpected behavior of the booking system."
|
1106 |
+
msgstr "يرجى ملاحظة أن ساعات العمل التالية تعمل كنموذج لجميع الموظفين الجدد. لتقديم قائمة من الفترات الزمنية المتاحة ، يأخذ النظام بعين الاعتبار جدول الموظفين فقط ، وليس ساعات عمل الشركة. تأكد من التحقق من الجدول الزمني لموظفيك إذا كان لديك بعض السلوك غير المتوقع لنظام الحجز."
|
1107 |
+
|
1108 |
+
#:
|
1109 |
+
msgid "Currency"
|
1110 |
+
msgstr "العملة"
|
1111 |
+
|
1112 |
+
#:
|
1113 |
+
msgid "Price format"
|
1114 |
+
msgstr "تنسيق السعر"
|
1115 |
+
|
1116 |
+
#:
|
1117 |
+
msgid "Service paid locally"
|
1118 |
+
msgstr "سيتم دفع الخدمة محليا"
|
1119 |
+
|
1120 |
+
#:
|
1121 |
+
msgid "No"
|
1122 |
+
msgstr "لا"
|
1123 |
+
|
1124 |
+
#:
|
1125 |
+
msgid "Client"
|
1126 |
+
msgstr "عميل"
|
1127 |
+
|
1128 |
+
#:
|
1129 |
+
msgid "General"
|
1130 |
+
msgstr "عام"
|
1131 |
+
|
1132 |
+
#:
|
1133 |
+
msgid "Company"
|
1134 |
+
msgstr "الشركة"
|
1135 |
+
|
1136 |
+
#:
|
1137 |
+
msgid "Business Hours"
|
1138 |
+
msgstr "ساعات العمل"
|
1139 |
+
|
1140 |
+
#:
|
1141 |
+
msgid "Holidays"
|
1142 |
+
msgstr "العطلات"
|
1143 |
+
|
1144 |
+
#:
|
1145 |
+
msgid "Please accept terms and conditions."
|
1146 |
+
msgstr "يرجى قبول الشروط والأحكام."
|
1147 |
+
|
1148 |
+
#:
|
1149 |
+
msgid "Your payment has been accepted for processing."
|
1150 |
+
msgstr "تم قبول عملية الدفع الخاص بك للمعالجة."
|
1151 |
+
|
1152 |
+
#:
|
1153 |
+
msgid "Your payment has been interrupted."
|
1154 |
+
msgstr "لقد توقفت عملية الدفع الخاصة بك."
|
1155 |
+
|
1156 |
+
#:
|
1157 |
+
msgid "Auto-Recharge enabled."
|
1158 |
+
msgstr "تمكين إعادة الشحن التلقائي."
|
1159 |
+
|
1160 |
+
#:
|
1161 |
+
msgid "You declined the Auto-Recharge of your balance."
|
1162 |
+
msgstr "لقد رفضت إعادة التعبئة التلقائية لرصيدك."
|
1163 |
+
|
1164 |
+
#:
|
1165 |
+
msgid "Please enter old password."
|
1166 |
+
msgstr "يرجى إدخال كلمة المرور القديمة."
|
1167 |
+
|
1168 |
+
#:
|
1169 |
+
msgid "Passwords must be the same."
|
1170 |
+
msgstr "يجب أن تكون كلمات المرور هي نفسها."
|
1171 |
+
|
1172 |
+
#:
|
1173 |
+
msgid "Sender ID request is sent."
|
1174 |
+
msgstr "تم إرسال طلب معرف المرسل."
|
1175 |
+
|
1176 |
+
#:
|
1177 |
+
msgid "Sender ID is reset to default."
|
1178 |
+
msgstr "تم إعادة تعيين معرف المرسل إلى الوضع الافتراضي."
|
1179 |
+
|
1180 |
+
#:
|
1181 |
+
msgid "No records for selected period."
|
1182 |
+
msgstr "لا توجد سجلات للفترة المحددة."
|
1183 |
+
|
1184 |
+
#:
|
1185 |
+
msgid "No records."
|
1186 |
+
msgstr "لا توجد سجلات."
|
1187 |
+
|
1188 |
+
#:
|
1189 |
+
msgid "Auto-Recharge has failed, please replenish your balance directly."
|
1190 |
+
msgstr "تعذّر إعادة التعبئة التلقائية ، يرجى إعادة تعبئة رصيدك مباشرةً."
|
1191 |
+
|
1192 |
+
#:
|
1193 |
+
msgid "Auto-Recharge disabled"
|
1194 |
+
msgstr "إعادة الشحن التلقائي معطلة"
|
1195 |
+
|
1196 |
+
#:
|
1197 |
+
msgid "Error. Can't disable Auto-Recharge, you can perform this action in your PayPal account."
|
1198 |
+
msgstr "خطأ. لا يمكن تعطيل إعادة التعبئة التلقائية ، يمكنك تنفيذ هذا الإجراء في حساب PayPal الخاص بك."
|
1199 |
+
|
1200 |
+
#:
|
1201 |
+
msgid "SMS has been sent successfully."
|
1202 |
+
msgstr "تم إرسال الرسالة القصيرة بنجاح."
|
1203 |
+
|
1204 |
+
#:
|
1205 |
+
msgid "We will only charge your PayPal account when your balance falls below $10."
|
1206 |
+
msgstr "سنقوم بالخصم من حساب PayPal فقط عندما يقل رصيدك عن 10 دولارات."
|
1207 |
+
|
1208 |
+
#:
|
1209 |
+
msgid "Enable Auto-Recharge"
|
1210 |
+
msgstr "تمكين إعادة الشحن التلقائي"
|
1211 |
+
|
1212 |
+
#:
|
1213 |
+
msgid "Disable Auto-Recharge"
|
1214 |
+
msgstr "تعطيل إعادة الشحن التلقائي"
|
1215 |
+
|
1216 |
+
#:
|
1217 |
+
msgid "Administrator phone"
|
1218 |
+
msgstr "هاتف المسؤول"
|
1219 |
+
|
1220 |
+
#:
|
1221 |
+
msgid "Enter a phone number in international format. E.g. for the United States a valid phone number would be +17327572923."
|
1222 |
+
msgstr "أدخل رقم الهاتف بالتنسيق الدولي. مثلا بالنسبة للولايات المتحدة ، سيكون رقم الهاتف الصحيح هو +17327572923."
|
1223 |
+
|
1224 |
+
#:
|
1225 |
+
msgid "Send test SMS"
|
1226 |
+
msgstr "إرسال اختبار SMS"
|
1227 |
+
|
1228 |
+
#:
|
1229 |
+
msgid "Country"
|
1230 |
+
msgstr "البلد"
|
1231 |
+
|
1232 |
+
#:
|
1233 |
+
msgid "Regular price"
|
1234 |
+
msgstr "السعر العادي"
|
1235 |
+
|
1236 |
+
#:
|
1237 |
+
msgid "Price with custom Sender ID"
|
1238 |
+
msgstr "السعر مع معرف مخصص للمرسل"
|
1239 |
+
|
1240 |
+
#:
|
1241 |
+
msgid "Order"
|
1242 |
+
msgstr "الطلب"
|
1243 |
+
|
1244 |
+
#:
|
1245 |
+
msgid "Please take into account that not all countries by law allow custom SMS sender ID. Please check if particular country supports custom sender ID in our price list. Also please note that prices for messages with custom sender ID are usually 20% - 25% higher than normal message price."
|
1246 |
+
msgstr "يرجى الأخذ في الاعتبار أنه لا تسمح جميع الدول بموجب القانون بموجب القانون الدولي لمعرّف هوية المرسل. يرجى التحقق مما إذا كانت دولة معينة تدعم معرف المرسل المخصص في قائمة الأسعار الخاصة بنا. يُرجى أيضًا ملاحظة أن أسعار الرسائل التي تحتوي على معرّف مرسل مخصص عادةً ما تكون أعلى بنسبة 20% - 25% من سعر الرسالة العادي."
|
1247 |
+
|
1248 |
+
#:
|
1249 |
+
msgid "Request Sender ID"
|
1250 |
+
msgstr "رقم هوية المرسل"
|
1251 |
+
|
1252 |
+
#:
|
1253 |
+
msgid "or"
|
1254 |
+
msgstr "آو"
|
1255 |
+
|
1256 |
+
#:
|
1257 |
+
msgid "Reset to default"
|
1258 |
+
msgstr "إعادة تعيين إلى الافتراضي"
|
1259 |
+
|
1260 |
+
#:
|
1261 |
+
msgid "Can only contain letters or digits (up to 11 characters)."
|
1262 |
+
msgstr "يمكن أن يحتوي فقط على أحرف أو أرقام (حتى 11 حرفًا)."
|
1263 |
+
|
1264 |
+
#:
|
1265 |
+
msgid "Request"
|
1266 |
+
msgstr "طلب"
|
1267 |
+
|
1268 |
+
#:
|
1269 |
+
msgid "Cancel request"
|
1270 |
+
msgstr "إلغاء الطلب"
|
1271 |
+
|
1272 |
+
#:
|
1273 |
+
msgid "Requested ID"
|
1274 |
+
msgstr "رقم الطلب"
|
1275 |
+
|
1276 |
+
#:
|
1277 |
+
msgid "Status Date"
|
1278 |
+
msgstr "تاريخ الحالة"
|
1279 |
+
|
1280 |
+
#:
|
1281 |
+
msgid "Sender ID"
|
1282 |
+
msgstr "هوية المرسل"
|
1283 |
+
|
1284 |
+
#:
|
1285 |
+
msgid "Cost"
|
1286 |
+
msgstr "كلفة"
|
1287 |
+
|
1288 |
+
#:
|
1289 |
+
msgid "Your balance"
|
1290 |
+
msgstr "رصيدك"
|
1291 |
+
|
1292 |
+
#:
|
1293 |
+
msgid "Send email notification to administrators at low balance"
|
1294 |
+
msgstr "إرسال إشعار عبر البريد الإلكتروني إلى المسؤولين عند انخفاض الرصيد"
|
1295 |
+
|
1296 |
+
#:
|
1297 |
+
msgid "Send weekly summary to administrators"
|
1298 |
+
msgstr "إرسال ملخص أسبوعي للمسؤولين"
|
1299 |
+
|
1300 |
+
#:
|
1301 |
+
msgid "Change"
|
1302 |
+
msgstr "تغيير"
|
1303 |
+
|
1304 |
+
#:
|
1305 |
+
msgid "Approved at"
|
1306 |
+
msgstr "تمت الموافقة عليه في"
|
1307 |
+
|
1308 |
+
#:
|
1309 |
+
msgid "Log out"
|
1310 |
+
msgstr "الخروج"
|
1311 |
+
|
1312 |
+
#:
|
1313 |
+
msgid "Notifications"
|
1314 |
+
msgstr "الإشعارات"
|
1315 |
+
|
1316 |
+
#:
|
1317 |
+
msgid "Add money"
|
1318 |
+
msgstr "أضف نقود"
|
1319 |
+
|
1320 |
+
#:
|
1321 |
+
msgid "Auto-Recharge"
|
1322 |
+
msgstr "الشحن التلقائي"
|
1323 |
+
|
1324 |
+
#:
|
1325 |
+
msgid "Purchases"
|
1326 |
+
msgstr "المشتريات"
|
1327 |
+
|
1328 |
+
#:
|
1329 |
+
msgid "SMS Details"
|
1330 |
+
msgstr "تفاصيل الرسالة القصيرة"
|
1331 |
+
|
1332 |
+
#:
|
1333 |
+
msgid "Price list"
|
1334 |
+
msgstr "قائمة الاسعار"
|
1335 |
+
|
1336 |
+
#:
|
1337 |
+
msgid "SMS Notifications (or \"Bookly SMS\") is a service for notifying your customers via text messages which are sent to mobile phones."
|
1338 |
+
msgstr "إشعارات الرسائل النصية القصيرة (أو \"Bookly SMS\") هي خدمة لإبلاغ عملائك عبر الرسائل النصية التي يتم إرسالها إلى الهواتف المحمولة."
|
1339 |
+
|
1340 |
+
#:
|
1341 |
+
msgid "It is necessary to register in order to start using this service."
|
1342 |
+
msgstr "من الضروري التسجيل للبدء في استخدام هذه الخدمة."
|
1343 |
+
|
1344 |
+
#:
|
1345 |
+
msgid "After registration you will need to configure notification messages and top up your balance in order to start sending SMS."
|
1346 |
+
msgstr "بعد التسجيل ستحتاج إلى اعداد رسائل الاخطار ورفع رصيدك من أجل البدء في إرسال الرسائل القصيرة."
|
1347 |
+
|
1348 |
+
#:
|
1349 |
+
msgid "Login"
|
1350 |
+
msgstr "تسجيل الدخول"
|
1351 |
+
|
1352 |
+
#:
|
1353 |
+
msgid "Password"
|
1354 |
+
msgstr "كلمه السر"
|
1355 |
+
|
1356 |
+
#:
|
1357 |
+
msgid "Log In"
|
1358 |
+
msgstr "تسجيل الدخول"
|
1359 |
+
|
1360 |
+
#:
|
1361 |
+
msgid "Registration"
|
1362 |
+
msgstr "التسجيل"
|
1363 |
+
|
1364 |
+
#:
|
1365 |
+
msgid "Forgot password"
|
1366 |
+
msgstr "هل نسيت كلمة المرور؟"
|
1367 |
+
|
1368 |
+
#:
|
1369 |
+
msgid "Repeat password"
|
1370 |
+
msgstr "اعد كلمة السر"
|
1371 |
+
|
1372 |
+
#:
|
1373 |
+
msgid "Register"
|
1374 |
+
msgstr "تسجيل"
|
1375 |
+
|
1376 |
+
#:
|
1377 |
+
msgid "Enter code from email"
|
1378 |
+
msgstr "أدخل الرمز من البريد الإلكتروني"
|
1379 |
+
|
1380 |
+
#:
|
1381 |
+
msgid "New password"
|
1382 |
+
msgstr "كلمة السر الجديدة"
|
1383 |
+
|
1384 |
+
#:
|
1385 |
+
msgid "Repeat new password"
|
1386 |
+
msgstr "كرر كلمة السر الجديدة"
|
1387 |
+
|
1388 |
+
#:
|
1389 |
+
msgid "Next"
|
1390 |
+
msgstr "التالي"
|
1391 |
+
|
1392 |
+
#:
|
1393 |
+
msgid "Change password"
|
1394 |
+
msgstr "تغيير كلمة السر"
|
1395 |
+
|
1396 |
+
#:
|
1397 |
+
msgid "Old password"
|
1398 |
+
msgstr "كلمة السر القديمة"
|
1399 |
+
|
1400 |
+
#:
|
1401 |
+
msgid "All locations"
|
1402 |
+
msgstr "جميع المواقع"
|
1403 |
+
|
1404 |
+
#:
|
1405 |
+
msgid "No locations selected"
|
1406 |
+
msgstr "لا توجد مواقع محددة"
|
1407 |
+
|
1408 |
+
#:
|
1409 |
+
msgid "The start time must be less than the end one"
|
1410 |
+
msgstr "يجب أن يكون وقت البدء أقل من وقت النهاية"
|
1411 |
+
|
1412 |
+
#:
|
1413 |
+
msgid "The requested interval is not available"
|
1414 |
+
msgstr "الفاصل الزمني المطلوب غير متوفر"
|
1415 |
+
|
1416 |
+
#:
|
1417 |
+
msgid "Error adding the break interval"
|
1418 |
+
msgstr "خطأ في إضافة الفاصل الزمني"
|
1419 |
+
|
1420 |
+
#:
|
1421 |
+
msgid "Delete break"
|
1422 |
+
msgstr "حذف الفاصل الزمني"
|
1423 |
+
|
1424 |
+
#:
|
1425 |
+
msgid "Breaks"
|
1426 |
+
msgstr "الفواصل الزمنية"
|
1427 |
+
|
1428 |
+
#:
|
1429 |
+
msgid "Full name"
|
1430 |
+
msgstr "الاسم الكامل"
|
1431 |
+
|
1432 |
+
#:
|
1433 |
+
msgid "If this staff member requires separate login to access personal calendar, a regular WP user needs to be created for this purpose."
|
1434 |
+
msgstr "إذا كان هذا الموظف يتطلب تسجيل دخول منفصل للوصول إلى التقويم الشخصي ، فيجب إنشاء مستخدم WP عادي لهذا الغرض."
|
1435 |
+
|
1436 |
+
#:
|
1437 |
+
msgid "User with \"Administrator\" role will have access to calendars and settings of all staff members, user with another role will have access only to personal calendar and settings."
|
1438 |
+
msgstr "يمكن للمستخدم الذي يملك دور \"المسؤول\" الوصول إلى التقويمات وإعدادات جميع الموظفين ،سيكون للمستخدم دور آخر في الوصول فقط إلى التقويم وإعدادات الشخصية."
|
1439 |
+
|
1440 |
+
#:
|
1441 |
+
msgid "If you leave this field blank, this staff member will not be able to access personal calendar using WP backend."
|
1442 |
+
msgstr "إذا تركت هذا الحقل فارغًا ، فلن يتمكن هذا الموظف من الوصول إلى التقويم الشخصي باستخدام خلفية WP."
|
1443 |
+
|
1444 |
+
#:
|
1445 |
+
msgid "Select from WP users"
|
1446 |
+
msgstr "حدد من مستخدمي الورد بريس"
|
1447 |
+
|
1448 |
+
#:
|
1449 |
+
msgid "To make staff member invisible to your customers set the visibility to \"Private\"."
|
1450 |
+
msgstr "لجعل الموظف غير مرئي لعملائك ، يمكنك تعيين مستوى الرؤية إلى \"خاص\"."
|
1451 |
+
|
1452 |
+
#:
|
1453 |
+
msgid "Schedule"
|
1454 |
+
msgstr "جدول"
|
1455 |
+
|
1456 |
+
#:
|
1457 |
+
msgid "Days off"
|
1458 |
+
msgstr "أيام العطلة"
|
1459 |
+
|
1460 |
+
#:
|
1461 |
+
msgid "add break"
|
1462 |
+
msgstr "أضف استراحة"
|
1463 |
+
|
1464 |
+
#:
|
1465 |
+
msgid "Reset"
|
1466 |
+
msgstr "إعادة تعيين"
|
1467 |
+
|
1468 |
+
#:
|
1469 |
+
msgid "All fields marked with an asterisk (*) are required."
|
1470 |
+
msgstr "جميع الحقول التي تحمل علامة النجمة (*) مطلوبة."
|
1471 |
+
|
1472 |
+
#:
|
1473 |
+
msgid "Invalid email."
|
1474 |
+
msgstr "بريد إلكتروني خاطئ."
|
1475 |
+
|
1476 |
+
#:
|
1477 |
+
msgid "Error sending support request."
|
1478 |
+
msgstr "خطأ في إرسال طلب الدعم."
|
1479 |
+
|
1480 |
+
#:
|
1481 |
+
msgid "Show all notifications"
|
1482 |
+
msgstr "عرض جميع الإشعارات"
|
1483 |
+
|
1484 |
+
#:
|
1485 |
+
msgid "Mark all notifications as read"
|
1486 |
+
msgstr "اجعل جميع الإشعارات مقروءة"
|
1487 |
+
|
1488 |
+
#:
|
1489 |
+
msgid "Documentation"
|
1490 |
+
msgstr "الوثائق"
|
1491 |
+
|
1492 |
+
#:
|
1493 |
+
msgid "Need help? Contact us here."
|
1494 |
+
msgstr "تحتاج مساعدة؟ اتصل بنا هنا."
|
1495 |
+
|
1496 |
+
#:
|
1497 |
+
msgid "Feedback"
|
1498 |
+
msgstr "تقييم"
|
1499 |
+
|
1500 |
+
#:
|
1501 |
+
msgid "Leave us a message"
|
1502 |
+
msgstr "اترك لنا رسالة"
|
1503 |
+
|
1504 |
+
#:
|
1505 |
+
msgid "Your name"
|
1506 |
+
msgstr "اسمك"
|
1507 |
+
|
1508 |
+
#:
|
1509 |
+
msgid "Email address"
|
1510 |
+
msgstr "عنوان بريد الكتروني"
|
1511 |
+
|
1512 |
+
#:
|
1513 |
+
msgid "How can we help you?"
|
1514 |
+
msgstr "كيف يمكننا مساعدتك؟"
|
1515 |
+
|
1516 |
+
#:
|
1517 |
+
msgid "How likely is it that you would recommend Bookly to a friend or colleague?"
|
1518 |
+
msgstr "ما مدى احتمالية أن توصي بـ Bookly لصديق أو زميل؟"
|
1519 |
+
|
1520 |
+
#:
|
1521 |
+
msgid "What do you think should be improved?"
|
1522 |
+
msgstr "ما رأيك يجب تحسينه؟"
|
1523 |
+
|
1524 |
+
#:
|
1525 |
+
msgid "Please enter your email (optional)"
|
1526 |
+
msgstr "يرجى إدخال البريد الإلكتروني الخاص بك (اختياري)"
|
1527 |
+
|
1528 |
+
#:
|
1529 |
+
msgid "Please leave your feedback <a href=\"%s\" target=\"_blank\">here</a>."
|
1530 |
+
msgstr "يرجى ترك تعليقاتك <a href=\"%s\" target=\"_blank\"> هنا </a>."
|
1531 |
+
|
1532 |
+
#:
|
1533 |
+
msgid "Subscribe to monthly emails about Bookly improvements and new releases."
|
1534 |
+
msgstr "اشترك في رسائل البريد الإلكتروني الشهرية حول تحسينات Bookly والإصدارات الجديدة."
|
1535 |
+
|
1536 |
+
#:
|
1537 |
+
msgid "Add Bookly booking form"
|
1538 |
+
msgstr "إضافة نموذج الحجز Bookly"
|
1539 |
+
|
1540 |
+
#:
|
1541 |
+
msgid "Staff"
|
1542 |
+
msgstr "العاملين"
|
1543 |
+
|
1544 |
+
#:
|
1545 |
+
msgid "Insert"
|
1546 |
+
msgstr "إدراج"
|
1547 |
+
|
1548 |
+
#:
|
1549 |
+
msgid "Default value for category select"
|
1550 |
+
msgstr "القيمة الافتراضية للفئة حدد"
|
1551 |
+
|
1552 |
+
#:
|
1553 |
+
msgid "Select category"
|
1554 |
+
msgstr "اختر الفئة"
|
1555 |
+
|
1556 |
+
#:
|
1557 |
+
msgid "Hide this field"
|
1558 |
+
msgstr "إخفاء هذا الحقل"
|
1559 |
+
|
1560 |
+
#:
|
1561 |
+
msgid "Default value for service select"
|
1562 |
+
msgstr "القيمة الافتراضية لاختيار الخدمة"
|
1563 |
+
|
1564 |
+
#:
|
1565 |
+
msgid "Select service"
|
1566 |
+
msgstr "اختر الخدمة"
|
1567 |
+
|
1568 |
+
#:
|
1569 |
+
msgid "Please be aware that a value in this field is required in the frontend. If you choose to hide this field, please be sure to select a default value for it"
|
1570 |
+
msgstr "يرجى الانتباه إلى أن القيمة في هذا الحقل مطلوبة في الواجهة الأمامية. إذا اخترت إخفاء هذا الحقل ، فيرجى التأكد من تحديد قيمة افتراضية له"
|
1571 |
+
|
1572 |
+
#:
|
1573 |
+
msgid "Default value for employee select"
|
1574 |
+
msgstr "القيمة الافتراضية لاختيار الموظف"
|
1575 |
+
|
1576 |
+
#:
|
1577 |
+
msgid "Any"
|
1578 |
+
msgstr "أي"
|
1579 |
+
|
1580 |
+
#:
|
1581 |
+
msgid "Week days"
|
1582 |
+
msgstr "ايام الاسبوع"
|
1583 |
+
|
1584 |
+
#:
|
1585 |
+
msgid "Time range"
|
1586 |
+
msgstr "النطاق الزمني"
|
1587 |
+
|
1588 |
+
#:
|
1589 |
+
msgid "Insert Appointment Booking Form"
|
1590 |
+
msgstr "إدراج استمارة حجز موعد"
|
1591 |
+
|
1592 |
+
#:
|
1593 |
+
msgid "Show more"
|
1594 |
+
msgstr "أظهر المزيد"
|
1595 |
+
|
1596 |
+
#:
|
1597 |
+
msgid "Session error."
|
1598 |
+
msgstr "خطأ في الجلسة."
|
1599 |
+
|
1600 |
+
#:
|
1601 |
+
msgid "Form ID error."
|
1602 |
+
msgstr "خطأ في معرف الاستمارة."
|
1603 |
+
|
1604 |
+
#:
|
1605 |
+
msgid "Pay locally is not available."
|
1606 |
+
msgstr "الدفع محليًا غير متوفر."
|
1607 |
+
|
1608 |
+
#:
|
1609 |
+
msgid "Invalid gateway."
|
1610 |
+
msgstr "بوابة غير صالحة."
|
1611 |
+
|
1612 |
+
#:
|
1613 |
+
msgid "No time is available for selected criteria."
|
1614 |
+
msgstr "لا يوجد وقت متاح لمعايير مختارة."
|
1615 |
+
|
1616 |
+
#:
|
1617 |
+
msgid "Data already in use"
|
1618 |
+
msgstr "البيانات قيد الاستخدام بالفعل"
|
1619 |
+
|
1620 |
+
#:
|
1621 |
+
msgid "Page Redirection"
|
1622 |
+
msgstr "إعادة توجيه الصفحة"
|
1623 |
+
|
1624 |
+
#:
|
1625 |
+
msgid "If you are not redirected automatically, follow the <a href=\"%s\">link</a>."
|
1626 |
+
msgstr "إذا لم تتم إعادة توجيهك تلقائيًا ، فاتبع <a href=\"%s\"> الرابط </a>."
|
1627 |
+
|
1628 |
+
#:
|
1629 |
+
msgid "Loading..."
|
1630 |
+
msgstr "جار التحميل..."
|
1631 |
+
|
1632 |
+
#:
|
1633 |
+
msgid "Error"
|
1634 |
+
msgstr "خطأ"
|
1635 |
+
|
1636 |
+
#:
|
1637 |
+
msgid " and %d more item"
|
1638 |
+
msgid_plural " and %d more items"
|
1639 |
+
msgstr[0] "و%d عنصر آخر"
|
1640 |
+
msgstr[1] "و%d عنصر آخر"
|
1641 |
+
msgstr[2] "و%d من العناصر الأخرى"
|
1642 |
+
msgstr[3] "و%d من العناصر الأخرى"
|
1643 |
+
msgstr[4] "و%d من العناصر الأخرى"
|
1644 |
+
msgstr[5] "و%d من العناصر الأخرى"
|
1645 |
+
|
1646 |
+
#:
|
1647 |
+
msgid "Your appointment information"
|
1648 |
+
msgstr "معلومات موعدك"
|
1649 |
+
|
1650 |
+
#:
|
1651 |
+
msgid "Dear {client_name}.\n"
|
1652 |
+
"\n"
|
1653 |
+
"This is a confirmation that you have booked {service_name}.\n"
|
1654 |
+
"\n"
|
1655 |
+
"We are waiting you at {company_address} on {appointment_date} at {appointment_time}.\n"
|
1656 |
+
"\n"
|
1657 |
+
"Thank you for choosing our company.\n"
|
1658 |
+
"\n"
|
1659 |
+
"{company_name}\n"
|
1660 |
+
"{company_phone}\n"
|
1661 |
+
"{company_website}"
|
1662 |
+
msgstr "عزيزي {client_name}.\n"
|
1663 |
+
"\n"
|
1664 |
+
"هذا تأكيد بأنك قد حجزت {service_name}.\n"
|
1665 |
+
"\n"
|
1666 |
+
"نحن في انتظارك في {company_address} في {date_date} في {appointment_time}.\n"
|
1667 |
+
"\n"
|
1668 |
+
"شكرا لكم لاختيار شركتنا.\n"
|
1669 |
+
"\n"
|
1670 |
+
"{company_name}\n"
|
1671 |
+
"{company_phone}\n"
|
1672 |
+
"{company_website}"
|
1673 |
+
|
1674 |
+
#:
|
1675 |
+
msgid "Dear {client_name}.\n"
|
1676 |
+
"\n"
|
1677 |
+
"This is a confirmation that you have booked the following items:\n"
|
1678 |
+
"\n"
|
1679 |
+
"{cart_info}\n"
|
1680 |
+
"\n"
|
1681 |
+
"Thank you for choosing our company.\n"
|
1682 |
+
"\n"
|
1683 |
+
"{company_name}\n"
|
1684 |
+
"{company_phone}\n"
|
1685 |
+
"{company_website}"
|
1686 |
+
msgstr "عزيزي {client_name}.\n"
|
1687 |
+
"\n"
|
1688 |
+
"هذا تأكيد على أنك قمت بحجز العناصر التالية:\n"
|
1689 |
+
"\n"
|
1690 |
+
"{cart_info}\n"
|
1691 |
+
"\n"
|
1692 |
+
"شكرا لكم لاختيار شركتنا.\n"
|
1693 |
+
"\n"
|
1694 |
+
"{company_name}\n"
|
1695 |
+
"{company_phone}\n"
|
1696 |
+
"{company_website}"
|
1697 |
+
|
1698 |
+
#:
|
1699 |
+
msgid "New booking information"
|
1700 |
+
msgstr "معلومات الحجز الجديدة"
|
1701 |
+
|
1702 |
+
#:
|
1703 |
+
msgid "Hello.\n"
|
1704 |
+
"\n"
|
1705 |
+
"You have a new booking.\n"
|
1706 |
+
"\n"
|
1707 |
+
"Service: {service_name}\n"
|
1708 |
+
"Date: {appointment_date}\n"
|
1709 |
+
"Time: {appointment_time}\n"
|
1710 |
+
"Client name: {client_name}\n"
|
1711 |
+
"Client phone: {client_phone}\n"
|
1712 |
+
"Client email: {client_email}"
|
1713 |
+
msgstr "مرحبا.\n"
|
1714 |
+
"\n"
|
1715 |
+
"لديك حجز جديد.\n"
|
1716 |
+
"\n"
|
1717 |
+
"الخدمة: {service_name}\n"
|
1718 |
+
"التاريخ: {appointment_date}\n"
|
1719 |
+
"الوقت: {appointment_time}\n"
|
1720 |
+
"اسم العميل: {client_name}\n"
|
1721 |
+
"هاتف العميل: {client_phone}\n"
|
1722 |
+
"البريد الإلكتروني للعميل: {client_email}"
|
1723 |
+
|
1724 |
+
#:
|
1725 |
+
msgid "Booking cancellation"
|
1726 |
+
msgstr "الغاء الحجز"
|
1727 |
+
|
1728 |
+
#:
|
1729 |
+
msgid "Booking rejection"
|
1730 |
+
msgstr "رفض الحجز"
|
1731 |
+
|
1732 |
+
#:
|
1733 |
+
msgid "Dear {client_name}.\n"
|
1734 |
+
"\n"
|
1735 |
+
"Your booking of {service_name} on {appointment_date} at {appointment_time} has been rejected.\n"
|
1736 |
+
"\n"
|
1737 |
+
"Reason: {cancellation_reason}\n"
|
1738 |
+
"\n"
|
1739 |
+
"Thank you for choosing our company.\n"
|
1740 |
+
"\n"
|
1741 |
+
"{company_name}\n"
|
1742 |
+
"{company_phone}\n"
|
1743 |
+
"{company_website}"
|
1744 |
+
msgstr "عزيزي {client_name}.\n"
|
1745 |
+
"\n"
|
1746 |
+
"تم رفض حجز {service_name} في {date_date} في {appointment_date}.\n"
|
1747 |
+
"\n"
|
1748 |
+
"السبب: {cancellation_reason}\n"
|
1749 |
+
"\n"
|
1750 |
+
"شكرا لكم لاختيار شركتنا.\n"
|
1751 |
+
"\n"
|
1752 |
+
"{company_name}\n"
|
1753 |
+
"{company_phone}\n"
|
1754 |
+
"{company_website}"
|
1755 |
+
|
1756 |
+
#:
|
1757 |
+
msgid "Hello.\n"
|
1758 |
+
"\n"
|
1759 |
+
"The following booking has been rejected.\n"
|
1760 |
+
"\n"
|
1761 |
+
"Reason: {cancellation_reason}\n"
|
1762 |
+
"\n"
|
1763 |
+
"Service: {service_name}\n"
|
1764 |
+
"Date: {appointment_date}\n"
|
1765 |
+
"Time: {appointment_time}\n"
|
1766 |
+
"Client name: {client_name}\n"
|
1767 |
+
"Client phone: {client_phone}\n"
|
1768 |
+
"Client email: {client_email}"
|
1769 |
+
msgstr "مرحبا.\n"
|
1770 |
+
"\n"
|
1771 |
+
"تم رفض الحجز التالي.\n"
|
1772 |
+
"\n"
|
1773 |
+
"السبب: {cancellation_reason}\n"
|
1774 |
+
"\n"
|
1775 |
+
"الخدمة: {service_name}\n"
|
1776 |
+
"التاريخ: {appointment_date}\n"
|
1777 |
+
"الوقت: {appointment_time}\n"
|
1778 |
+
"اسم العميل: {client_name}\n"
|
1779 |
+
"هاتف العميل: {client_phone}\n"
|
1780 |
+
"البريد الإلكتروني للعميل: {client_email}"
|
1781 |
+
|
1782 |
+
#:
|
1783 |
+
msgid "Hello.\n"
|
1784 |
+
"\n"
|
1785 |
+
"An account was created for you at {site_address}\n"
|
1786 |
+
"\n"
|
1787 |
+
"Your user details:\n"
|
1788 |
+
"user: {new_username}\n"
|
1789 |
+
"password: {new_password}\n"
|
1790 |
+
"\n"
|
1791 |
+
"Thanks."
|
1792 |
+
msgstr "مرحبا.\n"
|
1793 |
+
"\n"
|
1794 |
+
"تم إنشاء حساب لك في {site_address}\n"
|
1795 |
+
"\n"
|
1796 |
+
"تفاصيل المستخدم الخاصة بك:\n"
|
1797 |
+
"المستخدم: {new username}\n"
|
1798 |
+
"كلمة المرور: {new_password}\n"
|
1799 |
+
"\n"
|
1800 |
+
"شكرا."
|
1801 |
+
|
1802 |
+
#:
|
1803 |
+
msgid "Happy Birthday!"
|
1804 |
+
msgstr "عيد ميلاد سعيد!"
|
1805 |
+
|
1806 |
+
#:
|
1807 |
+
msgid "Dear {client_name},\n"
|
1808 |
+
"\n"
|
1809 |
+
"Happy birthday!\n"
|
1810 |
+
"We wish you all the best.\n"
|
1811 |
+
"May you and your family be happy and healthy.\n"
|
1812 |
+
"\n"
|
1813 |
+
"Thank you for choosing our company.\n"
|
1814 |
+
"\n"
|
1815 |
+
"{company_name}\n"
|
1816 |
+
"{company_phone}\n"
|
1817 |
+
"{company_website}"
|
1818 |
+
msgstr "عزيزي {client_name} ،\n"
|
1819 |
+
"\n"
|
1820 |
+
"عيد مولد سعيد!\n"
|
1821 |
+
"نتمنى لكم كل التوفيق.\n"
|
1822 |
+
"نرجو أن تكون أنت وعائلتك سعيدًا وصحيًا.\n"
|
1823 |
+
"\n"
|
1824 |
+
"شكرا لكم لاختيار شركتنا.\n"
|
1825 |
+
"\n"
|
1826 |
+
"{company_name}\n"
|
1827 |
+
"{company_phone}\n"
|
1828 |
+
"{company_website}"
|
1829 |
+
|
1830 |
+
#:
|
1831 |
+
msgid "Dear {client_name}.\n"
|
1832 |
+
"Your booking of {service_name} on {appointment_date} at {appointment_time} has been rejected.\n"
|
1833 |
+
"Reason: {cancellation_reason}\n"
|
1834 |
+
"Thank you for choosing our company.\n"
|
1835 |
+
"{company_name}\n"
|
1836 |
+
"{company_phone}\n"
|
1837 |
+
"{company_website}"
|
1838 |
+
msgstr "عزيزي {client_name}.\n"
|
1839 |
+
"تم رفض حجز {service_name} في {date_date} في {appointment_date}.\n"
|
1840 |
+
"السبب: {cancellation_reason}\n"
|
1841 |
+
"شكرا لكم لاختيار شركتنا.\n"
|
1842 |
+
"{company_name}\n"
|
1843 |
+
"{company_phone}\n"
|
1844 |
+
"{company_website}"
|
1845 |
+
|
1846 |
+
#:
|
1847 |
+
msgid "Hello.\n"
|
1848 |
+
"The following booking has been rejected.\n"
|
1849 |
+
"Reason: {cancellation_reason}\n"
|
1850 |
+
"Service: {service_name}\n"
|
1851 |
+
"Date: {appointment_date}\n"
|
1852 |
+
"Time: {appointment_time}\n"
|
1853 |
+
"Client name: {client_name}\n"
|
1854 |
+
"Client phone: {client_phone}\n"
|
1855 |
+
"Client email: {client_email}"
|
1856 |
+
msgstr "مرحبا.\n"
|
1857 |
+
"تم رفض الحجز التالي.\n"
|
1858 |
+
"السبب: {cancellation_reason}\n"
|
1859 |
+
"الخدمة: {service_name}\n"
|
1860 |
+
"التاريخ: {appointment_date}\n"
|
1861 |
+
"الوقت: {appointment_time}\n"
|
1862 |
+
"اسم العميل: {client_name}\n"
|
1863 |
+
"هاتف العميل: {client_phone}\n"
|
1864 |
+
"البريد الإلكتروني للعميل: {client_email}"
|
1865 |
+
|
1866 |
+
#:
|
1867 |
+
msgid "Hello.\n"
|
1868 |
+
"An account was created for you at {site_address}\n"
|
1869 |
+
"Your user details:\n"
|
1870 |
+
"user: {new_username}\n"
|
1871 |
+
"password: {new_password}\n"
|
1872 |
+
"\n"
|
1873 |
+
"Thanks."
|
1874 |
+
msgstr "مرحبا.\n"
|
1875 |
+
"تم إنشاء حساب لك في {site_address}\n"
|
1876 |
+
"تفاصيل المستخدم الخاصة بك:\n"
|
1877 |
+
"المستخدم: {new username}\n"
|
1878 |
+
"كلمة المرور: {new_password}\n"
|
1879 |
+
"شكرا."
|
1880 |
+
|
1881 |
+
#:
|
1882 |
+
msgid "Dear {client_name},\n"
|
1883 |
+
"Happy birthday!\n"
|
1884 |
+
"We wish you all the best.\n"
|
1885 |
+
"May you and your family be happy and healthy.\n"
|
1886 |
+
"Thank you for choosing our company.\n"
|
1887 |
+
"{company_name}\n"
|
1888 |
+
"{company_phone}\n"
|
1889 |
+
"{company_website}"
|
1890 |
+
msgstr "عزيزي {client_name} ،\n"
|
1891 |
+
"عيد مولد سعيد!\n"
|
1892 |
+
"نتمنى لكم كل التوفيق.\n"
|
1893 |
+
"نرجو أن تكون أنت وعائلتك سعيدًا وصحيًا.\n"
|
1894 |
+
"شكرا لكم لاختيار شركتنا.\n"
|
1895 |
+
"{company_name}\n"
|
1896 |
+
"{company_phone}\n"
|
1897 |
+
"{company_website}"
|
1898 |
+
|
1899 |
+
#:
|
1900 |
+
msgid "Back"
|
1901 |
+
msgstr "الرجوع"
|
1902 |
+
|
1903 |
+
#:
|
1904 |
+
msgid "Book More"
|
1905 |
+
msgstr "احجز اكثر"
|
1906 |
+
|
1907 |
+
#:
|
1908 |
+
msgid "Below you can find a list of services selected for booking.\n"
|
1909 |
+
"Click BOOK MORE if you want to add more services."
|
1910 |
+
msgstr "أدناه يمكنك العثور على قائمة من الخدمات المختارة للحجز.\n"
|
1911 |
+
"انقر على احجز المزيد إذا كنت ترغب في إضافة المزيد من الخدمات."
|
1912 |
+
|
1913 |
+
#:
|
1914 |
+
msgid "Thank you! Your booking is complete. An email with details of your booking has been sent to you."
|
1915 |
+
msgstr "شكرا لكم! تم اكتمال الحجز الخاص بك. تم إرسال بريد إلكتروني مع تفاصيل الحجز الخاص بك."
|
1916 |
+
|
1917 |
+
#:
|
1918 |
+
msgid "You selected a booking for {service_name} by {staff_name} at {service_time} on {service_date}. The price for the service is {service_price}.\n"
|
1919 |
+
"Please provide your details in the form below to proceed with booking."
|
1920 |
+
msgstr "لقد حددت حجزًا لـ {service_name} بواسطة {staff_name} في {service_time} في {service_date}. سعر الخدمة هو {service_price}.\n"
|
1921 |
+
"يرجى تقديم التفاصيل الخاصة بك في النموذج أدناه للمضي قدما في الحجز."
|
1922 |
+
|
1923 |
+
#:
|
1924 |
+
msgid "Please tell us how you would like to pay: "
|
1925 |
+
msgstr "من فضلك أخبرنا كيف ترغب في الدفع:"
|
1926 |
+
|
1927 |
+
#:
|
1928 |
+
msgid "Please select service: "
|
1929 |
+
msgstr "يرجى اختيار الخدمة:"
|
1930 |
+
|
1931 |
+
#:
|
1932 |
+
msgid "Below you can find a list of available time slots for {service_name} by {staff_name}.\n"
|
1933 |
+
"Click on a time slot to proceed with booking."
|
1934 |
+
msgstr "في ما يلي يمكنك العثور على قائمة من الفترات الزمنية المتاحة لـ {service_name} بواسطة {staff_name}.\n"
|
1935 |
+
"انقر على خانة الوقت للمضي قدما في الحجز."
|
1936 |
+
|
1937 |
+
#:
|
1938 |
+
msgid "Card Security Code"
|
1939 |
+
msgstr "رمز أمان البطاقة"
|
1940 |
+
|
1941 |
+
#:
|
1942 |
+
msgid "Expiration Date"
|
1943 |
+
msgstr "تاريخ إنتهاء الصلاحية"
|
1944 |
+
|
1945 |
+
#:
|
1946 |
+
msgid "Credit Card Number"
|
1947 |
+
msgstr "رقم بطاقه الائتمان"
|
1948 |
+
|
1949 |
+
#:
|
1950 |
+
msgid "Coupon"
|
1951 |
+
msgstr "كوبون"
|
1952 |
+
|
1953 |
+
#:
|
1954 |
+
msgid "Employee"
|
1955 |
+
msgstr "موظف"
|
1956 |
+
|
1957 |
+
#:
|
1958 |
+
msgid "Finish by"
|
1959 |
+
msgstr "الانتهاء من قبل"
|
1960 |
+
|
1961 |
+
#:
|
1962 |
+
msgid "I will pay now with Credit Card"
|
1963 |
+
msgstr "سوف أدفع الآن باستخدام بطاقة الائتمان"
|
1964 |
+
|
1965 |
+
#:
|
1966 |
+
msgid "I will pay locally"
|
1967 |
+
msgstr "سوف أدفع محلياً"
|
1968 |
+
|
1969 |
+
#:
|
1970 |
+
msgid "I will pay now with Mollie"
|
1971 |
+
msgstr "سوف أدفع الآن باستخدام مولي"
|
1972 |
+
|
1973 |
+
#:
|
1974 |
+
msgid "I will pay now with PayPal"
|
1975 |
+
msgstr "سوف أدفع الآن باستخدام PayPal"
|
1976 |
+
|
1977 |
+
#:
|
1978 |
+
msgid "I'm available on or after"
|
1979 |
+
msgstr "أنا متاح في أو بعد"
|
1980 |
+
|
1981 |
+
#:
|
1982 |
+
msgid "Start from"
|
1983 |
+
msgstr "يبدأ من"
|
1984 |
+
|
1985 |
+
#:
|
1986 |
+
msgid "Please tell us your email"
|
1987 |
+
msgstr "من فضلك أخبرنا عن البريد الإلكتروني الخاص بك"
|
1988 |
+
|
1989 |
+
#:
|
1990 |
+
msgid "Please select an employee"
|
1991 |
+
msgstr "يرجى اختيار موظف"
|
1992 |
+
|
1993 |
+
#:
|
1994 |
+
msgid "Please tell us your name"
|
1995 |
+
msgstr "من فضلك، أخبرنا عن اسمك"
|
1996 |
+
|
1997 |
+
#:
|
1998 |
+
msgid "Please tell us your first name"
|
1999 |
+
msgstr "من فضلك، أخبرنا عن اسمك الأول"
|
2000 |
+
|
2001 |
+
#:
|
2002 |
+
msgid "Please tell us your last name"
|
2003 |
+
msgstr "من فضلك، أخبرنا عن اسمك الأخير"
|
2004 |
+
|
2005 |
+
#:
|
2006 |
+
msgid "Please tell us your phone"
|
2007 |
+
msgstr "من فضلك، أخبرنا هاتفك"
|
2008 |
+
|
2009 |
+
#:
|
2010 |
+
msgid "The selected time is not available anymore. Please, choose another time slot."
|
2011 |
+
msgstr "الوقت المختار غير متوفر بعد الآن. من فضلك، اختار فترة زمنية أخرى."
|
2012 |
+
|
2013 |
+
#:
|
2014 |
+
msgid "The highlighted time is not available anymore. Please, choose another time slot."
|
2015 |
+
msgstr "الوقت المحدد غير متوفر بعد الآن. من فضلك، اختار فترة زمنية أخرى."
|
2016 |
+
|
2017 |
+
#:
|
2018 |
+
msgid "Done"
|
2019 |
+
msgstr "تم"
|
2020 |
+
|
2021 |
+
#:
|
2022 |
+
msgid "Signed up"
|
2023 |
+
msgstr "تم تسجيل الدخول"
|
2024 |
+
|
2025 |
+
#:
|
2026 |
+
msgid "Capacity"
|
2027 |
+
msgstr "السعه"
|
2028 |
+
|
2029 |
+
#:
|
2030 |
+
msgid "Appointment"
|
2031 |
+
msgstr "الموعد"
|
2032 |
+
|
2033 |
+
#:
|
2034 |
+
msgid "sent to our system"
|
2035 |
+
msgstr "تم ارسلها الى نظامنا"
|
2036 |
+
|
2037 |
+
#:
|
2038 |
+
msgid "more"
|
2039 |
+
msgstr "أكثر"
|
2040 |
+
|
2041 |
+
#:
|
2042 |
+
msgid "less"
|
2043 |
+
msgstr "أقل"
|
2044 |
+
|
2045 |
+
#:
|
2046 |
+
msgid "Bookly SMS weekly summary"
|
2047 |
+
msgstr "Bookly SMS موجز الأسبوع"
|
2048 |
+
|
2049 |
+
#:
|
2050 |
+
msgid "Your don't have enough Bookly SMS credits to send this message. Please add funds to your balance and try again."
|
2051 |
+
msgstr "ليس لديك ما يكفي من أرصدة Bookly SMS لإرسال هذه الرسالة. يرجى إضافة الأموال إلى رصيدك والمحاولة مرة أخرى."
|
2052 |
+
|
2053 |
+
#:
|
2054 |
+
msgid "Failed to send SMS."
|
2055 |
+
msgstr "فشل في إرسال الرسائل القصيرة."
|
2056 |
+
|
2057 |
+
#:
|
2058 |
+
msgid "Phone number is empty."
|
2059 |
+
msgstr "رقم الهاتف فارغ."
|
2060 |
+
|
2061 |
+
#:
|
2062 |
+
msgid "Queued"
|
2063 |
+
msgstr "في قائمة الانتظار"
|
2064 |
+
|
2065 |
+
#:
|
2066 |
+
msgid "Out of credit"
|
2067 |
+
msgstr "خارج من الائتمان"
|
2068 |
+
|
2069 |
+
#:
|
2070 |
+
msgid "Country out of service"
|
2071 |
+
msgstr "البلد خارج الخدمة"
|
2072 |
+
|
2073 |
+
#:
|
2074 |
+
msgid "Sending"
|
2075 |
+
msgstr "إرسال"
|
2076 |
+
|
2077 |
+
#:
|
2078 |
+
msgid "Sent"
|
2079 |
+
msgstr "أرسلت"
|
2080 |
+
|
2081 |
+
#:
|
2082 |
+
msgid "Delivered"
|
2083 |
+
msgstr "تم التوصيل"
|
2084 |
+
|
2085 |
+
#:
|
2086 |
+
msgid "Failed"
|
2087 |
+
msgstr "فشل"
|
2088 |
+
|
2089 |
+
#:
|
2090 |
+
msgid "Undelivered"
|
2091 |
+
msgstr "لم يتم الاستلام"
|
2092 |
+
|
2093 |
+
#:
|
2094 |
+
msgid "Default"
|
2095 |
+
msgstr "افتراضي"
|
2096 |
+
|
2097 |
+
#:
|
2098 |
+
msgid "Declined"
|
2099 |
+
msgstr "رفض"
|
2100 |
+
|
2101 |
+
#:
|
2102 |
+
msgid "Cancelled"
|
2103 |
+
msgstr "ألغيت"
|
2104 |
+
|
2105 |
+
#:
|
2106 |
+
msgid "Error connecting to server."
|
2107 |
+
msgstr "خطأ في الاتصال بالسيرفر."
|
2108 |
+
|
2109 |
+
#:
|
2110 |
+
msgid "Dear Bookly SMS customer.\n"
|
2111 |
+
"We would like to notify you that your Bookly SMS balance fell lower than 5 USD. To use our service without interruptions please recharge your balance by visiting Bookly SMS page <a href='%s'>here</a>.\n"
|
2112 |
+
"\n"
|
2113 |
+
"If you want to stop receiving these notifications, please update your settings <a href='%s'>here</a>."
|
2114 |
+
msgstr "عزيزي العميل SMS Bookly.\n"
|
2115 |
+
"نود أن نخطرك بأن رصيد SMS Bookly الخاص بك قد انخفض إلى أقل من 5 دولارات أمريكية. لاستخدام خدمتنا دون انقطاع ، يرجى إعادة شحن رصيدك عن طريق زيارة صفحة Bookly SMS <a href='%s'> هنا </a>.\n"
|
2116 |
+
"\n"
|
2117 |
+
"إذا كنت تريد إيقاف تلقي هذه الإشعارات ، فيرجى تحديث الإعدادات <a href='%s'> هنا </a>."
|
2118 |
+
|
2119 |
+
#:
|
2120 |
+
msgid "Bookly SMS - Low Balance"
|
2121 |
+
msgstr "SMS Bookly - رصيد منخفض"
|
2122 |
+
|
2123 |
+
#:
|
2124 |
+
msgid "Empty password."
|
2125 |
+
msgstr "كلمة السر فارغة."
|
2126 |
+
|
2127 |
+
#:
|
2128 |
+
msgid "Incorrect password."
|
2129 |
+
msgstr "كلمة سر غير صحيحة."
|
2130 |
+
|
2131 |
+
#:
|
2132 |
+
msgid "Incorrect recovery code."
|
2133 |
+
msgstr "رمز الاسترداد غير صحيح."
|
2134 |
+
|
2135 |
+
#:
|
2136 |
+
msgid "Incorrect email or password."
|
2137 |
+
msgstr "البريد الإلكتروني أو كلمة السرغير صحيحة."
|
2138 |
+
|
2139 |
+
#:
|
2140 |
+
msgid "Incorrect sender ID"
|
2141 |
+
msgstr "رقم تعريف المرسل غير صحيح"
|
2142 |
+
|
2143 |
+
#:
|
2144 |
+
msgid "Pending sender ID already exists."
|
2145 |
+
msgstr "رقم تعريف المرسل موجود بالفعل."
|
2146 |
+
|
2147 |
+
#:
|
2148 |
+
msgid "Recovery code expired."
|
2149 |
+
msgstr "رمز الاسترداد انتهت صلاحيته."
|
2150 |
+
|
2151 |
+
#:
|
2152 |
+
msgid "Error sending email."
|
2153 |
+
msgstr "خطأ في إرسال البريد الإلكتروني."
|
2154 |
+
|
2155 |
+
#:
|
2156 |
+
msgid "User not found."
|
2157 |
+
msgstr "المستخدم ليس موجود."
|
2158 |
+
|
2159 |
+
#:
|
2160 |
+
msgid "Email already in use."
|
2161 |
+
msgstr "البريد الالكتروني قيد الاستخدام."
|
2162 |
+
|
2163 |
+
#:
|
2164 |
+
msgid "Invalid email"
|
2165 |
+
msgstr "بريد إلكتروني خاطئ"
|
2166 |
+
|
2167 |
+
#:
|
2168 |
+
msgid "This email is already in use"
|
2169 |
+
msgstr "هذا البريد الالكتروني مستخدم من قبل"
|
2170 |
+
|
2171 |
+
#:
|
2172 |
+
msgid "\"%s\" is too long (%d characters max)."
|
2173 |
+
msgstr "\"%s\" طويل جدًا (%d حرف كحد أقصى)."
|
2174 |
+
|
2175 |
+
#:
|
2176 |
+
msgid "Invalid number"
|
2177 |
+
msgstr "رقم غير صحيح"
|
2178 |
+
|
2179 |
+
#:
|
2180 |
+
msgid "Invalid date"
|
2181 |
+
msgstr "تاريخ غير صحيح"
|
2182 |
+
|
2183 |
+
#:
|
2184 |
+
msgid "Invalid time"
|
2185 |
+
msgstr "وقت غير صحيح"
|
2186 |
+
|
2187 |
+
#:
|
2188 |
+
msgid "Your %s: %s is already associated with another %s.<br/>Press Update if we should update your user data, or press Cancel to edit entered data."
|
2189 |
+
msgstr "خاصة بك %s% :s مرتبط بالفعل بـ %s أخرى. <br/> اضغط على تحديث إذا كان يجب تحديث بيانات المستخدم الخاصة بك ، أو اضغط على إلغاء لتعديل البيانات المدخلة."
|
2190 |
+
|
2191 |
+
#:
|
2192 |
+
msgid "Rejected"
|
2193 |
+
msgstr "مرفوض"
|
2194 |
+
|
2195 |
+
#:
|
2196 |
+
msgid "Notification to customer about approved appointment"
|
2197 |
+
msgstr "إخطار العميل بشأن الموعد المعتمد"
|
2198 |
+
|
2199 |
+
#:
|
2200 |
+
msgid "Notification to customer about approved appointments"
|
2201 |
+
msgstr "إخطار العميل بشأن المواعيد المعتمدة"
|
2202 |
+
|
2203 |
+
#:
|
2204 |
+
msgid "Notification to customer about cancelled appointment"
|
2205 |
+
msgstr "إخطار العميل بشأن الموعد الملغاه"
|
2206 |
+
|
2207 |
+
#:
|
2208 |
+
msgid "Notification to customer about rejected appointment"
|
2209 |
+
msgstr "إخطار العميل بشأن الموعد المرفوض"
|
2210 |
+
|
2211 |
+
#:
|
2212 |
+
msgid "Follow-up message in the same day after appointment (requires cron setup)"
|
2213 |
+
msgstr "رسالة المتابعة في نفس اليوم بعد الموعد (يتطلب إعداد cron)"
|
2214 |
+
|
2215 |
+
#:
|
2216 |
+
msgid "Notification to customer about their WordPress user login details"
|
2217 |
+
msgstr "إخطار العميل عن تفاصيل تسجيل دخول مستخدم WordPress الخاصة به"
|
2218 |
+
|
2219 |
+
#:
|
2220 |
+
msgid "Notification to customer about pending appointment"
|
2221 |
+
msgstr "إخطار العميل بشأن الموعد المعلق"
|
2222 |
+
|
2223 |
+
#:
|
2224 |
+
msgid "Evening reminder to customer about next day appointment (requires cron setup)"
|
2225 |
+
msgstr "تذكير مسائي للعملاء حول موعد اليوم التالي (يتطلب إعداد cron)"
|
2226 |
+
|
2227 |
+
#:
|
2228 |
+
msgid "1st reminder to customer about upcoming appointment (requires cron setup)"
|
2229 |
+
msgstr "أول تذكير للعميل حول الموعد المرتقب (يتطلب إعداد cron)"
|
2230 |
+
|
2231 |
+
#:
|
2232 |
+
msgid "2nd reminder to customer about upcoming appointment (requires cron setup)"
|
2233 |
+
msgstr "التذكير الثاني للعميل بشأن الموعد القادم (يتطلب إعداد cron)"
|
2234 |
+
|
2235 |
+
#:
|
2236 |
+
msgid "3rd reminder to customer about upcoming appointment (requires cron setup)"
|
2237 |
+
msgstr "التذكير الثالث للعميل بشأن الموعد القادم (يتطلب إعداد cron)"
|
2238 |
+
|
2239 |
+
#:
|
2240 |
+
msgid "Customer birthday greeting (requires cron setup)"
|
2241 |
+
msgstr "تحية عيد ميلاد العميل (يتطلب إعداد cron)"
|
2242 |
+
|
2243 |
+
#:
|
2244 |
+
msgid "Evening notification with the next day agenda to staff member (requires cron setup)"
|
2245 |
+
msgstr "الإخطار المسائي مع أجندة اليوم التالي للموظف (يتطلب إعداد cron)"
|
2246 |
+
|
2247 |
+
#:
|
2248 |
+
msgid "Notification to staff member about approved appointment"
|
2249 |
+
msgstr "إخطار الموظف بشأن التعيين المعتمد"
|
2250 |
+
|
2251 |
+
#:
|
2252 |
+
msgid "Notification to staff member about cancelled appointment"
|
2253 |
+
msgstr "إخطار الموظف حول الموعد الملغي"
|
2254 |
+
|
2255 |
+
#:
|
2256 |
+
msgid "Notification to staff member about rejected appointment"
|
2257 |
+
msgstr "إخطار الموظف بشأن التعيين المرفوض"
|
2258 |
+
|
2259 |
+
#:
|
2260 |
+
msgid "Notification to staff member about pending appointment"
|
2261 |
+
msgstr "إخطار الموظف بشأن التعيين المعلق"
|
2262 |
+
|
2263 |
+
#:
|
2264 |
+
msgid "Test message"
|
2265 |
+
msgstr "رسالة اختبار"
|
2266 |
+
|
2267 |
+
#:
|
2268 |
+
msgid "Local"
|
2269 |
+
msgstr "محلي"
|
2270 |
+
|
2271 |
+
#:
|
2272 |
+
msgid "Completed"
|
2273 |
+
msgstr "منجز"
|
2274 |
+
|
2275 |
+
#:
|
2276 |
+
msgid "%d week"
|
2277 |
+
msgid_plural "%d weeks"
|
2278 |
+
msgstr[0] "%d أسبوع"
|
2279 |
+
msgstr[1] "%d أسبوع"
|
2280 |
+
msgstr[2] "%d أسابيع"
|
2281 |
+
msgstr[3] "%d أسابيع"
|
2282 |
+
msgstr[4] "%d أسابيع"
|
2283 |
+
msgstr[5] "%d أسابيع"
|
2284 |
+
|
2285 |
+
#:
|
2286 |
+
msgid "%d h"
|
2287 |
+
msgstr "%d ساعة"
|
2288 |
+
|
2289 |
+
#:
|
2290 |
+
msgid "%d min"
|
2291 |
+
msgstr "%d دقيقة"
|
2292 |
+
|
2293 |
+
#:
|
2294 |
+
msgid "Form view in case of successful booking"
|
2295 |
+
msgstr "عرض الاستمارة في حالة الحجز الناجح"
|
2296 |
+
|
2297 |
+
#:
|
2298 |
+
msgid "Form view in case the number of bookings exceeds the limit"
|
2299 |
+
msgstr "عرض الاستمارة في حال تجاوز عدد الحجوزات الحد"
|
2300 |
+
|
2301 |
+
#:
|
2302 |
+
msgid "Form view in case of payment has been accepted for processing"
|
2303 |
+
msgstr "عرض الاستمارة في حالة قبول الدفع للمعالجة"
|
2304 |
+
|
2305 |
+
#:
|
2306 |
+
msgid "No result found"
|
2307 |
+
msgstr "لم يتم العثور على نتائج"
|
2308 |
+
|
2309 |
+
#:
|
2310 |
+
msgid "Package"
|
2311 |
+
msgstr "باقة"
|
2312 |
+
|
2313 |
+
#:
|
2314 |
+
msgid "Package schedule"
|
2315 |
+
msgstr "جدول الباقات"
|
2316 |
+
|
2317 |
+
#:
|
2318 |
+
msgid "messages"
|
2319 |
+
msgstr "الرسائل"
|
2320 |
+
|
2321 |
+
#:
|
2322 |
+
msgid "First"
|
2323 |
+
msgstr "الأول"
|
2324 |
+
|
2325 |
+
#:
|
2326 |
+
msgid "Previous"
|
2327 |
+
msgstr "السابق"
|
2328 |
+
|
2329 |
+
#:
|
2330 |
+
msgid "Last"
|
2331 |
+
msgstr "الاخير"
|
2332 |
+
|
2333 |
+
#:
|
2334 |
+
msgid "URL of reject appointment link (to use inside <a> tag)"
|
2335 |
+
msgstr "رابط عنوان URL لرفض الموعد (لاستخدامه داخل علامة <a>)"
|
2336 |
+
|
2337 |
+
#:
|
2338 |
+
msgid "Custom notification"
|
2339 |
+
msgstr "إشعار مخصص"
|
2340 |
+
|
2341 |
+
#:
|
2342 |
+
msgid "Customer's birthday"
|
2343 |
+
msgstr "عيد ميلاد العميل"
|
2344 |
+
|
2345 |
+
#:
|
2346 |
+
msgid "days"
|
2347 |
+
msgstr "أيام"
|
2348 |
+
|
2349 |
+
#:
|
2350 |
+
msgid "after"
|
2351 |
+
msgstr "بعد"
|
2352 |
+
|
2353 |
+
#:
|
2354 |
+
msgid "at"
|
2355 |
+
msgstr "في"
|
2356 |
+
|
2357 |
+
#:
|
2358 |
+
msgid "before"
|
2359 |
+
msgstr "قبل"
|
2360 |
+
|
2361 |
+
#:
|
2362 |
+
msgid "Custom"
|
2363 |
+
msgstr "مخصص"
|
2364 |
+
|
2365 |
+
#:
|
2366 |
+
msgid "Start and end times of the appointment"
|
2367 |
+
msgstr "بداية ونهاية أوقات الموعد"
|
2368 |
+
|
2369 |
+
#:
|
2370 |
+
ms
|