
//******* 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();

//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 + ')');
     }
  });


  map = new google.maps.Map(document.getElementById("map_canvas"), 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);
    }
  }
}


//*** utilizzata nel dettaglio della struttura
function loadmap_detail() {

  var filenameico     = $("#map_filenameico").val();
  var struttura       = $("#map_strutturanome").html();
  var indirizzo       = $("#map_indirizzo").html();
  var comuneprovincia = $("#map_comune").html() + " - " + $("#map_provincia").html();
  var lat             = $("#map_latitudine").val();
  var lng             = $("#map_longitudine").val();

  var WINDOW_HTML = "<img src='" + filenameico + "' width='50' height='50' style='float:left;'><div style='margin-left:60px;text-align:left;font-family:verdana;font-size:10px;'><b style='color:#009DD9'>ItalySeaSide.com</b><br><br><b>" + struttura + "</b><br>" + indirizzo + "</div>";

  map = new google.maps.Map(document.getElementById("map"), myOptionsMap);
  
  //se le coordinate sono vuote centro la mappa sull'Italia senza marker
  if(lat!='' && lng!='')
  {
    map.setCenter(new google.maps.LatLng(lat,lng)); 
    map.setZoom(12);
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(lat,lng),
        map: map
    });   

    var infowindow = new google.maps.InfoWindow({ content: WINDOW_HTML });
    infowindow.open(map,marker);
    google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker); });
      
  }
  else
  {
    map.setCenter(new GLatLng(41.442726,12.392578));
    map.setZoom(5);
  }
}

//*** 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;
    
}

