{"id":6235,"date":"2020-06-04T10:36:30","date_gmt":"2020-06-04T08:36:30","guid":{"rendered":"https:\/\/mma-autoservizi.it\/?page_id=6235"},"modified":"2022-07-05T15:59:52","modified_gmt":"2022-07-05T13:59:52","slug":"quote-calculation-resform","status":"publish","type":"page","link":"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/","title":{"rendered":"Quote calculation"},"content":{"rendered":"\t\t<div class=\"py-5 bg-gray-100 mt-2\">\n\t\t\t<div class=\"container-fluid\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"col-12 mt-3 mb-4\">\n\t\t\t\t\t\t<div id=\"timeline\">\n\t\t\t\t\t\t\t<span class=\"intro\">\n\t\t\t\t\t\t\t\t<small>RENTAL PARK<\/small>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"start\">\n\t\t\t\t\t\t\t\t<small>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<i class=\"d-block\">DEPARTURE TIME  00:00<\/i>\n\t\t\t\t\t\t\t\t<\/small>\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<div class=\"tappe\"><\/div>\n\t\t\t\t\t\t\t\t\t\t<span class=\"end\">\n\t\t\t\t<small>\n\t\t\t\t\t\n\t\t\t\t\t<i class=\"d-block\">\n\t\t\t\t\t\tARRIVAL TIME  <span class=\"final_arrival_time\">00:00<\/span>\n\t\t\t\t\t<\/i>\n\t\t\t\t<\/small>\n\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"col-12 col-md-5\">\n\t\t\t\t\t\t<div class=\"pricing\">\t\n\t\t\t\t\t\t\t<div class=\"card mb-5 mb-lg-0\">\n\t\t\t\t\t\t\t\t<div class=\"card-body px-4\">\n\t\t\t\t\t\t\t\t\t<form id=\"preventivo-step2\" class=\"row align-items-end bg-white\" method=\"post\" action=\"https:\/\/www.mma-autoservizi.it\/en\/recap\/\">\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\n\t\t\t\t\t\t\t\t\t\t\t<ul class=\"fa-ul\">\n\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"fa-li\"><i class=\"fa fa-calendar\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>Date:<\/b> 26\/07\/2026\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"fa-li\"><i class=\"fa fa-bus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>Departure from:<\/b> \n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"start-name\" value=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"fa-li\"><i class=\"fa fa-clock-o\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>Departure time<\/b> 00:00\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" class=\"original_time\" value=\"00:00\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"origin\" class=\"origin\" value=\", \" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t    <input type=\"hidden\" name=\"orario_partenza\" class=\"orario_partenza\" value=\"1785016800\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"content-list\" class=\"animated\">\n\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"dots\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-circle\"><\/i><br\/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\" class=\"add-tappa\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-plus-circle\"><\/i> Add stop\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a><br\/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-circle\"><\/i>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"fa-li\"><i class=\"fa fa-flag-checkered\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>Arrival at:<\/b> \n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"arrive-name\" value=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"arrival\" id=\"arrival\" value=\", \" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"fa-li\"><i class=\"fa fa-clock-o\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>Arrival time<\/b> \n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"final_arrival_time\">00:00<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"orario_arrivo\" id=\"orario_arrivo\" value=\"1785016800\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\n\t\t\t\t\t\t\t\t\t\t\t<hr class=\"mt-2\" \/>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12 col-md-5\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.mma-autoservizi.it\/en\/\" class=\"btn btn-warning alert-link w-100 text-uppercase font-weight-normal\">\n\t\t\t\t\t\t\t\t\t\t\t\tBACK\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12 col-md-7\">\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"submit\" class=\"btn btn-primary text-uppercase d-block w-100\" value=\"Next\" \/>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"taps\" id=\"taps\" \/>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"km\" id=\"km\" value=\"0\" \/>\n\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"durata\" id=\"durata\" \/> <input type=\"hidden\" name=\"bus\" id=\"bus\" value=\"19\" \/>\n\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"km-deposito\" id=\"km-deposito\" value=\"0\" \/>\n\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"km-deposito-partenza\" id=\"km-deposito-partenza\" value=\"0\" \/>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"datepicker\" value=\"26\/07\/2026\" \/> <input type=\"hidden\" name=\"timepicker\" value=\"00:00\" \/> <input type=\"hidden\" name=\"arrivo-deposito-durata\" value=\"0\" \/>\n\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"deposito-partenza-durata\" value=\"0\" \/>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/form>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"col-12 col-md-7\">\n\t\t\t\t\t\t<div id=\"map\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t \n\t\t<script type=\"text\/javascript\">\n\t\t\t\n\t\t\tjQuery('#preventivo-step2').on('submit', function(e){ \/\/ ID del form corretto\n                let error = false;\n\t\t\t\tjQuery('.autocomplete', this).each(function() { \/\/ Controlla solo gli autocomplete in questo form\n                    if( jQuery(this).hasClass('error-input') || jQuery(this).val() === '' ) {\n                        jQuery(this).closest('li').find('.alert-box').remove();\n                        jQuery( '<div class=\"alert-box text-danger mt-1\"><i class=\"fa fa-exclamation-triangle\"><\/i> &nbsp; Inserisci un indirizzo valido<\/div>' ).insertAfter( this );\n                        error = true;\n                    }\n                });\n                if (error) {\n                    e.preventDefault();\n                }\n\t\t\t});\n\t\t\t\n\t\t\t\n\t\t\tvar arrival_formattedTime = '';\n\t\t\tvar formattedTime = '';\n\t\t\t\n\t\t\t\/\/default time\n\t\t\tjQuery('#return_timepicker').on('click', function(){\n\t\t\t\tif( arrival_formattedTime && arrival_formattedTime.length > 1 ) { \/\/ Aggiunto check su arrival_formattedTime\n\t\t\t\t\tjQuery(this).val(arrival_formattedTime);\n\t\t\t\t} else\u00a0{\n\t\t\t\t\tjQuery(this).val('00:00');\n\t\t\t\t}\t\n\t\t\t});\n\t\t\t\n\t\t\tvar placeSearch, autocomplete, service, directionsDisplay, directionsService; \/\/ Rimosso partenza, arrivo globali non necessari qui\n\t\t\tvar waypts = [];\n\t\t\t\n\t\t\tfunction initMapAndAutocomplete() { \/\/ Rinominata da init per chiarezza\n\t\t\t\t\n\t\t\t\tdirectionsDisplay = new google.maps.DirectionsRenderer;\n\t\t\t    directionsService = new google.maps.DirectionsService;\n\t\t\n\t\t\t    var map = new google.maps.Map(document.getElementById('map'), {\n\t\t\t\t\tzoom: 14,\n\t\t\t\t\tzoomControl: true,\n\t\t\t\t\tdisableDoubleClickZoom: true,\n\t\t\t\t\tmapTypeControl: false,\n\t\t\t\t\tscaleControl: false,\n\t\t\t\t\tscrollwheel: false,\n\t\t\t\t\tpanControl: false,\n\t\t\t\t\tstreetViewControl: false,\n\t\t\t\t\tfullscreenControl: false,\n\t\t\t\t\tdraggable : true,\n\t\t\t\t\toverviewMapControl: false,\n\t\t\t\t\toverviewMapControlOptions: {\n\t\t\t\t\t\topened: false,\n\t\t\t\t\t},\n\t\t\t\t\tcenter: {lat: parseFloat(''), lng: parseFloat('')} \/\/ Assicura che siano float\n\t\t\t    });\n\t\t\t    directionsDisplay.setMap(map);\n\t\t\t\n\t\t\t    calculateAndDisplayRoute(directionsService, directionsDisplay, 'null');\n\t\t\t\t\n\t\t\t\tinitializeTapAutocompleteFields(directionsService, directionsDisplay); \/\/ Rinominata\n\t\t\t}\n\t\t\t\n\t\t\tfunction initializeTapAutocompleteFields(directionsServiceInstance, directionsDisplayInstance) { \/\/ Rinominata da init_autocomplete\n\t\t\t    var acInputs = document.getElementsByClassName(\"autocomplete\"); \/\/ Campi per le tappe\n\t\t\t\n\t\t\t    for (var i = 0; i < acInputs.length; i++) {\n\t\t\t        var localAutocomplete = new google.maps.places.Autocomplete(acInputs[i]); \/\/ Usa var locale\n\t\t\t        localAutocomplete.inputId = acInputs[i].id;\n\t\t\t        localAutocomplete.setComponentRestrictions({'country': ['it']});\n\t\t\t\n\t\t\t        \/\/ Passa l'istanza di autocomplete corretta\n\t\t\t        google.maps.event.addListener(localAutocomplete, 'place_changed', createFillInAddressHandler(localAutocomplete, directionsServiceInstance, directionsDisplayInstance, acInputs[i].id));\n\t\t\t    }\n\t\t\t}\n            \n            \/\/ Funzione factory per creare handler con scope corretto\n            function createFillInAddressHandler(autocompleteInstance, directionsServiceInstance, directionsDisplayInstance, inputId) {\n                return function() {\n                    fillInTapAddress(autocompleteInstance, directionsServiceInstance, directionsDisplayInstance, inputId);\n                };\n            }\n\t\t\t\t\t\n\t\t\tfunction calculateAndDisplayRoute(directionsService, directionsDisplay, waypoint, destroy = null, tap_n_index = null) { \/\/ tap_n -> tap_n_index\n\t\t\t\t\n\t\t\t\tif( waypoint != 'null' && destroy != null && tap_n_index !== null) { \/\/ Aggiunto check tap_n_index\n                    if (waypts[parseInt(tap_n_index)]) { \/\/ Verifica che l'indice esista\n\t\t\t\t\t    waypts.splice(parseInt(tap_n_index), 1);\n                    }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( waypoint != 'null' && destroy == null ) {\t\t\t\n\t\t\t\t\twaypts.push({\n\t\t\t\t\t\tlocation: waypoint,\n\t\t\t\t\t\tstopover: true\n\t\t\t        });  \n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar selectedMode = 'DRIVING';\n\t\t\t\tdirectionsService.route({\n\t\t\t\t\torigin: {lat: parseFloat(''), lng: parseFloat('')},\n\t\t\t\t\tdestination: {lat: parseFloat(''), lng: parseFloat('')},\n\t\t\t\t\twaypoints: waypts,\n\t\t\t\t\toptimizeWaypoints: false, \/\/ Se true, potrebbe riordinare waypoints\n\t\t\t\t\ttravelMode: google.maps.TravelMode[selectedMode]\n\t\t\t\t}, function(response, status) {\n\t\t\t\t\tif (status == google.maps.DirectionsStatus.OK) { \/\/ Usare google.maps.DirectionsStatus.OK\n\t\t\t\t\t\tdirectionsDisplay.setDirections(response);\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar totalDist = 0;\n\t\t\t\t\t\tvar totalTime = 0; \/\/ In secondi\n\t\t\t\t\t\tvar myroute = response.routes[0];\n\t\t\t\t\t\tif (!myroute || !myroute.legs) {\n                            console.error(\"Route o legs mancanti nella risposta di Directions.\");\n                            return;\n                        }\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < myroute.legs.length; i++) {\n\t\t\t\t\t\t\ttotalDist += myroute.legs[i].distance.value;\n\t\t\t\t\t\t\ttotalTime += myroute.legs[i].duration.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\ttotalTime = totalTime * 1.3; \/\/ Aumento del 30%\n                        totalDist = totalDist \/ 1000; \/\/ Converti in km\n\t\t\t\t\t\t\n                        \/\/ Logica pause (semplificata)\n                        var driving_blocks = Math.floor(totalTime \/ 16200); \/\/ blocchi da 4.5 ore\n                        totalTime += driving_blocks * 2700; \/\/ 45 min di pausa per blocco\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar final_arrival_unix;\n                        var initial_departure_unix = parseInt(jQuery('.orario_partenza').val()); \/\/ Timestamp partenza iniziale\n\n                        if( jQuery('#content-list ul').length < 1 ){ \/\/ Nessuna tappa\n\t\t\t\t\t\t\tfinal_arrival_unix = initial_departure_unix + totalTime;\n\t\t\t\t\t\t} else\u00a0{\n\t\t\t\t\t\t\tvar total_stop_duration = 0;\n                            \/\/ Calcola la durata totale delle soste nelle tappe\n                            jQuery('#content-list ul').each(function(index) {\n                                var tap_arrival_str = jQuery(this).find('.tap-arrival-time').text();\n                                var tap_departure_str = jQuery(this).find('input.datetimepicker-input').val();\n\n                                if (tap_arrival_str && tap_arrival_str !== '...' && tap_departure_str) {\n                                    var tap_arrival_moment = moment(tap_arrival_str, \"HH:mm\");\n                                    var tap_departure_moment = moment(tap_departure_str, \"HH:mm\");\n                                    \n                                    \/\/ Se la partenza \u00e8 prima dell'arrivo (giorno successivo), aggiungi 24 ore\n                                    if (tap_departure_moment.isBefore(tap_arrival_moment)) {\n                                        tap_departure_moment.add(1, 'day');\n                                    }\n                                    total_stop_duration += tap_departure_moment.diff(tap_arrival_moment, 'seconds');\n                                }\n                            });\n\t\t\t\t\t\t\tfinal_arrival_unix = initial_departure_unix + totalTime + total_stop_duration;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !isNaN(final_arrival_unix) ) {\n                            arrival_formattedTime = moment.unix(final_arrival_unix).format('HH:mm');\n\t\t\t\t\t\t} else\u00a0{\n\t\t\t\t\t\t\tarrival_formattedTime = '...';\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tjQuery('.final_arrival_time').text(arrival_formattedTime);\n\t\t\t\t\t\tjQuery('#orario_arrivo').val(final_arrival_unix); \/\/ Timestamp UNIX dell'arrivo finale\n\t\t\n\t\t\t\t\t\tjQuery('#km').val(totalDist.toFixed(1));\n\t\t\t\t\t\tjQuery('#durata').val(totalTime); \/\/ Durata totale guida + pause in secondi\n\t\t\t\t\t\t\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\/\/ window.alert('Richiesta di percorso fallita a causa di: ' + status); \/\/ Evita alert\n                        console.warn('Richiesta di percorso fallita a causa di: ' + status);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction fillInTapAddress(autocompleteInstance, directionsServiceInstance, directionsDisplayInstance, inputId) { \/\/ Rinominata e parametri corretti\n                var place = autocompleteInstance.getPlace();\n                var jQueryInput = jQuery('#' + inputId);\n                var listItem = jQueryInput.closest('ul'); \/\/ l'elemento <ul> della tappa\n\n                if (!place || !place.geometry || !place.geometry.location) {\n                    console.error(\"Autocomplete per tappa non ha restituito un place valido.\");\n                    jQueryInput.removeClass('success-input').addClass('error-input');\n                    return;\n                }\n                jQueryInput.removeClass('error-input').addClass('success-input').prop('readonly', true);\n                listItem.find('.alert-box').remove();\n\n\n                \/\/ Aggiungi il waypoint alla mappa\n                calculateAndDisplayRoute(directionsServiceInstance, directionsDisplayInstance, place.formatted_address);\n            \n                var localDistanceService = new google.maps.DistanceMatrixService(); \/\/ Usa 'local' per evitare conflitti\n                \n                \/\/ Determina l'origine per questa tappa\n                var origin_for_this_tap_coords;\n                var previous_departure_unix;\n\n                var tapIndex = parseInt(inputId.split('_')[1]); \/\/ es. da 'tappa_0' -> 0\n\n                if (tapIndex === 0 && jQuery('#content-list ul').length === 1) { \/\/ Prima tappa\n                    origin_for_this_tap_coords = jQuery('input[name=\"origin\"].origin').val(); \/\/ Coordinate della partenza principale\n                    previous_departure_unix = parseInt(jQuery('input[name=\"orario_partenza\"].orario_partenza').val());\n                } else {\n                    \/\/ Tappa successiva: l'origine \u00e8 la tappa precedente\n                    var prevListItem = listItem.prev('ul');\n                    if (prevListItem.length > 0) {\n                         origin_for_this_tap_coords = prevListItem.find('input.tap-coords').val(); \/\/ Corretto: usa tap-coords dalla tappa precedente\n                         var prev_tap_departure_time_str = prevListItem.find('input.tap-departure-timepicker').val(); \/\/ Usa la classe specifica\n                         var prev_tap_departure_unix_hidden = parseInt(prevListItem.find('input.tap-departure-unix').val());\n\n                         if (prev_tap_departure_time_str) { \/\/ Se l'utente ha selezionato un orario\n                            var tempMoment = moment(prev_tap_departure_time_str, \"HH:mm\");\n                            \/\/ Assumiamo che l'orario di partenza dalla tappa sia sempre lo stesso giorno o il giorno dopo l'arrivo alla tappa.\n                            \/\/ Se l'orario di partenza \u00e8 \"minore\" dell'orario di arrivo alla tappa, potrebbe essere il giorno dopo.\n                            \/\/ Questa logica pu\u00f2 diventare complessa se le tappe si estendono su pi\u00f9 giorni.\n                            \/\/ Per ora, usiamo il timestamp UNIX gi\u00e0 calcolato se disponibile.\n                            previous_departure_unix = prev_tap_departure_unix_hidden > 0 ? prev_tap_departure_unix_hidden : tempMoment.unix();\n                         } else { \/\/ Fallback se l'orario non \u00e8 stato ancora selezionato (improbabile se la logica \u00e8 sequenziale)\n                             previous_departure_unix = parseInt(jQuery('input[name=\"orario_partenza\"].orario_partenza').val()); \/\/ Fallback estremo\n                         }\n                    } else { \n                        origin_for_this_tap_coords = jQuery('input[name=\"origin\"].origin').val();\n                        previous_departure_unix = parseInt(jQuery('input[name=\"orario_partenza\"].orario_partenza').val());\n                    }\n                }\n\n                listItem.find('input.tap-coords').val(place.geometry.location.lat() + ', ' + place.geometry.location.lng());\n                \n                localDistanceService.getDistanceMatrix({\n                    origins: [origin_for_this_tap_coords],\n                    destinations: [place.geometry.location.lat()+', '+place.geometry.location.lng()],\n                    travelMode: google.maps.TravelMode.DRIVING,\n                    unitSystem: google.maps.UnitSystem.METRIC,\n                    avoidHighways: false,\n                    avoidTolls: false\n                }, function callback(response, status){\n                    if( status == google.maps.DistanceMatrixStatus.OK ){\n                        \/\/ jQueryInput.on('keydown keypress', function(){ return false; }).addClass('disabled'); \/\/ Non pi\u00f9 necessario se readonly\n                    }\n                    \n                    if (status != google.maps.DistanceMatrixStatus.OK) {\n                        console.error('Errore DistanceMatrix per tappa: ' + status);\n                    } else {\n                        if (!response.rows || !response.rows[0] || !response.rows[0].elements || !response.rows[0].elements[0]) {\n                            console.error('Risposta DistanceMatrix per tappa malformata.');\n                            return;\n                        }\n                        var element = response.rows[0].elements[0];\n                        if (element.status === \"OK\") {\n                            var durata_segmento_seconds = element.duration.value;\n                            durata_segmento_seconds = durata_segmento_seconds * 1.3; \/\/ Aumento 30%\n                            \n                            var driving_blocks_segment = Math.floor(durata_segmento_seconds \/ 16200);\n                            durata_segmento_seconds += driving_blocks_segment * 2700;\n\n                            var arrivo_tappa_unix = previous_departure_unix + durata_segmento_seconds;\n                                                        \n                            formattedTime = moment.unix(arrivo_tappa_unix).format('HH:mm');\n                            listItem.find('.tap-arrival-time').text(formattedTime);\n                            listItem.find('input.tap-arrival-unix').val(arrivo_tappa_unix); \n                            \n                            jQuery('.final_arrival_time').text('...'); \n                            \n                            var tap_id_attr = listItem.attr('id'); \n                            if( jQuery('#tap-n-' + tap_id_attr).length > 0 ) { \n                                jQuery('#tap-n-' + tap_id_attr).remove();\n                            }\n                            \n                            jQuery('<span\/>', {\n                                'id': 'tap-n-' + tap_id_attr,\n                                'class':'tappa animated zoomIn',\n                                'html': '<small>'+place.formatted_address+'<i class=\"d-block\">arrivo ore '+formattedTime+'<\/i><\/small>'\n                            }).appendTo('.tappe');\n                            \n                        } else {\n                             console.warn('Stato elemento DistanceMatrix per tappa non OK: ' + element.status);\n                        }\n                    }\n                });\n            }\n\n            jQuery(document).on('click', '.remove-tap', function(e){\n                e.preventDefault();\n                var ulToRemove = jQuery(this).closest('ul');\n                var tapIdForTimeline = ulToRemove.attr('id'); \n                var tap_n_index_str = tapIdForTimeline.split('_')[2];\n                var tap_n_index = parseInt(tap_n_index_str);\n\n                if (!isNaN(tap_n_index) && waypts[tap_n_index] && waypts[tap_n_index].location) {\n                     calculateAndDisplayRoute(directionsService, directionsDisplay, waypts[tap_n_index].location, 'destroy', tap_n_index);\n                } else {\n                    \/\/ Se non si pu\u00f2 rimuovere specificamente, ricalcola tutto dalle tappe rimanenti\n                    \/\/ Questo richiede di ricostruire 'waypts' array\n                    waypts = [];\n                    jQuery('#content-list ul.list-unstyled').not(ulToRemove).each(function() {\n                        var tappa_input_val = jQuery(this).find('.add-field.autocomplete').val();\n                        if (tappa_input_val) {\n                             waypts.push({ location: tappa_input_val, stopover: true });\n                        }\n                    });\n                    calculateAndDisplayRoute(directionsService, directionsDisplay, 'null'); \/\/ Ricalcola con i waypoints aggiornati\n                }\n\n                jQuery('#tap-n-' + tapIdForTimeline).remove(); \n                ulToRemove.fadeOut(200, function() { \n                    jQuery(this).remove(); \n                    jQuery('#taps').val( jQuery('#content-list ul.list-unstyled').length );\n                    \/\/ Ricalcola il percorso e l'orario finale dopo la rimozione\n                    \/\/ La chiamata a calculateAndDisplayRoute sopra dovrebbe gi\u00e0 averlo fatto se waypts \u00e8 stato aggiornato correttamente\n                    \/\/ Se no, una chiamata finale qui:\n                    \/\/ calculateAndDisplayRoute(directionsService, directionsDisplay, 'null');\n                });\n            });\n\t\t\t\n\t\t\t\n\t\t\tjQuery('.add-tappa').on('click', function(e){\n\t\t\t\te.preventDefault();\n\t\t\t\tvar check = true;\n\t\t\t\tvar lastTapUl = jQuery('#content-list ul.list-unstyled:last');\n\t\t\t\t\n\t\t\t\tif( lastTapUl.length > 0 ) {\n\t\t\t\t\tvar last_dest_input = lastTapUl.find('.add-field.autocomplete');\n\t\t\t\t\tvar last_hour_input = lastTapUl.find('.add-field.datetimepicker-input.tap-departure-timepicker');\n\t\t\t\t\t\n\t\t\t\t\tif( last_dest_input.val() == '' || last_dest_input.hasClass('error-input') ) {\n\t\t\t\t\t\tcheck = false;\n\t\t\t\t\t\tlastTapUl.find('.alert-box').remove();\n\t\t\t\t\t\tjQuery( '<div class=\"alert-box mt-1 text-danger animated fadeIn\"><i class=\"fa fa-exclamation-triangle\"><\/i> &nbsp; Inserisci un indirizzo valido per la tappa precedente.<\/div>' ).insertAfter( last_dest_input );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif( last_hour_input.val() == '') {\n\t\t\t\t\t\tcheck = false;\n\t\t\t\t\t\tlastTapUl.find('.alert-box').remove(); \n\t\t\t\t\t\tjQuery( '<div class=\"alert-box text-danger mt-1 animated fadeIn\"><i class=\"fa fa-exclamation-triangle\"><\/i> &nbsp; Inserisci un orario di partenza per la tappa precedente.<\/div>' ).insertAfter( last_hour_input );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif( check ) {\n\t\t\t\t\n\t\t\t\t\tvar contentList = jQuery('#content-list');\n\t\t\t\t\tvar counter = contentList.children('ul.list-unstyled').length;\n\t\t\t\t\t\n\t\t\t\t\tvar html_tappa = ''\n\t\t\t\t\t+'<ul class=\"list-unstyled animated fadeIn\" id=\"list_tappa_'+counter+'\">'\n\t\t\t\t\t+'<li><a class=\"remove-tap\" id=\"remove-tap-'+counter+'\" href=\"#\"><i class=\"fa fa-times\"><\/i><\/a><\/li>'\n\t\t\t\t\t+'<li class=\"dots\"><i class=\"fa fa-circle\"><\/i><\/li>'\n\t\t\t\t\t+'<li class=\"dots\"><i class=\"fa fa-circle\"><\/i><\/li>'\t\t\t\t\t\t\t\t\n\t\t\t\t\t+'<li>'\n\t\t\t\t\t+'\t<span class=\"fa-li\"><i class=\"fa fa-map-marker\"><\/i><\/span>'\n\t\t\t\t\t+'\t<b>Tappa a:<\/b>'\n\t\t\t\t\t+'\t<input type=\"text\" required class=\"add-field autocomplete\" id=\"tappa_'+counter+'\" name=\"tappa_'+counter+'\" placeholder=\"Inserisci destinazione\" \/>'\n\t\t\t\t\t+'<\/li>'\n\t\t\t\t\t+'<li>'\n\t\t\t\t\t+'\t<span class=\"fa-li\"><i class=\"fa fa-clock-o\"><\/i><\/span>'\n\t\t\t\t\t+'\t<b>Orario di arrivo:<\/b> <span class=\"tap-arrival-time\">...<\/span>'\n\t\t\t\t\t+'  <input type=\"hidden\" name=\"orario_arrivo_tap_'+counter+'\" class=\"orario_arrivo tap-arrival-unix\" \/>'\n\t\t\t\t\t+'<\/li>'\n\t\t\t\t\t+'<li>'\n\t\t\t\t\t+'\t<span class=\"fa-li\"><i class=\"fa fa-bus\"><\/i><\/span>'\n\t\t\t\t\t+'\t<b>Orario di partenza:<\/b>' \n\t\t\t\t\t+'\t<input type=\"text\" required class=\"add-field datetimepicker-input tap-departure-timepicker\" id=\"tap_timepicker_tappa_'+counter+'\" data-toggle=\"datetimepicker\" data-target=\"#tap_timepicker_tappa_'+counter+'\"\/>'\n                    +'  <input type=\"hidden\" name=\"orario_partenza_tap_'+counter+'\" class=\"orario_partenza tap-departure-unix\" \/>'\n\t\t\t\t\t+'<\/li>'\n\t\t\t\t\t+'<li>'\n\t\t\t\t\t+'  <input type=\"hidden\" name=\"origin_tap_'+counter+'\" class=\"origin tap-coords\" \/>'\n\t\t\t\t\t+'<\/li>'\n\t\t\t\t\t+'<\/ul>';\n\t\t\t\t\t\n\t\t\t\t\tcontentList.append(html_tappa);\n\t\t\n\t\t\t\t\tjQuery('.datetimepicker-input').off('keydown').on('keydown', function(event){ \n\t\t\t\t\t\tevent.preventDefault(); \n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tjQuery('#tappa_'+counter).on('input keydown', function(){ \/\/ Usare input o keydown\n\t\t\t\t\t\tjQuery(this).removeClass('success-input').addClass('error-input');\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tinitializeTapAutocompleteFields(directionsService, directionsDisplay); \n\t\t\t\t\t\n                    var newTimepicker = jQuery('#tap_timepicker_tappa_'+counter);\n                    var prevTapArrivalElem = newTimepicker.closest('ul').find('.tap-arrival-time');\n\n\t\t\t\t\tnewTimepicker.on('click', function(){\n                        var prevArrivalTimeText = prevTapArrivalElem.text();\n\t\t\t\t\t\tif(prevArrivalTimeText && prevArrivalTimeText !== '...'){\n                            jQuery(this).val(prevArrivalTimeText); \n                        }\n\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\tnewTimepicker.datetimepicker({\n\t\t\t\t\t\tlocale: 'it',\n\t\t\t\t\t\tformat: 'LT', \n\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\tnewTimepicker.on('hide.datetimepicker', function(e){\t\t\n\t\t\t\t\t\tjQuery(this).next('.alert-box').remove();\n\t\t\t\t\t\tif (!e.date) return; \n\n\t\t\t\t\t\tvar selectedMoment = moment(e.date);\n                        var departure_unix = selectedMoment.unix();\n                        var listItem = jQuery(this).closest('ul');\n                        \n                        listItem.find('input.tap-departure-unix').val(departure_unix);\n\t\t\t\t\t\tjQuery(this).val(selectedMoment.format(\"HH:mm\"));\n                        jQuery(this).prop('readonly', true).css('pointer-events', 'none'); \n\n                        calculateAndDisplayRoute(directionsService, directionsDisplay, 'null');\n\t\t\t\t\t});\n\t\t\t\t\t\n                    jQuery('#taps').val( jQuery('#content-list ul.list-unstyled').length );\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tjQuery('#return_timepicker').datetimepicker({ locale: 'it', format: 'LT' });\n\t\t\tjQuery('#return_timepicker').on('hide.datetimepicker', function(e){\t\t\n\t\t\t\tif (!e.date) return;\t\t\t\t\t\t\n\t\t\t\tvar selectedMoment = moment(e.date);\n\t\t\t\tvar return_departure_unix = selectedMoment.unix();\n\t\t\t\tjQuery('#return_partenza_unix').val(return_departure_unix);\n\t\t\t\tjQuery(this).val(selectedMoment.format(\"HH:mm\"));\t\n\t\t\t\t\n\t\t\t\tvar localDistanceService = new google.maps.DistanceMatrixService();\n\t\t\t\t\n\t\t\t\tvar origin_return = jQuery('#arrival').val(); \n\t\t\t\tvar destination_return = jQuery('#ritorno').val();\t\n\t\t\t\t\t\t\n\t\t\t\tlocalDistanceService.getDistanceMatrix({\n\t\t\t\t\torigins: [origin_return],\n\t\t\t\t\tdestinations: [destination_return],\n\t\t\t\t\ttravelMode: google.maps.TravelMode.DRIVING,\n\t\t\t\t\tunitSystem: google.maps.UnitSystem.METRIC,\n\t\t\t\t\tavoidHighways: false,\n\t\t\t\t\tavoidTolls: false\n\t\t\t\t}, function(response, status) { \n\t\t\t\t\tif (status != google.maps.DistanceMatrixStatus.OK) {\n\t\t\t\t\t\tconsole.error('Errore DistanceMatrix per ritorno: ' + status);\n\t\t\t\t\t} else {\n                        if (!response.rows || !response.rows[0] || !response.rows[0].elements || !response.rows[0].elements[0]) {\n                             console.error('Risposta DistanceMatrix per ritorno malformata.');\n                             return;\n                        }\n                        var element = response.rows[0].elements[0];\n\t\t\t\t\t\tif (element.status === \"OK\") {\n\t\t\t\t\t\t\tvar durata_ritorno_seconds = element.duration.value;\n\t\t\t\t\t\t\tdurata_ritorno_seconds = durata_ritorno_seconds * 1.3; \n\t\t\t\t\t\t\t\n                            var driving_blocks_return = Math.floor(durata_ritorno_seconds \/ 16200);\n                            durata_ritorno_seconds += driving_blocks_return * 2700;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar arrivo_ritorno_unix = return_departure_unix + durata_ritorno_seconds;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar formattedTimeReturn = moment.unix(arrivo_ritorno_unix).format('HH:mm');\n\t\t\t\t\t\t\tjQuery('.return_arrival_time').text(formattedTimeReturn);\n\t\t\t\t\t\t\tjQuery('#return_arrival_unix').val(arrivo_ritorno_unix);\n\t\t\t\t\t\t} else {\n                            console.warn('Stato elemento DistanceMatrix per ritorno non OK: ' + element.status);\n                        }\n\t\t\t\t\t}\n\t\t\t\t});\t\n\t\t\t\t\t\n\t\t\t});\t \n\t\t\t\n\t\t<\/script>\n\t\t \n\t\t<script src='https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyArW7q3gB8_CCwxEOmtnjLqrl3j7Y40ZN4&libraries=places&callback=initMapAndAutocomplete' async defer><\/script> \n\n","protected":false},"excerpt":{"rendered":"RENTAL PARK DEPARTURE TIME 00:00 ARRIVAL TIME 00:00 Date: 26\/07\/2026 Departure from: Departure time 00:00 Add stop Arrival at: Arrival time 00:00 BACK","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"default-templates\/page-fluid.php","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"","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":"","theme-transparent-header-meta":"default","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":"var(--ast-global-color-4)","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":""}},"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-6235","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Quote calculation - MMA Autoservizi<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quote calculation - MMA Autoservizi\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/\" \/>\n<meta property=\"og:site_name\" content=\"MMA Autoservizi\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MmaAutoservizi\/\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-05T13:59:52+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/\",\"url\":\"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/\",\"name\":\"Quote calculation - MMA Autoservizi\",\"isPartOf\":{\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/#website\"},\"datePublished\":\"2020-06-04T08:36:30+00:00\",\"dateModified\":\"2022-07-05T13:59:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.mma-autoservizi.it\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quote calculation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/#website\",\"url\":\"https:\/\/www.mma-autoservizi.it\/en\/\",\"name\":\"MMA Autoservizi\",\"description\":\"molto movimento agency\",\"publisher\":{\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.mma-autoservizi.it\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/#organization\",\"name\":\"MMA Autoservizi\",\"url\":\"https:\/\/www.mma-autoservizi.it\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/mma-autoservizi.it\/wp-content\/uploads\/revslider\/slide-home\/logo-home-slide-mma-1.png\",\"contentUrl\":\"https:\/\/mma-autoservizi.it\/wp-content\/uploads\/revslider\/slide-home\/logo-home-slide-mma-1.png\",\"width\":854,\"height\":166,\"caption\":\"MMA Autoservizi\"},\"image\":{\"@id\":\"https:\/\/www.mma-autoservizi.it\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/MmaAutoservizi\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Quote calculation - MMA Autoservizi","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/","og_locale":"en_US","og_type":"article","og_title":"Quote calculation - MMA Autoservizi","og_url":"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/","og_site_name":"MMA Autoservizi","article_publisher":"https:\/\/www.facebook.com\/MmaAutoservizi\/","article_modified_time":"2022-07-05T13:59:52+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/","url":"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/","name":"Quote calculation - MMA Autoservizi","isPartOf":{"@id":"https:\/\/www.mma-autoservizi.it\/en\/#website"},"datePublished":"2020-06-04T08:36:30+00:00","dateModified":"2022-07-05T13:59:52+00:00","breadcrumb":{"@id":"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.mma-autoservizi.it\/en\/quote-calculation-resform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mma-autoservizi.it\/en\/"},{"@type":"ListItem","position":2,"name":"Quote calculation"}]},{"@type":"WebSite","@id":"https:\/\/www.mma-autoservizi.it\/en\/#website","url":"https:\/\/www.mma-autoservizi.it\/en\/","name":"MMA Autoservizi","description":"molto movimento agency","publisher":{"@id":"https:\/\/www.mma-autoservizi.it\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mma-autoservizi.it\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mma-autoservizi.it\/en\/#organization","name":"MMA Autoservizi","url":"https:\/\/www.mma-autoservizi.it\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mma-autoservizi.it\/en\/#\/schema\/logo\/image\/","url":"https:\/\/mma-autoservizi.it\/wp-content\/uploads\/revslider\/slide-home\/logo-home-slide-mma-1.png","contentUrl":"https:\/\/mma-autoservizi.it\/wp-content\/uploads\/revslider\/slide-home\/logo-home-slide-mma-1.png","width":854,"height":166,"caption":"MMA Autoservizi"},"image":{"@id":"https:\/\/www.mma-autoservizi.it\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/MmaAutoservizi\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/pages\/6235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/comments?post=6235"}],"version-history":[{"count":1,"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/pages\/6235\/revisions"}],"predecessor-version":[{"id":10203,"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/pages\/6235\/revisions\/10203"}],"wp:attachment":[{"href":"https:\/\/www.mma-autoservizi.it\/en\/wp-json\/wp\/v2\/media?parent=6235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}