    var base_url = $("meta[name='DC.url']").attr('content');  

    var geocoder;
    var map;
    
    //Parla: (40.240881, -3.772802)
    //Albacete: (38.997641192193875, -1.8600797653198242)
    //New York: (40.714353, -74.005973)
       
    var places = new Array();
        places['f2f'] = new google.maps.LatLng(40.416711, -3.709758);
        places['user'] = new google.maps.LatLng(40.240881, -3.772802);
    
    //var browserSupportFlag =  new Boolean();
        
    var directionsService = new google.maps.DirectionsService();
    
    var MY_MAPTYPE_ID = 'flash2flash';
    var f2f_icon = base_url + 'assets/images/marker.png'; 
    var user_icon = base_url + 'assets/images/marker.png';
    
    var polyline,f2f_marker,user_marker;
    
    var stylez = [{featureType: "all",elementType: "all",stylers: [{saturation: -99},{lightness: -80}]}];

    var mapOptions = {
        zoom: 11,
        center: places['f2f'],
        backgroundColor : '#262626',
        mapTypeControlOptions: {
            mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'flash2flash']
        },
        draggable: true,
        streetViewControl: false,
        disableDefaultUI: true
    };   

function loadmap()
{
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    
    var styledMapOptions = {
        name: "flash2flash"
    }
    var jayzMapType = new google.maps.StyledMapType(stylez, styledMapOptions);

    map.mapTypes.set('flash2flash', jayzMapType);
    
    map.setMapTypeId('flash2flash');
    
    map.setCenter(places['f2f']);
    f2f_marker = new google.maps.Marker({
        position: places['f2f'],
        icon: f2f_icon,
        map: map
    });
    map.setZoom(14);
    
    //showRoad(places['f2f'],places['user']);
    
}

function codeAddress() {
    geocoder = new google.maps.Geocoder();
    var address = document.getElementById("address").value;
    if (geocoder) {
      geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          //map.setCenter(results[0].geometry.location);
          places['user'] = results[0].geometry.location;
          showRoad(places['f2f'],places['user']);
        } else {
          alert("Geocode was not successful for the following reason: " + status);
        }
      });
    }
  }

    
/*function handleNoGeolocation(errorFlag) {
    if (errorFlag == true) {
        //alert("Geolocation service failed.");
        places['user'] = places['f2f'];
    } else {
        //alert("Your browser doesn't support geolocation. We've placed you in F2F.");
        places['user'] = places['f2f'];
    }

    map.setCenter(places['user']);
    f2f_marker = new google.maps.Marker({
        position: places['f2f'],
        icon: f2f_icon,
        map: map
    });
    map.setZoom(14);
}*/
    
function calcRoute(origin, destination, kind) {
    var start = origin;
    var end = destination;
    var request = {
        origin: origin,
        destination: end,
        travelMode: (kind=="driving")? google.maps.DirectionsTravelMode.DRIVING : google.maps.DirectionsTravelMode.WALKING
    };
    directionsService.route(request,
    function(response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            var steps = response.routes[0].legs[0].steps;
            createColorPoly(steps);
        }
    });
}

function createColorPoly(steps) {
    var path = Array();
    for (var step = 0; step < steps.length; step++) {
        for (var stepP = 0; stepP < steps[step].path.length; stepP++) {
            path.push(steps[step].path[stepP]);
        }
    }
    var poly_options = {
          strokeColor: '#f7c317'
        , strokeWeight: 3
        , strokeOpacity: 0.3
        , clickable: false
    };
    polyline = new google.maps.Polyline(poly_options);
    polyline.setPath(path);
    polyline.setMap(map);
}


function rad(x) {
    return x * Math.PI / 180;
} 

function deg(x) {
    return x * 180 / Math.PI;
} 

function distHaversine(p1, p2) {
    var R = 6371;
    // earth's mean radius in km
    var dLat = rad(p2.lat() - p1.lat());
    var dLong = rad(p2.lng() - p1.lng());

    var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong / 2) * Math.sin(dLong / 2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    var d = R * c;

    return d.toFixed(3);
}

function midPoint(p1, p2) {
  lat1 = rad(p1.lat()), lon1 = rad(p1.lng());
  lat2 = rad(p2.lat());
  var dLong = rad(p2.lng() - p1.lng());

  var Bx = Math.cos(lat2) * Math.cos(dLong);
  var By = Math.cos(lat2) * Math.sin(dLong);

  lat3 = Math.atan2(Math.sin(lat1)+Math.sin(lat2),Math.sqrt( (Math.cos(lat1)+Bx)*(Math.cos(lat1)+Bx) + By*By) );
  lon3 = lon1 + Math.atan2(By, Math.cos(lat1) + Bx);

  return new google.maps.LatLng(deg(lat3), deg(lon3)); 

}

function showRoad(initialLocation, destination) {

    var distance = distHaversine(initialLocation, destination);
    
    var middle_Point = midPoint(initialLocation, destination);
    
    if (distance<0.05){
       f2f_marker = new google.maps.Marker({
            position:places['f2f'], 
            map: map,
            icon: f2f_icon
        });
        map.setCenter(places['f2f']); 
    } else if (distance>=0.05 && distance<2.5) {
            calcRoute(places['user'], places['f2f'],"walking"); 
            //console.log('walking');
        } else if (distance>=0.5 && distance<800) {
            calcRoute(places['user'], places['f2f'],"driving");
            //console.log('driving');
        } else if (distance>=800) {
            var distance = distHaversine(initialLocation,destination); //kilometers
            var hours = Math.ceil(distance/700);
            f2f_marker = new google.maps.Marker({
                  position: destination.position,
                  icon: f2f_icon,
                  map: map
             });
            user_marker = new google.maps.Marker({
                  position: initialLocation,
                  icon: f2f_icon,
                  map: map
             });
            var geodesic_line = [destination,initialLocation];
            polyline = new google.maps.Polyline({
            path: geodesic_line,
            strokeColor: '#f7c317',
            strokeWeight: 3,
            strokeOpacity: 0.3,
                geodesic: true,
                map: map
          });
        }
    
    //Middle point
    /*f2f_marker = new google.maps.Marker({
        position: middle_Point,
        icon: f2f_icon,
        map: map
    });*/
    
    /*new google.maps.Circle({
         center: places['f2f'],
         radius: 5 * 1000,       // Convert to meters
         fillColor: '#f7c317',
         fillOpacity: 0.1,
         map: map
      }); */
    
    f2f_marker = new google.maps.Marker({
        position: destination,
        icon: f2f_icon,
        map: map
    });
    
    user_marker = new google.maps.Marker({
        position: initialLocation,
        icon: user_icon,
        map: map
    });

    var limits = new google.maps.LatLngBounds();
    limits.extend(initialLocation);
    limits.extend(destination);
    
    map.fitBounds(limits); 
    //map.setCenter(middle_Point);    
    //map.setZoom(16);  

    window.onresize = function(event) {
        console.log('RESIZEEEEEEEEEEEEEE');
        //map.panTo(places['f2f']);
        //map.setCenter(limits.getCenter());
    }
}
//END of Map
