
//******* Function Directions google ****************
var map;
var struttureJSON;
var min_lat = 0;
var min_lng = 0;
var max_lat = 0;
var max_lng = 0;
var infoWindow = new google.maps.InfoWindow();
var langpath = '';

//options da passare alle mappe
var myOptionsMap = { mapTypeId: google.maps.MapTypeId.ROADMAP, scrollwheel: false, streetViewControl: true };

//*** Inizio funzioni ***

//*** prendo in ingresso parametri da passare alla store procedure
function loadmap(param)
{
  var d      = new Date();
  var myUrl  = langpath + "/webengine/actionhandler/StrutturaActionHandler.asp";
  var myPars = "action=struttura_mappalist" + param + "&ts=" + encodeURIComponent(d.getTime());

  $.ajax({
    type: "GET",
    url: myUrl,
    datatype: "json",
    contentType: "application/json; charset=utf-8",
    data: myPars,
    async: false,
    success: function(response){
      struttureJSON = eval('(' + response + ')');
     }
  });

  document.getElementById("container-mappa-strutture").style.height = "400px";
  document.getElementById("mappa-strutture").style.border           = "1px solid #009DD9";

  map = new google.maps.Map(document.getElementById("mappa-strutture"), myOptionsMap);

  if(struttureJSON.length==1) {
    myOptionsMap = { zoom:13, center: new google.maps.LatLng(struttureJSON[0].lat, struttureJSON[0].lng) };
    map.setOptions(myOptionsMap)
  }
  else
  {
    var bounds = GetBoundsStrutture(struttureJSON);
    map.fitBounds(bounds); //per centrare sul bounds
  }

  for (var i = 0; i < struttureJSON.length ; i++) {
    if (struttureJSON[i]) {
      createMarker(new google.maps.LatLng(struttureJSON[i].lat,struttureJSON[i].lng), struttureJSON[i].id);
    }
  }
}


//*** crea il singolo marker ***
function createMarker(point, strid) {

  /*
  var shadow = new google.maps.MarkerImage('http://www.google.com/mapfiles/shadow50.png',
      new google.maps.Size(37, 34),
      new google.maps.Point(0,0),
      new google.maps.Point(8, 32));

  var icon = new google.maps.MarkerImage('http://www.google.com/mapfiles/marker.png',
                      new google.maps.Size(20, 34),
                      new google.maps.Point(0,0),
                      new google.maps.Point(6, 20));
  */

  var marker = new google.maps.Marker({
      position: point,
      map: map
  });

  google.maps.event.addListener(marker, 'click', function() {
    markerInfoWindow(strid,marker);
  });

  return marker;
}


//*** visualizza la finestra info sulla mappa caricando i dati ajax
function markerInfoWindow(struttura_id,marker){

  var url   = langpath + '/webengine/actionhandler/StrutturaActionHandler.asp';
  var pars  = 'action=struttura_markerinfowindow&struttura_id=' + struttura_id + '&r=' + Math.random();

  $.ajax({
   type: "GET",
   url: url,
   data: pars,
   success: function(ResponseText){
    infoWindow.setContent(ResponseText);
    infoWindow.open(map,marker);
   }
  });

}



function GetBoundsStrutture(jsonstrutture) {

  for (var i = 0; i < jsonstrutture.length ; i++) {
    if (i==0){
      min_lat = jsonstrutture[i].lat;
      min_lng = jsonstrutture[i].lng;
      max_lat = jsonstrutture[i].lat;
      max_lng = jsonstrutture[i].lng;
    }

    SetMinLatLng(jsonstrutture[i]);
    SetMaxLatLng(jsonstrutture[i]);
  }

  return new google.maps.LatLngBounds(new google.maps.LatLng(min_lat, min_lng),new google.maps.LatLng(max_lat, max_lng));

}

function SetMinLatLng(struttura) {

  if (struttura.lat!=null && min_lat > struttura.lat )
    min_lat = struttura.lat;

  if (struttura.lng!=null && min_lng > struttura.lng)
    min_lng = struttura.lng;

}


function SetMaxLatLng(struttura) {

  if (struttura.lat!=null && max_lat < struttura.lat )
    max_lat = struttura.lat;

  if (struttura.lng!=null && max_lng < struttura.lng)
    max_lng = struttura.lng;

}

