
{"id":3733,"date":"2026-05-15T12:24:08","date_gmt":"2026-05-15T11:24:08","guid":{"rendered":"https:\/\/new2.flyovertheworld.com\/bokningen-lyckades\/"},"modified":"2026-06-10T08:08:47","modified_gmt":"2026-06-10T07:08:47","slug":"bokningen-lyckades","status":"publish","type":"page","link":"https:\/\/flyovertheworld.com\/sv\/bokningen-lyckades\/","title":{"rendered":"Bokningen lyckades"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3733\" class=\"elementor elementor-3733 elementor-2842\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72a4c13d e-flex e-con-boxed e-con e-parent\" data-id=\"72a4c13d\" 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-fd18303 elementor-widget elementor-widget-html\" data-id=\"fd18303\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>#success-content, #error-content {\n  display:none;\n}\n<\/style>\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-fe75efd e-flex e-con-boxed e-con e-parent\" data-id=\"fe75efd\" data-element_type=\"container\" data-e-type=\"container\" id=\"success-content\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-97c3c29 elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"97c3c29\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-check-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\"><\/path><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tDin bokning \u00e4r bekr\u00e4ftad\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tBokningsreferens: <strong id=\"booking-ref\">...<\/strong>\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4720d81 elementor-widget elementor-widget-html\" data-id=\"4720d81\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t    <div id=\"passenger-result\" style=\"margin-top:15px; font-weight:500;\"><\/div>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-625a669 e-con-full e-flex e-con e-child\" data-id=\"625a669\" data-element_type=\"container\" data-e-type=\"container\" id=\"options-passengers\">\n\t\t\t\t<div class=\"elementor-element elementor-element-41b7848 elementor-widget elementor-widget-text-editor\" data-id=\"41b7848\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Passagerares namn och vikt m\u00e5ste bekr\u00e4ftas 48 timmar f\u00f6re avg\u00e5ng. <br>Du kan antingen slutf\u00f6ra detta steg nu eller g\u00f6ra det senare.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64a0ea7 elementor-widget elementor-widget-html\" data-id=\"64a0ea7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\n             <button onclick=\"showPassengerForm()\">\n Slutf\u00f6r nu\n            <\/button>\n            <br\/>            <button onclick=\"skipPassengerDetails()\" style=\"background: #ddd; color:#191919; margin-top:10px\">\n Jag g\u00f6r det senare\n            <\/button> \n\n\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-be7c687 e-flex e-con-boxed e-con e-parent\" data-id=\"be7c687\" data-element_type=\"container\" data-e-type=\"container\" id=\"error-content\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-241600d elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"241600d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-exclamation-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"><\/path><\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tHoppsan, n\u00e5got gick fel\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tV\u00e4nligen kontakta oss p\u00e5 hello@flyovertheworld.com, <br \/>och ange denna bokningsreferens: <strong id=\"booking-ref-error\">...<\/strong>\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ff57b80 elementor-widget elementor-widget-html\" data-id=\"ff57b80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"error-message\" style=\"color:red; margin-top:20px; font-size:16px;\">Felmeddelande<\/div>\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-c7bbab9 e-flex e-con-boxed e-con e-parent\" data-id=\"c7bbab9\" 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-d8b0e38 elementor-widget elementor-widget-html\" data-id=\"d8b0e38\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t    <!-- Passenger Form -->\n    <div id=\"passenger-form\" style=\"display:none; margin-top:30px; text-align:left; max-width:600px; margin-left:auto; margin-right:auto;\">\n        <h3>Passageraruppgifter<\/h3>\n        <div id=\"passenger-fields\"><\/div>\n        <button onclick=\"submitPostPaymentPassengers()\">\n  Spara passageraruppgifter\n        <\/button>\n    <\/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-856982e e-flex e-con-boxed e-con e-parent\" data-id=\"856982e\" 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-51a5fe9 elementor-widget elementor-widget-html\" data-id=\"51a5fe9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>const urlParams = new URLSearchParams(window.location.search);\nconst reference = urlParams.get('reference');\nconst accessKey = urlParams.get('key');\n\nif (reference && accessKey) {\n    fetch('\/wp-json\/bookings\/v1\/verify-booking', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({ \n            reference: reference, \n            access_key: accessKey \n        })\n    })\n    .then(res => res.json())\n    .then(data => {\n        console.log('Verification response:', data);   \/\/ for debugging\n\n        if (data.status === 'confirmed') {\n            document.getElementById('booking-ref').textContent = data.booking_reference || reference;\n            document.getElementById('success-content').style.display = 'block';\n            passengerCount = parseInt(data.passenger_count);\n        } else {\n            document.getElementById('booking-ref-error').textContent =  reference;\n            document.getElementById('error-message').innerHTML = 'Invalid or expired link.';\n            document.getElementById('error-content').style.display = 'block';\n        }\n    })\n} else {\n    document.getElementById('booking-ref-error').textContent =  reference;\n    document.getElementById('error-message').innerHTML = 'Missing booking reference.';\n    document.getElementById('error-content').style.display = 'block';\n}\n\n\/\/ Passenger form functions\nfunction showPassengerForm() {\n    document.getElementById('options-passengers').style.display = 'none';\n    document.getElementById('passenger-form').style.display = 'block';\n    renderDynamicPassengerForm();\n}\n\nfunction renderDynamicPassengerForm() {\n    const count = passengerCount;\n    let html = '';\n    for (let i = 1; i <= count; i++) {\n        html += `\n            <div style=\"margin-bottom:15px;\"><strong>Passenger ${i}<\/strong><br\/><input type=\"text\" id=\"p${i}-first\" placeholder=\"First name\"><input type=\"text\" id=\"p${i}-last\" placeholder=\"Last name\"><input type=\"number\" id=\"p${i}-weight\" placeholder=\"Weight in kg\" style=\"margin-top: 5px; width: 150px;\"><\/div>`;\n    }\n    document.getElementById('passenger-fields').innerHTML = html;\n}\n\nfunction validatePassengerForm() {\n    let isValid = true;\n    const resultDiv = document.getElementById('passenger-result');\n    \n    \/\/ Clear previous errors\n    document.querySelectorAll('.fotw-passenger-error').forEach(el => el.remove());\n    \n    const count = passengerCount;\n    for (let i = 1; i <= count; i++) {\n        const first = document.getElementById(`p${i}-first`);\n        const last = document.getElementById(`p${i}-last`);\n        const weight = document.getElementById(`p${i}-weight`);\n        \n        if (!first.value.trim()) {\n            isValid = false;\n            showPassengerError(first, 'First name is required');\n        }\n        if (!last.value.trim()) {\n            isValid = false;\n            showPassengerError(last, 'Last name is required');\n        }\n        if (!weight.value || parseFloat(weight.value) <= 0) {\n            isValid = false;\n            showPassengerError(weight, 'Valid weight is required');\n        }\n    }\n    \n    if (!isValid) {\n        resultDiv.innerHTML = '<p style=\"color:#e11d48;\">Please fill in all required passenger details.<\/p>';\n    } else {\n        resultDiv.innerHTML = '';\n    }\n    \n    return isValid;\n}\n\nfunction showPassengerError(field, message) {\n    field.style.borderColor = '#e11d48';\n    field.style.borderWidth = '2px';\n    \n    const error = document.createElement('div');\n    error.className = 'fotw-passenger-error';\n    error.style.color = '#e11d48';\n    error.style.fontSize = '0.85rem';\n    error.style.marginTop = '4px';\n    error.textContent = message;\n    field.parentNode.appendChild(error);\n}\n\nasync function submitPostPaymentPassengers() {\n    if (!validatePassengerForm()) {\n        return;\n    }\n    \n    const passengers = [];\n    const count = passengerCount;\n    for (let i = 1; i <= count; i++) {\n        passengers.push({\n            first_name: document.getElementById(`p${i}-first`).value.trim(),\n            last_name: document.getElementById(`p${i}-last`).value.trim(),\n            weight_kg: parseFloat(document.getElementById(`p${i}-weight`).value) || null\n        });\n    }\n    \n    const resultDiv = document.getElementById('passenger-result');\n    resultDiv.innerHTML = '<p style=\"color:#191919;\">Saving passenger details...<\/p>';\n    \n    try {\n        const res = await fetch('\/wp-json\/bookings\/v1\/update-passengers', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify({\n                reference: reference,\n                access_key: accessKey,\n                passengers: passengers\n            })\n        });\n        const data = await res.json();\n        if (data.status === 'success') {\n            resultDiv.innerHTML = `<p\"><span style=\"color:#7FCD1F;\">\u2705 <\/span>Passenger details confirmed and saved.<\/p><p>You will receive a confirmation by e-mail shortly.<\/p>`;\n            document.getElementById('passenger-form').style.display = 'none';\n        } else {\n            resultDiv.innerHTML = `<p style=\"color:red;\">Oops, something went wrong: ${data.error || 'Unknown error'}<\/p>`;\n        }\n    } catch (e) {\n        resultDiv.innerHTML = '<p style=\"color:red;\">Oops, something went wrong. Please try again.<\/p>';\n    }\n}\n\nasync function xxsubmitPostPaymentPassengers() {\n    const passengers = [];\n    const count = passengerCount;\n    for (let i = 1; i <= count; i++) {\n        passengers.push({\n            first_name: document.getElementById(`p${i}-first`).value.trim(),\n            last_name: document.getElementById(`p${i}-last`).value.trim(),\n            weight_kg: parseFloat(document.getElementById(`p${i}-weight`).value) || null\n        });\n    }\n\n    const resultDiv = document.getElementById('passenger-result');\n    resultDiv.innerHTML = '<p style=\"color:#191919;\">Saving passenger details...<\/p>';\n\n    try {\n        const res = await fetch('\/wp-json\/bookings\/v1\/update-passengers', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify({ \n                reference: reference, \n                access_key: accessKey,\n                passengers: passengers \n            })\n        });\n        const data = await res.json();\n\n        if (data.status === 'success') {\n            resultDiv.innerHTML = `<p\"><span style=\"color:#7FCD1F;\">\u2705 <\/span>Passenger details confirmed and saved.<\/p><p>You will receive a confirmation by e-mail shortly.<\/p>`;\n            document.getElementById('passenger-form').style.display = 'none';\n        } else {\n            resultDiv.innerHTML = `<p style=\"color:red;\">Oops, something went wrong: ${data.error || 'Unknown error'}<\/p>`;\n        }\n    } catch (e) {\n        resultDiv.innerHTML = '<p style=\"color:red;\">Oops, something went wrong. Please try again.<\/p>';\n    }\n}\n\nfunction skipPassengerDetails() {\n    document.getElementById('options-passengers').style.display = 'none';\n    document.getElementById('passenger-form').style.display = 'none';\n    document.getElementById('passenger-result').innerHTML = '<p style=\"color:#191919;\">Thank you! You can confirm passenger details later via the link in the confirmation e-mail.<\/p>';\n}\n<\/script>\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>Din bokning \u00e4r bekr\u00e4ftad Bokningsreferens: &#8230; Passagerares namn och vikt m\u00e5ste bekr\u00e4ftas 48 timmar f\u00f6re avg\u00e5ng. Du kan antingen slutf\u00f6ra detta steg nu eller g\u00f6ra det senare. Slutf\u00f6r nu Jag g\u00f6r det senare Hoppsan, n\u00e5got gick fel V\u00e4nligen kontakta oss p\u00e5 hello@flyovertheworld.com, och ange denna bokningsreferens: &#8230; Felmeddelande Passageraruppgifter Spara passageraruppgifter<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3733","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/pages\/3733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/comments?post=3733"}],"version-history":[{"count":1,"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/pages\/3733\/revisions"}],"predecessor-version":[{"id":3736,"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/pages\/3733\/revisions\/3736"}],"wp:attachment":[{"href":"https:\/\/flyovertheworld.com\/sv\/wp-json\/wp\/v2\/media?parent=3733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}