{"id":8343,"date":"2026-07-02T09:17:52","date_gmt":"2026-07-02T07:17:52","guid":{"rendered":"https:\/\/www.sportmotorik.com\/?page_id=8343"},"modified":"2026-07-16T15:34:15","modified_gmt":"2026-07-16T13:34:15","slug":"book-in-vienna","status":"publish","type":"page","link":"https:\/\/www.sportmotorik.com\/en\/book-in-vienna\/","title":{"rendered":"Book an Appointment in Vienna"},"content":{"rendered":"<div id='av_section_1'  class='avia-section av-1ri1n-c302d605f0cff0df12ca55ef1c58a215 main_color avia-section-large avia-no-border-styling  avia-builder-el-0  avia-builder-el-no-sibling  avia-bg-style-scroll container_wrap fullsize'  ><div class='container av-section-cont-open' ><main  class='template-page content  av-content-full alpha units'><div class='post-entry post-entry-type-page post-entry-8343'><div class='entry-content-wrapper clearfix'>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-wvcf-58bfae74dbfa337193a9166c9ce1b093\">\n.flex_column.av-wvcf-58bfae74dbfa337193a9166c9ce1b093{\nborder-radius:0px 0px 0px 0px;\npadding:0px 0px 0px 0px;\n}\n<\/style>\n<div  class='flex_column av-wvcf-58bfae74dbfa337193a9166c9ce1b093 av_one_full  avia-builder-el-1  el_before_av_one_full  avia-builder-el-first  first flex_column_div av-zero-column-padding  '     ><style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-8b1u6-f93016856ef8619961214bcfb74c7e1c\">\n#top .av-special-heading.av-8b1u6-f93016856ef8619961214bcfb74c7e1c{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-8b1u6-f93016856ef8619961214bcfb74c7e1c .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-8b1u6-f93016856ef8619961214bcfb74c7e1c .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-8b1u6-f93016856ef8619961214bcfb74c7e1c av-special-heading-h1 blockquote modern-quote modern-centered  avia-builder-el-2  avia-builder-el-no-sibling  av-linked-heading'><h1 class='av-special-heading-tag '  >Book an Appointment in Vienna<\/h1><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div><\/div>\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-49y8bq-2625f414a2a5cb9496b860ff055067b4\">\n.flex_column.av-49y8bq-2625f414a2a5cb9496b860ff055067b4{\nborder-radius:0px 0px 0px 0px;\npadding:0px 0px 0px 0px;\n}\n<\/style>\n<div  class='flex_column av-49y8bq-2625f414a2a5cb9496b860ff055067b4 av_one_full  avia-builder-el-3  el_after_av_one_full  avia-builder-el-last  first flex_column_div av-zero-column-padding  column-top-margin'     ><section  class='av_textblock_section av-1xeofa-640ce01c84ba26b1619838c073ffb045 '  ><div class='avia_textblock' >\t\t\t\t\t<div class=\"o365_ms_booking_data_view\">\r\n\t\t\t\t\t<link href='\/wp-content\/themes\/sportmotorik\/o365-display\/ms-booking\/views\/buchungsform-digihouse.css' rel='stylesheet' \/>\n<link href='https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/css\/ms_booking_long_form.css' rel='stylesheet' \/>\n<link href='https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/css\/long_form_tpl_css.css' rel='stylesheet' \/>\n<link href='https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/css\/fullcalendar.min.css' rel='stylesheet' \/>\n<link href='https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/css\/font-awesome.css' rel='stylesheet' \/>\n<link href='https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/css\/qtip.css' rel='stylesheet' \/>\n<link href='https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/css\/fullcalendar.print.min.css' rel='stylesheet' media='print' \/>\n<link href=\"https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365\/css\/calendar.css\" rel=\"stylesheet\" \/>\n<script type=\"text\/javascript\" src=\"https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/js\/jstz-1.0.4.min.js\"><\/script>\n<script src='https:\/\/www.sportmotorik.com\/wp-content\/plugins\/o365-wp-ms-booking\/assets\/js\/qtip.js'><\/script>\n<!-- Full Calendar Js for Locale -->\n\t<script src=\"https:\/\/unpkg.com\/moment@2.27.0\/min\/moment.min.js\"><\/script>\n\t<script src=\"https:\/\/unpkg.com\/fullcalendar@3.10.2\/dist\/fullcalendar.min.js\"><\/script>\n\t<script src=\"https:\/\/unpkg.com\/fullcalendar@3.10.2\/dist\/locale-all.js\"><\/script>\n<!-- Full Calendar Js for Locale -->\n  \n <div class=\"ms_booking_service_wrapper o365-booking__form\">\n\t<span id=\"ms_booking_service\">\n\t\tSelect Service\t<\/span>\n  <div class=\"ms_booking_services_wrapper\">\n\t<div class='o365_booking_services_wrapper'>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"194\" data-id=\"a9e8d3e3-26b7-4ea7-9806-eacf43dd7c29\" data-name=\"K\u00f6rperanalyse\" data-img-name=\"K\u00f6rperanalyse\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>K\u00f6rperanalyse<\/span>\n\t<span>\n\t\t1 hour  <\/br>\n\t\t<span>\u20ac194<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac194\" data-duration=\"3600\" data-service=\"\" data-title=\"K\u00f6rperanalyse\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"95\" data-id=\"32f5d4f3-aa94-4453-8775-8599224beac7\" data-name=\"Ganganalyse Klein\" data-img-name=\"Ganganalyse Klein\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Ganganalyse Klein<\/span>\n\t<span>\n\t\t  30 minutes<\/br>\n\t\t<span>\u20ac95<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac95\" data-duration=\"1800\" data-service=\"\" data-title=\"Ganganalyse Klein\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"145\" data-id=\"1ed3f8dd-caa3-43f0-8455-a971085e416d\" data-name=\"Ganganalyse Gro\u00df\" data-img-name=\"Ganganalyse Gro\u00df\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Ganganalyse Gro\u00df<\/span>\n\t<span>\n\t\t1 hour  <\/br>\n\t\t<span>\u20ac145<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac145\" data-duration=\"3600\" data-service=\"\" data-title=\"Ganganalyse Gro\u00df\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"145\" data-id=\"014e6cd6-639d-4a9c-8e1a-425142bf9de8\" data-name=\"Laufanalyse Health\" data-img-name=\"Laufanalyse Health\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Laufanalyse Health<\/span>\n\t<span>\n\t\t1 hour  <\/br>\n\t\t<span>\u20ac145<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac145\" data-duration=\"3600\" data-service=\"\" data-title=\"Laufanalyse Health\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"199\" data-id=\"5bdd57ad-9f80-4756-acb6-1e22a2698444\" data-name=\"Laufanalyse Performance\" data-img-name=\"Laufanalyse Performance\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Laufanalyse Performance<\/span>\n\t<span>\n\t\t1 hour 30 minutes<\/br>\n\t\t<span>\u20ac199<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac199\" data-duration=\"5400\" data-service=\"\" data-title=\"Laufanalyse Performance\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"79\" data-id=\"a841cca3-1ba0-4337-896d-c472cbbab47b\" data-name=\"Laufanalyse Performance Upgrade\" data-img-name=\"Laufanalyse Performance Upgrade\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Laufanalyse Performance Upgrade<\/span>\n\t<span>\n\t\t  30 minutes<\/br>\n\t\t<span>\u20ac79<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac79\" data-duration=\"1800\" data-service=\"\" data-title=\"Laufanalyse Performance Upgrade\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"145\" data-id=\"eff3f53c-c3f5-42b8-8e0e-d924637e1044\" data-name=\"Haltungsanalyse\" data-img-name=\"Haltungsanalyse\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Haltungsanalyse<\/span>\n\t<span>\n\t\t1 hour  <\/br>\n\t\t<span>\u20ac145<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac145\" data-duration=\"3600\" data-service=\"\" data-title=\"Haltungsanalyse\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"0\" data-id=\"0f8cf8a9-a28e-488b-ab19-7ad41c79b243\" data-name=\"Haltungsanalyse Kontrollmessung\" data-img-name=\"Haltungsanalyse Kontrollmessung\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Haltungsanalyse Kontrollmessung<\/span>\n\t<span>\n\t\t  30 minutes<\/br>\n\t\t<span>\u20ac0<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac0\" data-duration=\"1800\" data-service=\"Nachdem eine Haltungsanalyse durchgef\u00fchrt wurde ist einmalig eine Kontrollmessung 2-3 Monate sp\u00e4ter inklusive \" data-title=\"Haltungsanalyse Kontrollmessung\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"99\" data-id=\"52937a01-2a4b-4595-8659-4de042796154\" data-name=\"Kinder Gang-\/Laufanalyse\" data-img-name=\"Kinder Gang- Laufanalyse\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Kinder Gang-\/Laufanalyse<\/span>\n\t<span>\n\t\t1 hour  <\/br>\n\t\t<span>\u20ac99<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac99\" data-duration=\"3600\" data-service=\"\" data-title=\"Kinder Gang-\/Laufanalyse\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"145\" data-id=\"23a87872-3870-44a0-aba6-6e945d9de5ce\" data-name=\"Sportanalyse Individuell\" data-img-name=\"Sportanalyse Individuell\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Sportanalyse Individuell<\/span>\n\t<span>\n\t\t1 hour  <\/br>\n\t\t<span>\u20ac145<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac145\" data-duration=\"3600\" data-service=\"\" data-title=\"Sportanalyse Individuell\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"49\" data-id=\"0363abb1-3b07-4550-873b-08eb12e225d1\" data-name=\"Re-Check\" data-img-name=\"Re-Check\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Re-Check<\/span>\n\t<span>\n\t\t  30 minutes<\/br>\n\t\t<span>\u20ac49<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac49\" data-duration=\"1800\" data-service=\"\" data-title=\"Re-Check\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"79\" data-id=\"4719d016-5c1c-4d94-9a69-544fccee0c2f\" data-name=\"Re-Check Performance\" data-img-name=\"Re-Check Performance\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Re-Check Performance<\/span>\n\t<span>\n\t\t  30 minutes<\/br>\n\t\t<span>\u20ac79<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac79\" data-duration=\"1800\" data-service=\"\" data-title=\"Re-Check Performance\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"145\" data-id=\"adf10967-c413-4e8d-b327-45b0d4d01aee\" data-name=\"Ganganalyse f\u00fcr Diabetiker\" data-img-name=\"Ganganalyse f\u00fcr Diabetiker\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Ganganalyse f\u00fcr Diabetiker<\/span>\n\t<span>\n\t\t1 hour  <\/br>\n\t\t<span>\u20ac145<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac145\" data-duration=\"3600\" data-service=\"\" data-title=\"Ganganalyse f\u00fcr Diabetiker\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<p class=\"o365_booking_meta\">\n\t\t\t\t\t\t\t\t<span class=\"ms_booking_services\" data-price-type=\"fixedPrice\" data-price=\"55\" data-id=\"feadc1eb-67c7-4ec5-91a9-3cbd55821dff\" data-name=\"Re-Check Zusatz-Kontrollmessung f\u00fcr Diabetiker\" data-img-name=\"Re-Check Zusatz-Kontrollmessung f\u00fcr Diabetiker\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"ms_booking_services_side\">\n\t<span>Re-Check Zusatz-Kontrollmessung f\u00fcr Diabetiker<\/span>\n\t<span>\n\t\t  30 minutes<\/br>\n\t\t<span>\u20ac55<\/span>\n\t<\/span>\n<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<span class=\"o365_booking_services_detail\" data-price=\"\u20ac55\" data-duration=\"1800\" data-service=\"\" data-title=\"Re-Check Zusatz-Kontrollmessung f\u00fcr Diabetiker\" >\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-info-circle\"><\/i>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/p><\/div>\t<input type=\"hidden\" name=\"ms_booking_selected_service\" id=\"ms_booking_selected_service\" data-service-name=\"\" value=\"\" \/>\n  <\/div>\n\t\t<div class=\"ms_booking_calendar_wrapper\">\n\t\t<div class=\"o365_ms__booking_select_date_wrapper\">\n\t\t\t<h3 class=\"o365_ms__booking_select_date\">\n\t\t\t\tSelect time\t\t\t<\/h3>\n\t\t<\/div>\n\t    <div id='calendar'>\n\t\t\t<div class=\"ms_booking_time_slot_wrapper\">\n\t\t\t\t<div class=\"ms_booking_time_slot_wrapper_message_div\"> <span class=\"ms_booking_time_slot_wrapper_message\" >\n\t\t\t\tSelect a service and date to see available times.\t\t\t<\/span> <\/div>\n\t\t\t\t<div class=\"ms_booking_time_slot_data\">\n                \t<label style=\"display:none;\">Select Staff(optional)<\/label>\n\t\t\t\t\t<select name=\"o365_ms_booking_staff\" id=\"o365_ms_booking_staff\" style=\"display:none !important;\" >\n\t\t\t\t\t\t<option value=\"\">Anyone<\/option>\n\t\t\t\t\t<\/select>\n\t\t\t\t\t<div id=\"o365_booking_available_time_slot_div\">\n\t\t\t\t\t\t<div id=\"o365_booking_available_time_slot\"><span class=\"digihouse-loader\"><\/span><\/div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"ms_booking_selected_time\" id=\"ms_booking_selected_time\" \/>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"ms_booking_selected_time_stamp\" id=\"ms_booking_selected_time_stamp\" \/>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"ms_booking_selected_time_in_client_timezone\" id=\"ms_booking_selected_time_in_client_timezone\" \/>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"ms_booking_selected_staff_id\" id=\"ms_booking_selected_staff_id\" \/>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t    <\/div>\n\t    <input type=\"hidden\" name=\"ms_booking_selected_date\" id=\"ms_booking_selected_date\" \/>\n\t<\/div>\n\t\t<div class=\"o365_ms__add_your_details_wrapper\">\n\t\t<h3>\n\t\t\tAdd your details\t\t<\/h3>\n\t<\/div>\n\t<div class=\"o365-ms__booking_wrapper\">\n\t\t\n\t\t    <div class=\"o365-ms-booking-form-group\">\n\t\t      <div class=\"o365-ms-booking-form-selectwrap\">\n\t\t\t\t<label class=\"frm_book_label\">Name <span class=\"frm_required\">*<\/span><\/label>  \n\t\t        <input type=\"text\" value=\"\" name=\"o365_ms_booking_customer_name\" id=\"o365_ms_booking_customer_name\" placeholder=\"\"\/>\n\t\t      <\/div>\n\t\t    <\/div>\n\t\t    \n\t\t    <div class=\"o365-ms-booking-form-group\">\n\t\t      <div class=\"o365-ms-booking-form-selectwrap\">\n\t\t\t\t<label class=\"frm_book_label\">E-mail <span class=\"frm_required\">*<\/span><\/label>\n\t\t        <input maxlength=\"255\" type=\"text\" name=\"o365_ms_booking_customer_email\" id=\"o365_ms_booking_customer_email\" placeholder=\"\" value=\"\">\n\t\t      <\/div>\n\t\t    <\/div>\n\t\t\n\t\t<div class=\"o365-ms-booking-form-group\">\n\t\t      <div class=\"o365-ms-booking-form-selectwrap\">\n\t\t\t\t<label class=\"frm_book_label\">Phone Number <span class=\"frm_required\">*<\/span><\/label>\n\t\t        <input value=\"\" type=\"text\" name=\"o365_ms_booking_customer_phone\" id=\"o365_ms_booking_customer_phone\" placeholder=\"\">\n\t\t      <\/div>\n\t\t    <\/div>\n\t\t\n            <div class=\"o365-ms-booking-form-group\" style=\"display: none;\">\n\t\t      <div class=\"o365-ms-booking-form-selectwrap\">\n\t\t        <input maxlength=\"255\" type=\"text\" name=\"o365_ms_booking_customer_address\" id=\"o365_ms_booking_customer_address\" placeholder=\"Address here\">\n\t\t      <\/div>\n\t\t    <\/div>\n\t\t\n\t\t\n\t\t    <div class=\"o365-ms-booking-form-group\">\n\t\t      <div class=\"o365-ms-booking-form-selectwrap\">\n\t\t\t\t<label class=\"frm_book_label\">Message <span class=\"frm_required\"><\/span><\/label>\n\t\t        <textarea placeholder=\"Please let us know if you have any special requests. Thank you.\" id=\"o365_ms_booking_customer_notes\" name=\"o365_ms_booking_customer_notes\" rows=\"5\"><\/textarea>\n\t\t\t\t  \n\t\t      <\/div>\n\t\t    <\/div>\n\t\t\n\t\t\t\t\n\t\t<div class=\"o365-ms-booking-form-group o365_button\">\n\t      \t<div class=\"o365-ms-booking-form-selectwrap\">\n\t        \t<input type=\"button\" name=\"o365_ms_booking_form\" id=\"o365_ms_booking_form\" value=\"Book\" \/>\n\t        \t<span id=\"o365_booking_error_message\"><\/span> \n\t\t\t\t<span id=\"o365_booking_success_message\"><\/span> \n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\n\t\t\n\t<\/div>\n<\/div>\n<div class=\"o365_booking_form_dialog\">\n<div class=\"o365_booking_form_overlay\"><\/div>\n<div class=\"o365_booking_form_container\">\n  <div class=\"o365_booking_form_content\">\n    <div>\n      <h3 class=\"o365_booking_form_service_title\">Initial consult<\/h3>\n    <\/div>\n    <div class=\"o365_booking_form_details\"><span class=\"o365_booking_form_duration_details\">Duration: 1 hour<\/span>\n      <span class=\"o365_booking_form_price_details\"><\/span>\n    <\/div>\n    <div class=\"o365_booking_form_description\">Not sure what you need? Grab 60 minutes with us and we will work with you to understand your goals, and to develop a proposal and price estimate.<\/div>\n  <\/div>\n  \n  <div class=\"o365_booking_form_buttons\">\n    <button type=\"button\" class=\"o365_booking_form_ok_buttons\">OK<\/button>\n  <\/div>\n<\/div>\n<\/div>\n\n<script type=\"text\/javascript\">\n\tjQuery(document).ready(function(e)\n\t{\n\t\tvar serviceprice = '';\n\t\tvar previous_selected_data = '';\n\t\tvar tz = jstz.determine();\n\t\tvar timezone = tz.name();\n\t\tvar selected_service_name = \"\";\n\t\t\n\t\tconst monthNames = [\n\t\"January\", \n\t\"February\", \n\t\"March\", \n\t\"April\", \n\t\"May\", \n\t\"June\",\n\t\"July\", \n\t\"August\", \n\t\"September\", \n\t\"October\", \n\t\"November\", \n\t\"December\"\n];\n\t\t\n\t\tconst weekDays = [\"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\"];\n\t\t\/\/Line 590 to fade off day in the fullcalendar\n\t\tconst weekDaysClass = {\"sunday\":\"fc-sun\", \"monday\":\"fc-mon\", \"tuesday\":\"fc-tue\", \"wednesday\":\"fc-wed\", \"thursday\":\"fc-thu\", \"friday\":\"fc-fri\", \"saturday\":\"fc-sat\"};\n\t\tvar temp_selected_date = \"\";\n\t\tvar temp_selected_year = \"\";\n\t\tvar temp_selected_time = \"\";\n\t\tvar selecteddate_month = \"\";\n\t\tvar temp_selected_staff = \"\";\n\t\tvar staff_ids = {\"a9e8d3e3-26b7-4ea7-9806-eacf43dd7c29\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"32f5d4f3-aa94-4453-8775-8599224beac7\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"1ed3f8dd-caa3-43f0-8455-a971085e416d\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"014e6cd6-639d-4a9c-8e1a-425142bf9de8\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"5bdd57ad-9f80-4756-acb6-1e22a2698444\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"a841cca3-1ba0-4337-896d-c472cbbab47b\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"eff3f53c-c3f5-42b8-8e0e-d924637e1044\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"0f8cf8a9-a28e-488b-ab19-7ad41c79b243\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"52937a01-2a4b-4595-8659-4de042796154\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"23a87872-3870-44a0-aba6-6e945d9de5ce\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"0363abb1-3b07-4550-873b-08eb12e225d1\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"4719d016-5c1c-4d94-9a69-544fccee0c2f\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"adf10967-c413-4e8d-b327-45b0d4d01aee\":[[\"9254de01-a932-4691-abef-c921d271508a\"]],\"feadc1eb-67c7-4ec5-91a9-3cbd55821dff\":[[\"9254de01-a932-4691-abef-c921d271508a\"]]};\n\t\tvar allowed_staff = [];\n\t\tvar services_time_array = {\"a9e8d3e3-26b7-4ea7-9806-eacf43dd7c29\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"32f5d4f3-aa94-4453-8775-8599224beac7\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT30M\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"1ed3f8dd-caa3-43f0-8455-a971085e416d\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"014e6cd6-639d-4a9c-8e1a-425142bf9de8\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"5bdd57ad-9f80-4756-acb6-1e22a2698444\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H30M\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"a841cca3-1ba0-4337-896d-c472cbbab47b\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT30M\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"eff3f53c-c3f5-42b8-8e0e-d924637e1044\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H\",\"allowstaffselection\":true,\"maximumadvance\":\"P60D\",\"minimumleadtime\":\"P1D\"},\"0f8cf8a9-a28e-488b-ab19-7ad41c79b243\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT30M\",\"allowstaffselection\":false,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"52937a01-2a4b-4595-8659-4de042796154\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"23a87872-3870-44a0-aba6-6e945d9de5ce\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"0363abb1-3b07-4550-873b-08eb12e225d1\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT30M\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"4719d016-5c1c-4d94-9a69-544fccee0c2f\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT30M\",\"allowstaffselection\":false,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"adf10967-c413-4e8d-b327-45b0d4d01aee\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT1H\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"},\"feadc1eb-67c7-4ec5-91a9-3cbd55821dff\":{\"time\":\"PT30M\",\"pre_buffer\":\"PT0S\",\"post_buffer\":\"PT0S\",\"duration\":\"PT30M\",\"allowstaffselection\":true,\"maximumadvance\":\"P30D\",\"minimumleadtime\":\"P1D\"}};\n\t\tvar business_off_days = {\"saturday\":0,\"sunday\":0};\n\t\tvar booking_time_diff = 0;\n\t\tvar email_by_staff_id = [];\n\t\tvar first_page_load = 1;\n\n\t\t\/* Stipe Variables *\/\n\t\tvar stripepublisherkey = \"\";\n\t\tvar enable_stripe = \"no\";\n\n\t\t\/* Translation Lang variable *\/\n\t\tvar initialLocaleCode = 'de';\n\n\t\t\/* Uncanny Automator Webhook & Google Tag Manager DataLayer *\/\n\t\tvar uncannyAutomatorWebhookUrl = 'https:\/\/www.sportmotorik.com\/wp-json\/uap\/v2\/uap-8414-8415';\n\t\twindow.dataLayer = window.dataLayer || [];\n\t\t \n\t\tlet serviceLength = jQuery(\".o365_booking_meta\").length;\n\n\t\tjQuery.each(staff_ids, function (index, value) {\n\t\t\tif(services_time_array[index].maximumadvance != 0 )\n\t\t\t{\n\t\t\t\tmax_days = services_time_array[index].maximumadvance;\n\t\t\t}\n\t\t});\n\n\t\tjQuery('.o365-booking__form').parent('div').addClass('o365_booking__form_one');\n\t\tjQuery('.o365_ms_booking_data_view').addClass('o365_booking__form_one');\n\t\tjQuery('.o365_booking__form_one').parent().addClass('o365_booking__form_two');\n\t\tjQuery('.o365_booking__form_two').parent().addClass('o365_booking__form_three');\n\t\tjQuery('.o365-booking__form #calendar').find('.fc-toolbar.fc-header-toolbar').insertBefore('.o365_ms__booking_select_date');\n\t\t\n\t\tvar d = new Date();\n\t\tvar time_diff = d.getTimezoneOffset();\n\t\tvar select_services_name = \"\";\n\t\tvar max_dates = '';\n\t\tjQuery(\".ms_booking_services\").click(function(e) {\n\t\t\ttemp_selected_staff = \"\";\n\t\t\ttemp_selected_time =\"\";\n\t\t\tprevious_selected_data = jQuery('span.active').parent('td').data('date');\n\t\t\tvar min_slot = '';\n\n\t\t\tjQuery('.o365_booking_services_wrapper p').removeClass('active');\n\t\t\tjQuery(jQuery(this).parent('.o365_booking_meta')).addClass('active');\n\n\t\t\t\/\/ Show hide custom fields\n\t\t\tlet serviceIndex = parseInt(jQuery(\".o365_booking_meta.active\").index())+1;\n\t\t\tlet customFieldId = \".service\" + serviceIndex;\n\t\t\tlet serviceLength = jQuery(\".o365_booking_meta\").length;\n\n\t\t\tfor( let i=1 ; i <= serviceLength ; i++ ) {\n\t\t\t\tjQuery(\".service\"+i).hide();\n\t\t\t}\n\n\t\t\tjQuery(customFieldId).show();\n\n\t\t\tjQuery(\"#o365_ms_booking_staff\").css(\"display\",\"none\");\n\t\t\tjQuery(\"div.ms_booking_time_slot_data > label\").css(\"display\",\"none\");\n\n\t\t\t\/* Getting the Service Price of Paid Service *\/\n\t\t\tif( \n\t\t\t\tjQuery(this).attr(\"data-price-type\") != undefined && \n\t\t\t\t( \n\t\t\t\t\tjQuery(this).attr(\"data-price-type\") == 'fixedPrice' || \n\t\t\t\t\tjQuery(this).attr(\"data-price-type\") == 'startingAt' || \n\t\t\t\t\tjQuery(this).attr(\"data-price-type\") == 'hourly' \n\t\t\t\t) \n\t\t\t){\n\t\t\t\tserviceprice = jQuery(this).val( jQuery(this).attr(\"data-price\") );\n\t\t\t\tserviceprice = jQuery(this).attr(\"data-price\");\n\t\t\t}\n\n\t\t\t\/* Show\/Hide Payment form for paid or free services *\/\n\t\t\tif( serviceprice != undefined && serviceprice != 0 && serviceprice != '' ) {\n\t\t\t\tjQuery(\".stripe-payment-form\").show();\n\t\t\t} else {\n\t\t\t\tjQuery(\".stripe-payment-form\").hide();\n\t\t\t}\n\n\t\t\t\/\/showing loader on service click\n\t\t\tjQuery(\".ms_booking_time_slot_wrapper_message_div\").css(\"display\",\"none\");\n\t\t\tjQuery(\".ms_booking_time_slot_data\").css(\"display\",\"block\");\n\t\t\tjQuery(\"#o365_booking_available_time_slot\").html( '<span class=\"digihouse-loader\"><\/span>' );\n\n\t\t\tjQuery(\"#ms_booking_selected_service\").val( jQuery(this).attr(\"data-id\") );\n\t\t\tjQuery(\"#ms_booking_service\").html( jQuery(this).attr(\"data-name\") );\n\t\t\tselected_service_name = jQuery(this).attr(\"data-name\");\n\t\t\t\n\t\t\tvar display_date = temp_selected_date !== \"\" ? temp_selected_date + \". \" : \"\";\n\t\t\tvar display_year = temp_selected_year !== \"\" ? \" \" + temp_selected_year : \"\";\n\t\t\tvar display_time = temp_selected_time !== \"\" ? \" - \" + temp_selected_time + \" Uhr\" : \"\";\n\t\t\tvar final_date_string = display_date + selecteddate_month + display_year + display_time;\n\n\t\t\t\t\t\t\tjQuery('.o365_ms__booking_select_date').html(final_date_string);\n\t\t\t\n\t\t\tif( jQuery(\"#ms_booking_selected_service\").val() != \"\" && jQuery(\"#ms_booking_selected_date\").val() != \"\" )\n\t\t\t{\n\t\t\t\tjQuery(\".ms_booking_time_slot_data\").css(\"display\",\"block\");\n\t\t\t\tjQuery(\".ms_booking_time_slot_wrapper_message_div\").css(\"display\",\"none\");\n\t\t\t}\n\t\t\tvar selected_service = jQuery(\"#ms_booking_selected_service\").val();\n\t\t\tvar staff_visible = services_time_array[selected_service][\"allowstaffselection\"];\n\t\t\t\n\t\t\tvar max_dates = services_time_array[selected_service].maximumadvance;\n\t\t\tvar mldtime_auto_select_event = services_time_array[selected_service].minimumleadtime;\n\t\t\t\n\t\t\tvar minimum_leadtime = services_time_array[selected_service].minimumleadtime;\n\n\t\t\t\/\/Manipulating minimum lead time in hours\n\t\t\tminimum_leadtime = minimum_leadtime.toString().replace('P','').replace('D','');\n\t\t\tminimum_leadtime = minimum_leadtime.split(\"T\");\n\t\t\tvar minimum_leadtime_hour = '';\n\t\t\tif(minimum_leadtime.length > 1)\n\t\t\t{\n\t\t\t\tminimum_leadtime_dayHour = minimum_leadtime[0]*24;\n\t\t\t\tminimum_leadtime = minimum_leadtime[1].toString().replace('T','').replace('H','');\n\t\t\t\tminimum_leadtime_hour = parseInt(minimum_leadtime_dayHour)+parseInt(minimum_leadtime);\n\t\t\t}else{\n\t\t\t\tminimum_leadtime_hour = minimum_leadtime*24;\n\t\t\t}\n\n\t\t\tvar data = { 'action':'get_ms_booking_staff_by_services','service_id':jQuery(\"#ms_booking_selected_service\").val(),'businessid':\"TerminbuchungSportmotorik@gfholding.at\",'staff_array':staff_ids[selected_service][0],\"time_array\":services_time_array[selected_service][\"time\"], \"allowed_staff\": allowed_staff, 'anyone':'Anyone',};\n\t\t\tjQuery.post( \"https:\/\/www.sportmotorik.com\/wp-admin\/admin-ajax.php\", data , function( response, txtStatus, jqXHR )\n\t\t\t{\n\t\t\t\tvar staff_off_days = response.data.staff_off_days;\n\t\t\t\t\n\t\t\t\tif(response.success && response.data !== undefined)\n\t\t\t\t{\n\t\t\t\t\tif( ! response.data.staff_array.length ) {\n\t\t\t\t\t\t\/\/ alert(\"Staff not available for this service.\");\n\t\t\t\t\t\tjQuery(\"#o365_booking_available_time_slot\").html( '<span class=\"error\">Staff not available for this service.<\/span>' );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tjQuery(\"#o365_ms_booking_staff\").html(response.data.option);\n\t\t\t\t\t\/\/Getting email with staff ID\n\t\t\t\t\tjQuery(\"#o365_ms_booking_staff > option\").each(function() {\n\t\t\t\t\t\tif( this.value != '' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\temail_by_staff_id[ this.value ] = jQuery(this).data('email');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\/\/Prev selected date, if date is not selected then curr date will be assigned\n\t\t\t\t\tif( previous_selected_data == '' || previous_selected_data == undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tprevious_selected_data = addingMiniLeadTime( minimum_leadtime_hour );\n\t\t\t\t\t\tvar check_off_day = new Date(previous_selected_data);\n\t\t\t\t\t\tvar duration = services_time_array[selected_service][\"duration\"];\n\t\t\t\t\t\t\n\t\t\t\t\t\tduration = duration.toString().replace('P','').replace('D','');\n\t\t\t\t\t\tif( jQuery.isNumeric(duration))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprevious_selected_data = new Date(previous_selected_data);\n\t\t\t\t\t\t\tprevious_selected_data.setHours(previous_selected_data.getHours() + parseInt(24));\n\t\t\t\t\t\t\tcheck_off_day.setHours(check_off_day.getHours() + parseInt(24));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.each( business_off_days, function( keyq, valueq )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tjQuery.each( business_off_days, function( key, value ) {\n\t\t\t\t\t\t\t\tif(weekDays[check_off_day.getDay()] == key )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tprevious_selected_data = new Date(previous_selected_data);\n\t\t\t\t\t\t\t\t\tprevious_selected_data.setHours(previous_selected_data.getHours() + parseInt(24));\n\t\t\t\t\t\t\t\t\tcheck_off_day.setHours(check_off_day.getHours() + parseInt(24));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif(min_slot == '' || min_slot == undefined) {\n\t\t\t\t\t\tmin_slot = addingMiniLeadTime( minimum_leadtime_hour );\n\t\t\t\t\t}\n\n\t\t\t\t\tvar d = new Date(previous_selected_data);\n\t\t\t\t\tvar prevMonth = d.getMonth();\n\t\t\t\t\tvar year = d.getFullYear();\n\t\t\t\t\t\n\t\t\t\t\tjQuery(\"#o365_ms_booking_staff\").html(response.data.option);\n\t\t\t\t\tjQuery('#calendar').fullCalendar('destroy');\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tjQuery('#calendar').fullCalendar({\n\t\t\t\t\t\tlocale: initialLocaleCode, \/\/ Locale for translating js calendar\n\t\t\t\t\t\ttimeZone: 'America\/New_York',\n\t\t\t\t\t\tnow: moment(),\n\t\t\t\t\t\tmonth: prevMonth,\n\t\t\t\t\t\tyear:year,\n\t\t\t\t\t\tselectable: true,\n\n\t\t\t\t\t\tlongPressDelay: 0,\n\t\t\t\t\t\theader: {\n\t\t\t\t\t\t\tleft: 'prev,next',\n\t\t\t\t\t\t\tcenter: 'title',\n\t\t\t\t\t\t\tright: ''\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfirstDay: 1,\n\t\t\t\t\t\tnavLinks: false,\n\t\t\t\t\t\tdayRender: function(date, cell){\n\t\t\t\t\t\t\tmax_dates = max_dates.toString().replace('P','');\n\t\t\t\t\t\t\tmax_dates = max_dates.toString().replace('D','');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar now = new Date();\n\t\t\t\t\t\t\tnow.setDate(now.getDate()+(parseInt(max_dates)));\n\t\t\t\t\t\t\tmax_date = convert(now);\n\t\t\t\t\t\t\tmax_date = moment(max_date).format(\"YYYY-MM-DD 23:59:59\");\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar d = new Date(date._d);\n\t\t\t\t\t\t\tvar weekday = d.getDay();\n\n\t\t\t\t\t\t\tdate_temp = convert(date._d);\n\t\t\t\t\t\t\tdate_temp = moment(date_temp).format(\"YYYY-MM-DD\");\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar time = now.getHours() + \":\" + now.getMinutes() + \":\" + now.getSeconds();\n\t\t\t\t\t\t\tdate_temp = date_temp+' '+time;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(business_off_days != undefined &&  business_off_days != '' ) {\n\t\t\t\t\t\t\t\t\/\/Disable the day which are off in ms booking\n\t\t\t\t\t\t\t\tjQuery.each( business_off_days, function( key, value ) {\n\t\t\t\t\t\t\t\t\tjQuery(cell).parents('.fc-bg').next('.fc-content-skeleton').children(\"table\").children(\"thead\").children(\"tr\").children(\"td\").each(function(){\n\t\t\t\t\t\t\t\t\t\tif( jQuery(this).hasClass( weekDaysClass[key]) )\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tjQuery(this).addClass('disabled');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/Disabling the date before and after booking time.\n\t\t\t\t\t\t\tif ( date_temp > max_date || date_temp < min_slot )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tjQuery(cell).parents('.fc-bg').next('.fc-content-skeleton').children(\"table\").children(\"thead\").children(\"tr\").children(\"td\").each(function(){\n\t\t\t\t\t\t\t\t\tif ( jQuery(this).data(\"date\") > moment(max_date).format(\"YYYY-MM-DD\") || jQuery(this).data(\"date\") <  moment(min_slot).format(\"YYYY-MM-DD\") ){\n\t\t\t\t\t\t\t\t\t\tjQuery(this).addClass('disabled');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/when user change the service moving the date to last available events\n\t\t\t\t\t\t\tif( max_date < previous_selected_data  ) {\n\t\t\t\t\t\t\t\tlast_selected_date =  max_date;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tlast_selected_date =  previous_selected_data;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif( cell.attr(\"data-date\") == moment(last_selected_date).format(\"YYYY-MM-DD\") )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tjQuery(cell).parents('.fc-bg').next('.fc-content-skeleton').children(\"table\").children(\"thead\").children(\"tr\").children(\"td\").each(function(){\n\t\t\t\t\t\t\t\t\tif( jQuery(this).data(\"date\") == moment(last_selected_date).format(\"YYYY-MM-DD\") )\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tjQuery(this).children('span').addClass('active');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdayClick: function (date, allDay, jsEvent, view) {\n\t\t\t\t\t\t\tvar date_temp = jQuery(this).data(\"date\");\n\n\t\t\t\t\t\t\t\/*\n\t\t\t\t\t\t\t * FullCalendar bestimmt den angeklickten Tag anhand der Maus-\/Touch-\n\t\t\t\t\t\t\t * Koordinaten, nicht anhand des normalen Browser-Klickziels. Deshalb\n\t\t\t\t\t\t\t * greift \"pointer-events: none\" (siehe CSS f\u00fcr .disabled) hier nicht -\n\t\t\t\t\t\t\t * FullCalendar feuert dayClick trotzdem.\n\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t * WICHTIG: \"this\" ist hier die Zelle der Hintergrund-Tabelle\n\t\t\t\t\t\t\t * (.fc-bg), NICHT die .fc-day-top-Zelle mit der \"disabled\"-Klasse -\n\t\t\t\t\t\t\t * FullCalendar rendert Tageszahl (.fc-content-skeleton\/.fc-day-top)\n\t\t\t\t\t\t\t * und Klick-Hintergrund (.fc-bg) in zwei getrennten, \u00fcberlagerten\n\t\t\t\t\t\t\t * Tabellen (siehe dayRender oben, das genau deshalb von \"cell\" aus\n\t\t\t\t\t\t\t * zur passenden .fc-day-top-Zelle navigieren muss). \"jQuery(this).\n\t\t\t\t\t\t\t * hasClass('disabled')\" w\u00fcrde hier also IMMER false liefern, egal\n\t\t\t\t\t\t\t * ob der Tag gesperrt ist. Deshalb suchen wir hier stattdessen ganz\n\t\t\t\t\t\t\t * gezielt \u00fcber das Datum die passende .fc-day-top-Zelle und pr\u00fcfen\n\t\t\t\t\t\t\t * dort.\n\t\t\t\t\t\t\t *\/\n\t\t\t\t\t\t\tvar $matchingDayTop = jQuery('.o365-booking__form .fc-day-top[data-date=\"' + date_temp + '\"]');\n\t\t\t\t\t\t\t\/*\n\t\t\t\t\t\t\t * \"fc-other-month\" = Tage aus dem Vor-\/Folgemonat, die im Grid nur\n\t\t\t\t\t\t\t * zum Auff\u00fcllen mitgerendert werden (bei uns per CSS mit\n\t\t\t\t\t\t\t * \"transform: scale(0)\" unsichtbar gemacht). Rein optisch\n\t\t\t\t\t\t\t * unsichtbar zu machen reicht nicht - dieselbe .fc-bg\/.fc-day-top-\n\t\t\t\t\t\t\t * Trennung wie oben beschrieben sorgt daf\u00fcr, dass sie trotzdem\n\t\t\t\t\t\t\t * klickbar\/antippbar bleiben. Deshalb auch hier explizit sperren.\n\t\t\t\t\t\t\t *\/\n\t\t\t\t\t\t\tif( $matchingDayTop.hasClass('disabled') || $matchingDayTop.hasClass('fc-other-month') ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tjQuery(\"span\").removeClass('active');\n\t\t\t\t\t\t\tjQuery(this).parents('.fc-bg').next('.fc-content-skeleton').children(\"table\").children(\"thead\").children(\"tr\").children(\"td\").each(function(){\n\t\t\t\t\t\t\t\tif( jQuery(this).data(\"date\") == date_temp )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tjQuery(this).children(\"span\").addClass('active');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tselect: function(startDate, endDate, jsEvent, view)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\/*\n\t\t\t\t\t\t\t * Gleicher Grund wie bei dayClick oben: FullCalendar l\u00f6st \"select\"\n\t\t\t\t\t\t\t * anhand von Koordinaten aus, nicht anhand des echten Klickziels -\n\t\t\t\t\t\t\t * \"pointer-events: none\" auf gesperrten Tagen verhindert das nicht.\n\t\t\t\t\t\t\t * Deshalb hier zus\u00e4tzlich selbst pr\u00fcfen, ob der gew\u00e4hlte Tag im DOM\n\t\t\t\t\t\t\t * als disabled markiert ist, und wenn ja abbrechen.\n\t\t\t\t\t\t\t *\n\t\t\t\t\t\t\t * WICHTIG: \"select\" wird nicht nur bei einem echten Klick\/Tap\n\t\t\t\t\t\t\t * ausgel\u00f6st, sondern auch programmatisch von uns selbst - z.B. um\n\t\t\t\t\t\t\t * beim Service-Wechsel automatisch das erste freie Datum\n\t\t\t\t\t\t\t * vorauszuw\u00e4hlen (siehe weiter unten \"fullCalendar('select', ...)\").\n\t\t\t\t\t\t\t * Bei so einem programmatischen Aufruf gibt es kein echtes\n\t\t\t\t\t\t\t * Browser-Event, \"jsEvent\" ist dann leer. Deshalb sperren wir hier\n\t\t\t\t\t\t\t * nur, wenn \"jsEvent\" vorhanden ist (= echter Klick\/Tap eines\n\t\t\t\t\t\t\t * Nutzers) - unsere eigenen internen Aufrufe (inkl. Vorauswahl und\n\t\t\t\t\t\t\t * unser Mobile-Touch-Fix, der disabled Tage ohnehin schon vorher\n\t\t\t\t\t\t\t * ausschlie\u00dft) bleiben davon unber\u00fchrt.\n\t\t\t\t\t\t\t *\/\n\t\t\t\t\t\t\tvar selectedDateStr = startDate.format(\"YYYY-MM-DD\");\n\t\t\t\t\t\t\tvar $selectedDayCell = jQuery('.o365-booking__form .fc-day-top[data-date=\"' + selectedDateStr + '\"]');\n\t\t\t\t\t\t\t\/*\n\t\t\t\t\t\t\t * \"fc-other-month\" = Tage aus dem Vor-\/Folgemonat, nur optisch mit\n\t\t\t\t\t\t\t * \"transform: scale(0)\" versteckt (siehe dayClick oben f\u00fcr den\n\t\t\t\t\t\t\t * Grund, warum das die Klickbarkeit nicht verhindert) - deshalb\n\t\t\t\t\t\t\t * auch hier zus\u00e4tzlich sperren.\n\t\t\t\t\t\t\t *\/\n\t\t\t\t\t\t\tif( jsEvent && ( $selectedDayCell.hasClass('disabled') || $selectedDayCell.hasClass('fc-other-month') ) ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttemp_selected_time =\"\";\n\t\t\t\t\t\t\tconst weekday = new Array(7);\n\t\t\t\t\t\t\tweekday[0] = \"sunday\";\n\t\t\t\t\t\t\tweekday[1] = \"monday\";\n\t\t\t\t\t\t\tweekday[2] = \"tuesday\";\n\t\t\t\t\t\t\tweekday[3] = \"wednesday\";\n\t\t\t\t\t\t\tweekday[4] = \"thursday\";\n\t\t\t\t\t\t\tweekday[5] = \"friday\";\n\t\t\t\t\t\t\tweekday[6] = \"saturday\";\n\n\t\t\t\t\t\t\tvar initialselecteddate = startDate.format( \"YYYY-MM-DD\" );\n\t\t\t\t\t\t\tvar selecteddate = startDate.format( \"MM\/DD\/YYYY\" );\n\t\t\t\t\t\t\tselecteddate_month = new Date( selecteddate );\n\t\t\t\t\t\t\tvar selectedday = selecteddate_month.getDay();\n\n\t\t\t\t\t\t\tselecteddate_month =  monthNames[selecteddate_month.getMonth()];\n\t\t\t\t\t\t\ttemp_selected_date  = startDate.format( \"DD\" );\n\t\t\t\t\t\t\ttemp_selected_year = startDate.format( \"YYYY\" );\n\n\t\t\t\t\t\t\tif(weekday[selectedday] in business_off_days){\t\t\t\t\t\t\t  \t\n\t\t\t\t\t\t\t\tjQuery('.o365_booking_available_time_slot_span').remove();\n\t\t\t\t\t\t\t\tjQuery('#o365_booking_available_time_slot').html('<span class=\"unavailable_span noslot\" style=\"color:red;\" >We have no availability on this date. Please choose another one.<\/span>');return;\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\n\n\t\t\t\t\t\t\tjQuery('#o365_ms_booking_staff').prop('selectedIndex',0);\n\t\t\t\t\t\t\tjQuery(\"#o365_booking_available_time_slot\").html( '<span class=\"digihouse-loader\"><\/span>' );\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tjQuery(\"#ms_booking_selected_date\").val( selecteddate );\n\n\t\t\t\t\t\t\t\/*\n\t\t\t\t\t\t\t * Bug-Fix: bisher wurde beim Wechsel auf ein anderes Datum die\n\t\t\t\t\t\t\t * bereits gew\u00e4hlte Uhrzeit vom VORHERIGEN Datum nicht zur\u00fcckgesetzt.\n\t\t\t\t\t\t\t * Dadurch konnte man z.B. auf Tag A eine Uhrzeit w\u00e4hlen, dann auf\n\t\t\t\t\t\t\t * Tag B wechseln OHNE dort eine neue Uhrzeit zu w\u00e4hlen, und trotzdem\n\t\t\t\t\t\t\t * absenden - die Pr\u00fcfung \"Uhrzeit gew\u00e4hlt?\" beim Absenden griff\n\t\t\t\t\t\t\t * nicht, weil das Feld noch den alten Wert von Tag A enthielt.\n\t\t\t\t\t\t\t * Deshalb hier die Uhrzeit-Felder bei jedem Datumswechsel leeren,\n\t\t\t\t\t\t\t * genau wie es beim Mitarbeiter-Wechsel (weiter unten,\n\t\t\t\t\t\t\t * \"#o365_ms_booking_staff\").change(...)) bereits gemacht wird.\n\t\t\t\t\t\t\t *\/\n\t\t\t\t\t\t\tjQuery(\"#ms_booking_selected_time\").val( '' );\n\t\t\t\t\t\t\tjQuery(\"#ms_booking_selected_time_stamp\").val( '' );\n\t\t\t\t\t\t\tjQuery(\"#ms_booking_selected_time_in_client_timezone\").val( '' );\n\t\t\t\t\t\t\tjQuery(\"#ms_booking_selected_staff_id\").val( '' );\n\n\t\t\t\t\t\t\tselected_staff = [jQuery(\"#o365_ms_booking_staff\").val()];\n\t\t\t\t\t\t\ttemp_selected_staff = \"\";\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar display_date = temp_selected_date !== \"\" ? temp_selected_date + \". \" : \"\";\n\t\t\t\t\t\t\tvar display_year = temp_selected_year !== \"\" ? \" \" + temp_selected_year : \"\";\n\t\t\t\t\t\t\tvar display_time = temp_selected_time !== \"\" ? \" - \" + temp_selected_time + \" Uhr\" : \"\";\n\t\t\t\t\t\t\tvar final_date_string = display_date + selecteddate_month + display_year + display_time;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tjQuery('.o365_ms__booking_select_date').html(final_date_string);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( jQuery(\"#ms_booking_selected_service\").val() != \"\" && jQuery(\"#ms_booking_selected_date\").val() != \"\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery('.o365_ms__booking_select_date').html(final_date_string);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(\".ms_booking_time_slot_data\").css(\"display\",\"block\");\n\t\t\t\t\t\t\t\tjQuery(\".ms_booking_time_slot_wrapper_message_div\").css(\"display\",\"none\");\n\t\t\t\t\t\t\t\tvar selected_service = jQuery(\"#ms_booking_selected_service\").val();\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tvar data = { \n\t\t\t\t\t\t\t\t\t'action':'get_ms_booking_time_slots_by_business_hrs',\n\t\t\t\t\t\t\t\t\t'businessid':\"TerminbuchungSportmotorik@gfholding.at\",\n\t\t\t\t\t\t\t\t\t'staff_array':staff_ids[selected_service][0],\n\t\t\t\t\t\t\t\t\t\"time_array\":services_time_array[selected_service][\"time\"],\n\t\t\t\t\t\t\t\t\t\"selecteddate\":selecteddate,\n\t\t\t\t\t\t\t\t\t\"pre_buffer\":services_time_array[selected_service][\"pre_buffer\"],\n\t\t\t\t\t\t\t\t\t\"post_buffer\":services_time_array[selected_service][\"post_buffer\"],\n\t\t\t\t\t\t\t\t\t\"duration\":services_time_array[selected_service][\"duration\"],\n\t\t\t\t\t\t\t\t\t\"timeformat\":\"24\",\n\t\t\t\t\t\t\t\t\t\"time_diff\":time_diff,\n\t\t\t\t\t\t\t\t\t\"maximumadvance\":services_time_array[selected_service][\"maximumadvance\"],\n\t\t\t\t\t\t\t\t\t\"minimumleadtime\":services_time_array[selected_service][\"minimumleadtime\"], \n\t\t\t\t\t\t\t\t\tbooking_time_diff:booking_time_diff, \n\t\t\t\t\t\t\t\t\tfirst_page_load: first_page_load, \n\t\t\t\t\t\t\t\t\t'hourdiff': '-1',\n\t\t\t\t\t\t\t\t\t'timezone': 'Europe\/Vienna',\n\t\t\t\t\t\t\t\t\t'selected_service': selected_service,\n\t\t\t\t\t\t\t\t\t'translation_text' : '{\"select_service\":\"\",\"select_time\":\"\",\"add_your_details\":\"\",\"submit_button_txt\":\"\",\"your_name\":\"\",\"address_here\":\"\",\"message\":\"\",\"creditordebitcard\":\"\",\"message_heading\":\"\",\"thank_you_message\":\"\",\"slot_not_available\":\"\",\"phone\":\"\",\"email\":\"\",\"anyone\":\"\",\"minutes\":\"\"}'\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tjQuery.post( \"https:\/\/www.sportmotorik.com\/wp-admin\/admin-ajax.php\", data , function( response, txtStatus, jqXHR )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif(response.success && response.data.data !== undefined)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tjQuery(\"#o365_booking_available_time_slot\").html( response.data.data );\n\t\t\t\t\t\t\t\t\t\t\/**\n\t\t\t\t\t\t\t\t\t\t* jump the date on next available event date\n\t\t\t\t\t\t\t\t\t\t* for this we fire the ajax if events not available in that date we again call ajax function by increasing day by 1 day\n\t\t\t\t\t\t\t\t\t\t* User Ajax business by hour ajax fuction\n\t\t\t\t\t\t\t\t\t\t*\/\n\t\t\t\t\t\t\t\t\t\tif( first_page_load == 1 ) {\n\t\t\t\t\t\t\t\t\t\t\tjQuery('span').removeClass('active');\n\t\t\t\t\t\t\t\t\t\t\tjQuery.each(jQuery('.fc-day-top'), function(index, value){\n\t\t\t\t\t\t\t\t\t\t\t\tif(jQuery(this).attr('data-date') == response.data.selected_date ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).children('span').addClass('active');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\/** updated selected date for hidden field *\/\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tvar dateAr = response.data.selected_date.split('-');\n\t\t\t\t\t\t\t\t\t\t\t\t\tvar newDate = dateAr[1] + '\/' + dateAr[2] + '\/' + dateAr[0];\n\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery('#ms_booking_selected_date').val(newDate);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif(jQuery(this).attr('data-date') == initialselecteddate && response.data.selected_date != initialselecteddate ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).addClass('disabled');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconsole.log('first_page_load', first_page_load);\n\t\t\t\t\t\t\t\t\t\tconsole.log('response.data.selected_date', response.data.selected_date)\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\/* Show staff is available or not\n\t\t\t\t\t\t\t\t\t\tRemove all availability and unavailability span *\/\n\t\t\t\t\t\t\t\t\t\tjQuery(\".available_span\").remove();\n\t\t\t\t\t\t\t\t\t\tjQuery(\".unavailable_span\").remove();\n\n\t\t\t\t\t\t\t\t\t\tif( !response.data.availableStaff ) {\n\t\t\t\t\t\t\t\t\t\t\tjQuery(\".fc-day-number.active:contains('\"+new Date(response.data.selected_date).getDate()+\"')\").parent('td').addClass('disabled');\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tjQuery(response.data.availableStaff).each(function(askey, asvalue){\n\t\t\t\t\t\t\t\t\t\t\tjQuery(\"#o365_ms_booking_staff\").children(\"option\").each(function(skey, svalue){\n\t\t\t\t\t\t\t\t\t\t\t\tif( jQuery(this).val() == asvalue && jQuery(this).val() != '' )\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).append('<span class=\"available_span\" style=\"color:green;\" > - Available<\/span>');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\/\/Add not available\n\t\t\t\t\t\t\t\t\t\tjQuery(\"#o365_ms_booking_staff\").children(\"option\").each(function(skey, svalue) {\n\t\t\t\t\t\t\t\t\t\t\tvar child_span = jQuery(this).children('span.available_span').length;\n\t\t\t\t\t\t\t\t\t\t\tif( parseInt(child_span) == 0 && jQuery(this).val() != '' ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery(this).append('<span class=\"unavailable_span\" style=\"color:red;\" > - Not Available<\/span>');\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfirst_page_load = 0;\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.fail(function()\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconsole.log(\"ERROR\");\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\t\/\/Jump to prev selected date after changing service\n\t\t\t\t\tif( max_date < previous_selected_data  ) {\n\t\t\t\t\t\tlast_selected_date =  max_date;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlast_selected_date =  previous_selected_data;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar objappVersion = navigator.appVersion; \n\t\t\t\t\tvar objAgent = navigator.userAgent; \n\t\t\t\t\tvar objbrowserName = navigator.appName; \n\t\t\t\t\tvar objfullVersion = ''+parseFloat(navigator.appVersion); \n\t\t\t\t\tvar objBrMajorVersion = parseInt(navigator.appVersion,10); \n\t\t\t\t\tvar objOffsetName,objOffsetVersion,ix; \n\t\t\t\t\t\n\t\t\t\t\tif ((objOffsetVersion=objAgent.indexOf(\"Chrome\"))!=-1) {\n\t\t\t\t\t\tobjbrowserName = \"Chrome\"; objfullVersion = objAgent.substring(objOffsetVersion+7);\n\t\t\t\t\t} \n\t\t\t\t\telse if ((objOffsetVersion=objAgent.indexOf(\"MSIE\"))!=-1) {\n\t\t\t\t\t\tobjbrowserName = \"Microsoft Internet Explorer\"; objfullVersion = objAgent.substring(objOffsetVersion+5); \n\t\t\t\t\t} \n\t\t\t\t\telse if ((objOffsetVersion=objAgent.indexOf(\"Firefox\"))!=-1) {\n\t\t\t\t\t\tobjbrowserName = \"Firefox\"; \n\t\t\t\t\t} \n\t\t\t\t\telse if ((objOffsetVersion=objAgent.indexOf(\"Safari\"))!=-1) {\n\t\t\t\t\t\tobjbrowserName = \"Safari\"; objfullVersion = objAgent.substring(objOffsetVersion+7); \n\t\t\t\t\t\tlast_selected_date = last_selected_date.replace(\" \", \"T\");\n\t\t\t\t\t\tif ((objOffsetVersion=objAgent.indexOf(\"Version\"))!=-1) \n\t\t\t\t\t\t\tobjfullVersion = objAgent.substring(objOffsetVersion+8); \n\t\t\t\t\t} \n\t\t\t\t\telse if ( (objOffsetName=objAgent.lastIndexOf(' ')+1) < (objOffsetVersion=objAgent.lastIndexOf('\/')) ) {\n\t\t\t\t\t\tobjbrowserName = objAgent.substring(objOffsetName,objOffsetVersion); \n\t\t\t\t\t\tobjfullVersion = objAgent.substring(objOffsetVersion+1); \n\t\t\t\t\t\t\n\t\t\t\t\t\tif (objbrowserName.toLowerCase()==objbrowserName.toUpperCase()) {\n\t\t\t\t\t\t\tobjbrowserName = navigator.appName;\n\t\t\t\t\t\t}\n\t\t\t\t\t} \n\n\t\t\t\t\tlast_selected_date = new Date(last_selected_date);\n\t\t\t\t\tlast_selected_date = last_selected_date.toUTCString();\n\t\t\t\t\tjQuery('#calendar').fullCalendar( 'gotoDate', last_selected_date );\n\t\t\t\t\tjQuery('#calendar').fullCalendar( 'select', last_selected_date );\n\n\t\t\t\t\tif( !staff_visible )\n\t\t\t\t\t{\n\t\t\t\t\t\tjQuery(\"#o365_ms_booking_staff\").css(\"display\",\"none\");\n\t\t\t\t\t\tjQuery(\"div.ms_booking_time_slot_data > label\").css(\"display\",\"none\");\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tjQuery(\"#o365_ms_booking_staff\").css(\"display\",\"block\");\n\t\t\t\t\t\tjQuery(\"div.ms_booking_time_slot_data > label\").css(\"display\",\"block\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.fail(function()\n\t\t\t{\n\t\t\t\tconsole.log(\"ERROR\");\n\t\t\t});\n\t\t});\n\n\t\tif(stripepublisherkey != undefined && stripepublisherkey != null && stripepublisherkey != '' && enable_stripe == 'yes' ){\n\t\t\tvar stripe = Stripe(stripepublisherkey);\n\t\t\tvar elements = stripe.elements();\n\n\t\t\t\/\/ Set up Stripe.js and Elements to use in checkout form\n\t\t\tvar style = {\n\t\t\tbase: {\n\t\t\t\tcolor: \"#32325d\",\n\t\t\t\tfontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\n\t\t\t\tfontSmoothing: \"antialiased\",\n\t\t\t\tfontSize: \"16px\",\n\t\t\t\t\"::placeholder\": {\n\t\t\t\tcolor: \"#aab7c4\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tinvalid: {\n\t\t\t\tcolor: \"#fa755a\",\n\t\t\t\ticonColor: \"#fa755a\"\n\t\t\t},\n\t\t\t};\n\n\t\t\tvar cardElement = elements.create('card', {style: style});\n\t\t\tcardElement.mount('#card-element');\n\n\t\t\tvar form = document.getElementById('payment-form');\n\t\t}\n\n\t\t\/* Hiting service when only one service exists. *\/\n\t\tvar service_div_count = jQuery(\".o365_booking_meta\").length;\n\t\tif( service_div_count == 1 ) {\n\t\t\t\/* If only 1 service is enabled from ms booking then it will automaticaaly select that service. *\/\n\t\t\tjQuery(\".ms_booking_services\").click();\n\t\t} else {\n\t\t\t\/* If shortcode param have default_service then it will check the id and name and select the service. *\/\n\t\t\tjQuery(\".o365_booking_meta\").each((index, element) => {\n\t\t\t\tlet service_id = jQuery(element).children(\"span.ms_booking_services\").attr(\"data-id\");\n\t\t\t\tlet service_name = jQuery(element).children(\"span.ms_booking_services\").attr(\"data-name\");\n\n\t\t\t\tif( typeof service_id === 'string' && service_id == '' ) {\n\t\t\t\t\tjQuery(element).children(\"span.ms_booking_services\").click();\n\t\t\t\t} else if( typeof service_name === 'string' && service_name == '' ) {\n\t\t\t\t\tjQuery(element).children(\"span.ms_booking_services\").click();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tjQuery('#calendar').fullCalendar({\n\t\t\tlocale: initialLocaleCode,\n\t\t\tnow: moment(),\n\t\t\theader: {\n\t\t\t\tleft: 'prev,next',\n\t\t\t\tcenter: 'title',\n\t\t\t\tright: ''\n\t\t\t},\n\t\t\tfirstDay: 1,\n\t\t\tnavLinks: false,\n\t\t\tdayRender: function(date, cell){\n\t\t\t\tjQuery(cell).parents('.fc-bg').next('.fc-content-skeleton').children(\"table\").children(\"thead\").children(\"tr\").children(\"td\").each(function(){\n\t\t\t\t\tjQuery(this).addClass('disabled');\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tfunction convert(str) {\n\t\t\tvar date = new Date(str),\n\t\t\tmnth = (\"0\" + (date.getMonth() + 1)).slice(-2),\n\t\t\tday = (\"0\" + date.getDate()).slice(-2);\n\t\t\treturn [date.getFullYear(), mnth, day].join(\"-\");\n\t\t}\n\t\t\/\/fullday_message for fullday event data will assign on book button click\n\t\tjQuery(document).on(\"click\", \".o365_booking_available_time_slot_span, .fullday_message\",function(e){\n\t\t\tif( jQuery(this).data('date') != 'undefined' )\n\t\t\t{\n\t\t\t\ttemp_selected_date = jQuery(this).attr('data-date');\n\t\t\t}\n\t\t\t\/\/Not add time_slot_active class\n\t\t\tif( jQuery(this).attr('data-class') != 'fullday_message' ) {\n\t\t\t\tjQuery(\".o365_booking_available_time_slot_span\").removeClass(\"time_slot_active\");\n\t\t\t\tjQuery(this).addClass(\"time_slot_active\");\n\t\t\t}\n\t\t\tvar booking_time = jQuery(this).attr(\"data-id\");\n\t\t\tvar booking_time_in_client_timezone = jQuery(this).html();\n\t\t\tvar selected_staff = jQuery(this).attr(\"data-staffid\");\n\t\t\tjQuery(this).css(\"background-color\",\"#9c9c9c !important\");\n\t\t\t\n\t\t\tjQuery(\"#ms_booking_selected_time_stamp\").val( jQuery(this).attr(\"timestamp\") );\n\t\t\tjQuery(\"#ms_booking_selected_time\").val( booking_time );\n\t\t\t\/\/ Booking time in client timezone used in showing real time in woocommerce cart\n\t\t\tjQuery(\"#ms_booking_selected_time_in_client_timezone\").val( booking_time_in_client_timezone );\n\n\t\t\tjQuery(\"#ms_booking_selected_staff_id\").val( selected_staff );\n\n\t\t\t\/\/ temp_selected_time = \", \"+jQuery(this).attr(\"data-local\");\n\t\t\tvar select_date_wrapper_time = jQuery(this).html();\n\t\t\tif( select_date_wrapper_time.includes('-') ) {\n\t\t\t\tvar arr = select_date_wrapper_time.split('-');\n\t\t\t\ttemp_selected_time = arr[0].trim();\n\t\t\t} else {\n\t\t\t\ttemp_selected_time = jQuery(this).html();\n\t\t\t}\n\t\t\t\n\t\t\tvar display_date = temp_selected_date !== \"\" ? temp_selected_date + \". \" : \"\";\n\t\t\tvar display_year = temp_selected_year !== \"\" ? \" \" + temp_selected_year : \"\";\n\t\t\tvar display_time = temp_selected_time !== \"\" ? \" - \" + temp_selected_time + \" Uhr\" : \"\";\n\t\t\tvar final_date_string = display_date + selecteddate_month + display_year + display_time;\n\n\t\t\t\t\t\t\tjQuery('.o365_ms__booking_select_date').html(final_date_string);\n\t\t\t\t\t});\n\t\tjQuery(\"#o365_ms_booking_staff\").change(function(e) {\n\t\t\ttemp_selected_time =\"\";\n\t\t\tjQuery(\"#o365_booking_available_time_slot\").html( '<span class=\"digihouse-loader\"><\/span>' );\n\t\t\tjQuery(\"#ms_booking_selected_time\").val( '' );\n\t\t\tjQuery(\"#ms_booking_selected_time_stamp\").val( '');\n\t\t\tjQuery(\"#ms_booking_selected_time_in_client_timezone\").val( '' );\n\t\t\tjQuery('#ms_booking_selected_staff_id').val(jQuery(this).val());\n\t\t\tvar selecteddate = jQuery(\"#ms_booking_selected_date\").val();\n\t\t\tvar selected_service = jQuery(\"#ms_booking_selected_service\").val();\n\t\t\tvar selected_staff = [];\n\t\t\t\n\t\t\tvar display_date = temp_selected_date !== \"\" ? temp_selected_date + \". \" : \"\";\n\t\t\tvar display_year = temp_selected_year !== \"\" ? \" \" + temp_selected_year : \"\";\n\t\t\tvar display_time = temp_selected_time !== \"\" ? \" - \" + temp_selected_time + \" Uhr\" : \"\";\n\t\t\tvar final_date_string = display_date + selecteddate_month + display_year + display_time;\n\n\t\t\tif( jQuery(\"#o365_ms_booking_staff\").val() != \"\" )\n\t\t\t{\n\t\t\t\tselected_staff = [jQuery(\"#o365_ms_booking_staff\").val()];\n\t\t\t\ttemp_selected_staff = \" with \"+ jQuery('option:selected', this).attr('data-name');\n\t\t\t\t\t\t\t\t\tjQuery('.o365_ms__booking_select_date').html(final_date_string);\n\t\t\t\t\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tselected_staff = staff_ids[selected_service][0];\n\t\t\t}\n\n\t\t\tvar data = { 'action':'get_ms_booking_time_slots_by_business_hrs','businessid':\"TerminbuchungSportmotorik@gfholding.at\",'staff_array':selected_staff,\"time_array\":services_time_array[selected_service][\"time\"],\"selecteddate\":selecteddate,\"pre_buffer\":services_time_array[selected_service][\"pre_buffer\"],\"post_buffer\":services_time_array[selected_service][\"post_buffer\"],\"duration\":services_time_array[selected_service][\"duration\"],\"timeformat\":\"24\",\"time_diff\":time_diff,\"maximumadvance\":services_time_array[selected_service][\"maximumadvance\"],\"minimumleadtime\":services_time_array[selected_service][\"minimumleadtime\"], booking_time_diff:booking_time_diff,'translation_text' : '{\"select_service\":\"\",\"select_time\":\"\",\"add_your_details\":\"\",\"submit_button_txt\":\"\",\"your_name\":\"\",\"address_here\":\"\",\"message\":\"\",\"creditordebitcard\":\"\",\"message_heading\":\"\",\"thank_you_message\":\"\",\"slot_not_available\":\"\",\"phone\":\"\",\"email\":\"\",\"anyone\":\"\",\"minutes\":\"\"}'};\n\t\t\tjQuery.post( \"https:\/\/www.sportmotorik.com\/wp-admin\/admin-ajax.php\", data , function( response, txtStatus, jqXHR )\n\t\t\t{\n\t\t\t\tif(selecteddate != response.data.selected_date){\n\t\t\t\t\tjQuery('span.fc-day-number').removeClass('active');\n\t\t\t\t\tjQuery.each(jQuery('.fc-day-top'), function(index, value){\n\t\t\t\t\t\tif(jQuery(this).attr('data-date') == response.data.selected_date ) {\n\t\t\t\t\t\t\tjQuery(this).children('span').addClass('active');\n\t\t\t\t\t\t\t\/** updated selected date for hidden field *\/\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar dateAr = response.data.selected_date.split('-');\n\t\t\t\t\t\t\tvar newDate = dateAr[1] + '\/' + dateAr[2] + '\/' + dateAr[0];\n\t\t\t\t\t\t\tjQuery('#ms_booking_selected_date').val(newDate);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(jQuery(this).attr('data-date') == selecteddate && response.data.selected_date != selecteddate ) {\n\t\t\t\t\t\t\tjQuery(this).addClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\tif(response.success && response.data.data !== undefined)\n\t\t\t\t{\n\t\t\t\t\tjQuery(\"#o365_booking_available_time_slot\").html( response.data.data );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.fail(function()\n\t\t\t{\n\t\t\t\tconsole.log(\"ERROR\");\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t\n\tjQuery(\"#o365_ms_booking_form\").click(function(e) {\n\t\t\tjQuery('.fullday_message').click();\n\t\t\tjQuery(\"#o365_booking_error_message\").html(\" \");\n\t\t\t\n\t\t\t\/\/Custom field value 16-01-2020\n\t\t\tvar customfield = '';\n\n\t\t\tif( jQuery(\"#ms_booking_selected_service\").val() == \"\" ) {\n\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please select any service.\");\n\t\t\t}\n\t\t\telse if( jQuery(\"#ms_booking_selected_date\").val() == \"\" ) {\n\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please select date.\");\n\t\t\t}\n\t\t\telse if( jQuery(\"#ms_booking_selected_time\").val() == \"\" ) {\n\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please select timeslot.\");\n\t\t\t}\n\t\t\telse if( jQuery(\"#o365_ms_booking_customer_name\").val() == \"\" ) {\n\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please enter a name.\");\n\t\t\t}\n\t\t\telse if( jQuery(\"#o365_ms_booking_customer_email\").val() == \"\" ) {\n\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please enter a email.\");\n\t\t\t} \n\t\t\telse if( jQuery(\"#o365_ms_booking_customer_phone\").val() == \"\" ) {\n\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please enter a phone.\");\n\t\t\t}\n\t\t\telse {\n\n\t\t\t\tvar valid;\n\n\t\t\t\t\/** Checked Valid Email *\/\n\t\t\t\tvalid = \/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$\/.test(jQuery(\"#o365_ms_booking_customer_email\").val());\n\t\t\t\tif(valid == false){\n\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please check your email address.\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t\/** Checked Valid Phone Number *\/\n\t\t\t\tvar phoneregex = \/^[\\+0-9\\s\\-\\(\\)]{6,20}$\/im;\n\t\t\t\tvalid = phoneregex.test(jQuery(\"#o365_ms_booking_customer_phone\").val());\n\t\t\t\tif(valid == false){\n\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Please check your phone number.\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tjQuery(\"#o365_booking_error_message\").html( '<span class=\"digihouse-loader\"><\/span>' );\n\n\t\t\t\tvar servicepricetype = jQuery('p.o365_booking_meta.active span.ms_booking_services').attr('data-price-type');\n\t\t\t\tif( \n\t\t\t\t\tstripepublisherkey != undefined && \n\t\t\t\t\tstripepublisherkey != null && \n\t\t\t\t\tstripepublisherkey != ''  && \n\t\t\t\t\tserviceprice != null && \n\t\t\t\t\tserviceprice != '' && \n\t\t\t\t\tservicepricetype != undefined &&  (servicepricetype == 'fixedPrice' || servicepricetype == 'startingAt' || servicepricetype == 'hourly' ) &&\n\t\t\t\t\tenable_stripe == 'yes'\n\t\t\t\t){\n\t\t\t\t\tstripe.createPaymentMethod({\n\t\t\t\t\t\ttype: 'card',\n\t\t\t\t\t\tcard: cardElement,\n\t\t\t\t\t\tbilling_details: {\n\t\t\t\t\t\t\t'email':jQuery(\"#o365_ms_booking_customer_email\").val(),\n\t\t\t\t\t\t\t'phone':jQuery(\"#o365_ms_booking_customer_phone\").val(),\n\t\t\t\t\t\t\t'name':jQuery(\"#o365_ms_booking_customer_name\").val(),\n\t\t\t\t\t\t},\n\t\t\t\t\t}).then(stripePaymentMethodHandler);\n\t\t\t\t}else{\n\t\t\t\t\to365SendMsBookingData();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\tjQuery(document).on(\"click\", \".o365_booking_services_detail\", function(e) {\n\t\t\tjQuery(\".o365_booking_form_service_title\").html( jQuery(this).attr(\"data-title\") );\n\t\t\tjQuery(\".o365_booking_form_description\").html( jQuery(this).attr(\"data-service\") );\n\t\t\t\n\t\t\tvar duration = jQuery(this).attr(\"data-duration\");\n\t\t\tif(duration < 86400)\n\t\t\t{\n\t\t\t\tduration = secondsTimeSpanToHMS(duration);\n\t\t\t}else{\n\t\t\t\tduration = (((duration\/60)\/60)\/24);\n\t\t\t\tif(duration<2)\n\t\t\t\t\tduration =duration+' day'\n\t\t\t\telse \n\t\t\t\t\tduration = duration+' working days' ;\n\t\t\t}\n\t\t\tvar timezone = jQuery(this).attr(\"data-duration\")\/60;\n\t\t\tjQuery(\".o365_booking_form_duration_details\").html( \"Duration: \"+duration );\n\t\t\tif( jQuery(this).attr(\"data-price\") != 0 )\n\t\t\t{\n\t\t\t\tjQuery(\".o365_booking_form_price_details\").html( \"Price: \"+jQuery(this).attr(\"data-price\") );\n\t\t\t}\n\t\t\tjQuery(\".o365_booking_form_dialog\").css(\"display\",\"block\");\n\t\t});\n\t\tjQuery(\".o365_booking_form_ok_buttons, .o365_booking_form_overlay\").click(function(e) {\n\t\t\tjQuery(\".o365_booking_form_service_title\").html(\"\");\n\t\t\tjQuery(\".o365_booking_form_description\").html(\"\");\n\t\t\tjQuery(\".o365_booking_form_duration_details\").html(\"\");\n\t\t\tjQuery(\".o365_booking_form_price_details\").html(\"\");\n\t\t\tjQuery(\".o365_booking_form_dialog\").css(\"display\",\"none\");\n\t\t});\n\n\t\tjQuery(\".o365-booking__form .fc-day-top:not(.disabled)\").click(function(){\n\t\t\t\tjQuery(\".o365-booking__form .fc-day-top .fc-day-number\").removeClass('active');\n\t\t\t\tjQuery(this).find('.fc-day-number').addClass('active');\n\t\t})\n\n\t\t\/*\n\t\t * Mobile-Fix: Kalender-Tag braucht 2 Taps statt 1\n\t\t *\n\t\t * FullCalendar 3 (die hier verwendete Version) wurde f\u00fcr Maus-Bedienung gebaut:\n\t\t * eine Selektion entsteht dort intern aus \"mousedown\" + \"mouseup\". Am Handy\n\t\t * \u00fcbersetzt der Browser ein Antippen zwar in genau diese Maus-Events, aber\n\t\t * FullCalendar 3 erkennt daraus zuverl\u00e4ssig oft erst beim 2. Tap eine\n\t\t * abgeschlossene Selektion -> deshalb musste man bisher 2x tippen, bis die\n\t\t * Zeitslots geladen wurden. Am Desktop (echte Maus) trat das Problem nicht auf.\n\t\t *\n\t\t * Fix: wir h\u00f6ren direkt auf das native \"touchend\"-Event des angetippten Tages\n\t\t * und l\u00f6sen die Selektion selbst per fullCalendar('select', datum) aus - das\n\t\t * ist derselbe interne Mechanismus, den FullCalendar sonst nach einem\n\t\t * erfolgreichen Maus-Klick aufruft, nur dass wir ihn hier direkt ansto\u00dfen statt\n\t\t * auf die (unzuverl\u00e4ssige) automatische Touch->Maus-\u00dcbersetzung zu warten.\n\t\t *\n\t\t * \"on(document, ...)\" (delegiert) statt direkt an .fc-day-top gebunden, weil\n\t\t * der Kalender bei jedem Service-\/Datumswechsel zerst\u00f6rt und neu aufgebaut wird\n\t\t * (fullCalendar('destroy') + Neuaufbau) - eine direkte Bindung w\u00fcrde nach dem\n\t\t * Neuaufbau verloren gehen, die delegierte Bindung am document nicht.\n\t\t *\n\t\t * e.preventDefault() unterdr\u00fcckt die vom Touch danach simulierten Maus-Events\n\t\t * (mousedown\/mouseup\/click), damit die Selektion nicht ein zweites Mal ausgel\u00f6st wird.\n\t\t * Nebeneffekt: dadurch feuert auch der simulierte Klick nicht mehr, \u00fcber den\n\t\t * bisher der gr\u00fcne Kreis (.active) auf dem angetippten Tag gesetzt wurde\n\t\t * (siehe Klick-Handler direkt dar\u00fcber). Deshalb setzen wir die Markierung hier\n\t\t * manuell, genau nach demselben Muster wie der Klick-Handler.\n\t\t *\n\t\t * Tap vs. Scroll: \"touchend\" allein kann nicht unterscheiden, ob der Finger nur\n\t\t * kurz auf dem Tag abgesetzt wurde (Tap = Datum w\u00e4hlen) oder ob dar\u00fcber gewischt\n\t\t * wurde, um die Seite zu scrollen (Finger landet zuf\u00e4llig auch auf einem Tag).\n\t\t * Deshalb merken wir uns in \"touchstart\" die Startposition des Fingers und\n\t\t * vergleichen sie in \"touchend\" mit der Endposition. Nur wenn sich der Finger\n\t\t * kaum bewegt hat (unter dem Schwellwert), werten wir es als Tap und w\u00e4hlen das\n\t\t * Datum. Bei gr\u00f6\u00dferer Bewegung war es ein Scroll\/Wisch -> keine Aktion, die Seite\n\t\t * scrollt ganz normal weiter (wir rufen dann auch kein preventDefault() auf).\n\t\t *\/\n\t\tvar o365CalendarTouchStartX = 0;\n\t\tvar o365CalendarTouchStartY = 0;\n\t\tvar o365CalendarTouchMoveThreshold = 10; \/\/ Pixel, ab denen wir es als Scroll werten statt als Tap\n\n\t\tjQuery(document).on('touchstart', '.o365-booking__form .fc-day-top:not(.disabled)', function(e){\n\t\t\tvar touch = e.originalEvent.touches[0];\n\t\t\to365CalendarTouchStartX = touch.pageX;\n\t\t\to365CalendarTouchStartY = touch.pageY;\n\t\t});\n\n\t\tjQuery(document).on('touchend', '.o365-booking__form .fc-day-top:not(.disabled)', function(e){\n\t\t\tvar touch = e.originalEvent.changedTouches[0];\n\t\t\tvar movedX = Math.abs(touch.pageX - o365CalendarTouchStartX);\n\t\t\tvar movedY = Math.abs(touch.pageY - o365CalendarTouchStartY);\n\n\t\t\tif( movedX > o365CalendarTouchMoveThreshold || movedY > o365CalendarTouchMoveThreshold ) {\n\t\t\t\treturn; \/\/ Finger hat sich bewegt -> Scroll-Geste, keine Datumsauswahl ausl\u00f6sen\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t\tvar $tappedDay = jQuery(this);\n\t\t\tvar tappedDate = $tappedDay.data('date');\n\t\t\tif( tappedDate ) {\n\t\t\t\tjQuery(\".o365-booking__form .fc-day-top .fc-day-number\").removeClass('active');\n\t\t\t\t$tappedDay.find('.fc-day-number').addClass('active');\n\t\t\t\tjQuery('#calendar').fullCalendar('select', tappedDate);\n\t\t\t}\n\t\t});\n\n\t\tfunction secondsTimeSpanToHMS(s) {\n\t\t\tvar hour = '';\n\t\t\tvar minute = '';\n\t\t\tvar h = Math.floor(s\/3600); \/\/Get whole hours\n\t\t\ts -= h*3600;\n\t\t\tvar m = Math.floor(s\/60); \/\/Get remaining minutes\n\t\t\ts -= m*60;\n\n\t\t\tif( h < 1 )\n\t\t\t{\n\t\t\t\th = '';\n\t\t\t\tif( m < 1 )\n\t\t\t\t{\n\t\t\t\t\tm = '';\n\t\t\t\t\tminute = '';\n\t\t\t\t}else if( m < 2 )\n\t\t\t\t{\n\t\t\t\t\tminute = ' minute';\n\t\t\t\t}else{\n\t\t\t\t\tminute = ' minutes';\n\t\t\t\t}\n\t\t\t}else if( h < 2 )\n\t\t\t{\n\t\t\t\tif( m < 1 )\n\t\t\t\t{\n\t\t\t\t\tm = '';\n\t\t\t\t\thour = ' hour';\n\t\t\t\t\tminute = '';\n\t\t\t\t}else if( m < 2 )\n\t\t\t\t{\n\t\t\t\t\thour = ' hour';\n\t\t\t\t\tminute = ' minute';\n\t\t\t\t}else{\n\t\t\t\t\thour = ' hour';\n\t\t\t\t\tminute = ' minutes';\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif( m < 1 )\n\t\t\t\t{\n\t\t\t\t\tm = '';\n\t\t\t\t\thour = '';\n\t\t\t\t\tminute = '';\n\t\t\t\t}else if( m < 2 ){\n\t\t\t\t\thour = ' hours';\n\t\t\t\t\tminute = ' minute';\n\t\t\t\t}else{\n\t\t\t\t\thour =  ' hours';\n\t\t\t\t\tminute = ' minutes';\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn( h+hour+(m < 10 ? ' '+m+minute : ' '+m+minute));\n\t\t}\n\n\t\tfunction addingMiniLeadTime( mldtime_auto_select_event )\n\t\t{\n\t\t\tvar now = new Date();\n\t\t\tnow.setHours(now.getHours() + parseInt(mldtime_auto_select_event));\n\t\t\tmin_start_time = moment(now).format(\"YYYY-MM-DD h:mm:s\");\n\t\t\treturn min_start_time;\n\t\t}\n\n\t\tfunction o365_booking_form_get_duration_in_seconds( str_time, point = \"\" )\n\t\t{\n\t\t\tlet temp_time = 0,\n\t\t\t\ttemp_string = str_time, \n\t\t\t\tD = 'D',\n\t\t\t\tH = 'H',\n\t\t\t\tM = 'M',\n\t\t\t\tDT = 'DT',\n\t\t\t\tPT = 'PT';\n\t\t\t\n\t\t\tif ( temp_string.indexOf(DT) != -1 && temp_string.indexOf(H) != -1 )\/\/P1DT1H\n\t\t\t{\n\t\t\t\ttemp_data = temp_string.split(\"DT\");\n\t\t\t\ttemp_day_hrs = temp_data[0].replace(\"P\",\"\");\n\t\t\t\ttemp_day_hrs = temp_day_hrs*60*60*24;\n\t\t\t\ttemp_hrs_data = temp_data[1].replace(\"H\",\"\");\n\t\t\t\ttemp_data_minutes = temp_hrs_data*60*60;\n\t\t\t\ttemp_time = (temp_day_hrs+temp_data_minutes);\n\t\t\t\t\n\t\t\t}\n\t\t\telse if ( temp_string.indexOf(D) != -1 )\/\/P1D\n\t\t\t{\n\t\t\t\ttemp_data = temp_string.split(\"P\");\n\t\t\t\ttemp_data_hrs = temp_data[1].replace(\"D\",\"\");\n\t\t\t\ttemp_time = temp_data_hrs*60*60*24;\n\t\t\t}\n\t\t\telse if ( temp_string.indexOf(H) != -1 && temp_string.indexOf(M) != -1 )\/\/PT1H30M\n\t\t\t{\n\t\t\t\ttemp_data = temp_string.split( \"H\" );\n\t\t\t\ttemp_data_hrs = temp_data[0].replace( \"PT\",\"\" );\n\t\t\t\ttemp_data_hrs = temp_data_hrs*60*60;\n\t\t\t\ttemp_data_minutes = temp_data[1].replace( \"M\",\"\" );\n\t\t\t\tif( point == \"for_start\" )\n\t\t\t\t{\n\t\t\t\t\ttemp_data_minutes = temp_data_minutes*60;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttemp_data_minutes = temp_data_minutes*60;\n\t\t\t\t}\n\t\t\t\ttemp_time = (temp_data_hrs+temp_data_minutes);\n\t\t\t}\n\t\t\telse if ( temp_string.indexOf(H) != -1 )\/\/PT1H\n\t\t\t{\n\t\t\t\ttemp_data = temp_string.split(\"PT\");\n\t\t\t\ttemp_data_hrs = temp_data[1].replace(\"H\",\"\");\n\t\t\t\ttemp_time = temp_data_hrs*60*60;\n\t\t\t}\n\t\t\telse if ( temp_string.indexOf(M) != -1 )\/\/PT15M\n\t\t\t{\n\t\t\t\ttemp_data = temp_string.split(\"PT\");\n\t\t\t\ttemp_data_minutes = temp_data[1].replace(\"M\",\"\");\n\t\t\t\tif( point == \"for_start\" )\n\t\t\t\t{\n\t\t\t\t\ttemp_data_minutes = temp_data_minutes*60;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttemp_data_minutes = temp_data_minutes*60;\n\t\t\t\t}\n\t\t\t\ttemp_time = temp_data_minutes;\n\t\t\t}\/\/PT0S\n\t\t\treturn temp_time\/60;\n\t\t}\n\n\t\tfunction stripePaymentMethodHandler(result) {\n\t\t\tvar serviceprice; \n\t\t\tvar date =\tnew Date();\n\t\t\tvar stripe_token = '';\n\t\t\tvar selected_service = jQuery(\"#ms_booking_selected_service\").val();\n\n\t\t\tstripe.createToken(cardElement).then(function(resultToken) {\n\t\t\t\tif (resultToken.error) {\n\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html('');\n\t\t\t\t\t\/\/ Inform the customer that there was an error.\n\t\t\t\t\tvar errorElement = document.getElementById('card-errors');\n\t\t\t\t\terrorElement.textContent = resultToken.error.message;\n\t\t\t\t} else {\n\t\t\t\t\t\/\/ Send the token to your server.\n\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\/\/ Show error in payment form\n\t\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html('');\n\t\t\t\t\t\talert(\"Error in creating payment token.\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tserviceprice = jQuery('p.o365_booking_meta.active span.ms_booking_services').attr('data-price');\n\t\t\t\t\t\t\/\/ Otherwise send paymentMethod.id to your server (see Step 4)\n\t\t\t\t\t\tfetch(\"https:\/\/www.sportmotorik.com\/wp-admin\/admin-ajax.php?action=capture_ms_booking_payment\", {\n\t\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\t\theaders: { 'Content-Type': 'application\/json' },\n\t\t\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t\t\taction : 'capture_ms_booking_payment',\n\t\t\t\t\t\t\t\tpayment_method_id: result.paymentMethod.id,\n\t\t\t\t\t\t\t\tdescription: \"TerminbuchungSportmotorik@gfholding.at - order \" + date.getTime(),\n\t\t\t\t\t\t\t\tserviceprice : serviceprice,\n\t\t\t\t\t\t\t\tstripe_token : resultToken,\n\t\t\t\t\t\t\t\temail: jQuery(\"#o365_ms_booking_customer_email\").val(),\n\t\t\t\t\t\t\t\tphone: jQuery(\"#o365_ms_booking_customer_phone\").val(),\n\t\t\t\t\t\t\t\tname: jQuery(\"#o365_ms_booking_customer_name\").val(),\n\t\t\t\t\t\t\t\taddress: jQuery(\"#o365_ms_booking_customer_address\").val(),\n\t\t\t\t\t\t\t\tstaff_id: jQuery(\"#ms_booking_selected_staff_id\").val(),\n\t\t\t\t\t\t\t\tservice_id: jQuery(\"#ms_booking_selected_service\").val(),\n\t\t\t\t\t\t\t\ttimeslote: jQuery(\"#ms_booking_selected_time\").val(),\n\t\t\t\t\t\t\t\tbusinessid:\"TerminbuchungSportmotorik@gfholding.at\",\n\t\t\t\t\t\t\t\tselecteddate: jQuery(\"#ms_booking_selected_date\").val(),\n\t\t\t\t\t\t\t\tbooking_time_diff: 0,\n\t\t\t\t\t\t\t\tduration:services_time_array[selected_service][\"duration\"],\n\t\t\t\t\t\t\t\tpre_buffer:services_time_array[selected_service][\"pre_buffer\"],\n\t\t\t\t\t\t\t\tpost_buffer:services_time_array[selected_service][\"post_buffer\"],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}).then(function(result) {\n\t\t\t\t\t\t\tresult.json().then(function(json) {\n\t\t\t\t\t\t\t\thandleServerResponse(json);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\t\t\n\t\tfunction handleServerResponse(response) {\n\t\t\tif (response.error) {\n\t\t\t\t\/\/ Show error from server on payment form\n\t\t\t} else if (response.requires_action) {\n\t\t\t\t\/\/ Use Stripe.js to handle required card action\n\t\t\t\tstripe.handleCardAction(\n\t\t\t\t\tresponse.payment_intent_client_secret\n\t\t\t\t).then(handleStripeJsResult);\n\t\t\t} else {\n\t\t\t\tif(response.success) {\n\t\t\t\t\to365SendMsBookingData(response.data.receipt_url);\n\t\t\t\t} else if( ! response.success ) {\n\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html('');\n\t\t\t\t\tvar errorElement = document.getElementById('card-errors');\n\t\t\t\t\terrorElement.textContent = response.data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction handleStripeJsResult(result) {\n\t\t\tif (result.error) {\n\t\t\t\t\/\/ Show error in payment form\n\t\t\t} else {\n\t\t\t\t\/\/ The card action has been handled\n\t\t\t\t\/\/ The PaymentIntent can be confirmed again on the server\n\t\t\t\tvar serviceprice = jQuery('p.o365_booking_meta.active span.ms_booking_services').attr('data-price');\n\t\t\t\tfetch(\"https:\/\/www.sportmotorik.com\/wp-admin\/admin-ajax.php?action=capture_ms_booking_payment\", {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { 'Content-Type': 'application\/json' },\n\t\t\t\t\tbody: JSON.stringify({ \n\t\t\t\t\t\t\t'action':'capture_ms_booking_payment', \n\t\t\t\t\t\t\tpayment_intent_id: result.paymentIntent.id, \n\t\t\t\t\t\t\tdescription: \"TerminbuchungSportmotorik@gfholding.at - order \" + date.getTime(),\n\t\t\t\t\t\t\tserviceprice : serviceprice,\n\t\t\t\t\t\t})\n\t\t\t\t}).then(function(confirmResult) {\n\t\t\t\t\treturn confirmResult.json();\n\t\t\t\t}).then(handleServerResponse);\n\t\t\t}\n\t\t}\n\n\t\tfunction o365SendMsBookingData(receipt_url = false){\n\n\t\t\tvar customfield = '';\n\t\t\tjQuery('input.o365_ms_booking_customfield').each(function(){\n\t\t\t\tif( jQuery(this).attr('type') == 'checkbox' || jQuery(this).attr('type') == 'radio' ){\n\t\t\t\t\tif(jQuery(this).is(':checked')){\n\t\t\t\t\t\tif(jQuery(this).attr('data-name') != undefined && jQuery(this).attr('data-name') != null){\n\t\t\t\t\t\t\tcustomfield += jQuery(this).attr('data-name') +': '+ jQuery(this).val() + '\\n ';\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcustomfield += jQuery(this).attr('name') +': '+ jQuery(this).val() + '\\n ';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else {\n\t\t\t\t\tif(jQuery(this).attr('data-name') != undefined && jQuery(this).attr('data-name') != null){\n\t\t\t\t\t\tcustomfield += jQuery(this).attr('data-name') +': '+ jQuery(this).val() + '\\n ';\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcustomfield += jQuery(this).attr('name') +': '+ jQuery(this).val() + '\\n ';\n\t\t\t\t\t}\n\t\t\t\t}\t\t\t\n\t\t\t});\n\n\t\t\tjQuery('select.o365_ms_booking_customfield').each(function(){\n\t\t\t\tif(jQuery(this).attr('data-name') != undefined && jQuery(this).attr('data-name') != null){\n\t\t\t\t\tcustomfield += jQuery(this).attr('data-name') +': '+ jQuery(this).val() + '\\n ';\n\t\t\t\t}else{\n\t\t\t\t\tcustomfield += jQuery(this).attr('name') +': '+ jQuery(this).val() + '\\n ';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tjQuery('textarea.o365_ms_booking_customfield').each(function(){\n\t\t\t\tif(jQuery(this).attr('data-name') != undefined && jQuery(this).attr('data-name') != null){\n\t\t\t\t\tcustomfield += jQuery(this).attr('data-name') +': '+ jQuery(this).val() + '\\n ' ;\n\t\t\t\t}else{\n\t\t\t\t\tcustomfield += jQuery(this).attr('name') +': '+ jQuery(this).val() + '\\n ';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tjQuery(\"#o365_booking_error_message\").html( '<span class=\"digihouse-loader\"><\/span>' );\n\t\t\tvar selected_service = jQuery(\"#ms_booking_selected_service\").val();\n\t\t\tvar start_time = jQuery(\"#ms_booking_selected_time\").val();\n\t\t\tvar duration = services_time_array[selected_service][\"duration\"];\n\t\t\tvar end_time = '';\n\n\t\t\tduration = o365_booking_form_get_duration_in_seconds( duration );\n\t\t\tend_time = moment.utc(start_time,'HH:mm').add(duration,'minutes').format('HH:mm');\n\t\t\tvar data = '';\n\t\t\tvar workflow_url = '';\n\t\t\tvar is_workflow = '';\n\n\t\t\tworkflow_url = '';\n\t\t\tis_workflow = 'no';\n\n\t\t\tif( workflow_url != '' && is_workflow == 'yes' ) {\n\t\t\t\tdata = { \n\t\t\t\t\t\t\t'action':'create_ms_booking_from_wp', \n\t\t\t\t\t\t\t'workflow_url':'',\n\t\t\t\t\t\t\t'staff_id':jQuery(\"#ms_booking_selected_staff_id\").val(),\n\t\t\t\t\t\t\t'businessid':\"TerminbuchungSportmotorik@gfholding.at\",\n\t\t\t\t\t\t\t'service_id':jQuery(\"#ms_booking_selected_service\").val(),\n\t\t\t\t\t\t\t'serviceNotes':jQuery(\"#o365_ms_booking_customer_notes\").val()+' '+customfield,\n\t\t\t\t\t\t\t'email':jQuery(\"#o365_ms_booking_customer_email\").val(),\n\t\t\t\t\t\t\t'phone':jQuery(\"#o365_ms_booking_customer_phone\").val(),\n\t\t\t\t\t\t\t'name':jQuery(\"#o365_ms_booking_customer_name\").val(),\n\t\t\t\t\t\t\t'customernotes':jQuery(\"#o365_ms_booking_customer_notes\").val()+' '+customfield,\n\t\t\t\t\t\t\t'customeraddress':jQuery(\"#o365_ms_booking_customer_address\").val(),\n\t\t\t\t\t\t\t'start_time':jQuery(\"#ms_booking_selected_date\").val()+\" \"+jQuery(\"#ms_booking_selected_time\").val(),\n\t\t\t\t\t\t\t'end_time':jQuery(\"#ms_booking_selected_date\").val()+\" \"+end_time,\n\t\t\t\t\t\t\t'timezone':\"UTC\",\n\t\t\t\t\t\t\t'pre_buffer':services_time_array[selected_service][\"pre_buffer\"],\n\t\t\t\t\t\t\t'post_buffer':services_time_array[selected_service][\"post_buffer\"],\n\t\t\t\t\t\t\t'duration':services_time_array[selected_service][\"duration\"], \n\t\t\t\t\t\t\tbooking_time_diff:booking_time_diff,\n\t\t\t\t\t\t\t'staff_email':email_by_staff_id[jQuery(\"#ms_booking_selected_staff_id\").val()],\n\t\t\t\t\t\t\t'service_name':jQuery(\".o365_booking_meta.active\").children(\".ms_booking_services\").data('name'),\n\t\t\t\t\t\t\t'hourdiff': '-1',\n\t\t\t\t\t\t\t'timezone': 'Europe\/Vienna',\n\t\t\t\t\t\t\t'location_online': '',\n\t\t\t\t\t\t\t'customer_timezone': timezone,\n\t\t\t\t\t\t\t'start_time_timestamp': jQuery(\"#ms_booking_selected_time_stamp\").val(),\n\t\t\t\t\t\t};\n\t\t\t\tjQuery.post( \"https:\/\/www.sportmotorik.com\/wp-admin\/admin-ajax.php\", data , function( response, txtStatus, jqXHR )\n\t\t\t\t{\n\t\t\t\t\tif( response.success )\n\t\t\t\t\t{\n\t\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\" \");\n\t\t\t\t\t\tjQuery(\"#o365_booking_success_message\").html(\" \");\n\n\t\t\t\t\t\tif( JSON.parse(response.data).id){\n\t\t\t\t\t\t\tjQuery(\"#o365_booking_success_message\").html(\"<div>Thank you for your booking! We will send you a confirmation email with all the details shortly.<\/div>\");\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Error while creating appointment\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ window.setTimeout(function(){window.location.reload()}, 5000);\n\t\t\t\t\t\tresetMsBookingPage();\t\t\t\t\tif( JSON.parse(response.data).id ) {\n\t\t\t\t\t\tvar o365BookingResult = JSON.parse(response.data);\n\t\t\t\t\t\tvar o365BookingPayload = o365BuildBookingPayload(data, o365BookingResult);\n\t\t\t\t\t\to365PushBookingDataLayer(o365BookingPayload);\n\t\t\t\t\t\to365SendUncannyAutomatorWebhook(o365BookingPayload);\n\t\t\t\t\t\to365HideFormKeepSuccessMessage();\n\t\t\t\t\t}\n\t\t\t\t\t} else if( response.error ) {\n\t\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\" \");\n\t\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Sorry, something went wrong. Please try again later.\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.fail(function()\n\t\t\t\t{\n\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\" \");\n\t\t\t\t\tconsole.log(\"ERROR\");\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdata = { \n\t\t\t\t\t\t\t'action':'create_ms_booking_from_wp', \n\t\t\t\t\t\t\t'staff_id':jQuery(\"#ms_booking_selected_staff_id\").val(),\n\t\t\t\t\t\t\t'businessid':\"TerminbuchungSportmotorik@gfholding.at\",\n\t\t\t\t\t\t\t'service_id':jQuery(\"#ms_booking_selected_service\").val(),\n\t\t\t\t\t\t\t'serviceNotes':jQuery(\"#o365_ms_booking_customer_notes\").val()+' '+customfield,\n\t\t\t\t\t\t\t'email':jQuery(\"#o365_ms_booking_customer_email\").val(),\n\t\t\t\t\t\t\t'phone':jQuery(\"#o365_ms_booking_customer_phone\").val(),\n\t\t\t\t\t\t\t'name':jQuery(\"#o365_ms_booking_customer_name\").val(),\n\t\t\t\t\t\t\t'customernotes':jQuery(\"#o365_ms_booking_customer_notes\").val()+' '+customfield,\n\t\t\t\t\t\t\t'customeraddress':jQuery(\"#o365_ms_booking_customer_address\").val(),\n\t\t\t\t\t\t\t'start_time':jQuery(\"#ms_booking_selected_date\").val()+\" \"+jQuery(\"#ms_booking_selected_time\").val(),\n\t\t\t\t\t\t\t'timezone':\"UTC\",\n\t\t\t\t\t\t\t'pre_buffer':services_time_array[selected_service][\"pre_buffer\"],\n\t\t\t\t\t\t\t'post_buffer':services_time_array[selected_service][\"post_buffer\"],\n\t\t\t\t\t\t\t'duration':services_time_array[selected_service][\"duration\"], \n\t\t\t\t\t\t\tbooking_time_diff:booking_time_diff,\n\t\t\t\t\t\t\t'hourdiff': '-1',\n\t\t\t\t\t\t\t'timezone': 'Europe\/Vienna',\n\t\t\t\t\t\t\t'location_online': '',\n\t\t\t\t\t\t\t'customer_timezone': timezone,\n\t\t\t\t\t\t\t'start_time_timestamp': jQuery(\"#ms_booking_selected_time_stamp\").val(),\n\t\t\t\t\t\t};\n\t\t\t\tjQuery.post( \"https:\/\/www.sportmotorik.com\/wp-admin\/admin-ajax.php\", data , function( response, txtStatus, jqXHR )\n\t\t\t\t{\n\t\t\t\t\tif( response.success )\n\t\t\t\t\t{\n\t\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\" \");\n\t\t\t\t\t\tjQuery(\"#o365_booking_success_message\").html(\" \");\n\n\t\t\t\t\t\tif( JSON.parse(response.data).id){\n\t\t\t\t\t\t\tjQuery(\"#o365_booking_success_message\").html(\"<div>Thank you for your booking! We will send you a confirmation email with all the details shortly.<\/div>\");\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\"Error while creating appointment\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif( JSON.parse(response.data).id ) {\n\t\t\t\t\t\tvar o365BookingResult = JSON.parse(response.data);\n\t\t\t\t\t\tvar o365BookingPayload = o365BuildBookingPayload(data, o365BookingResult);\n\t\t\t\t\t\to365PushBookingDataLayer(o365BookingPayload);\n\t\t\t\t\t\to365SendUncannyAutomatorWebhook(o365BookingPayload);\n\t\t\t\t\t\to365HideFormKeepSuccessMessage();\n\t\t\t\t\t}\n\t\t\t\t\tif( receipt_url != undefined && receipt_url != '' && receipt_url != false && receipt_url != null ) {\n\t\t\t\t\t\t\twindow.open(receipt_url, '_blank');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ window.setTimeout(function(){window.location.reload()}, 5000);\n\t\t\t\t\t\tresetMsBookingPage();\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.fail(function()\n\t\t\t\t{\n\t\t\t\t\tjQuery(\"#o365_booking_error_message\").html(\" \");\n\t\t\t\t\tconsole.log(\"ERROR\");\n\t\t\t\t});\n\t\t\t}\n\t\t\t\t\n\t\t}\n\n\t\tfunction o365BuildBookingPayload(bookingData, bookingResult) {\n\t\t\treturn {\n\t\t\t\tevent: 'ms_booking_confirmed',\n\t\t\t\tbooking_id: (bookingResult && bookingResult.id) ? bookingResult.id : '',\n\t\t\t\tbusiness_id: bookingData.businessid,\n\t\t\t\tservice_id: bookingData.service_id,\n\t\t\t\tservice_name: bookingData.service_name || jQuery(\".o365_booking_meta.active\").children(\"span.ms_booking_services\").data('name'),\n\t\t\t\tservice_price: jQuery('p.o365_booking_meta.active span.ms_booking_services').attr('data-price'),\n\t\t\t\tstaff_id: bookingData.staff_id,\n\t\t\t\tstaff_email: bookingData.staff_email || '',\n\t\t\t\tstart_time: bookingData.start_time,\n\t\t\t\tend_time: bookingData.end_time || '',\n\t\t\t\tcustomer_name: bookingData.name,\n\t\t\t\tcustomer_email: bookingData.email,\n\t\t\t\tcustomer_phone: bookingData.phone,\n\t\t\t\tcustomer_notes: bookingData.customernotes,\n\t\t\t\tcustomer_timezone: bookingData.customer_timezone\n\t\t\t};\n\t\t}\n\n\t\tfunction o365PushBookingDataLayer(payload) {\n\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\twindow.dataLayer.push(payload);\n\t\t}\n\n\t\tfunction o365SendUncannyAutomatorWebhook(payload) {\n\t\t\tif( ! uncannyAutomatorWebhookUrl ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfetch(uncannyAutomatorWebhookUrl, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { 'Content-Type': 'application\/json' },\n\t\t\t\tbody: JSON.stringify(payload)\n\t\t\t}).catch(function(err){ console.log('Uncanny Automator webhook error', err); });\n\t\t}\n\n\t\tfunction o365HideFormKeepSuccessMessage() {\n\t\t\tjQuery('#ms_booking_service').hide();\n\t\t\tjQuery('.ms_booking_services_wrapper').hide();\n\t\t\tjQuery('.ms_booking_calendar_wrapper').hide();\n\t\t\tjQuery('.o365_ms__add_your_details_wrapper').hide();\n\t\t\tjQuery('.aboveservice, .belowservice, .belowstaffavail, .belowcontactdetail, .customsubmit').hide();\n\t\t\tjQuery('.o365-ms-booking-form-group').not('.o365_button').hide();\n\t\t\tjQuery('#o365_ms_booking_form').hide();\n\t\t\tjQuery('#o365_booking_error_message').hide();\n\t\t\tjQuery('#o365_booking_success_message').show();\n\t\t}\n\n\t\tfunction resetMsBookingPage () {\n\t\t\tjQuery(\"#o365_ms_booking_customer_name\").val('');\n\t\t\tjQuery(\"#o365_ms_booking_customer_phone\").val('');\n\t\t\tjQuery(\"#o365_ms_booking_customer_email\").val('');\n\t\t\tjQuery(\"#o365_ms_booking_customer_address\").val('');\n\t\t\tjQuery(\"#o365_ms_booking_customer_notes\").val('');\n\t\t\tjQuery(\".o365_booking_available_time_slot_span\").removeClass('time_slot_active');\n\t\t\t\/\/ jQuery(\".o365_booking_meta\").removeClass('active');\n\t\t\t\n\n\t\t\tjQuery('#calendar').fullCalendar('destroy');\n\t\t\tjQuery('#calendar').fullCalendar({\n\t\t\t\tlocale: initialLocaleCode,\n\t\t\t\tnow: moment(),\n\t\t\t\theader: {\n\t\t\t\t\tleft: 'prev,next',\n\t\t\t\t\tcenter: 'title',\n\t\t\t\t\tright: ''\n\t\t\t\t},\n\t\t\t\tfirstDay: 0,\n\t\t\t\tnavLinks: false,\n\t\t\t\tdayRender: function(date, cell){\n\t\t\t\t\tjQuery(cell).parents('.fc-bg').next('.fc-content-skeleton').children(\"table\").children(\"thead\").children(\"tr\").children(\"td\").each(function(){\n\t\t\t\t\t\tjQuery(this).addClass('disabled');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tjQuery(\".o365_booking_meta.active\").children(\"span.ms_booking_services\").click();\n\t\t}\n\t});\n<\/script>\n<div>\n<\/div>\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\n<\/div><\/section><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":5257,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-8343","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/pages\/8343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/comments?post=8343"}],"version-history":[{"count":10,"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/pages\/8343\/revisions"}],"predecessor-version":[{"id":8425,"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/pages\/8343\/revisions\/8425"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/media\/5257"}],"wp:attachment":[{"href":"https:\/\/www.sportmotorik.com\/en\/wp-json\/wp\/v2\/media?parent=8343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}