var base_url=window.location.origin;
var stops_count = 0;
var baby_count = 0;
var markerBounds = new google.maps.LatLngBounds();
var geocoder = new google.maps.Geocoder();
var markers = new Array();
var directionsDisplay;
var directionsService;
var map;
var lats = '';
var lngs = '';
var taxi = base_url+"/wp-content/plugins/asi-fare-map-calculator/img/passenger.png";
var home = base_url+"/wp-content/plugins/asi-fare-map-calculator/img/home.png";
count_markers = 0;
var waypoints = new Array();
var first_time = true;
jQuery(document).ready(function()
{
jQuery("#map_canvas").hide();
map = new google.maps.Map(document.getElementById('map_canvas'),
{center: new google.maps.LatLng(40.7141667, -74.0063889), zoom: 10});
directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);
directionsDisplay.setOptions({suppressMarkers: true});
// code for google auto suggestion address for pick up location
var input = document.getElementById('source');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
// code for Google auto suggestion address for destination location
var drop = document.getElementById('destination');
var drop_autocomplete = new google.maps.places.Autocomplete(drop);
autocomplete.bindTo('bounds', map);
});
function doCalculation()
{
var cartypes=document.getElementById('cartypes').value;
var address = document.getElementById('source').value;
var destination = document.getElementById('destination').value;
if(cartypes.trim()=='')
{
alert("Please Select Car Type. if Cartype is empty, then you need to inser first from admin side.");
return false;
}
if(address.trim() == '') {
alert("Please Enter Pickup Address");
source = '';
return false;
}
if(destination.trim() == '') {
alert("Please Enter Drop Off Address");
destination = '';
return false;
}
if (first_time)
{
jQuery("#map_canvas").show(600);
setTimeout(sourceAddress, 800);
first_time = false;
} else {
sourceAddress();
}
}
function sourceAddress() {
clear();
jQuery("#map_canvas").show(800);
waypoints = new Array();
var address = document.getElementById('source').value;
var destination = document.getElementById('destination').value;
geocoder.geocode({'address': address}, function(results, status) {
console.log(results);
if (status == google.maps.GeocoderStatus.OK) {
var lat = document.getElementById("latitude").value = results[0].geometry.location.lat();
var lng = document.getElementById("longitude").value = results[0].geometry.location.lng();
var lng = document.getElementById("dest_latitude").value = results[0].geometry.location.lng();
var lng = document.getElementById("dest_longitude").value = results[0].geometry.location.lng();
var marker = new google.maps.Marker({
map: map,
icon: home,
position: results[0].geometry.location
});
markers[count_markers++] = marker;
destinationAddress();
}
else {
alert('Result was not successful for the following reason: ' + status);
}
});
}
function destinationAddress() {
var source = document.getElementById("source").value;
var address = document.getElementById('destination').value;
var request = {
origin: source,
destination: address,
waypoints: waypoints,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
geocoder.geocode({'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = document.getElementById("dest_latitude").value = results[0].geometry.location.lat();
var lng = document.getElementById("dest_longitude").value = results[0].geometry.location.lng();
var marker = new google.maps.Marker({
map: map,
icon: taxi,
position: results[0].geometry.location
});
markers[count_markers] = marker;
var picLatLng = new google.maps.LatLng(jQuery('#latitude').val(), jQuery('#longitude').val());
var dropLatLng = new google.maps.LatLng(jQuery('#dest_latitude').val(), jQuery('#dest_longitude').val());
markerBounds.extend(picLatLng);
markerBounds.extend(dropLatLng);
map.fitBounds(markerBounds);
calc();
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
function clear() {
map = new google.maps.Map(document.getElementById('map_canvas'),
{center: new google.maps.LatLng(40.7141667, -74.0063889), zoom: 10});
directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);
directionsDisplay.setOptions({suppressMarkers: true});
// code for google auto suggestion address for pick up location
var input = document.getElementById('source');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
// code for Google auto suggestion address for destination location
var drop = document.getElementById('destination');
var drop_autocomplete = new google.maps.places.Autocomplete(drop);
drop_autocomplete.bindTo('bounds', map);
}
function calc() {
var source = document.getElementById("source").value;
var stops_counts = document.getElementById("stops_count").value;
var destination = document.getElementById("destination").value;
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [source],
destinations: [destination],
travelMode: google.maps.TravelMode.DRIVING,
avoidHighways: false,
avoidTolls: false
}, callback);
function callback(response, status) {
console.log(status);
if (status == google.maps.DistanceMatrixStatus.OK) {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
var element = results[j];
if (element.status == "NOT_FOUND") {
document.getElementById("source").value = '';
alert("Please enter valid pickup address.");
return 0;
}
if (element.status == "ZERO_RESULTS") {
document.getElementById("destination").value = '';
document.getElementById("source").value = '';
alert("Please enter valid addresses.");
return 0;
}
var distance = element.distance.text;
var duration = element.duration.text;
console.log("dist:: " + distance + "\n dura:: " + duration);
document.getElementById("duration").value = duration;
document.getElementById("distance").value = distance;
var m_distance = 0.00, mile_distance = 0.00, ft_distance = 0.00, km_distance = 0.00, estimated_fare;
var distance_array = distance.split(" ");
distance_array[0] = distance_array[0].replace(/\,/g, ''); // 1125, but a string, so convert it to number
distance_array[0] = parseFloat(distance_array[0]);
if (distance_array[1] == 'm') {
m_distance = distance_array[0] / 1000;
mile_distance = parseFloat(m_distance) / 1.6;
} else if (distance_array[1] == 'ft') {
ft_distance = distance_array[0];
mile_distance = parseFloat(ft_distance) / 5280;
} else if (distance_array[1] == 'km') {
km_distance = parseFloat(distance_array[0]);
mile_distance = parseFloat(km_distance) / 1.6;
} else if (distance_array[1] == 'mi') {
mile_distance = distance_array[0];
}
dur_mins = 0;
var dur_array = duration.split(" ");
if (dur_array.length == 2) {
if (dur_array[1] == "mins") {
dur_mins = dur_array[0];
} else if (dur_array[1] == "hours" || dur_array[1] == "hour") {
dur_mins = parseFloat(dur_array[0]) * 60;
}
} else if (dur_array.length == 4) {
dur_mins = parseFloat(dur_array[2]);
dur_mins = dur_mins + parseFloat(dur_array[0]) * 60;
}
console.log("miles: " + mile_distance);
console.log("mins: " + dur_mins);
var distanceinkm= mile_distance * 1.60934;
distanceinkm = distanceinkm.toFixed(2);
var stops_count = document.getElementById("stops_count").value;
var minutefare =document.getElementById('minutefare').value;
var stopfare=document.getElementById('stopfare').value;
var milefare=document.getElementById('milefare').value;
var seatfare=document.getElementById('seatfare').value;
var cartype=document.getElementById('cartypes').value;
var curr=document.getElementById('currfare').value;
var decidekmmile=document.getElementById('diskmmiles').value;
var cartype=parseInt(cartype);
if (document.getElementById("baby_seat")) {
baby_count = parseFloat(document.getElementById("baby_count").value);
}
/*
if (taxi_type_s == true) {
estimated_fare = cartype + (mile_distance * milefare) + (dur_mins * minutefare) + (baby_count * seatfare) + (stops_count * stopfare);
estimated_fare = '$' + estimated_fare.toFixed(2);
} else {
*/
estimated_fare = cartype + (mile_distance * milefare) + (dur_mins * minutefare) + (baby_count * seatfare) + (stops_count * stopfare);
estimated_fare = curr + estimated_fare.toFixed(2);
//}
if (mile_distance < .2) {
mile_distance = mile_distance * 5280;
mile_distance = mile_distance.toFixed(2) + ' Feet';
} else {
// estimated_fare
mile_distance = mile_distance.toFixed(2) + ' Miles';
}
if(decidekmmile==0){
document.getElementById("distance").value = mile_distance;
}
else
{ document.getElementById("distance").value = distanceinkm+' KM'; }
var totaldistance=document.getElementById("distance").value;
document.getElementById("fare").value = estimated_fare;
document.getElementById("duration").value = duration;
dsp();
jQuery("#estfare").text(estimated_fare);
jQuery("#estdist").text(totaldistance);
jQuery("#estdur").text(duration);
jQuery("#po").css('display','inline-block');
//document.getElementById("po").innerHTML = " Estimated Fare: " + jQuery("#fare").val() + "
";
//jQuery("#po").append("Distance in miles: " + jQuery("#distance").val() + "
");
//jQuery("#po").append("Distance in km: " + distanceinkm + " km
");
//jQuery("#po").append("Duration: " + jQuery("#duration").val() + "
");
}
}
}
}
}
function dsp() {
if (jQuery("#po").is(":hidden")) {
}
else {
jQuery("#po").hide();
}
jQuery("#po").slideDown("slow", function() {
});
}
function set_baby() {
var baby = document.getElementById("baby_seat");
}
var s = "";
var count = 0;
var id = 0;
function clear_form_elements(ele) {
count=0;
first_time = true;
jQuery("#po").css("display","none");
jQuery("#map_canvas").hide();
tags = ele.getElementsByTagName('input');
for (i = 0; i < tags.length; i++) {
switch (tags[i].type) {
case 'password':
case 'text':
tags[i].value = '';
break;
case 'checkbox':
case 'radio':
tags[i].checked = false;
break;
}
}
document.getElementById("baby_count").value = 0;
document.getElementById("stops_div").value = "";
document.getElementById("stops_count").value = 0;
}