Get Your Auto Transport Quote
Fast nationwide vehicle shipping estimates.
const GOOGLE_API_KEY = "PASTE_YOUR_GOOGLE_API_KEY_HERE";
const yearDropdown = document.getElementById("year");
const currentYear = new Date().getFullYear() + 1;
for(let y=currentYear; y>=1980; y--){
const option = document.createElement("option");
option.value = y;
option.textContent = y;
yearDropdown.appendChild(option);
}
function detectVehicleSize(make, model){
const text = (make + " " + model).toLowerCase();
const oversized = [ "dually", "f-350", "3500", "4500", "5500", "super duty", "sprinter", "box truck", "lifted" ];
const pickup = [ "f-150", "f150", "silverado", "sierra", "ram", "tacoma", "tundra", "frontier", "titan", "gladiator" ];
const largeSuv = [ "suburban", "tahoe", "yukon", "expedition", "navigator", "escalade", "sequoia", "armada", "wagoneer", "4runner" ];
const smallSuv = [ "rav4", "cr-v", "crv", "escape", "rogue", "forester", "outback", "cx-5", "sportage", "sorento", "model y" ];
const van = [ "odyssey", "sienna", "pacifica", "grand caravan", "transit", "promaster", "express", "savana" ];
if(oversized.some(word => text.includes(word))){
return { label:"Oversized Vehicle", multiplier:1.6 };
}
if(pickup.some(word => text.includes(word))){
return { label:"Pickup Truck", multiplier:1.35 };
}
if(van.some(word => text.includes(word))){
return { label:"Van", multiplier:1.35 };
}
if(largeSuv.some(word => text.includes(word))){
return { label:"Large SUV", multiplier:1.3 };
}
if(smallSuv.some(word => text.includes(word))){
return { label:"Small SUV", multiplier:1.15 };
}
return { label:"Sedan / Coupe", multiplier:1 };
}
function calculatePrice( miles, sizeMultiplier, transportMultiplier, runsFee ){
let rate = 0;
if(miles < 500){ rate = 1.85; } else if(miles <= 1500){ rate = 0.91; } else { rate = 0.59; } return Math.round( Math.max( 495, (miles * rate * sizeMultiplier * transportMultiplier) + runsFee ) ); } async function getMiles( pickupZip, deliveryZip ){ const url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + encodeURIComponent(pickupZip) + "&destinations=" + encodeURIComponent(deliveryZip) + "&units=imperial&key=" + GOOGLE_API_KEY; const response = await fetch(url); const data = await response.json(); if( data.status !== "OK" || data.rows[0].elements[0].status !== "OK" ){ throw new Error( "Mileage could not be calculated." ); } return Math.round( data.rows[0].elements[0] .distance.value / 1609.34 ); } document.getElementById("whQuoteForm") .addEventListener("submit", async function(e){ e.preventDefault(); const result = document.getElementById("quoteResult"); result.style.display = "block"; result.innerHTML = "Calculating your quote..."; try{ const name = document.getElementById("name").value; const phone = document.getElementById("phone").value; const email = document.getElementById("email").value; const pickupZip = document.getElementById("pickupZip").value; const deliveryZip = document.getElementById("deliveryZip").value; const year = document.getElementById("year").value; const make = document.getElementById("make").value; const model = document.getElementById("model").value; const runsFee = parseFloat( document.getElementById("runs").value ); const transportMultiplier = parseFloat( document.getElementById("transport").value ); const miles = await getMiles( pickupZip, deliveryZip ); const sizeData = detectVehicleSize(make, model); const quote = calculatePrice( miles, sizeData.multiplier, transportMultiplier, runsFee ); result.innerHTML = "Estimated Transport Quote: $" + quote + " Mileage: " + miles + " miles" + " Detected Vehicle Size: " + sizeData.label; const subject = encodeURIComponent( "New Auto Transport Quote Request" ); const body = encodeURIComponent( "Customer Name: " + name + "\nPhone: " + phone + "\nEmail: " + email + "\nPickup ZIP: " + pickupZip + "\nDelivery ZIP: " + deliveryZip + "\nMileage: " + miles + "\nVehicle: " + year + " " + make + " " + model + "\nDetected Vehicle Size: " + sizeData.label + "\nRuns: " + document.getElementById("runs") .selectedOptions[0].text + "\nTransport Type: " + document.getElementById("transport") .selectedOptions[0].text + "\nEstimated Quote: $" + quote ); setTimeout(function(){ window.location.href = "mailto:website+mwojglwnqxal@taqmail.com" + "?subject=" + subject + "&body=" + body; },1500); } catch(error){ result.innerHTML = "Unable to calculate mileage. " + "Check ZIP codes and Google API key."; } });