const token="pk.eyJ1IjoibW9kby1jb29wIiwiYSI6ImNsbWd6ZDI4dDBkYjEzcW85bDR2eTd5bHoifQ.uL7IZ2nUjmEg5a8zIpl5Tg",defaultCenter=[-123.0707084,49.2478014],defaultZoom=10,imgPath="https://bookit.modo.coop/static/cars/can-",zoomTransition=13;let clickedMarkerId=null,clickedClusterId=null,locationMarker=null,autofillCollection,gCars,totalCars;function centerMap(){let e=null;return("undefined"!=typeof newCenter&&Array.isArray(newCenter)&&(e=newCenter),null!=e)?e:defaultCenter}async function getAPIData(){let e=[];if(sessionStorage.getItem("carData"))return JSON.parse(sessionStorage.getItem("carGeo"));{let t=await getAllCarsWithTimeout().catch(handleError);return gCars=Object.entries(t.data),sessionStorage.setItem("carData",JSON.stringify(gCars)),totalCars=gCars.length,sessionStorage.setItem("totalCars",gCars.length),gCars.map(t=>{let a=t[1].accessories,r="";if(Array.isArray(a))a.forEach(e=>{"audio: android auto"!==e&&"audio: apple carplay"!==e&&(r+='
'+e+"")});else{let i=Array.from(a);i.forEach(e=>{"audio: android auto"!==e&&"audio: apple carplay"!==e&&(r+=''+e+"")})}let o={id:t[1].car.car_id,type:"Feature",properties:{car_id:t[1].car.car_id,name:t[1].car.make+" "+t[1].car.model,location:t[1].location.location_description,accessories:r,car_class:t[1].car.car_class,rate_class:t[1].car.rate_class},geometry:{type:"Point",coordinates:[t[1].location.longitude,t[1].location.latitude]}};e.push(o)}),sessionStorage.setItem("carGeo",JSON.stringify(e)),e}}async function getAllCarsWithTimeout(){let e=await fetchWithTimeout("https://marketing-proxy.modo.coop/api/cars",{timeout:6e3}).catch(handleError),t=await e.json();return{data:t}}async function getTripCost(e){q="?start_time=2023-09-25 18:00:00-0800&end_time=2023-09-25 18:30:00-0800&distance=30.50&rate_class=0&open_return=0",q2="?start_time=2023-06-19 00:00:00-0700&end_time=2023-06-20 00:00:00-0700&distance=10&rate_class=0&open_return=0";let t=await fetchWithTimeout("https://marketing-proxy.modo.coop/api/trip_calculator"+e,{timeout:6e3}).catch(handleError),a=await t.json();return{data:a}}async function updateCarsNumber(e){let t=document.getElementById("car-count");if(t){let a=e.length;t.innerHTML=100*Math.floor(a/100)}}async function initTrip(){$("#fromDate").text(" "),$("#toDate").text(" ");document.getElementById("0").checked=!0;let e=document.getElementById("trip-calculator-submit");e.addEventListener("click",e=>{e.preventDefault()}),(datepicker=flatpickr("#form-date",{inline:!0,mode:"range"})).config.onChange.push(function(e,t,a){updateDates(e,t,a),enableButton($("#submit-date-time"))}),$("#distance").on("keyup",e=>{$("#distance").val()?enableButton($("#submit-distance")):disableButton($("#submit-distance"))});let t=document.getElementById("submit-vehicle-type");t.addEventListener("click",e=>{submitVehicleType(e)}),$("#submit-date-time").on("click",e=>{submitDateTime(e)}),$("#back-date-time").on("click",e=>{$("#tabVehicleType").click()}),$("#submit-distance").on("click",e=>{submitDistance(e)}),$("#back-distance").on("click",e=>{$("#tabDateTime").click()}),$("#back-calculate").on("click",e=>{$("#tabDistance").click()})}function disableButton(e){e.addClass("is-disabled")}function enableButton(e){e.removeClass("is-disabled")}function submitVehicleType(e){e.preventDefault(),rateClass=$('input[name="vehicle-type"]:checked').val(),$("#tabDateTime").click(),$("html, body").animate({scrollTop:$("#trip-calculator").offset().top},250)}function submitDateTime(e){e.preventDefault();let t=datepicker.selectedDates,a=t[0].getFullYear().toString(),r=forceTwoDigits((t[0].getMonth()+1).toString()),i=forceTwoDigits(t[0].getDate().toString()),o=$("#fromHour").val(),c=$("#fromMinute").val();"PM"==$("#fromMeridiem").val()&&(o=(Number(o)+12).toString());let l=forceTwoDigits((t[0].getTimezoneOffset()/60).toString()),s=t[1].getFullYear().toString(),n=forceTwoDigits((t[1].getMonth()+1).toString()),d=forceTwoDigits(t[1].getDate().toString()),u=$("#toHour").val(),m=$("#toMinute").val();"PM"==$("#toMeridiem").val()&&(u=(Number(u)+12).toString());let p=forceTwoDigits((t[1].getTimezoneOffset()/60).toString());startTime=a+"-"+r+"-"+i+"%20"+o+":"+c+":00-"+l+"00",endTime=s+"-"+n+"-"+d+"%20"+u+":"+m+":00-"+p+"00",$("#tabDistance").click(),$("html, body").animate({scrollTop:$("#trip-calculator").offset().top},250)}function submitDistance(e){e.preventDefault();getTripCost("?start_time="+startTime+"&end_time="+endTime+"&distance="+(distance=$("#distance").val().toString())+"&rate_class="+rateClass+"&open_return=0").then(e=>{if(e.data.message)$(".calculate__error__message").text(e.data.message),$("#calculate-error").css("opacity",0),$("#calculate-error").css("display","block"),$("#calculate-error").css("opacity",1);else{let t=Object.entries(e.data),a=t[0][1].distance_charge.toFixed(2).toString(),r=t[0][1].time_charge.toFixed(2).toString(),i=Math.abs(t[0][1].daily_rate_discount).toFixed(2).toString(),o=t[0][1].booking_fee.toFixed(2).toString(),c=t[0][1].GST.toFixed(2).toString(),l=t[0][1].PST.toFixed(2).toString(),s=t[0][1].total.toFixed(2).toString(),n=t[1][1].distance_charge.toFixed(2).toString(),d=t[1][1].time_charge.toFixed(2).toString(),u=Math.abs(t[1][1].daily_rate_discount).toFixed(2).toString(),m=t[1][1].booking_fee.toFixed(2).toString(),p=t[1][1].GST.toFixed(2).toString(),g=t[1][1].PST.toFixed(2).toString(),f=t[1][1].total.toFixed(2).toString();$("#mp-total").text("$"+s),$("#mp-time").text("$"+r),$("#mp-distance").text("$"+a),$("#mp-booking").text("$"+o),"0.00"!=i?($("#mp-tripper").text("-$"+i),$("#mpTripperLine").css("display","flex")):$("#mpTripperLine").css("display","none"),$("#mp-gst").text("$"+c),$("#mp-pst").text("$"+l),$("#mb-total").text("$"+f),$("#mb-time").text("$"+d),$("#mb-distance").text("$"+n),$("#mb-booking").text("$"+m),"0.00"!=u?($("#mb-tripper").text("-$"+u),$("#mbTripperLine").css("display","flex")):$("#mbTripperLine").css("display","none"),$("#mb-gst").text("$"+p),$("#mb-pst").text("$"+g)}}).catch(e=>{console.error("The Promise is rejected!",e)}),$("#tabCalculate").click(),$("html, body").animate({scrollTop:$("#trip-calculator").offset().top},250)}function forceTwoDigits(e){let t;return 1==e.length?"0"+e:e}function updateDates(e,t,a){let r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],o=r[e[0].getDay()],c=i[e[0].getMonth()],l=forceTwoDigits(e[0].getDate().toString());if($("#fromDate").text(o+", "+c+" "+l),e[1]){let s=r[e[1].getDay()],n=i[e[1].getMonth()],d=forceTwoDigits(e[1].getDate().toString());$("#toDate").text(s+", "+n+" "+d)}}async function loadMap(e){mapboxgl.accessToken=token;let t=centerMap(),a=10;e&&(t=e,a=13);let r=new mapboxgl.Map({container:"map",style:"mapbox://styles/modo-coop/ckzj0nh70001k16ot4gclxsrs",center:t,zoom:a,minZoom:6,attributionControl:!1,cooperativeGestures:!0});return r.addControl(new mapboxgl.NavigationControl),r.addControl(new mapboxgl.AttributionControl({compact:!0})),r}async function loadAutofill(e){let t=document.getElementById("search-js");t.onload=function(){(autofillCollection=mapboxsearch.autofill({accessToken:token})).addEventListener("retrieve",async t=>{let a=t.detail.features[0].geometry.coordinates;addLocation(a,e),addProximityCircle(a,e),positionMap(a,e,14)})};let a=document.getElementById("map-autocomplete"),r=document.getElementById("clear-search");a.addEventListener("input",e=>{""!==e.target.value?r.style.display="block":r.style.display="none"}),r.addEventListener("click",()=>{document.getElementById("map-autocomplete").value="",document.getElementById("clear-search").style.display="none",resetMap(e)})}function addLocation(e,t){locationMarker&&removeLocation(),locationMarker=new mapboxgl.Marker({color:"#79161C"}).setLngLat(e).addTo(t)}function removeLocation(){locationMarker.remove(),locationMarker=null}function addProximityCircle(e,t){t.getSource("proximity")&&removeProximityCircle(t),t.addSource("proximity",createGeoJSONCircle(e,.5)),t.addLayer({id:"circle",type:"fill",source:"proximity",layout:{"icon-allow-overlap":!0},paint:{"fill-color":"#EE3524","fill-opacity":.15}})}function removeProximityCircle(e){e.removeLayer("circle"),e.removeSource("proximity")}function createGeoJSONCircle(e,t){let a={latitude:Number(e[1]),longitude:Number(e[0])},r=t,i=[],o=r/(111.32*Math.cos(a.latitude*Math.PI/180)),c=r/110.574,l,s,n;for(var d=0;d<128;d++)s=o*Math.cos(l=d/128*(2*Math.PI)),n=c*Math.sin(l),i.push([a.longitude+s,a.latitude+n]);return i.push(i[0]),{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Polygon",coordinates:[i]}}]}}}function positionMap(e,t,a){a||(a=10),t.flyTo({center:e,zoom:a})}function resetMap(e){locationMarker&&removeLocation(),removeProximityCircle(e),positionMap(centerMap(),e)}async function mapCarsLayer(e,t,a){let r={type:"FeatureCollection",features:e};t.on("load",()=>{t.addSource("cars",{type:"geojson",data:r,cluster:!0,clusterMaxZoom:22,clusterRadius:1}),t.loadImage("https://uploads-ssl.webflow.com/64026f0efecdefadbaea5e76/6513699c6521cf40a660513f_map-marker-2x.png",(e,a)=>{if(e)throw e;t.addImage("modo-web-marker",a)}),t.loadImage("https://uploads-ssl.webflow.com/64026f0efecdefadbaea5e76/65173ba9ad17fb773cbfd9fc_map-marker-selected-2x.png",(e,a)=>{if(e)throw e;t.addImage("modo-web-marker-highlight",a)}),t.addLayer({id:"cluster",type:"circle",source:"cars",filter:["has","point_count"],layout:{},paint:{"circle-color":["case",["boolean",["feature-state","selected"],!1],"#26505E","#EE3524"],"circle-radius":18,"circle-stroke-width":4,"circle-stroke-color":["case",["boolean",["feature-state","selected"],!1],"#448EA7","#F58E84"]},minzoom:13}),t.addLayer({id:"cluster-count",type:"symbol",source:"cars",filter:["has","point_count"],layout:{"text-field":["get","point_count_abbreviated"],"text-font":["DIN Offc Pro Medium","Arial Unicode MS Bold"],"text-size":16},paint:{"text-color":"#ffffff"},minzoom:13}),t.addLayer({id:"cars-zoomed-out",type:"circle",source:"cars",layout:{},paint:{"circle-color":"#fff","circle-radius":3,"circle-stroke-width":2,"circle-stroke-color":["case",["boolean",["feature-state","selected"],!1],"#26505E","#EE3524"]},maxzoom:13}),t.addLayer({id:"cars-zoomed-in",type:"symbol",source:"cars",filter:["!",["has","point_count"]],layout:{"icon-image":"modo-web-marker","icon-anchor":"bottom","icon-offset":[0,5],"icon-size":.5,"icon-allow-overlap":!0},minzoom:13}),a&&addProximityCircle(a,t),t.on("click","cars-zoomed-out",e=>{if(e.features.length>0){if(displayCarListContainer(t),"cluster"in e.features[0].properties&&e.features[0].properties.cluster){let a=t.queryRenderedFeatures(e.point,{layers:["cars-zoomed-out"]}),r=a[0].properties.cluster_id,i=t.getSource("cars");i.getClusterChildren(r,(e,t)=>{e||t.forEach(e=>{displayCar(e)})})}else displayCar(e.features[0]);highlightTheMarker(e.features[0].id,t)}}),t.on("click","cars-zoomed-in",e=>{displayCarListContainer(t),displayCar(e.features[0]),addHighlightLayer(e.features[0].id,t)}),t.on("click","cluster",e=>{displayCarListContainer(t);let a=t.queryRenderedFeatures(e.point,{layers:["cluster"]}),r=a[0].properties.cluster_id,i=t.getSource("cars");i.getClusterChildren(r,(e,t)=>{e||t.forEach(e=>{displayCar(e)})}),highlightTheCluster(r,t)})})}function highlightTheMarker(e,t){null!==clickedMarkerId&&t.setFeatureState({source:"cars",id:clickedMarkerId},{selected:!1}),clickedMarkerId=e,t.setFeatureState({source:"cars",id:clickedMarkerId},{selected:!0})}function highlightTheCluster(e,t){null!==clickedClusterId&&t.setFeatureState({source:"cars",id:clickedClusterId},{selected:!1}),clickedClusterId=e,t.setFeatureState({source:"cars",id:clickedClusterId},{selected:!0})}function addHighlightLayer(e,t){t.setLayoutProperty("cars-zoomed-in","icon-image",["match",["id"],e,"modo-web-marker-highlight","modo-web-marker"])}function displayCarListContainer(e){let t=document.getElementById("car-list"),a=document.getElementById("car-list-display");t.style.display="none",t.style.display="block",a.innerHTML="";let r=document.getElementById("close-car-list");r.addEventListener("click",r=>{a.innerHTML="",e.setFeatureState({source:"cars",id:clickedMarkerId},{selected:!1}),e.setFeatureState({source:"cars",id:clickedClusterId},{selected:!1}),clickedMarkerId=null,clickedClusterId=null,e.setLayoutProperty("cars-zoomed-in","icon-image","modo-web-marker"),t.style.display="none"})}function displayCar(e){let t=e.properties.location,a=e.properties.name,r=e.properties.accessories,i=e.properties.car_id,o=e.properties.car_class,c=e.properties.rate_class,l="",s="";""!=(l="Car"==c?"Daily Drives":"Cargo"==c?"Oversized":"Large & Loadable")&&(s='");let n="";""!==o&&(n='");let d="";""!==r&&(d='");let u='![]()
",m=document.createElement("div");m.innerHTML=u;let p=document.getElementById("car-list-display");p.append(m),displayCarImages("https://bookit.modo.coop/static/cars/can-"+i,i)}function displayCarImages(e,t){getJPG(e+".jpg").then(a=>{a.ok?document.getElementById("car-img-"+t).src=a.url:getPNG(e+".png").then(a=>{a.ok?document.getElementById("car-img-"+t).src=a.url:getJPEG(e+".jpeg").then(e=>{e.ok?document.getElementById("car-img-"+t).src=e.url:document.getElementById("car-img-"+t).src="https://uploads-ssl.webflow.com/64026f0efecdefadbaea5e76/64d54f2998b008ed6d542044_placeholder-car-red-accent.svg"})})}).catch(e=>{console.log("error"),console.error(e)})}async function getJPG(e){let t=await fetch(e);return t}async function getJPEG(e){let t=await fetch(e);return t}async function getPNG(e){let t=await fetch(e);return t}async function mapBuilding(e,t){addLocation(e,t),positionMap(e,t,14)}async function displayLocalCars(e,t){let a=JSON.parse(sessionStorage.getItem("carGeo")),r=Number(e[0]),i=Number(e[1]),o=a.filter(function(e){return Number(e.geometry.coordinates[0])>r-.005&&Number(e.geometry.coordinates[0])
i-.005&&Number(e.geometry.coordinates[1])r.abort(),a),o=await fetch(e,{...t,signal:r.signal}).catch(handleError);return clearTimeout(i),o}