{"id":5532,"date":"2025-11-18T15:44:40","date_gmt":"2025-11-18T13:44:40","guid":{"rendered":"https:\/\/ks-scienceoasis.org.sa\/ai\/book\/"},"modified":"2025-12-16T13:47:01","modified_gmt":"2025-12-16T11:47:01","slug":"book","status":"publish","type":"page","link":"https:\/\/ks-scienceoasis.org.sa\/en\/ai\/book\/","title":{"rendered":"Booking tickets for the AI Festival"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5532\" class=\"elementor elementor-5532 elementor-5524\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-358ca06 e-flex e-con-boxed e-con e-parent\" data-id=\"358ca06\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-202c008 e-con-full e-flex e-con e-child\" data-id=\"202c008\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-953e990 elementor-icon-list--layout-inline elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"953e990\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.7366 10.8064C14.7366 9.43255 13.6234 8.31934 12.2505 8.31934C10.8767 8.31934 9.76349 9.43255 9.76349 10.8064C9.76349 12.1792 10.8767 13.2924 12.2505 13.2924C13.6234 13.2924 14.7366 12.1792 14.7366 10.8064Z\" stroke=\"black\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.2496 21.25C12.2496 21.25 4.97373 16.5108 4.7904 10.5973C4.66167 6.4451 8.12944 2.75008 12.2496 2.75008C16.3697 2.75008 19.8366 6.44504 19.7097 10.5973C19.5253 16.632 12.2496 21.25 12.2496 21.25Z\" stroke=\"black\" stroke-width=\"1.5\" stroke-linecap=\"round\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Riyadh<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.99982 9.62193C1.99982 4.56302 3.68636 2.8772 8.74457 2.8772C13.8035 2.8772 15.49 4.56302 15.49 9.62193C15.49 14.6808 13.8035 16.3667 8.74457 16.3667C3.68636 16.3667 1.99982 14.6808 1.99982 9.62193Z\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M2.20013 7.11157H15.2968\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M11.948 9.97485H11.9545\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M8.74847 9.97485H8.75502\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M5.54279 9.97485H5.54933\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M11.948 12.7764H11.9545\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M8.74847 12.7764H8.75502\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M5.54279 12.7764H5.54933\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M11.6603 1.82153V4.1939\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M5.83612 1.82153V4.1939\" stroke=\"#2B2B2B\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">From 16 November 2025 \u2013 1 January 2026<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bb5edc6 e-flex e-con-boxed e-con e-parent\" data-id=\"bb5edc6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f332068 elementor-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"f332068\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M7.35938 12.4844H12.0655\" stroke=\"#3AD9C3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M10.1914 8.22266H12.0657\" stroke=\"#3AD9C3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M3.44141 8.69015C3.44141 6.79598 3.44141 5.8489 3.79831 5.12037C4.14003 4.42283 4.70408 3.85878 5.40162 3.51706C6.13015 3.16016 7.07724 3.16016 8.97141 3.16016H16.0293C17.9234 3.16016 18.8705 3.16016 19.599 3.51706C20.2966 3.85878 20.8606 4.42283 21.2024 5.12037C21.5593 5.8489 21.5593 6.79599 21.5593 8.69016V11.8622C21.5593 13.7564 21.5593 14.7034 21.2024 15.432C20.8606 16.1295 20.2966 16.6936 19.599 17.0353C18.8705 17.3922 17.9234 17.3922 16.0293 17.3922H8.9714C7.07723 17.3922 6.13015 17.3922 5.40162 17.0353C4.70408 16.6936 4.14003 16.1295 3.79831 15.432C3.44141 14.7034 3.44141 13.7564 3.44141 11.8622L3.44141 8.69015Z\" stroke=\"#3AD9C3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path opacity=\"0.4\" d=\"M5.8916 17.2246L13.0709 19.4009C14.8994 19.8954 15.8137 20.1426 16.6101 19.9883C17.3727 19.8405 18.0644 19.4433 18.5764 18.8592C18.9045 18.4847 19.1244 17.9958 19.3596 17.2513\" stroke=\"#3AD9C3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path opacity=\"0.4\" d=\"M16.0898 8.66406V11.8474\" stroke=\"#3AD9C3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path opacity=\"0.4\" d=\"M16.0898 3.16016V5.87393\" stroke=\"#3AD9C3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path opacity=\"0.4\" d=\"M16.0898 14.6328V17.3466\" stroke=\"#3AD9C3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Family and individual bookings<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c75786 elementor-widget elementor-widget-shortcode\" data-id=\"7c75786\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div id=\"ai-festival-booking-form-en\" class=\"ai-festival-container ai-festival-container-en\">\n\n    <form\n        id=\"ai-booking-form-en\"\n        class=\"booking-form ai-booking-form\"\n        data-lang=\"en\"\n        data-success-redirect=\"https:\/\/ks-scienceoasis.org.sa\/en\/ai\/\"\n    >\n        <input type=\"hidden\" name=\"booking_lang\" value=\"en\">\n\n        <div class=\"form-section\">\n            <h3>Select Date & Time<\/h3>\n\n            <div class=\"form-group\">\n                <label for=\"event_date_en\" class=\"required\">Date<\/label>\n                <input type=\"text\" id=\"event_date_en\" name=\"event_date\" required placeholder=\"Select date\"\n                       data-min-date=\"2026-04-18\"\n                       data-max-date=\"2026-01-01\"\n                       onchange=\"validateDateEn(this)\">\n            <\/div>\n\n            <div class=\"form-group\">\n                <label for=\"event_time_en\" class=\"required\">Time<\/label>\n                <select id=\"event_time_en\" name=\"event_time\" required>\n                    <option value=\"\">Select time<\/option>\n                                            <option value=\"16:00\" data-time-value=\"16:00\">\n                            4:00 PM - 5:00 PM                        <\/option>\n                                            <option value=\"17:00\" data-time-value=\"17:00\">\n                            5:00 PM - 6:00 PM                        <\/option>\n                                            <option value=\"18:00\" data-time-value=\"18:00\">\n                            6:00 PM - 7:00 PM                        <\/option>\n                                            <option value=\"19:00\" data-time-value=\"19:00\">\n                            7:00 PM - 8:00 PM                        <\/option>\n                                            <option value=\"20:00\" data-time-value=\"20:00\">\n                            8:00 PM - 9:00 PM                        <\/option>\n                                    <\/select>\n            <\/div>\n        <\/div>\n\n        <div class=\"form-section\">\n            <h3>Visitors<\/h3>\n\n            <div class=\"ticket-counter\">\n                <label>Number of visitors (max 5)<\/label>\n                <div class=\"counter-controls\">\n                    <button type=\"button\" id=\"decrease-visitors-en\" class=\"counter-btn\">-<\/button>\n                    <input type=\"number\" id=\"total_tickets_en\" name=\"total_tickets\" value=\"1\" min=\"1\" max=\"5\" readonly>\n                    <button type=\"button\" id=\"increase-visitors-en\" class=\"counter-btn\">+<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"form-section\">\n            <h3>Booking Details<\/h3>\n\n            <div class=\"form-group\">\n                <label for=\"customer_name_en\" class=\"required\">Name of person in charge<\/label>\n                <input type=\"text\" id=\"customer_name_en\" name=\"customer_name\" required>\n            <\/div>\n\n            <div class=\"form-group\">\n                <label for=\"customer_email_en\" class=\"required\">Email<\/label>\n                <input type=\"email\" id=\"customer_email_en\" name=\"customer_email\" required>\n            <\/div>\n\n            <div class=\"form-group\">\n                <label for=\"customer_phone_en\" class=\"required\">Mobile number<\/label>\n                <input type=\"tel\" id=\"customer_phone_en\" name=\"customer_phone\" required>\n            <\/div>\n\n            <div class=\"form-group\">\n                <label class=\"required\">Is the booking for a family or an individual?<\/label>\n                <div class=\"radio-group\">\n                    <label>\n                        <input type=\"radio\" name=\"booking_type\" value=\"family\"> Family\n                    <\/label>\n                    <label style=\"margin-left: 20px;\">\n                        <input type=\"radio\" name=\"booking_type\" value=\"individual\" checked> Individual\n                    <\/label>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"form-actions\">\n            <button type=\"submit\" class=\"submit-btn\">Confirm Booking<\/button>\n        <\/div>\n    <\/form>\n\n    <!-- Confirmation Modal -->\n    <div id=\"booking-modal-en\" class=\"modal\" style=\"display: none;\">\n        <div class=\"modal-content\">\n            <span class=\"close\">&times;<\/span>\n            <h3>Booking Confirmed!<\/h3>\n            <p class=\"booking-success-message\" data-default-message=\"Thank you for your booking. The booking details have been sent to your email.\">\n                Thank you for your booking. The booking details have been sent to your email.\n            <\/p>\n            <div id=\"booking-details-en\" class=\"booking-details-area\"><\/div>\n            <button type=\"button\" class=\"modal-close-btn\">Close<\/button>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\nvar aiFestivalAllowedDays = [2, 3, 4, 5, 6]; \/\/ Tuesday to Saturday\n\nfunction isAllowedFestivalDay(value) {\n    if (!value) {\n        return true;\n    }\n    var parsed = new Date(value + 'T00:00:00');\n    if (isNaN(parsed.getTime())) {\n        return false;\n    }\n    var day = parsed.getDay();\n    return aiFestivalAllowedDays.indexOf(day) !== -1;\n}\n\nfunction validateDateEn(input) {\n    var value = input.value;\n    if (!value) {\n        return true;\n    }\n    var minDate = input.getAttribute('data-min-date');\n    var maxDate = input.getAttribute('data-max-date');\n\n    if (minDate && value < minDate) {\n        alert('Selected date is outside the allowed booking range. Please select a date after ' + minDate);\n        input.value = '';\n        return false;\n    }\n    if (maxDate && value > maxDate) {\n        alert('Selected date is outside the allowed booking range. Please select a date before ' + maxDate);\n        input.value = '';\n        return false;\n    }\n    if (!isAllowedFestivalDay(value)) {\n        alert('Booking is only available from Tuesday to Saturday. Please pick an allowed day.');\n        input.value = '';\n        return false;\n    }\n    return true;\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n    var dateInput = document.getElementById('event_date_en');\n    if (dateInput) {\n        var minDateAttr = dateInput.getAttribute('data-min-date');\n        var maxDateAttr = dateInput.getAttribute('data-max-date');\n\n        var today = new Date();\n        today.setHours(0, 0, 0, 0);\n        var todayStr = today.toISOString().split('T')[0];\n\n        var minDate = minDateAttr;\n        if (!minDate) {\n            minDate = todayStr;\n        } else if (minDate < todayStr) {\n            minDate = todayStr;\n        }\n\n        var openPicker = function() {\n            if (dateInput.type !== 'date') {\n                dateInput.type = 'date';\n            }\n\n            var nowToday = new Date();\n            nowToday.setHours(0, 0, 0, 0);\n            var nowTodayStr = nowToday.toISOString().split('T')[0];\n\n            var finalMin = minDateAttr;\n            if (!finalMin || finalMin < nowTodayStr) {\n                finalMin = nowTodayStr;\n            }\n            dateInput.setAttribute('min', finalMin);\n\n            if (maxDateAttr) {\n                dateInput.setAttribute('max', maxDateAttr);\n            }\n\n            if (typeof dateInput.showPicker === 'function') {\n                try { dateInput.showPicker(); return; } catch(e) {}\n            }\n            dateInput.focus();\n            dateInput.click();\n        };\n\n        dateInput.addEventListener('focus', openPicker);\n        dateInput.addEventListener('click', openPicker);\n        dateInput.addEventListener('blur', function() {\n            if (!dateInput.value) {\n                dateInput.type = 'text';\n            }\n        });\n    }\n\n    \/\/ Simple counter logic for EN form (mirrors Arabic logic but separate IDs)\n    var decreaseBtn = document.getElementById('decrease-visitors-en');\n    var increaseBtn = document.getElementById('increase-visitors-en');\n    var ticketsInput = document.getElementById('total_tickets_en');\n    if (decreaseBtn && increaseBtn && ticketsInput) {\n        var maxTickets = parseInt(ticketsInput.getAttribute('max'), 10) || 5;\n        decreaseBtn.addEventListener('click', function() {\n            var current = parseInt(ticketsInput.value || '1', 10);\n            if (current > 1) {\n                ticketsInput.value = current - 1;\n            }\n        });\n        increaseBtn.addEventListener('click', function() {\n            var current = parseInt(ticketsInput.value || '1', 10);\n            if (current < maxTickets) {\n                ticketsInput.value = current + 1;\n            }\n        });\n    }\n});\n<\/script>\n\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Riyadh From 16 November 2025 \u2013 1 January 2026 Family and individual bookings<\/p>\n","protected":false},"author":9,"featured_media":0,"parent":5507,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5532","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/pages\/5532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/comments?post=5532"}],"version-history":[{"count":25,"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/pages\/5532\/revisions"}],"predecessor-version":[{"id":5921,"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/pages\/5532\/revisions\/5921"}],"up":[{"embeddable":true,"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/pages\/5507"}],"wp:attachment":[{"href":"https:\/\/ks-scienceoasis.org.sa\/en\/wp-json\/wp\/v2\/media?parent=5532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}