RESERVAS / BOOKING

🚖 Your Táxi Madeira — Reservar

🇵🇹 Português
🇬🇧 English

// CONFIGURAÇÃO DE PREÇOS
const BASE_PER_KM = 1.5;
const BANDEIRADA = 3.0;
const MIN_PRICE = 15.0;
const CHILD_SEAT_PRICE = 5.0;
const NIGHT_SURCHARGE = 0.20;
const EXTRA_PASSENGERS_SURCHARGE = 0.20;
const CHRISTMAS_SURCHARGE = 0.50;

// FUNÇÕES
function isNight(dt){ const h=dt.getHours(); return h>=21 || h{
const service=new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins:[origin],
destinations:[destination],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC
},(response,status)=>{
if(status!==”OK”) return reject(status);
try{
const element=response.rows[0].elements[0];
if(element.status!==”OK”) return reject(element.status);
resolve(element.distance.value/1000);
}catch(e){reject(e);}
});
});
}

// CALCULAR PREÇO
function calculateFare(km,passengers,dt,childSeat){
let fare = BANDEIRADA + km*BASE_PER_KM;
if(passengers>4) fare*=(1+EXTRA_PASSENGERS_SURCHARGE);
if(isNight(dt)) fare*=(1+NIGHT_SURCHARGE);
if(isWeekend(dt)) fare*=(1+NIGHT_SURCHARGE);
if(isChristmas(dt)) fare*=(1+CHRISTMAS_SURCHARGE);
if(childSeat) fare+=CHILD_SEAT_PRICE;
if(fare{
const lang = document.getElementById(‘lang’).value;
const origin=document.getElementById(‘origin’).value.trim();
const destination=document.getElementById(‘destination’).value.trim();
const dtVal=document.getElementById(‘datetime’).value;
const passengers=parseInt(document.getElementById(‘passengers’).value||’1′,10);
const child=document.getElementById(‘childseat’).checked;

if(!origin||!destination||!dtVal){
document.getElementById(‘message’).innerText=(lang===’pt’)?’Preencha origem, destino e data/hora.’:’Please fill origin, destination and date/time.’;
return;
}

const datetime = new Date(dtVal);
try{
document.getElementById(‘message’).innerText=(lang===’pt’)?’Calculando distância…’:’Calculating distance…’;
const km = await getDistanceKm(origin,destination);
const price = calculateFare(km,passengers,datetime,child);

document.getElementById(‘priceBlock’).style.display=’block’;
document.getElementById(‘priceText’).innerText=(lang===’pt’)
?`Preço estimado: €${price.toFixed(2)} (Distância: ${km.toFixed(2)} km)`
:`Estimated price: €${price.toFixed(2)} (Distance: ${km.toFixed(2)} km)`;

const btn=document.getElementById(‘sendWhatsapp’);
btn.dataset.origin=origin;
btn.dataset.destination=destination;
btn.dataset.datetime=dtVal;
btn.dataset.passengers=passengers;
btn.dataset.child=child?’Sim’:’Não’;
btn.dataset.km=km.toFixed(2);
btn.dataset.price=price.toFixed(2);
document.getElementById(‘message’).innerText=”;
}catch(e){
console.error(e);
document.getElementById(‘message’).innerText=(lang===’pt’)?’Não foi possível calcular a distância. Verifique os locais.’:’Could not calculate distance. Please check the locations.’;
}
});

// BOTÃO WHATSAPP
document.getElementById(‘sendWhatsapp’).addEventListener(‘click’,()=>{
const lang=document.getElementById(‘lang’).value;
const numero=’351914212772′;
const btn=document.getElementById(‘sendWhatsapp’);

let mensagem=”;
if(lang===’pt’){
mensagem=`Olá! Gostaria de reservar um táxi.%0AOrigem: ${btn.dataset.origin}%0ADestino: ${btn.dataset.destination}%0AData/hora: ${btn.dataset.datetime}%0APassageiros: ${btn.dataset.passengers}%0ACadeira de criança: ${btn.dataset.child}%0ADistância: ${btn.dataset.km} km%0APreço estimado: €${btn.dataset.price}%0AObservação: Só pagarei após confirmação de disponibilidade.`;
}else{
mensagem=`Hello! I would like to book a taxi.%0AFrom: ${btn.dataset.origin}%0ATo: ${btn.dataset.destination}%0ADate/time: ${btn.dataset.datetime}%0APassengers: ${btn.dataset.passengers}%0AChild seat: ${btn.dataset.child}%0ADistance: ${btn.dataset.km} km%0AEstimated price: €${btn.dataset.price}%0ANote: I will pay only after service confirmation.`;
}

window.open(`https://wa.me/${numero}?text=${mensagem}`,’_blank’);
});