{"id":4287,"date":"2025-07-11T15:22:58","date_gmt":"2025-07-11T19:22:58","guid":{"rendered":"https:\/\/demenagementdechoc.com\/calculator-test\/"},"modified":"2025-09-03T12:23:04","modified_gmt":"2025-09-03T16:23:04","slug":"calculator-test","status":"publish","type":"page","link":"https:\/\/demenagementdechoc.com\/en\/calculator-test\/","title":{"rendered":"Calculator Test"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4287\" class=\"elementor elementor-4287 elementor-3949\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-f2b62b4 e-flex e-con-boxed e-con e-parent\" data-id=\"f2b62b4\" 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 data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-c54ba84 e-con-full e-flex e-con e-child\" data-id=\"c54ba84\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-919b3d4 elementor-widget__width-auto sur-titre elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"919b3d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;,&quot;_animation_delay&quot;:100}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">Expertise, Efficiency, and Security<\/span>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8b7e3db elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"8b7e3db\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Exceptional Moving: your Moving Company<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d089459 elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"d089459\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;,&quot;_animation_delay&quot;:300}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Specializing in residential, commercial, and international moves, our moving company assists individuals and businesses with expertise that combines precision, reliability, and peace of mind.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-ab20acd e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"ab20acd\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;,&quot;animation_delay&quot;:200}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d8785c elementor-widget elementor-widget-heading\" data-id=\"5d8785c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">Request a Callback<\/span>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cac21f0 elementor-widget elementor-widget-shortcode\" data-id=\"cac21f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <form class=\"mc-form-step-0\" method=\"get\" action=\"\/en\/estimate-your-volume\">\r\n        <div class=\"mc-field\" style=\"z-index: 10;\">\r\n            <label for=\"mc-depart\">Origin address<\/label>\r\n            <div class=\"mc-input-wrapper\" id=\"mc-depart-wrapper\">\r\n                <!-- Mapbox Geocoder sera inject\u00e9 ici -->\r\n            <\/div>\r\n            <!-- Champs cach\u00e9s pour r\u00e9utiliser exactement ce qui est s\u00e9lectionn\u00e9 -->\r\n            <input type=\"hidden\" name=\"depart_lat\"   id=\"mc-depart-lat\">\r\n            <input type=\"hidden\" name=\"depart_lng\"   id=\"mc-depart-lng\">\r\n            <input type=\"hidden\" name=\"depart_label\" id=\"mc-depart-label\">\r\n        <\/div>\r\n\r\n        <div class=\"mc-field\" style=\"z-index: 9;\">\r\n            <label for=\"mc-arrivee\">Destination address<\/label>\r\n            <div class=\"mc-input-wrapper\" id=\"mc-arrivee-wrapper\">\r\n                <!-- Mapbox Geocoder sera inject\u00e9 ici -->\r\n            <\/div>\r\n            <!-- Champs cach\u00e9s pour r\u00e9utiliser exactement ce qui est s\u00e9lectionn\u00e9 -->\r\n            <input type=\"hidden\" name=\"arrivee_lat\"   id=\"mc-arrivee-lat\">\r\n            <input type=\"hidden\" name=\"arrivee_lng\"   id=\"mc-arrivee-lng\">\r\n            <input type=\"hidden\" name=\"arrivee_label\" id=\"mc-arrivee-label\">\r\n        <\/div>\r\n\r\n        <div class=\"mc-field\">\r\n            <label for=\"mc-date\">Preferred date<\/label>\r\n            <div class=\"mc-input-wrapper\">\r\n                <span class=\"mc-icon\"><i class=\"far fa-calendar-alt\"><\/i><\/span>\r\n                <input\r\n                    type=\"text\"\r\n                    id=\"datepicker\"\r\n                    name=\"date\"\r\n                    placeholder=\"jj-mm-aaaa\"\r\n                    required\r\n                >\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <button type=\"submit\" class=\"mc-submit\">\r\n            Calculate your volume        <\/button>\r\n    <\/form>\r\n\r\n    <script>\r\n    document.addEventListener('DOMContentLoaded', () => {\r\n      \/\/ Mapbox token\r\n      mapboxgl.accessToken = 'pk.eyJ1IjoiZ2lhbmluYXZldHRlIiwiYSI6ImNtY3l3bXI5YzBibGcybHFwMjEydG5zYmEifQ.pMu9rjUxb9pqt1JZnwjF9g';\r\n\r\n      const form = document.querySelector('.mc-form-step-0');\r\n\r\n      function initGeocoder(wrapperId, fieldName) {\r\n        const wrapper = document.getElementById(wrapperId);\r\n\r\n        const geocoder = new MapboxGeocoder({\r\n          accessToken: mapboxgl.accessToken,\r\n          placeholder: \"Enter the full address\",\r\n          language: 'en',\r\n          types: 'address,place' \/\/ marche partout\r\n        });\r\n        geocoder.addTo(wrapper);\r\n\r\n        \/\/ Input visible interne cr\u00e9\u00e9 par le control\r\n        const mbInput = wrapper.querySelector('.mapboxgl-ctrl-geocoder--input');\r\n        mbInput.id = 'mc-' + fieldName;\r\n        mbInput.name = fieldName;\r\n        mbInput.required = true;\r\n        mbInput.autocomplete = 'off';\r\n\r\n        \/\/ Champs cach\u00e9s d\u00e9j\u00e0 pr\u00e9sents dans le DOM\r\n        const latEl   = form.querySelector('[name=\"' + fieldName + '_lat\"]');\r\n        const lngEl   = form.querySelector('[name=\"' + fieldName + '_lng\"]');\r\n        const labelEl = form.querySelector('[name=\"' + fieldName + '_label\"]');\r\n\r\n        geocoder.on('result', (e) => {\r\n          const center = e.result && e.result.center ? e.result.center : null;\r\n          if (!center) return;\r\n          const [LNG, LAT] = center;\r\n\r\n          \/\/ On stocke les coords + le libell\u00e9 exact s\u00e9lectionn\u00e9\r\n          lngEl.value = LNG;\r\n          latEl.value = LAT;\r\n          labelEl.value = e.result.place_name || mbInput.value;\r\n\r\n          \/\/ Et on force l'input texte \u00e0 ce libell\u00e9\r\n          mbInput.value = e.result.place_name || mbInput.value;\r\n        });\r\n\r\n        geocoder.on('clear', () => {\r\n          lngEl.value = '';\r\n          latEl.value = '';\r\n          labelEl.value = '';\r\n        });\r\n      }\r\n\r\n      initGeocoder('mc-depart-wrapper',  'depart');\r\n      initGeocoder('mc-arrivee-wrapper', 'arrivee');\r\n\r\n      \/\/ S\u00e9curise la soumission : l'utilisateur doit choisir dans la liste (coords obligatoires)\r\n      form.addEventListener('submit', (ev) => {\r\n        const okDepart  = !!(form.querySelector('[name=\"depart_lat\"]').value && form.querySelector('[name=\"depart_lng\"]').value);\r\n        const okArrivee = !!(form.querySelector('[name=\"arrivee_lat\"]').value && form.querySelector('[name=\"arrivee_lng\"]').value);\r\n        const dateValue = form.querySelector('#datepicker').value;\r\n        if (!okDepart || !okArrivee || !dateValue) {\r\n          ev.preventDefault();\r\n          const messageAlert = \"Please select an address from the list for the origin and destination, and a date.\";\r\n          alert(messageAlert);\r\n        }\r\n      });\r\n\r\n      \/\/ Datepicker Easepick\r\n    new easepick.create({\r\n      element: document.getElementById('datepicker'),\r\n      css: [ 'https:\/\/cdn.jsdelivr.net\/npm\/@easepick\/bundle@1.2.1\/dist\/index.css' ],\r\n      zIndex:  999999,\r\n      format:  'DD-MM-YYYY',\r\n      plugins: ['LockPlugin'],\r\n      LockPlugin: {\r\n        minDate: new Date()\r\n      },\r\n      lang: 'en-US',\r\n      });\r\n    });\r\n    <\/script>\r\n    <\/div>\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-5ec5cb1 elementor-absolute elementor-widget elementor-widget-image\" data-id=\"5ec5cb1\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"196\" height=\"212\" src=\"https:\/\/demenagementdechoc.com\/wp-content\/uploads\/2025\/03\/Group-163214.svg\" class=\"attachment-large size-large wp-image-3237\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7138814 elementor-absolute elementor-widget elementor-widget-image\" data-id=\"7138814\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"520\" height=\"449\" src=\"https:\/\/demenagementdechoc.com\/wp-content\/uploads\/2025\/03\/Group-163215.svg\" class=\"attachment-large size-large wp-image-3238\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1867e66 elementor-absolute elementor-widget elementor-widget-image\" data-id=\"1867e66\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"188\" src=\"https:\/\/demenagementdechoc.com\/wp-content\/uploads\/2025\/03\/Group-163213.svg\" class=\"attachment-large size-large wp-image-3236\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\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>Expertise, Efficiency, and Security Exceptional Moving: your Moving Company Specializing in residential, commercial, and international moves, our moving company assists individuals and businesses with expertise that combines precision, reliability, and peace of mind. Request a Callback<\/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,"footnotes":""},"class_list":["post-4287","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/pages\/4287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/comments?post=4287"}],"version-history":[{"count":1,"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/pages\/4287\/revisions"}],"predecessor-version":[{"id":4288,"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/pages\/4287\/revisions\/4288"}],"wp:attachment":[{"href":"https:\/\/demenagementdechoc.com\/en\/wp-json\/wp\/v2\/media?parent=4287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}