{"id":123,"date":"2013-10-14T23:57:38","date_gmt":"2013-10-14T23:57:38","guid":{"rendered":"https:\/\/rafty.dk\/home"},"modified":"2026-05-28T05:22:21","modified_gmt":"2026-05-28T05:22:21","slug":"book","status":"publish","type":"page","link":"https:\/\/rafty.dk\/da\/book\/","title":{"rendered":"Book en b\u00e5d"},"content":{"rendered":"\n\n<script  src=\"https:\/\/www.google.com\/recaptcha\/enterprise.js?render=6LfZNh8sAAAAAJqcjhJVz3GavnDhZFpprhe6w5l2\">\n<\/script>\n\n\n\n<script>\n\nconst debug = false;\nlet intervalRef = null; \/\/setInterval(calMinPicupTime, 60*60000);\nlet timeRef = null; \/\/setInterval(calMinPicupTime, 60*60000);\nconst currency = \"kr.\";\nconst currencyCode = \"DDK\";\nconst currencyNumber = \"208\";\nlet system_error = false;\n\nlet boatBookingClass = null;\n\n\/\/Message\/status Language Map: en and da\nclass CBoatBookingMessageMap {\n\tmessageMap;\n\tlanguage;\n\tconstructor() {\n\t\tif (window.location.href.indexOf(\"\/en\/\") > 0){\t\t\t\t\n\t\t\tthis.messageMap = new Map([\n\t\t\t  [\"empty\", \"required\"],\n\t\t\t  [\"invalid\", \"invalid\"],\n\t\t\t  [\"Booking is received. Thanh you!\", \"Booking is received. Thanh you!\"],\n\t\t\t  [\"Booking is received, but a confirmation can not be sent\", \"Booking is received, but a confirmation can not be sent. Please, contact us for info.\"],\n\t\t\t  [\"Error\", \"Error\"],\n\t\t\t  [\"Booking is not received\", \"Booking is not received\"],\n\t\t\t  [\"Internet disconnected\", \"Internet disconnected\"],\n\t\t\t  [\"Booked\", \"Booked\"],\n\t\t\t  [\"Your booking\", \"Your booking\"],\n\t\t\t  [\"Booking\/Id\", \"Booking\/Id\"],\n\t\t\t  [\"BookDate\", \"BookDate\"],\t  \n\t\t\t  [\"PayStatus\", \"PayStatus\"],\n\t\t\t  [\"Full name\", \"Full name\"],[\"Phone number\", \"Phone number\"],[\"Email\", \"Email\"],[\"Event length\", \"Event length\"],[\"PickupDate\", \"PickupDate\"],[\"PickupTime\", \"PickupTime\"],[\"PickupDateTime\", \"PickupDateTime\"],[\"Pickup location\", \"Pickup location\"],[\"Dropoff location\", \"Dropoff location\"],[\"Message if necessary\", \"Message if necessary\"],[\"Price\", \"Price\"],\t\n\t\t\t  [\"Best regards\", \"Best regards\"],\n\t\t\t  [\"You must accept our terms of trade\", \"You must accept our terms of trade\"],\n\t\t\t  [\"numbers only\", \"numbers only\"],\n\t\t\t  [\"Pickup location\", \"Pickup location\"],\n\t\t\t  [\"Drop-off location\", \"Drop-off location\"],\n\t\t\t  [\"Please, reload this page\", \"Please, reload this page\"],\n\t\t\t  [\"minimum length of 9 and a maximum length of 15\", \"minimum length of 9 and a maximum length of 15\"]\n\t\t\t]);\n\t\t\tthis.language = \"en\";\t\n\t\t}else{\n\t\t\tthis.language = \"da\";\n\t\t\tthis.messageMap = new Map([\n\t\t\t[\"empty\", \"p\u00e5kr\u00e6vet\"],\n\t\t\t[\"invalid\", \"ugyldig\"],\n\t\t\t[\"Booking is received. Thanh you!\", \"Booking er modtaget. Tak!\"],\n\t\t\t[\"Booking is received, but a confirmation can not be sent\", \"Booking er modtaget, men en bekr\u00e6ftelse kan ikke v\u00e6re sendt. Kontakt us for info.\"],\n\t\t\t[\"Error\", \"Fejl\"],\n\t\t\t[\"Booking is not received\", \"Booking er ikke modtaget\"],\n\t\t\t[\"Internet disconnected\", \"Internet afbrudt\"],\n\t\t\t[\"Booked\", \"Booket\"],\n\t\t\t[\"Your booking\", \"Din booking\"],\n\t\t\t[\"Booking\/Id\", \"Booking\/Id\"],\n\t\t\t[\"BookDate\", \"BookDato\"],\t\t\t  \n\t\t\t[\"PayStatus\", \"BetalStatus\"],\n\t\t\t[\"Full name\", \"Fuld navn\"],[\"Phone number\", \"Telefonnr.\"],[\"Email\", \"E-mail\"],[\"Event length\", \"Begivenhedsl\u00e6ngde\"],[\"PickupDate\", \"AfhentningsDato\"],[\"PickupTime\", \"Afhentningstid\"],[\"PickupDateTime\", \"Afhentningsdatotid\"],[\"Pickup location\", \"Afhentningssted\"],[\"Dropoff location\", \"Afleveringssted\"],[\"Evt. besked\", \"\"],[\"Pris\", \"\"],\n\t\t\t[\"Best regards\", \"Med venlig hilsen\"],\n\t\t\t[\"You must accept our terms of trade\", \"Du skal acceptere vores handelsbetingelser\"],\n\t\t\t[\"numbers only\", \"kun tal\"],\n\t\t\t[\"Pickup location\", \"Afhentningssted\"],\n\t\t\t[\"Drop-off location\", \"Afleveringssted\"],\n\t\t\t[\"Please, reload this page\", \"Genindl\u00e6s venligst dette side\"],\n\t\t\t[\"minimum length of 9 and a maximum length of 15\", \"minimumsl\u00e6ngde p\u00e5 9 og en maksimumsl\u00e6ngde p\u00e5 15\"]\n\t\t]);\t\n\t\t}\n\t}\n\t\n\tgetMessage(msg) {if (this.messageMap.has(msg)) {return this.messageMap.get(msg);} else return msg; }\n\tgetLanguage() { return this.language; }\n}\n\n\/\/Booking a boat\nclass CBoatBookingClass {\n\tdebug;\n\tlanguage;\n\tlocationMap;\n\tconstructor(msgMap) {\n\t\tthis.debug = true;\n\t\tthis.msgMap = msgMap;\n\t\tthis.language = msgMap.getLanguage();\n\t\tthis.locationMap = new Map();\n\t}\n\t\n\tgetMessage(msg) {return this.msgMap.getMessage(msg);}\n\n\tvalidateEmail(email) \n\t{\n\t if (\/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$\/.test(email) && email.indexOf(\".\") > 0)\n\t  {\n\t\treturn true;\n\t  }\n\t   return false;\n\t}\n\n\taccept_our_terms_of_trade_Onchanged(){\n\tif (document.getElementById(\"rafty_booking_accept_terms_of_trade_input\").checked == false){\n\t\tdocument.getElementById(\"accept_our_terms_of_trade_error_msg\").innerHTML = this.msgMap.getMessage(\"You must accept our terms of trade\");\n\t\tdocument.getElementById(\"accept_our_terms_of_trade_error_msg\").style.display = \"block\";\n\t}else document.getElementById(\"accept_our_terms_of_trade_error_msg\").style.display = \"none\";\t\n\t}\n\tinputOnchanged(element, label, error_msg_id){\n\t\tif (element.value.trim() == \"\"){\n\t\t\tdocument.getElementById(error_msg_id).innerHTML = this.getMessage(label) + \": \" + this.msgMap.getMessage(\"empty\");\n\t\t\tdocument.getElementById(error_msg_id).style.display = \"block\";\n\t\t\treturn;\n\t\t}\t\t\n\t\tif (element.id  == \"rafty_booking_email_input\"){\n\t\t\tif (!this.validateEmail(element.value.trim())){\n\t\t\t\tdocument.getElementById(error_msg_id).innerHTML = this.getMessage(label) + \": \" + this.msgMap.getMessage(\"invalid\");\n\t\t\t\tdocument.getElementById(error_msg_id).style.display = \"block\";\n\t\t\t\treturn;\n\t\t\t}\t\t\t\t\n\t\t}\n\t\tif (element.id  == \"rafty_booking_phone_number_input\"){\n\t\t\tlet phone_number_tem = element.value.trim();\n\t\t\tlet regex = \/^\\d+$\/;\n\t\t\tif (!regex.test(phone_number_tem)){\n\t\t\t\tdocument.getElementById(error_msg_id).innerHTML = this.getMessage(label) + \": \" + this.msgMap.getMessage(\"numbers only\");\n\t\t\t\tdocument.getElementById(error_msg_id).style.display = \"block\";\n\t\t\t\treturn;\n\t\t\t};\n\t\t\tphone_number_tem = document.getElementById(\"rafty_booking_country_phone_number_input\").value + phone_number_tem;\n\t\t\tif (phone_number_tem.length > 15 || phone_number_tem.length < 9) \n\t\t\t{\n\t\t\t\tdocument.getElementById(error_msg_id).innerHTML = this.getMessage(label) + \": \" + this.msgMap.getMessage(\"minimum length of 9 and a maximum length of 15\");\n\t\t\t\tdocument.getElementById(error_msg_id).style.display = \"block\";\n\t\t\t\treturn;\n\t\t\t}\t\t\t\n\t\t}\n\t\tdocument.getElementById(error_msg_id).style.display = \"none\";\n\t}\n\t\n\tclearLocations(){\n\t\tlet select = document.getElementById(\"rafty_booking_pickup_location_input\");\n\t\tlet length = select.options.length;\n\t\tfor (let i = length-1; i >= 0; i--) {\n\t\t  select.options[i] = null;\n\t\t}\t\n\t\tselect.disabled = false;\n\t\t\n\t\tselect = document.getElementById(\"rafty_booking_dropoff_location_input\");\n\t\tlength = select.options.length;\n\t\tfor (let i = length-1; i >= 0; i--) {\n\t\t  select.options[i] = null;\n\t\t}\n\t\tselect.disabled = false;\t\t\n\t}\n\t\n\tget_locations(boatBookingClass){\n\tif (this.debug) console.log(\"get_locations: Start\");\t\n\tlet params = 'id=*'; \n\tlet http = new XMLHttpRequest();\/\/Using XMLHttpRequest to call the server and get the data\n\tlet url = '\/wp-content\/plugins\/rafty-booking\/location_get_data.php';\n\thttp.open('POST', url, true);\t\n\t\/\/Send the proper header information along with the request\n\t\/\/this.clearLocations();\n\thttp.setRequestHeader('Content-type', 'application\/x-www-form-urlencoded');\n\thttp.onreadystatechange = function() {\/\/Call a function when the state changes.\n\t\tif(http.readyState == 4 && http.status == 508) {\n\t\t\tsetTimeout(function(){boatBookingClass.get_locations(boatBookingClass)}, 300);\n\t\t}\t\t\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tlet datarows = JSON.parse(http.responseText);\n\t\t\tlet okrow = datarows[0];\n\t\t\tif (okrow.result == 'ok'){\n\t\t\t\tfor (let i = 1; i < datarows.length; i++){\n\t\t\t\t\tboatBookingClass.locationMap.set(datarows[i].id, datarows[i].name);\n\t\t\t\t}\n\t\t\t\tlet pickup_location_select = document.getElementById(\"rafty_booking_pickup_location_input\");\n\t\t\t\tlet dropoff_location_select = document.getElementById(\"rafty_booking_dropoff_location_input\");\n\t\t\t\tboatBookingClass.locationMap.forEach (function(name, id) {\n\t\t\t\t  let pickup_option = document.createElement(\"option\");\n\t\t\t\t  pickup_option.value = id;\n\t\t\t\t  pickup_option.text = name;\n\t\t\t\t  pickup_location_select.add(pickup_option);\n\t\t\t\t  let dropoff_option = document.createElement(\"option\");\n\t\t\t\t  dropoff_option.value = id;\n\t\t\t\t  dropoff_option.text = name;\n\t\t\t\t  dropoff_location_select.add(dropoff_option);\t\n\t\t\t\t})\t\t\t\t\t\t\n\t\t\t\t\/\/setTimeout(boatBookingClass.getSessionData(boatBookingClass), 100);\n\t\t\t\tpickup_location_select.disabled = false;\n\t\t\t\tdropoff_location_select.disabled = false;\t\n\t\t\t\tif (boatBookingClass.debug) console.log(\"get_locations: end OK\");\n\t\t\t}else{\n\t\t\t\tif (boatBookingClass.debug) console.log(\"get_locations: end Error: \" +  okrow.error);\n\t\t\t\tsystem_error = true;\n\t\t\t\tdocument.getElementById(\"system_error_msg_id\").style.display = \"block\";\n\t\t\t\tdocument.getElementById(\"submit_button\").disabled = true;\t\n\t\t\t\t\/\/alert(boatBookingClass.getMessage(\"Error\") + \": \" +  okrow.error);\n\t\t\t}\t\t\t\t\t\n\t\t}\n\t}\n\thttp.onerror = function() {\n\t\tsystem_error = true;\n\t\tdocument.getElementById(\"system_error_msg_id\").style.display = \"block\";\n\t\tdocument.getElementById(\"submit_button\").disabled = true;\t\t\t\t\t\n\t\tif (boatBookingClass.debug == true) console.log(\"get_locations: server is not available\");\n\t}\t\t\n\thttp.send(params);\t\n\t}\n\t\n\n\t\/\/Init\n\tasync init(){\n\t\tsetTimeout(this.get_locations(this), 100);\n\t\tlet d = new Date();\n\t\tUtilities.current_day = d.getDate();\n\t\tUtilities.current_hours = d.getHours();\n\t\tUtilities.tomorrowDate = Utilities.dateTomorrow();\n\t\tUtilities.min_pickup_time = Utilities.dateTimeTomorrow();\n\t\tdocument.getElementById('rafty_booking_pickup_date_input').min = Utilities.dateTomorrow();\n\t\tdocument.getElementById('rafty_booking_pickup_date_input').value = Utilities.dateTomorrow();\n\t\tdocument.getElementById(\"rafty_booking_pickup_location_input\").disabled = false;\n\t\tdocument.getElementById(\"rafty_booking_dropoff_location_input\").disabled = false;\n\t\tlet waitPromise = new Promise(function(resolve) {\n\t\t\tsetTimeout(boatBookingClass.get_date_schedule(Utilities.tomorrowDate, boatBookingClass, resolve), 50);\n\t\t});\n\t\tlet finish = await waitPromise;\n\t\tif (debug) console.log(\"get_times_for_date: \" + finish);\n\t\tlet minutes = 60000*d.getMinutes();\n\t\tlet seconds = 1000*d.getSeconds();\n\t\tlet milliseconds = d.getMilliseconds();\n\t\t\/\/change first hour\t\n\t\ttimeRef = setTimeout(firstHourChanged, 60*60000 - minutes - seconds - milliseconds);\n\t\tthis.getSessionData();\n\t}\t\n\t\n\t\/\/Cancel schedule time for a date   \n\tasync getSessionData(){\n\t\tif (debug) console.log(sessionStorage.getItem(\"fullName\"));\n\t\tif (sessionStorage.getItem(\"bookingId\") != null){\n\t\t\tconst rawResponse = await fetch('\/wp-content\/plugins\/rafty-booking\/schedule_cancel_data.php', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t'Accept': 'application\/json',\n\t\t\t\t'Content-Type': 'application\/json'\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({pickup_date: sessionStorage.getItem(\"pickupDate\"), pickup_time_index: sessionStorage.getItem(\"pickupTimeIndex\"), event_length: sessionStorage.getItem(\"eventLength\")})\n\t\t\t});\n\t\t\tconst content = await rawResponse.text();\n\t\t\tdocument.getElementById(\"rafty_booking_full_name_input\").value = sessionStorage.getItem(\"fullName\");\n\t\t\tdocument.getElementById(\"rafty_booking_phone_number_input\").value = sessionStorage.getItem(\"phoneNumberNoCountry\");\n\t\t\tdocument.getElementById(\"rafty_booking_country_phone_number_input\").value = sessionStorage.getItem(\"phoneNumberCountry\");\n\t\t\tdocument.getElementById(\"rafty_booking_email_input\").value = sessionStorage.getItem(\"email\");\n\t\t\tdocument.getElementById(\"rafty_booking_event_length_input\").value = sessionStorage.getItem(\"eventLengthPrice\");\n\t\t\tdocument.getElementById(\"rafty_booking_pickup_date_input\").value = sessionStorage.getItem(\"pickupDate\");\n\t\t\tdocument.getElementById(\"rafty_booking_pickup_location_input\").selectedIndex = parseInt(sessionStorage.getItem(\"pickupLocationId\"));\n\t\t\tdocument.getElementById(\"rafty_booking_dropoff_location_input\").selectedIndex = parseInt(sessionStorage.getItem(\"dropoffLocationId\"));\t\t\n\t\t\tdocument.getElementById(\"rafty_booking_message_input\").value = sessionStorage.getItem(\"message\");\t\n\t\t\tupdatePrice();\t\t\n\t\t\tlet waitPromise = new Promise(function(resolve) {\n\t\t\t\tsetTimeout(boatBookingClass.get_date_schedule(sessionStorage.getItem(\"pickupDate\"), boatBookingClass, resolve), 10);\n\t\t\t});\n\t\t\tlet finish = await waitPromise;\n\t\t\tif (debug) console.log(\"get_times_for_date: \" + finish);\n\t\t\tdocument.getElementById(\"time_\" + sessionStorage.getItem(\"pickupTimeIndex\")).checked = true;\t\t\t\n\t\t}\n\t}\n\t\n\tsetSessionData(){\n\t\tsessionStorage.setItem(\"fullName\", document.getElementById(\"rafty_booking_full_name_input\").value);\n\t\tsessionStorage.setItem(\"phoneNumber\", document.getElementById(\"rafty_booking_country_phone_number_input\").value + document.getElementById(\"rafty_booking_phone_number_input\").value.trim());\n\t\tsessionStorage.setItem(\"phoneNumberCountry\", document.getElementById(\"rafty_booking_country_phone_number_input\").value);\n\t\tsessionStorage.setItem(\"phoneNumberNoCountry\", document.getElementById(\"rafty_booking_phone_number_input\").value.trim());\n\t\tsessionStorage.setItem(\"email\", document.getElementById(\"rafty_booking_email_input\").value);\n\t\tlet eventLengthElement = document.getElementById(\"rafty_booking_event_length_input\");\n\t\tsessionStorage.setItem(\"eventLengthPrice\", eventLengthElement.value);\n\t\tsessionStorage.setItem(\"eventLength\", eventLengthElement.options[eventLengthElement.selectedIndex].text);\n\t\tsessionStorage.setItem(\"pickupDate\", document.getElementById('rafty_booking_pickup_date_input').value);\n\t\t\n\t\tsessionStorage.setItem(\"pickupTimeIndex\", Utilities.getPickupTimeIndex());\n\t\tsessionStorage.setItem(\"pickupTime\", Utilities.getPickupTime());\n\t\tlet pickupLocationElement = document.getElementById(\"rafty_booking_pickup_location_input\");\n\t\tsessionStorage.setItem(\"pickupLocationId\", pickupLocationElement.value);\n\t\tsessionStorage.setItem(\"pickupLocation\", pickupLocationElement.options[pickupLocationElement.selectedIndex].text);\n\t\t\n\t\tlet dropoffLocationElement = document.getElementById(\"rafty_booking_dropoff_location_input\");\n\t\tsessionStorage.setItem(\"dropoffLocationId\", dropoffLocationElement.value);\n\t\tsessionStorage.setItem(\"dropoffLocation\", dropoffLocationElement.options[dropoffLocationElement.selectedIndex].text);\n\t\tsessionStorage.setItem(\"message\", document.getElementById(\"rafty_booking_message_input\").value);\t\n\t}\t\n\t\n\t\n\t\/\/Get schedule time for a date and assign into array Utilities.pickupTimeIndexArray (0: available, 1: occupied)    \n\tget_date_schedule(date, boatBookingClass, resolve = null){\n\t\tif (debug) console.log(\"get_times_for_date: Start\");\t\n\t\tlet params = 'pickup_date=' + date; \n\t\tlet http = new XMLHttpRequest();\/\/Using XMLHttpRequest to call the server and get the data\n\t\tlet url = '\/wp-content\/plugins\/rafty-booking\/schedule_get_data.php';\n\t\thttp.open('POST', url, true);\t\n\t\thttp.setRequestHeader('Content-type', 'application\/x-www-form-urlencoded');\n\t\thttp.onreadystatechange = function() {\/\/Call a function when the state changes.\n\t\t\tif(http.readyState == 4 && http.status == 508) {\n\t\t\t\tsetTimeout(function(){boatBookingClass.get_date_schedule(date, boatBookingClass, resolve)}, 300);\n\t\t\t}\t\t\n\t\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\t\tif (debug) console.log(\"get_times_for_date: \" + http.responseText);\t\n\t\t\t\tlet datarows = JSON.parse(http.responseText);\n\t\t\t\tlet okrow = datarows[0];\n\t\t\t\tif (okrow.result == 'ok'){\t\n\t\t\t\t\tif (datarows.length == 2){\n\t\t\t\t\t\tUtilities.pickupTimeIndexArray[0] = parseInt(datarows[1].time_0);\n\t\t\t\t\t\tUtilities.pickupTimeIndexArray[1] = parseInt(datarows[1].time_1);\n\t\t\t\t\t\tUtilities.pickupTimeIndexArray[2] = parseInt(datarows[1].time_2);\n\t\t\t\t\t\tUtilities.pickupTimeIndexArray[3] = parseInt(datarows[1].time_3);\n\t\t\t\t\t\tUtilities.pickupTimeIndexArray[4] = parseInt(datarows[1].time_4);\n\t\t\t\t\t\tUtilities.pickupTimeIndexArray[5] = parseInt(datarows[1].time_5);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tfor (let i = 0; i < Utilities.pickupTimeIndexArray.length; i++) Utilities.pickupTimeIndexArray[i] = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (system_error){\n\t\t\t\t\t\tsystem_error = false;\n\t\t\t\t\t\tdocument.getElementById(\"system_error_msg_id\").style.display = \"none\";\n\t\t\t\t\t\tdocument.getElementById(\"submit_button\").disabled = false;\n\t\t\t\t\t}\n\t\t\t\t\tboatBookingClass.dateTimeScheduled(date);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\tsystem_error = true;\n\t\t\t\t\tdocument.getElementById(\"system_error_msg_id\").style.display = \"block\";\n\t\t\t\t\tdocument.getElementById(\"submit_button\").disabled = true;\n\t\t\t\t}\n\t\t\t\t\/\/Ogs\u00e5 disable datetime that are less than min_pickup time.\n\t\t\t\tif (debug) console.log(\"get_times_for_date: End\");\n\t\t\t\tif (resolve != null) resolve(\"Finish1\");\n\t\t\t}\n\t\t}\n\t\thttp.onerror = function() {\n\t\t\tsystem_error = true;\n\t\t\tdocument.getElementById(\"system_error_msg_id\").style.display = \"block\";\n\t\t\tdocument.getElementById(\"submit_button\").disabled = true;\t\t\n\t\t\tif (debug) console.log(\"get_times_for_date: server is not available\");\n\t\t\tif (resolve != null) resolve(\"Finish\");\t\n\t\t}\t\t\n\t\thttp.send(params);\t\n\t}\t\t\n\t\n\t\/\/Show available time schedule for a date can be booked\n\tdateTimeScheduled(date){\n\t\tif (system_error) return;\n\t\t\/\/Disabled dateTime that is less than min_pickup_time\n\t\tif (debug) console.log(\"Utilities.min_pickup_time: \" + Utilities.min_pickup_time);\n\t\tlet date_time = [date + \" 10:00\", date + \" 12:00\", date + \" 14:00\", date + \" 16:00\", date + \" 18:00\", date + \" 20:00\"];\n\t\tfor (let i = 0; i < date_time.length; i++){\n\t\t\tif (date_time[i] <= Utilities.min_pickup_time) Utilities.pickupTimeIndexArray[i] = 1;\n\t\t}\n\t\t\n\t\tif (document.getElementById(\"rafty_booking_event_length_input\").value == \"5300.00\"){\n\t\t\tfor (let i = 0; i < Utilities.pickupTimeIndexArray.length - 1; i++)\n\t\t\t\t\tif (Utilities.pickupTimeIndexArray[i] == 0 && Utilities.pickupTimeIndexArray[i + 1] == 1) Utilities.pickupTimeIndexArray[i] = 1;\n\t\t}\n\t\t\t\n\t\t\/\/At least one datetime available: false\n\t\tlet at_least_one_available_datetime = false;\n\t\tfor (let i = 0; i < Utilities.pickupTimeIndexArray.length; i++){\n\t\t\tif (Utilities.pickupTimeIndexArray[i] == 0){\n\t\t\t\tif (debug) console.log(\"at_least_one_available_datetime = true\");\n\t\t\t\tat_least_one_available_datetime = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (at_least_one_available_datetime == false){\n\t\t\tdocument.getElementById(\"real_pickup_time_holder\").style.display = \"none\";\n\t\t\tdocument.getElementById(\"not_used_pickup_time_holder\").style.display = \"block\";\n\t\t\tdocument.getElementById(\"submit_button\").disabled = true;\n\t\t}else{\n\t\t\t\/\/check if a available datetime is already checked\n\t\t\tlet is_available_datetime_checked = false;\n\t\t\tfor (let i = 0; i < Utilities.pickupTimeIndexArray.length; i++){\n\t\t\t\tif (Utilities.pickupTimeIndexArray[i] == 0){\n\t\t\t\t\tif (document.getElementById(\"time_\" + i).checked == true){\n\t\t\t\t\t\tis_available_datetime_checked = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\/\/if no available datetime already checked, check the first available datetime \t\n\t\t\tif (is_available_datetime_checked == false){\n\t\t\t\tfor (let i = 0; i < Utilities.pickupTimeIndexArray.length; i++){\n\t\t\t\t\tif (Utilities.pickupTimeIndexArray[i] == 0){\n\t\t\t\t\t\tdocument.getElementById(\"time_\" + i).checked = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tfor (let i = 0; i < Utilities.pickupTimeIndexArray.length; i++){\n\t\t\t\tif (Utilities.pickupTimeIndexArray[i] == 0){\n\t\t\t\t\tdocument.getElementById(\"time_\" + i).disabled = false;\n\t\t\t\t}else document.getElementById(\"time_\" + i).disabled = true;\t\t\t\n\t\t\t}\n\t\t\tdocument.getElementById(\"real_pickup_time_holder\").style.display = \"block\";\n\t\t\tdocument.getElementById(\"not_used_pickup_time_holder\").style.display = \"none\";\n\t\t\tdocument.getElementById(\"submit_button\").disabled = false;\t\n\t\t\tfor (let i = 0; i < 6; i++) if (document.getElementById(\"time_\" + i).disabled == true) {document.getElementById(\"time_label_id_\" + i).style.fontWeight = \"normal\";} else document.getElementById(\"time_label_id_\" + i).style.fontWeight = \"bold\";\t\n\t\t}\n\t}\n\t\t\n\t\/\/Update datetime schedule every hour or when the screen becomes ontime after offtime\n\tupdateDateTimeScheduleEveryHour() {\n\t\tlet d = new Date();\n\t\tif (debug) console.log(\"updateEveryHour: \" + d);\n\t\tlet current_day = d.getDate();\n\t\tlet current_hours = d.getHours();\n\t\tif (current_day != Utilities.current_day){\n\t\t\tif (debug) console.log(\"Day Changed\");\n\t\t\tUtilities.current_day = current_day;\n\t\t\tUtilities.current_hours = current_hours;\n\t\t\tUtilities.tomorrowDate = Utilities.dateTomorrow();\n\t\t\tUtilities.min_pickup_time = Utilities.dateTimeTomorrow();\n\t\t\tdocument.getElementById('rafty_booking_pickup_date_input').min = Utilities.dateTomorrow();\/\/Pick up must at least be a day after booking time \n\t\t\tdocument.getElementById('rafty_booking_pickup_date_input').value = Utilities.dateTomorrow();\n\t\t\tboatBookingClass.get_date_schedule(Utilities.tomorrowDate, boatBookingClass);\n\t\t}else{\n\t\t\tif (current_hours != Utilities.current_hours){\n\t\t\t\tif (debug) console.log(\"Hours Changed\");\n\t\t\t\tUtilities.current_hours = current_hours;\n\t\t\t\tUtilities.min_pickup_time = Utilities.dateTimeTomorrow();\n\t\t\t\tif (debug) console.log(\"New hours: \" + Utilities.current_hours);\n\t\t\t\tif (debug) console.log(\"tomorrowDate: \" + Utilities.tomorrowDate);\n\t\t\t\tif (Utilities.tomorrowDate == document.getElementById('rafty_booking_pickup_date_input').value){\n\t\t\t\t\tboatBookingClass.dateTimeScheduled(Utilities.tomorrowDate);\n\t\t\t\t}else if (Utilities.current_hours > 19) {if (debug) console.log(\"Call showDateTimeSchedule()\"); showDateTimeSchedule();}\n\t\t\t}\n\t\t}\n\t\t\/\/document.getElementById(\"rafty_booking_full_name_input\").focus();\n\t}\n\t\n\tbookBoat(){\n\tlet full_name = document.getElementById(\"rafty_booking_full_name_input\").value.trim();\n\tlet phone_number = document.getElementById(\"rafty_booking_country_phone_number_input\").value + document.getElementById(\"rafty_booking_phone_number_input\").value.trim();\n\tlet email = document.getElementById(\"rafty_booking_email_input\").value.trim();\n\tlet message = document.getElementById(\"rafty_booking_message_input\").value.trim();\n\tlet full_name_label = this.getMessage(\"Full name\");\n\tlet phone_number_label = this.getMessage(\"Phone number\");\n\tlet email_label = this.getMessage(\"Email\");\n\n\tlet form_invalid = false;\n\tif (full_name == \"\"){\n\t\tdocument.getElementById(\"full_name_error_msg\").innerHTML = full_name_label + \": \" + this.msgMap.getMessage(\"empty\");\n\t\tdocument.getElementById(\"full_name_error_msg\").style.display = \"block\";\n\t\tform_invalid = true;\n\t}else document.getElementById(\"full_name_error_msg\").style.display = \"none\";\n\tif (document.getElementById(\"rafty_booking_phone_number_input\").value.trim() == \"\"){\n\t\tdocument.getElementById(\"phone_number_error_msg\").innerHTML = phone_number_label + \": \" + this.msgMap.getMessage(\"empty\");\n\t\tdocument.getElementById(\"phone_number_error_msg\").style.display = \"block\";\n\t\tform_invalid = true;\n\t}else{\n\t\tlet regex = \/^\\d+$\/;\n\t\tif (!regex.test(phone_number)) \n\t\t{\n\t\t\tdocument.getElementById(\"phone_number_error_msg\").innerHTML = phone_number_label + \": \" + this.msgMap.getMessage(\"numbers only\");\n\t\t\tdocument.getElementById(\"phone_number_error_msg\").style.display = \"block\";\n\t\t\tform_invalid = true;\n\t\t}else\t\t\n\t\tif (phone_number.length > 15 || phone_number.length < 9){\n\t\t\tdocument.getElementById(phone_number_error_msg).innerHTML = this.getMessage(label) + \": \" + this.msgMap.getMessage(\"minimum length of 9 and a maximum length of 15\");\n\t\t\tdocument.getElementById(phone_number_error_msg).style.display = \"block\";\t\t\t\n\t\t\tform_invalid = true;\n\t\t}else{\n\t\t\tdocument.getElementById(\"phone_number_error_msg\").style.display = \"none\";\n\t\t}\n\t}\n\tif (email == \"\"){\n\t\tdocument.getElementById(\"email_error_msg\").innerHTML = email_label + \": \" + this.msgMap.getMessage(\"empty\");\n\t\tdocument.getElementById(\"email_error_msg\").style.display = \"block\";\n\t\t\/\/document.getElementById(\"rafty_booking_email_input\").focus();\n\t\tform_invalid = true;\n\t}else\t\n\tif (!this.validateEmail(email)){\n\t\tdocument.getElementById(\"email_error_msg\").innerHTML = email_label + \": \" + this.msgMap.getMessage(\"invalid\");\n\t\tdocument.getElementById(\"email_error_msg\").style.display = \"block\";\n\t\t\/\/document.getElementById(\"rafty_booking_email_input\").focus();\n\t\tform_invalid = true;\n\t}else document.getElementById(\"email_error_msg\").style.display = \"none\";\n\t\n\tif (document.getElementById(\"rafty_booking_accept_terms_of_trade_input\").checked == false){\n\t\tdocument.getElementById(\"accept_our_terms_of_trade_error_msg\").innerHTML = this.msgMap.getMessage(\"You must accept our terms of trade\");\n\t\tdocument.getElementById(\"accept_our_terms_of_trade_error_msg\").style.display = \"block\";\n\t\tform_invalid = true;\n\t}\n\t\n\tif (document.getElementById(\"rafty_booking_pickup_location_input\").length == 1){\n\t\tdocument.getElementById(\"pickup_location_error_msg\").innerHTML = this.msgMap.getMessage(\"Pickup location\") + \": \" + this.msgMap.getMessage(\"Please, reload this page\");\n\t\tdocument.getElementById(\"pickup_location_error_msg\").style.display = \"block\";\n\t\tdocument.getElementById(\"dropoff_location_error_msg\").innerHTML = this.msgMap.getMessage(\"Drop-off location\") + \": \" + this.msgMap.getMessage(\"Please, reload this page\");\n\t\tdocument.getElementById(\"dropoff_location_error_msg\").style.display = \"block\";\t\t\n\t\tform_invalid = true;\n\t}else{\n\t\tlet pickupLocationElement = document.getElementById(\"rafty_booking_pickup_location_input\");\n\t\tif (pickupLocationElement.value == \"0\"){\n\t\t\tdocument.getElementById(\"pickup_location_error_msg\").innerHTML = this.msgMap.getMessage(\"Pickup location\") + \": \" + this.msgMap.getMessage(\"empty\");\n\t\t\tdocument.getElementById(\"pickup_location_error_msg\").style.display = \"block\";\t\t\n\t\t\tform_invalid = true;\n\t\t}\n\t\t\t\n\t\tlet dropoffLocationElement = document.getElementById(\"rafty_booking_dropoff_location_input\");\n\t\tif (dropoffLocationElement.value == \"0\"){\n\t\t\tdocument.getElementById(\"dropoff_location_error_msg\").innerHTML = this.msgMap.getMessage(\"Drop-off location\") + \": \" + this.msgMap.getMessage(\"empty\");\n\t\t\tdocument.getElementById(\"dropoff_location_error_msg\").style.display = \"block\";\t\t\n\t\t\tform_invalid = true;\n\t\t}\n\t}\n\n\tif (form_invalid){\n\t\treturn;\n\t}else{\n\t\tthis.setSessionData();\n\t\twindow.location.href = \"\/rafty-booking-summary\";\t\t\n\t}\n\t}\t\n}\n\n\/\/Handling for screen visibility events \n\n\/\/ Set the name of the hidden property and the change event for visibility\nlet hidden, visibilityChange; \nif (typeof document.hidden !== \"undefined\") { \/\/ Opera 12.10 and Firefox 18 and later support \n  hidden = \"hidden\";\n  visibilityChange = \"visibilitychange\";\n} else if (typeof document.mozHidden !== \"undefined\") {\n  hidden = \"mozHidden\";\n  visibilityChange = \"mozvisibilitychange\";\n} else if (typeof document.msHidden !== \"undefined\") {\n  hidden = \"msHidden\";\n  visibilityChange = \"msvisibilitychange\";\n} else if (typeof document.webkitHidden !== \"undefined\") {\n  hidden = \"webkitHidden\";\n  visibilityChange = \"webkitvisibilitychange\";\n}\n\n\/\/ Warn if the browser doesn't support addEventListener or the Page Visibility API\nif (typeof document.addEventListener === \"undefined\" || \n  typeof document[hidden] === \"undefined\") {\n  \/\/alert(\"This demo requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.\");\n} else {\n  \/\/ Handle page visibility change   \n  \/\/alert(\"This browser supports the Page Visibility API.\");\n  document.addEventListener(visibilityChange, handleVisibilityChange, false);\n}\n\n\/\/Ontime and offtime handler\nfunction handleVisibilityChange() {\n  if (document[hidden]) {\n    if (debug) console.log(\"Screen hidden\");\n\ttry{\n\t\tclearInterval(intervalRef);\n\t}catch(err){\n\t}\n\ttry{\n\t\tclearTimeout(timeRef);\n\t}catch(err){\n\t}\t\t\t\n  } else {\n\tif (debug) console.log(\"Screen visible\");\n\tboatBookingClass.updateDateTimeScheduleEveryHour();\n\tlet d = new Date();\n\tlet minutes = 60000*d.getMinutes();\n\tlet seconds = 1000*d.getSeconds();\n\tlet milliseconds = d.getMilliseconds();\n\t\/\/change first hour\t\n\ttimeRef = setTimeout(firstHourChanged, 60*60000 - minutes - seconds - milliseconds);\t  \n  }\n}\n\n\/\/End Handling for screen visibility events \n\n\t\/\/Called when first hour changed, call updateDateTimeScheduleEveryHour()\nfunction firstHourChanged(){\n\tlet d = new Date();\n\tboatBookingClass.updateDateTimeScheduleEveryHour();\n\tintervalRef = setInterval(boatBookingClass.updateDateTimeScheduleEveryHour, 60*60000);\n}\t\n\t\nfunction inputOnchanged(element, label, error_msg_id){\n\tboatBookingClass.inputOnchanged(element, label, error_msg_id);\n}\n\nfunction accept_our_terms_of_trade_Onchanged(){\n\tboatBookingClass.accept_our_terms_of_trade_Onchanged();\n}\n\n\/\/Parameters and functions to handle datetime schedule\nconst Utilities = {\n\tcurrent_day: 1, current_hours: 1, tomorrowDate: \"\", min_pickup_time: \"\",\n\tdateTomorrow: function() {\n\t\tlet d = new Date();\n\t\td.setDate(d.getDate() + 1);\t\n\t\tlet month = '' + (d.getMonth() + 1);\n\t\tlet day = '' + d.getDate();\n\t\tlet year = '' + d.getFullYear();\n\t\tif (month.length < 2) \n\t\t\tmonth = '0' + month;\n\t\tif (day.length < 2) \n\t\t\tday = '0' + day;\n\t\treturn [year, month, day].join('-');\n\t},\n\tdateTimeTomorrow: function() {\n\t\tlet d = new Date();\n\t\td.setDate(d.getDate() + 1);\n\t\tlet month = '' + (d.getMonth() + 1);\n\t\tlet day = '' + d.getDate();\n\t\tlet year = '' + d.getFullYear();\n\t\tlet hours = '' + d.getHours();\n\t\tlet minutes = '' + d.getMinutes();\n\t\tif (month.length < 2) \n\t\t\tmonth = '0' + month;\n\t\tif (day.length < 2) \n\t\t\tday = '0' + day;\n\t\tif (hours.length < 2) \n\t\t\thours = '0' + hours;\n\t\tif (minutes.length < 2) \n\t\t\tminutes = '0' + minutes;\n\t\treturn [year, month, day].join('-') + \" \" + [hours, minutes].join(':');\n\t},\n\tpickupTimeIndexArray: [0, 0, 0, 0, 0, 0], \/\/stand for [\"10:00\", \"12:00\", \"14:00\", \"16:00\", \"18:00\", \"20:00\"] and (0: available, 1: occupied)\n\tpickupTimeArray: [\"10:00\", \"12:00\", \"14:00\", \"16:00\", \"18:00\", \"20:00\"],\n\tgetPickupTimeIndex: function() {\n\t\tfor (let i = 0; i < 6; i++){\n\t\t\tif (document.getElementById(\"time_\" + i).checked == true){\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t},\n\tgetPickupTime: function() {\n\t\treturn this.pickupTimeArray[this.getPickupTimeIndex()];\n\t}\t\n}\n\n\/\/Book a boat\nfunction onBookSubmit(token) {\n     boatBookingClass.bookBoat();\n}\n\n\/\/Get and show exist time schedule for a date. Called when a date in the calendar changed\nfunction showDateTimeSchedule(){\n\tboatBookingClass.get_date_schedule(document.getElementById('rafty_booking_pickup_date_input').value, boatBookingClass);\n}\n\n\nfunction updatePrice(){\n\tdocument.getElementById('rafty_booking_price_input').value =  document.getElementById('rafty_booking_event_length_input').value + \" \" + currency;\n\tshowDateTimeSchedule();\n}\n\nfunction on_pickup_location_changed(){\n\tlet pickupLocationElement = document.getElementById(\"rafty_booking_pickup_location_input\");\n\tif (pickupLocationElement.value == \"0\"){\n\t\tdocument.getElementById(\"pickup_location_error_msg\").innerHTML = boatBookingClass.msgMap.getMessage(\"Pickup location\") + \": \" + boatBookingClass.msgMap.getMessage(\"empty\");\n\t\tdocument.getElementById(\"pickup_location_error_msg\").style.display = \"block\";\t\t\n\t}else document.getElementById(\"pickup_location_error_msg\").style.display = \"none\";\n}\n\nfunction on_dropoff_location_changed(){\n\tlet dropoffLocationElement = document.getElementById(\"rafty_booking_dropoff_location_input\");\n\tif (dropoffLocationElement.value == \"0\"){\n\t\tdocument.getElementById(\"dropoff_location_error_msg\").innerHTML = boatBookingClass.msgMap.getMessage(\"Drop-off location\") + \": \" + boatBookingClass.msgMap.getMessage(\"empty\");\n\t\tdocument.getElementById(\"dropoff_location_error_msg\").style.display = \"block\";\t\t\n\t}else document.getElementById(\"dropoff_location_error_msg\").style.display = \"none\";\n}\n\nwindow.addEventListener(\n  \"pagehide\",\n  (event) => {\n\t\tif (debug) console.log(\"Pagehide\");\n\t\ttry{\n\t\t\tclearInterval(intervalRef);\n\t\t}catch(err){\n\t\t}\n\t\ttry{\n\t\t\tclearTimeout(timeRef);\n\t\t}catch(err){\n\t\t}\t\t\t\n  },\n  false,\n);\n\nwindow.addEventListener(\n  \"pageshow\",\n  (event) => {\n\tif (debug) console.log(\"Pageshow Start\");\n\t\n  },\n  false,\n);\n\ndocument.addEventListener(\"DOMContentLoaded\", function(e) {\t\n\tsessionStorage.setItem(\"rafty_init\", \"rafty_booking\");\n\tboatBookingClass = new CBoatBookingClass(new CBoatBookingMessageMap());  \n\tboatBookingClass.init(); \n});\n\n<\/script>\n<!--Booking form in html-->\n<br><h3>Start your boat trip<\/h3>\n<form style=\"margin-bottom:5px;margin-top:10px;\" class=\"container card\" onsubmit=\"event.preventDefault();\">\n<label style=\"color:#A0522D;\"><b>Full name<\/b><\/label>\n<input id=\"rafty_booking_full_name_input\" style=\"height:40px;width:100%;\" name=\"name\" onchange=\"inputOnchanged(this, 'Full name', 'full_name_error_msg')\" type=\"text\" value=\"\" placeholder=\"Full name\"><span id = \"full_name_error_msg\" style=\"display:none;color:red;\"><\/span>   \n<label style=\"color:#A0522D;\"><b>Phone number<\/b><\/label>\n<div class=\"select_container\">\n<div style=\"flex-grow: 1\">\n<select style=\"height:43px;width:100%;\" class=\"form-select\" id=\"rafty_booking_country_phone_number_input\" name=\"rafty_booking_country_phone_number_input\">\n    <option value=\"45\">Denmark +45<\/option>\n\t<option value=\"46\">Sweden +46<\/option>\n\t<option value=\"47\">Norway +47<\/option>\n\t<option value=\"358\">Finland +358<\/option>\n    <option value=\"93\">Afghanistan +93<\/option>\n    <option value=\"358\">Aland Islands +358<\/option>\n    <option value=\"355\">Albania +355<\/option>\n    <option value=\"213\">Algeria +213<\/option>\n    <option value=\"1684\">American Samoa +1684<\/option>\n    <option value=\"376\">Andorra +376<\/option>\n    <option value=\"244\">Angola +244<\/option>\n    <option value=\"1264\">Anguilla +1264<\/option>\n    <option value=\"672\">Antarctica +672<\/option>\n    <option value=\"1268\">Antigua and Barbuda +1268<\/option>\n    <option value=\"54\">Argentina +54<\/option>\n    <option value=\"374\">Armenia +374<\/option>\n    <option value=\"297\">Aruba +297<\/option>\n    <option value=\"61\">Australia +61<\/option>\n    <option value=\"43\">Austria +43<\/option>\n    <option value=\"994\">Azerbaijan +994<\/option>\n    <option value=\"1242\">Bahamas +1242<\/option>\n    <option value=\"973\">Bahrain +973<\/option>\n    <option value=\"880\">Bangladesh +880<\/option>\n    <option value=\"1246\">Barbados +1246<\/option>\n    <option value=\"375\">Belarus +375<\/option>\n    <option value=\"32\">Belgium +32<\/option>\n    <option value=\"501\">Belize +501<\/option>\n    <option value=\"229\">Benin +229<\/option>\n    <option value=\"1441\">Bermuda +1441<\/option>\n    <option value=\"975\">Bhutan +975<\/option>\n    <option value=\"591\">Bolivia +591<\/option>\n    <option value=\"599\">Bonaire, Sint Eustatius and Saba +599<\/option>\n    <option value=\"387\">Bosnia and Herzegovina +387<\/option>\n    <option value=\"267\">Botswana +267<\/option>\n    <option value=\"55\">Bouvet Island +55<\/option>\n    <option value=\"55\">Brazil +55<\/option>\n    <option value=\"246\">British Indian Ocean Territory +246<\/option>\n    <option value=\"673\">Brunei Darussalam +673<\/option>\n    <option value=\"359\">Bulgaria +359<\/option>\n    <option value=\"226\">Burkina Faso +226<\/option>\n    <option value=\"257\">Burundi +257<\/option>\n    <option value=\"855\">Cambodia +855<\/option>\n    <option value=\"237\">Cameroon +237<\/option>\n    <option value=\"1\">Canada +1<\/option>\n    <option value=\"238\">Cape Verde +238<\/option>\n    <option value=\"1345\">Cayman Islands +1345<\/option>\n    <option value=\"236\">Central African Republic +236<\/option>\n    <option value=\"235\">Chad +235<\/option>\n    <option value=\"56\">Chile +56<\/option>\n    <option value=\"86\">China +86<\/option>\n    <option value=\"61\">Christmas Island +61<\/option>\n    <option value=\"672\">Cocos (Keeling) Islands +672<\/option>\n    <option value=\"57\">Colombia +57<\/option>\n    <option value=\"269\">Comoros +269<\/option>\n    <option value=\"242\">Congo +242<\/option>\n    <option value=\"242\">Congo, Democratic Republic of the Congo +242<\/option>\n    <option value=\"682\">Cook Islands +682<\/option>\n    <option value=\"506\">Costa Rica +506<\/option>\n    <option value=\"225\">Cote D'Ivoire +225<\/option>\n    <option value=\"385\">Croatia +385<\/option>\n    <option value=\"53\">Cuba +53<\/option>\n    <option value=\"599\">Curacao +599<\/option>\n    <option value=\"357\">Cyprus +357<\/option>\n    <option value=\"420\">Czech Republic +420<\/option>\n    <option value=\"253\">Djibouti +253<\/option>\n    <option value=\"1767\">Dominica +1767<\/option>\n    <option value=\"1809\">Dominican Republic +1809<\/option>\n    <option value=\"593\">Ecuador +593<\/option>\n    <option value=\"20\">Egypt +20<\/option>\n    <option value=\"503\">El Salvador +503<\/option>\n    <option value=\"240\">Equatorial Guinea +240<\/option>\n    <option value=\"291\">Eritrea +291<\/option>\n    <option value=\"372\">Estonia +372<\/option>\n    <option value=\"251\">Ethiopia +251<\/option>\n    <option value=\"500\">Falkland Islands (Malvinas) +500<\/option>\n    <option value=\"298\">Faroe Islands +298<\/option>\n    <option value=\"679\">Fiji +679<\/option>\n    <option value=\"33\">France +33<\/option>\n    <option value=\"594\">French Guiana +594<\/option>\n    <option value=\"689\">French Polynesia +689<\/option>\n    <option value=\"262\">French Southern Territories +262<\/option>\n    <option value=\"241\">Gabon +241<\/option>\n    <option value=\"220\">Gambia +220<\/option>\n    <option value=\"995\">Georgia +995<\/option>\n    <option value=\"49\">Germany +49<\/option>\n    <option value=\"233\">Ghana +233<\/option>\n    <option value=\"350\">Gibraltar +350<\/option>\n    <option value=\"30\">Greece +30<\/option>\n    <option value=\"299\">Greenland +299<\/option>\n    <option value=\"1473\">Grenada +1473<\/option>\n    <option value=\"590\">Guadeloupe +590<\/option>\n    <option value=\"1671\">Guam +1671<\/option>\n    <option value=\"502\">Guatemala +502<\/option>\n    <option value=\"44\">Guernsey +44<\/option>\n    <option value=\"224\">Guinea +224<\/option>\n    <option value=\"245\">Guinea-Bissau +245<\/option>\n    <option value=\"592\">Guyana +592<\/option>\n    <option value=\"509\">Haiti +509<\/option>\n    <option value=\"39\">Holy See (Vatican City State) +39<\/option>\n    <option value=\"504\">Honduras +504<\/option>\n    <option value=\"852\">Hong Kong +852<\/option>\n    <option value=\"36\">Hungary +36<\/option>\n    <option value=\"354\">Iceland +354<\/option>\n    <option value=\"91\">India +91<\/option>\n    <option value=\"62\">Indonesia +62<\/option>\n    <option value=\"98\">Iran, Islamic Republic of +98<\/option>\n    <option value=\"964\">Iraq +964<\/option>\n    <option value=\"353\">Ireland +353<\/option>\n    <option value=\"44\">Isle of Man +44<\/option>\n    <option value=\"972\">Israel +972<\/option>\n    <option value=\"39\">Italy +39<\/option>\n    <option value=\"1876\">Jamaica +1876<\/option>\n    <option value=\"81\">Japan +81<\/option>\n    <option value=\"44\">Jersey +44<\/option>\n    <option value=\"962\">Jordan +962<\/option>\n    <option value=\"7\">Kazakhstan +7<\/option>\n    <option value=\"254\">Kenya +254<\/option>\n    <option value=\"686\">Kiribati +686<\/option>\n    <option value=\"850\">Korea, Democratic People's Republic of +850<\/option>\n    <option value=\"82\">Korea, Republic of +82<\/option>\n    <option value=\"381\">Kosovo +381<\/option>\n    <option value=\"965\">Kuwait +965<\/option>\n    <option value=\"996\">Kyrgyzstan +996<\/option>\n    <option value=\"856\">Lao People's Democratic Republic +856<\/option>\n    <option value=\"371\">Latvia +371<\/option>\n    <option value=\"961\">Lebanon +961<\/option>\n    <option value=\"266\">Lesotho +266<\/option>\n    <option value=\"231\">Liberia +231<\/option>\n    <option value=\"218\">Libyan Arab Jamahiriya +218<\/option>\n    <option value=\"423\">Liechtenstein +423<\/option>\n    <option value=\"370\">Lithuania +370<\/option>\n    <option value=\"352\">Luxembourg +352<\/option>\n    <option value=\"853\">Macao +853<\/option>\n    <option value=\"389\">Macedonia, the Former Yugoslav Republic of +389<\/option>\n    <option value=\"261\">Madagascar +261<\/option>\n    <option value=\"265\">Malawi +265<\/option>\n    <option value=\"60\">Malaysia +60<\/option>\n    <option value=\"960\">Maldives +960<\/option>\n    <option value=\"223\">Mali +223<\/option>\n    <option value=\"356\">Malta +356<\/option>\n    <option value=\"692\">Marshall Islands +692<\/option>\n    <option value=\"596\">Martinique +596<\/option>\n    <option value=\"222\">Mauritania +222<\/option>\n    <option value=\"230\">Mauritius +230<\/option>\n    <option value=\"262\">Mayotte +262<\/option>\n    <option value=\"52\">Mexico +52<\/option>\n    <option value=\"691\">Micronesia, Federated States of +691<\/option>\n    <option value=\"373\">Moldova, Republic of +373<\/option>\n    <option value=\"377\">Monaco +377<\/option>\n    <option value=\"976\">Mongolia +976<\/option>\n    <option value=\"382\">Montenegro +382<\/option>\n    <option value=\"1664\">Montserrat +1664<\/option>\n    <option value=\"212\">Morocco +212<\/option>\n    <option value=\"258\">Mozambique +258<\/option>\n    <option value=\"95\">Myanmar +95<\/option>\n    <option value=\"264\">Namibia +264<\/option>\n    <option value=\"674\">Nauru +674<\/option>\n    <option value=\"977\">Nepal +977<\/option>\n    <option value=\"31\">Netherlands +31<\/option>\n    <option value=\"599\">Netherlands Antilles +599<\/option>\n    <option value=\"687\">New Caledonia +687<\/option>\n    <option value=\"64\">New Zealand +64<\/option>\n    <option value=\"505\">Nicaragua +505<\/option>\n    <option value=\"227\">Niger +227<\/option>\n    <option value=\"234\">Nigeria +234<\/option>\n    <option value=\"683\">Niue +683<\/option>\n    <option value=\"672\">Norfolk Island +672<\/option>\n    <option value=\"1670\">Northern Mariana Islands +1670<\/option>\n    <option value=\"968\">Oman +968<\/option>\n    <option value=\"92\">Pakistan +92<\/option>\n    <option value=\"680\">Palau +680<\/option>\n    <option value=\"970\">Palestinian Territory, Occupied +970<\/option>\n    <option value=\"507\">Panama +507<\/option>\n    <option value=\"675\">Papua New Guinea +675<\/option>\n    <option value=\"595\">Paraguay +595<\/option>\n    <option value=\"51\">Peru +51<\/option>\n    <option value=\"63\">Philippines +63<\/option>\n    <option value=\"64\">Pitcairn +64<\/option>\n    <option value=\"48\">Poland +48<\/option>\n    <option value=\"351\">Portugal +351<\/option>\n    <option value=\"1787\">Puerto Rico +1787<\/option>\n    <option value=\"974\">Qatar +974<\/option>\n    <option value=\"262\">Reunion +262<\/option>\n    <option value=\"40\">Romania +40<\/option>\n    <option value=\"7\">Russian Federation +7<\/option>\n    <option value=\"250\">Rwanda +250<\/option>\n    <option value=\"590\">Saint Barthelemy +590<\/option>\n    <option value=\"290\">Saint Helena +290<\/option>\n    <option value=\"1869\">Saint Kitts and Nevis +1869<\/option>\n    <option value=\"1758\">Saint Lucia +1758<\/option>\n    <option value=\"590\">Saint Martin +590<\/option>\n    <option value=\"508\">Saint Pierre and Miquelon +508<\/option>\n    <option value=\"1784\">Saint Vincent and the Grenadines +1784<\/option>\n    <option value=\"684\">Samoa +684<\/option>\n    <option value=\"378\">San Marino +378<\/option>\n    <option value=\"239\">Sao Tome and Principe +239<\/option>\n    <option value=\"966\">Saudi Arabia +966<\/option>\n    <option value=\"221\">Senegal +221<\/option>\n    <option value=\"381\">Serbia +381<\/option>\n    <option value=\"381\">Serbia and Montenegro +381<\/option>\n    <option value=\"248\">Seychelles +248<\/option>\n    <option value=\"232\">Sierra Leone +232<\/option>\n    <option value=\"65\">Singapore +65<\/option>\n    <option value=\"721\">Sint Maarten +721<\/option>\n    <option value=\"421\">Slovakia +421<\/option>\n    <option value=\"386\">Slovenia +386<\/option>\n    <option value=\"677\">Solomon Islands +677<\/option>\n    <option value=\"252\">Somalia +252<\/option>\n    <option value=\"27\">South Africa +27<\/option>\n    <option value=\"500\">South Georgia and the South Sandwich Islands +500<\/option>\n    <option value=\"211\">South Sudan +211<\/option>\n    <option value=\"34\">Spain +34<\/option>\n    <option value=\"94\">Sri Lanka +94<\/option>\n    <option value=\"249\">Sudan +249<\/option>\n    <option value=\"597\">Suriname +597<\/option>\n    <option value=\"47\">Svalbard and Jan Mayen +47<\/option>\n    <option value=\"268\">Swaziland +268<\/option>\n    <option value=\"41\">Switzerland +41<\/option>\n    <option value=\"963\">Syrian Arab Republic +963<\/option>\n    <option value=\"886\">Taiwan, Province of China +886<\/option>\n    <option value=\"992\">Tajikistan +992<\/option>\n    <option value=\"255\">Tanzania, United Republic of +255<\/option>\n    <option value=\"66\">Thailand +66<\/option>\n    <option value=\"670\">Timor-Leste +670<\/option>\n    <option value=\"228\">Togo +228<\/option>\n    <option value=\"690\">Tokelau +690<\/option>\n    <option value=\"676\">Tonga +676<\/option>\n    <option value=\"1868\">Trinidad and Tobago +1868<\/option>\n    <option value=\"216\">Tunisia +216<\/option>\n    <option value=\"90\">Turkey +90<\/option>\n    <option value=\"7370\">Turkmenistan +7370<\/option>\n    <option value=\"1649\">Turks and Caicos Islands +1649<\/option>\n    <option value=\"688\">Tuvalu +688<\/option>\n    <option value=\"256\">Uganda +256<\/option>\n    <option value=\"380\">Ukraine +380<\/option>\n    <option value=\"971\">United Arab Emirates +971<\/option>\n    <option value=\"44\">United Kingdom +44<\/option>\n    <option value=\"1\">United States +1<\/option>\n    <option value=\"1\">United States Minor Outlying Islands +1<\/option>\n    <option value=\"598\">Uruguay +598<\/option>\n    <option value=\"998\">Uzbekistan +998<\/option>\n    <option value=\"678\">Vanuatu +678<\/option>\n    <option value=\"58\">Venezuela +58<\/option>\n    <option value=\"84\">Viet Nam +84<\/option>\n    <option value=\"1284\">Virgin Islands, British +1284<\/option>\n    <option value=\"1340\">Virgin Islands, U.s. +1340<\/option>\n    <option value=\"681\">Wallis and Futuna +681<\/option>\n    <option value=\"212\">Western Sahara +212<\/option>\n    <option value=\"967\">Yemen +967<\/option>\n    <option value=\"260\">Zambia +260<\/option>\n    <option value=\"263\">Zimbabwe +263<\/option>\n<\/select>\n<\/div>\n<div style=\"flex-grow: 5\">\n<input id=\"rafty_booking_phone_number_input\" style=\"height:43px;width:100%;\" name=\"rafty_booking_phone_number_input\" onchange=\"inputOnchanged(this, 'Phone number', 'phone_number_error_msg')\" type=\"text\" value=\"\" placeholder=\"Phone number\"><span id = \"phone_number_error_msg\" style=\"display:none;color:red;\"><\/span>\n<\/div>\n<\/div>\n<label style=\"color:#A0522D;\"><b>Email<\/b><\/label>\n<input id=\"rafty_booking_email_input\" style=\"height:40px;width:100%;\" onchange=\"inputOnchanged(this, 'Email', 'email_error_msg')\" type=\"text\" value=\"\" placeholder=\"Email\"><span id = \"email_error_msg\" style=\"display:none;color:red;\"><\/span>\n<label style=\"color:#A0522D;\"><b>Event length<\/b><\/label><br>\n<select id=\"rafty_booking_event_length_input\" style=\"padding:4px 0 4px 16px;height:40px;width:100%;font-weight: bold;\" onchange=\"updatePrice()\" name=\"option\">\n <option value=\"2750.00\">1h 30m<\/option>\n <option value=\"5300.00\">3h 00m<\/option>\n<\/select><br>\n<label style=\"color:#A0522D;\"><b>PickupDate<\/b><\/label><br>\n<input id=\"rafty_booking_pickup_date_input\" style=\"height:40px;width:100%;font-weight: bold;\" type=\"date\"  max=\"\" onchange=\"showDateTimeSchedule()\" min=\"\" name=\"rafty_booking_pickup_date_input\" value=\"\">\n\n<div id=\"real_pickup_time_holder\">\n<label style=\"color:#A0522D;\"><b>PickupTime<\/b><\/label><br>\n<div class=\"flexcontainer\">\n<div>\n<input id=\"time_0\" type=\"radio\" name=\"schdule_time\" value=\"0\" checked>\n<label id=\"time_label_id_0\">10:00<\/label><\/div>\n<div>\n<input id=\"time_1\" type=\"radio\" name=\"schdule_time\" value=\"1\">\n<label id=\"time_label_id_1\">12:00<\/label><\/div>\n<div>\n<input id=\"time_2\" type=\"radio\" name=\"schdule_time\" value=\"2\">\n<label id=\"time_label_id_2\">14:00<\/label><\/div>\n<div>\n<input id=\"time_3\" type=\"radio\" name=\"schdule_time\" value=\"3\">\n<label id=\"time_label_id_3\">16:00<\/label><\/div>\n<div>\n<input id=\"time_4\" type=\"radio\" name=\"schdule_time\" value=\"4\">\n<label id=\"time_label_id_4\">18:00<\/label><\/div>\n<div>\n<input id=\"time_5\" type=\"radio\" name=\"schdule_time\" value=\"5\">\n<label id=\"time_label_id_5\">20:00<\/label><\/div><\/div>\n<\/div>\n<div id=\"not_used_pickup_time_holder\" style=\"display:none;\">\n<label id=\"rafty_booking_pickup_time_label_disabled\" style=\"color:#A0522D;\"><b>PickupTime<\/b><\/label><br>\n<div class=\"flexcontainer\">\n<div>\n<input type=\"radio\" name=\"schdule_time_disabled\" value=\"0\" disabled>\n<label>10:00<\/label><\/div>\n<div>\n<input type=\"radio\" name=\"schdule_time_disabled\" value=\"1\"disabled>\n<label>12:00<\/label><\/div>\n<div>\n<input type=\"radio\" name=\"schdule_time_disabled\" value=\"2\" disabled>\n<label>14:00<\/label><\/div>\n<div>\n<input type=\"radio\" name=\"schdule_time_disabled\" value=\"3\"disabled>\n<label>16:00<\/label><\/div>\n<div>\n<input type=\"radio\" name=\"schdule_time_disabled\" value=\"4\"disabled>\n<label>18:00<\/label><\/div>\n<div>\n<input type=\"radio\" name=\"schdule_time_disabled\" value=\"5\"disabled>\n<label>20:00<\/label><\/div><\/div>\n<span style=\"color:red;\">No more available times<\/span>\n<\/div>\n<label style=\"color:#A0522D;\"><b>Pickup location<\/b><\/label><br>\n<select id=\"rafty_booking_pickup_location_input\" style=\"padding:4px 0 4px 16px;height:40px;width:100%;\" onchange=\"on_pickup_location_changed()\" name=\"option\" disabled>\n <option value=\"0\">Choose<\/option>\n<\/select><br><span id = \"pickup_location_error_msg\" style=\"display:none;color:red;\"><\/span>\n\n<label style=\"color:#A0522D;\"><b>Drop-off location<\/b><\/label><br>\n<select id=\"rafty_booking_dropoff_location_input\" style=\"padding:4px 0 4px 16px;height:40px;width:100%;\" onchange=\"on_dropoff_location_changed()\" name=\"option\" disabled>\n<option value=\"0\">Choose<\/option>\n<\/select><br><span id = \"dropoff_location_error_msg\" style=\"display:none;color:red;\"><\/span>\n\n<label style=\"color:#A0522D;\"><b>Tour price<\/b><\/label>\n<input id=\"rafty_booking_price_input\" style=\"height:40px;width:100%;font-weight: bold;pointer-events: none;\" type=\"text\" value=\"2750.00 kr.\">   \n\n<label style=\"color:#A0522D;\"><b>Message if necessary<\/b><\/label>\n<textarea id=\"rafty_booking_message_input\" style=\"resize:none;width:100%\"><\/textarea>\n<div><input  id=\"rafty_booking_accept_terms_of_trade_input\" onclick=\" accept_our_terms_of_trade_Onchanged()\" type=\"checkbox\">\n<label><strong>Accept our<\/strong><\/label><strong><a href=\"\/terms-of-trade\" target=\"_blank\" rel=\"noopener\"> Terms of trade<\/a><\/strong><span id = \"accept_our_terms_of_trade_error_msg\" style=\"display:none;color:red;\">You must accept our terms of trade<\/span><\/div>\n<p><button id=\"submit_button\" class=\"g-recaptcha\" data-sitekey=\"6LfZNh8sAAAAAJqcjhJVz3GavnDhZFpprhe6w5l2\" data-callback=\"onBookSubmit\" data-action=\"submit\">Book now<\/button><\/p>\n<\/form>\n\n\n<!-- wp:themify-builder\/canvas \/-->\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-123","page","type-page","status-publish","hentry","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/comments?post=123"}],"version-history":[{"count":43,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages\/123\/revisions"}],"predecessor-version":[{"id":1630,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages\/123\/revisions\/1630"}],"wp:attachment":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/media?parent=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}