function getCookie(c_name)
{
  if (document.cookie.length>0)
  {
    c_start=document.cookie.indexOf(c_name+"=");
    if (c_start!=-1)
    { 
      c_start=c_start+c_name.length+1;
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
      return document.cookie.substring(c_start,c_end);
    } 
  }
}
//-------- Google Maps --------

var map;
var geocoder;
var config_google_lat,config_google_lng,config_google_zoom;
var config_scadenza_cookie="expires=Tue, 31 Dec 2030 23:59:59 UTC;";

var etichettaIcon=new GIcon(G_DEFAULT_ICON);
etichettaIcon.image="icone/generica/marker.png";
etichettaIcon.shadow="icone/generica/marker_shadow.png";
etichettaIcon.iconSize=new GSize(27,30);
etichettaIcon.shadowSize=new GSize(43,30);
etichettaIcon.iconAnchor=new GPoint(12,29);
etichettaIcon.infoWindowAnchor=new GPoint(12,29);
etichettaIcon.printImage="icone/generica/marker_print.gif";
etichettaIcon.mozPrintImage="icone/generica/marker_print.gif";
etichettaIcon.printShadow="icone/generica/marker_printshadow.gif";
etichettaIcon.transparent="icone/generica/marker_transparent.png";
etichettaIcon.imageMap=new Array(2,3,24,3,24,21,12,29,12,21,2,21);

function google_mapHandleErrors()
{
  if (map.getStatus().code==G_GEO_TOO_MANY_QUERIES) alert("Troppe richieste nelle 24 ore.\nCodice errore: "+gdir.getStatus().code);
  else if (map.getStatus().code==G_GEO_BAD_KEY) alert("Chiave non valida per il dominio.\nCodice errore: "+gdir.getStatus().code);
  else if (map.getStatus().code==G_GEO_BAD_REQUEST) alert("Errore di richiesta al server.\nCodice errore: "+gdir.getStatus().code);
  else alert("Errore non specificato.");
}

function google_createMarker(point,text,icon_url)
{
	if (icon_url) etichettaIcon.image=icon_url;
  markerOptions={icon:etichettaIcon};
  var marker = new GMarker(point,markerOptions);
  GEvent.addListener(marker,"click",function()
  {
  	marker.openInfoWindowHtml(text);
  });
  return marker;
}

function google_placeMarker(url)
{
  GDownloadUrl(url,function(data, responseCode)
  {
  	if(responseCode==200)
    {
      var xml=GXml.parse(data);
      var markers=xml.documentElement.getElementsByTagName("Placemark");
      //alert ("Etichetttaitalia.it: in manutanzione.\n"+markers.length); 
      var testo,coord;
      for (var i=0;i<markers.length;i++)
      {
      	testo="";
        coord="";
        icona="";
        
        testo=markers[i].getElementsByTagName("description")[0].text;
        if (!testo) testo=markers[i].getElementsByTagName("description")[0].textContent;
        coord=markers[i].getElementsByTagName("Point")[0].childNodes[0].text;
        if (!coord) coord=markers[i].getElementsByTagName("Point")[0].textContent
        icona=markers[i].getElementsByTagName("Icon")[0].childNodes[0].text;
        if (!icona) icona=markers[i].getElementsByTagName("Icon")[0].textContent;

        var p=coord.indexOf(",");
        var lng=parseFloat(coord.substring(0,p));
        var lat=parseFloat(coord.substring(p+1,coord.length));
        var marker=google_createMarker(new GLatLng(lat,lng),testo,icona);
        map.addOverlay(marker);
      }
    }
    else alert("Impossibile recuperare i dati.");
  });
}

function google_showAddress(address)
{
  if (geocoder)
  {
    geocoder.getLatLng(address,function(point)
    {
      if (!point)
      {
      	alert("L'indirizzo \""+address+"\" non è stato trovato!");
      }
      else
      {
        map.setCenter(point);
        if ((nuovomarker==true)&&(puntosegnato==false))
        {
        	lat=document.getElementById("lat");
          lng=document.getElementById("lng");
    
          map.addOverlay(marker=new GMarker(point,{draggable: true}));
          lat.value=point.lat();
          lng.value=point.lng();
          GEvent.addListener(marker,"dragend",function()
          {
            lat.value=marker.getPoint().lat();
            lng.value=marker.getPoint().lng();
          });
        	puntosegnato=true;
        }    
      }
    });
  }
}

function google_aggiunte()
{
}

function google_mappa()
{
  if (GBrowserIsCompatible())
  {
  	var mapid=document.getElementById("map");
    if (mapid)
    {
      map=new GMap2(mapid);
      geocoder = new GClientGeocoder();
      //map.enableScrollWheelZoom();
      map.enableDoubleClickZoom();
      map.enableContinuousZoom();
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      
      lat=getCookie("lat");
      if (!lat) lat=config_google_lat;
      lng=getCookie("lng");
      if (!lng) lng=config_google_lng;
      zoom=parseInt(getCookie("zoom"));
      if (!zoom) zoom=config_google_zoom;
      
      var point = new GLatLng(lat,lng);
      map.setCenter(point,zoom);
      
      GEvent.addListener(map,"moveend",function()
      {
        document.cookie="lat="+map.getCenter().lat()+";"+config_scadenza_cookie;
        document.cookie="lng="+map.getCenter().lng()+";"+config_scadenza_cookie;
        document.cookie="zoom="+map.getZoom()+";"+config_scadenza_cookie;
      });
  
      GEvent.addListener(map,"error",google_mapHandleErrors);
      google_aggiunte();
    }
  }
}