var cm_map;
var cm_mapMarkers = [];
var cm_mapHTMLS = [];
var icon;
var oldRow=0;
var oldRowExpired=0;
var update="";
var numMess="0";
var om;
var geocoder ;
var MarkersArray = [];
var sidebarTD;
var markers = [];
var progressBar;
var batch = [];
var num = 0;
var maxNum;
var load="";

// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.

// Change these parameters to customize map
var param_wsId = "od6";
var param_ssKey = "o16162288751915453340.5631654799728214695";
var param_useSidebar = true;
var param_titleColumn = "code";
var param_descriptionColumn = "html";
var param_latColumn = "lat";
var param_lngColumn = "lng";
var param_rankColumn = "rank";
var param_iconType = "red";
var param_iconOverType = "orange";
var XMLHTTP;
var XMLHTTP1;
var XMLHTTP2;
var centra="";


// Cookies (used for filtering) to expire in one year
var cookieExpire = cookieDate(new Date(Number(new Date()) + 365 * _mSecPerDay));


// Attach handlers for window events
//addEventHandler(window, 'load', initLoader);
addEventHandler(window, 'unload', unloadPage);


function loadMaps() 
{
  google.load("maps", "2", {"callback" : mapsLoaded}); 
}

function initLoader() 
{
  if(document.getElementById('apiloaded')==null)
  {
    var script = document.createElement("script");
    script.id = "apiloaded"; 
    script.src = "http://www.google.com/jsapi?key=ABQIAAAAfwEZtB6RNFsxT7mDEdSVExSWcWWQJDnVxvlMsU521D6V21hPKBR5XTZZ3tgxJf-V9qVG8Pm8GOtLlQ&callback=loadMaps";    
    script.type = "text/javascript";
    document.getElementsByTagName("head")[0].appendChild(script);    
  }
  else
  {
    mapsLoaded();
  }  
}

/* carico la mappa */
function mapsLoaded()
{
    om=new OverlayMessage(document.getElementById('cm_map'));
    om.Set('<b>Loading...</b>'); /* Visualizzo i messaggi di 'loading'*/
    if (GBrowserIsCompatible())
    {   
        var urlAddress = '';
        var startLocation;
    
        // Check for a starting location or search address in URL
        var hash = location.hash.replace('#', '');
        if (hash != '')
        {
          if (hash.substring(0, 8) == 'address:')
            urlAddress = hash.substring(8);
          else
            startLocation = hash;
        }
    
        // No starting location in URL - check for a browser cookie
        if (startLocation == null)
          startLocation = getCookie('lastLocation');
    
        if (startLocation != null)
        {
          // Found starting location - parse the coordinates & zoom from it
          var viewport  = startLocation.split(',');
          var latitude  = parseFloat(viewport[0]);
          var longitude = parseFloat(viewport[1]);
          var zoom      = parseInt(viewport[2]);
          var type      = getMapType(viewport[3]);      
        }
    
        // Initialize the core map object
        var options = {backgroundColor: '#D7D5E3', 
          mapTypes: [G_NORMAL_MAP, G_SATELLITE_MAP, G_HYBRID_MAP, G_PHYSICAL_MAP]};
        cm_map = new google.maps.Map2(document.getElementById("cm_map"), options);
    
        if (!isNaN(latitude + longitude + zoom))
          // Starting location supplied
          cm_map.setCenter(new google.maps.LatLng(latitude, longitude), zoom, type);
        else
          // Default starting location
          cm_map.setCenter(new google.maps.LatLng(42.3514,13.4038), 12, G_NORMAL_MAP);    
      
        // Add the standard map controls
        cm_map.addControl(new google.maps.LargeMapControl());
        cm_map.addControl(new google.maps.ScaleControl());       
        cm_map.addControl(new google.maps.MapTypeControl());    
     
        cm_mapMarkers = [];
        cm_mapHTMLS = [];        
        // Initialize the geocoder object
        geocoder = new google.maps.ClientGeocoder();
    
        // Attach events to refresh the marker display whenever the map moves
        google.maps.Event.addListener(cm_map, 'moveend', mapMoveEnd);
        google.maps.Event.addListener(cm_map, 'zoomend', mapZoomEnd);
        
       // alert(document.getElementById("sender").value);
        cm_load();  
    }
    else
    {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }    
}

/*settiamo i filtri inziali in base all'utente che si logga*/
function setFiltriIniziali()
{
  /*checkBrowser();*/
  mapsLoaded();
}
/*
function checkBrowser()
{
  //alert(navigator.userAgent);
  if (navigator.userAgent.indexOf("MSIE 6") != (-1)|| navigator.userAgent.indexOf("Chrome") != (-1)) 
  {    
    alert('ATTENZIONE. L\'applicazione e\' compatibile con Mozilla Firefox , Internet Explorer 7.0 e Internet Explorer 8.0 ');          
  }
}
*/
/**
 * Loads map and calls function to load in worksheet data.
 */
function cm_load()
{          
    myMarker(); 
}



function getMapType(urlArg)
{
  switch (urlArg) 
  {
    case 'm': return G_NORMAL_MAP;
    case 's': return G_SATELLITE_MAP;
    case 'h': return G_HYBRID_MAP;
    default:  return G_PHYSICAL_MAP;
  }
};

/* All'evento "move" della mappa, aggiorno i marker */
function mapMoveEnd()
{ 
  myMarker();
  
};

/* All'evento "zoomin" o "zoomout" della mappa, aggiorno i marker */
function mapZoomEnd(oldZoom, newZoom)
{
  // mapZoomEnd: remove most map markers when zoom changes
  for (var m = markers.length - 1; m >= 0; m--)
  {
    // The only markers we don't remove are individual cmapgrounds when zooming in
    if (markers[m].isCluster || (oldZoom > newZoom))
      removeDataPoint(m);
  }
};

/*
  dopo aver caricato la pagina memorizzo in un cookie il punto su cui è centarata la mappa
 e il livello di zoom.
 */
function unloadPage()
{
  // Save the current map viewport in a browser cookie
  var lastLocation = cm_map.getCenter().toUrlValue() + ',' + cm_map.getZoom() + ',' +
                     cm_map.getCurrentMapType().getUrlArg();
  document.cookie = 'lastLocation=' + lastLocation + ';path=/';
  
  // Finalize the Maps API
  if (cm_map != null)
    GUnload();
};

/*
 cm_loadUpdate(id,ora): visualizza una finestra contenente un avviso di arrivo nuovi messaggi
*/
function cm_loadUpdate()
{   
  document.getElementById('ajax_tooltipObj').style.display='block';
  document.getElementById('aggiorna_messaggiObj').style.display='none'
  document.getElementById('messaggi_chiusi').style.display='none';
  document.getElementById('aggiorna_messaggiChiusi').style.display='none';
}

/*
 cm_loadExpire(id,ora): visualizza una finestra contenente un avviso di messaggi chiusi
*/
function cm_loadExpire()
{   
  document.getElementById('messaggi_chiusi').style.display='block';
  document.getElementById('aggiorna_messaggiChiusi').style.display='none';
  document.getElementById('ajax_tooltipObj').style.display='none';
  document.getElementById('aggiorna_messaggiObj').style.display='none'; 
}

/*
  rimuovo dall'array dei MArker (e quindi dalla sidebas di sx) i marker non più
  visualizzati nella mappa.
*/
function removeDataPoint(mio)
{    
    // Remove the marker from the map
    cm_map.removeOverlay(MarkersArray[mio]);   
    // Find and remove the sidebar entry    
    var id = MarkersArray[mio].getTitle();
    var sidebarDiv = document.getElementById(id);   
    if (sidebarDiv)
    {
      sidebarTD.removeChild(sidebarDiv);
      cm_mapMarkers.splice(id, 1);
      cm_mapHTMLS.splice(id, 1);      
    }
    // Remove the marker from our own array
    MarkersArray.splice(mio, 1);
};

function myMarker()
{  
    var mapBounds = cm_map.getBounds();       
    
    var recenter=document.getElementById("recenter").value;
   
    var getSouthWestLon = mapBounds.getSouthWest().lng().toFixed(6);
    var getSouthWestLat = mapBounds.getSouthWest().lat().toFixed(6);
    var getNorthEastLon = mapBounds.getNorthEast().lng().toFixed(6);
    var getNorthEastLat = mapBounds.getNorthEast().lat().toFixed(6);
    var getZoom=cm_map.getZoom();
   
    sidebarTD = document.getElementById("tdLista");
    
    //var mm = new GMarkerManager(cm_map);   
    for (var m = MarkersArray.length - 1; m >= 0; m--)
    {
        if (!mapBounds.contains(MarkersArray[m].getPoint()))
        {
          removeDataPoint(m);
        }
    }
    om.Set('<b>Loading...</b>'); /*Visualizzo il messaggio di Loading*/
    if(cm_map.getZoom()<12)
    {
     // document.getElementById("debug").style.display="none";
    }
    
    var fieldSearch=document.getElementById('fieldSearch').value;
   
    var search="";
    /*if(fieldSearch!="")
    {
      var search=fieldSearch+'|'+typeSearch;
    }*/
    
    var id='all';
    var ora='';
    var cat='';
    //RECUPERO DATI DA DB
    google.maps.DownloadUrl("createXml.php?id="+id+"&ora="+ora+"&cat="+cat+"&BBOX=" +
                getSouthWestLon + ',' +
                getSouthWestLat + ',' +
                getNorthEastLon + ',' +
                getNorthEastLat + ',' + getZoom + "&search=" + search + "&recenter=" + recenter, function(data, responseCode)
                {      
    if(responseCode == -1)
    {
        alert("Data request timed out. Please try later.");
    }
    else if(responseCode != 200)
    {
        alert('Request resulted in error. Check XML file is retrievable.');
    }
    else
    {          
        var xml = google.maps.Xml.parse(data);     
        var allMarkers = xml.getElementsByTagName("marker"); 
        //var allMarkers = xml.documentElement.getElementsByTagName("marker");      
        
        if(allMarkers.length==0) /* Nell'XML restituito non ci sono messaggi CAP*/
        {        
            var message = xml.getElementsByTagName("message");
            if(message.length!=0)  /* L'Xml contiene il messaggio  di errore "non ci sono messaggi CAP"*/
            {
              var msg=message[0].getAttribute("msg");            
              document.getElementById('row').value="0";
              //cm_map.setCenter(new GLatLng(42.3553,13.401), 10);      
              //document.getElementById('row').value=0;
             // document.getElementById("debug").style.display="none";
            }
            else /* L'Xml contiene la richiesta di "recentering" della mappa*/
            {
              /* recentering della mappa solo se settata la variabile "recenter" */
              var recenterMap = xml.getElementsByTagName("recenterMap");
              document.getElementById("recenter").value="";
              cm_map.setCenter(new GLatLng(recenterMap[0].getAttribute("lat"),recenterMap[0].getAttribute("lon")),15);                 
            }
        }
        else
        {
          var row=allMarkers[0].getAttribute("row")
          om.Set('<b>Loading '+ row +' CAP...</b>'); /* Visualizzo il messaggio di Loading con il numero di messaggi che verranno caricato */
          document.getElementById('row').value=row;
        
          markers=[];          
          if(MarkersArray.length==0)
          {
              markers=allMarkers;
          }              
          /*  INIZIO CICLO FOR CHE AGGIORNA L'ARRAY DEI MARKER */      
          var nonAggiungere=false;
          var cancella=true;
          var MarkersArrayTmp=[];
          var t=0;
          var k=0;
          
          /* ELIMINO DALL'ARRAY GLI ELEMENTI CHE NON DEVONO ESSERE PIù VISUALIZZATI*/
          for (var i = 0; i < MarkersArray.length; i++)
          {      
              for (var m=0; m<allMarkers.length; m++)
              {            
                  if (MarkersArray[i].getTitle()==allMarkers[m].getAttribute("identifier"))
                  {
                      m=allMarkers.length;
                      cancella=false
                  }            
              }             
              //alert(MarkersArray.length);
              if(cancella==true)
              {                
                // cm_map.removeOverlay(MarkersArray[i]); 
                MarkersArrayTmp[t]=i;
                //alert(MarkersArrayTmp[t]);
                t++;
                //removeDataPoint(i);
                //MarkersArray.splice(i, 1);            
              }
              cancella=true;
          }
          
          /* ELIMINO DALLA SIDEBAR GLI ELEMENTI CHE NON DEVONO ESSERE PIù VISUALIZZATI*/    
          for (var m = MarkersArrayTmp.length - 1; m >= 0; m--)
          {      
              removeDataPoint(MarkersArrayTmp[m]);
          }
         
          /* CREO L'ARRAY CON I NUOVI ELEMENTI DA INSERIRE*/
          if(markers.length==0)
          {
              for (var i = 0; i < allMarkers.length; i++)
              {      
                  for (var m=0; m<MarkersArray.length; m++)
                  {          
                      if (MarkersArray[m].getTitle()==allMarkers[i].getAttribute("identifier"))
                      {              
                          nonAggiungere=true;                
                          m=MarkersArray.length;             
                      }            
                  }
                  if(nonAggiungere==false)
                  {          
                      markers[k]=allMarkers[i];
                      k++;
                  }
                  nonAggiungere=false;
              }
          }        
          /*  FINE CICLO FOR CHE AGGIORNA L'ARRAY DEI MARKER */    
         
         /* inizio creazione marker. Scorriamo l'arrey e creiamo i marker semplici o clusterizzati*/
          for (var i = 0; i < markers.length; i++)
          {          
              if(markers[i].getAttribute("id"))
              {
                  var id=markers[i].getAttribute("id");
                  var name=markers[i].getAttribute("name");
                  //alert(markers[i].getAttribute("name")+' :'+markers[i].getAttribute("lat")+' - '+markers[i].getAttribute("lon"));
                  var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lon")));   
                  // Create a marker for this data point      
                  var marker =  createMarkerCluster(point,name,markers[i].getAttribute("style"))
                  cm_map.addOverlay(marker);
                  MarkersArray.push(marker);
                  cm_mapMarkers[id]=marker;
              }
              else
              {
                  var identifier = markers[i].getAttribute("identifier");
                  var sent=markers[i].getAttribute("sent");
                      
                  var identifierField = new Array();
                  identifierField=identifier.split("-");
                    
                  var dataOraField = new Array();
                  var dataField = new Array();
                  var oraField = new Array(); 
                  dataOraField = sent.split(" ");
                  var dataString=dataOraField[0];
                  var oraString=dataOraField[1];
                  dataField = dataString.split("-");
                  oraField = oraString.split(":");
                  
                  var ente=markers[i].getAttribute("senderName"); 
                  var idParameter=markers[i].getAttribute("parameter");  
                  data=dataField[2]+"/"+dataField[1]+"/"+dataField[0];
                  var ora=oraField[0]+":"+oraField[1];
                  var num=identifierField[identifierField.length-2];      
                  var address=markers[i].getAttribute("areaDesc");
                  if(address=="Address Unknown")
                  {
                    address="";
                  }
                  var statusLabel=markers[i].getAttribute("statusLabel");
                  var status=markers[i].getAttribute("status");         
                  var urgency=markers[i].getAttribute("urgency");
                  var urgencyLabel=markers[i].getAttribute("urgencyLabel");
                  var urgencyValue=markers[i].getAttribute("urgencyValue");
                  var severity=markers[i].getAttribute("severity");
                  var severityLabel=markers[i].getAttribute("severityLabel");
                  severityLabel=severityLabel.replace("à","&agrave;");
                  var severityValue=markers[i].getAttribute("severityValue");
                  var certainty=markers[i].getAttribute("certainty");
                  var certaintyLabel=markers[i].getAttribute("certaintyLabel");
                  var certaintyValue=markers[i].getAttribute("certaintyValue");
                  var event=markers[i].getAttribute("event");
                  var dettaglioTipologia=markers[i].getAttribute("dettaglioTipologia");
                  var row=markers[i].getAttribute("row");
                  var msgType = markers[i].getAttribute("msgType");
                  var oggetto=markers[i].getAttribute("headline");
                  var orgName=markers[i].getAttribute("orgName");
                  var ad_opera_di=markers[i].getAttribute("ad_opera_di");
                  var html ="<label style=text-align:center;font-size:11px;color:#015BEC>" + oggetto + "</label><br>";                   
                  html +="<p style=text-align:center;font-size:10px;padding-top:7px;>" + dettaglioTipologia +"</p>";
                  html +="<p style=text-align:center;font-size:10px;padding-top:7px;>" + address +"</p>";
                  if(ad_opera_di!="")
                  {
                    html +="<p style=text-align:center;font-size:10px;padding-top:7px;><b>Ad opera di : </b>" + ad_opera_di +"</p>";
                  }
                  
                  /* aggiungiamo l'icona allegati se sono presenti allegati */
                  var checkAttach=markers[i].getAttribute("allegato");
                  if(checkAttach!="")
                  {
                    html +="<br><img src=img/graffetta.gif style=padding-left:5px;vertical-align:middle><a href=javascript:showCapAttached('" + markers[i].getAttribute("infokey") +"') style=text-align:center;font-size:9px;text-decoration:none>" + markers[i].getAttribute("testoAllegati")+"</a>";                    
                  }
                  
                  
                  var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lon")));                  
                  //creo un marker con le info recuperate dal file Xml
                  var marker = createMarker(point, html, severity,identifier,orgName,ente);     
                  cm_map.addOverlay(marker);
                  MarkersArray.push(marker);
                  cm_mapMarkers[identifier]=marker;
                  cm_mapHTMLS[identifier]=html;
                  /*cm_mapMarkers.push(marker);
                  cm_mapHTMLS.push(html);*/
                 
                 //per ogni marker creato, inserisco un link al marker nella lista di sx    
                  loadListCap(markers,i,sidebarTD);
                  
                  if(i==0)
                  {
                    //document.getElementById('row').value=row;      
                    //showCap(markers[0].getAttribute("identifier"));
                    //cm_markerClicked('0');         
                  }   
              }        
          }
        }
    }     
    om.Clear();
    load="true";
  });  
}

/* Creiamo i marker clusterizzati*/
function createMarkerCluster(point,name,style)
{
  /* settiamo le icone per i marker clusterizzati*/
    var myIcon = new google.maps.Icon();
    myIcon.image      = 'icon/'+style+'.png';
    myIcon.iconSize   = new GSize(32, 32);
    myIcon.shadow     = 'icon/circle_shadow.png';;
    myIcon.shadowSize = new google.maps.Size(40, 40);
    myIcon.iconAnchor = new google.maps.Point(13, 13);
    myIcon.infoWindowAnchor = new google.maps.Point(13, 0);
    var options = {icon: myIcon, title: name};
    var marker = new GMarker(point, options); // creiamo il marker
      
    google.maps.Event.addListener(marker, 'click', function() {
    cm_map.setCenter(point, cm_map.getZoom()+ 2);
    });
  return marker;   
}

/* creiamo i marker*/
function createMarker(point, html, severity,identifier,orgName,ente)
{
  /*
  setto le icone per i marker.
  le icone cambiano in base alla Severity e all'ente
  */  
 //ICONA SCUDO ROSSO PER ENTE LOGGATO
  var iconScudoRed = new google.maps.Icon(); 
  iconScudoRed.image = 'img/Flag1_red.png';
  iconScudoRed.shadow = 'img/mm_20_shadow.png';
  iconScudoRed.iconSize = new google.maps.Size(30, 30);
  iconScudoRed.shadowSize = new google.maps.Size(31, 21);
  iconScudoRed.iconAnchor = new google.maps.Point(9, 21);
  iconScudoRed.infoWindowAnchor = new google.maps.Point(15, 15);
  
   
  //ICONA SCUDO BLUE PER ENTE LOGGATO
  var iconScudoBlue = new google.maps.Icon(); 
  iconScudoBlue.image = 'img/Flag1_blue.png';
  iconScudoBlue.shadow = 'img/mm_20_shadow.png';
  iconScudoBlue.iconSize = new google.maps.Size(30, 30);
  iconScudoBlue.shadowSize = new google.maps.Size(31, 21);
  iconScudoBlue.iconAnchor = new google.maps.Point(9, 21);
  iconScudoBlue.infoWindowAnchor = new google.maps.Point(15, 15);
  
  
  //ICONA SCUDO verde light PER ENTE LOGGATO
  var iconScudoGreenL = new google.maps.Icon(); 
  iconScudoGreenL.image = 'img/Flag1_green_light.png';
  iconScudoGreenL.shadow = 'img/mm_20_shadow.png';
  iconScudoGreenL.iconSize = new google.maps.Size(30, 30);
  iconScudoGreenL.shadowSize = new google.maps.Size(31, 21);
  iconScudoGreenL.iconAnchor = new google.maps.Point(9, 21);
  iconScudoGreenL.infoWindowAnchor = new google.maps.Point(15, 15);
  
  //ICONA SCUDO verde dark PER ENTE LOGGATO
  var iconScudoGreenD = new google.maps.Icon(); 
  iconScudoGreenD.image = 'img/Flag1_green_dark.png';
  iconScudoGreenD.shadow = 'img/mm_20_shadow.png';
  iconScudoGreenD.iconSize = new google.maps.Size(30, 30);
  iconScudoGreenD.shadowSize = new google.maps.Size(31, 21);
  iconScudoGreenD.iconAnchor = new google.maps.Point(9, 21);
  iconScudoGreenD.infoWindowAnchor = new google.maps.Point(15, 15);
  
  //ICONA SCUDO grigio PER ENTE LOGGATO
  var iconScudoGray = new google.maps.Icon(); 
  iconScudoGray.image = 'img/Flag1_gray.png';
  iconScudoGray.shadow = 'img/mm_20_shadow.png';
  iconScudoGray.iconSize = new google.maps.Size(30, 30);
  iconScudoGray.shadowSize = new google.maps.Size(31, 21);
  iconScudoGray.iconAnchor = new google.maps.Point(9, 21);
  iconScudoGray.infoWindowAnchor = new google.maps.Point(15, 15);
  
  var customIcons = [];
  customIcons["Extreme"] = iconScudoRed;
  customIcons["Severe"] = iconScudoBlue;
  customIcons["Moderate"] = iconScudoGreenL;
  customIcons["Minor"] = iconScudoGreenD;
  customIcons["Unknown"] = iconScudoGray;
 
  var options = {icon: customIcons[severity], title: identifier};
  var marker = new google.maps.Marker(point, options);
 
  google.maps.Event.addListener(marker, 'click', function() {
    marker.openInfoWindowHtml(html);
    //showCap(identifier); /* sotto la mappa viene mostrata la scheda con i dettagli del messaggio CAP */
  });
  return marker;
}

/* cliccando su un messaggio CAP nella sidebar di sx, la mappa viene centrata sul punto selezionato e
viene aperta la scheda con i dettagli del CAP*/
function cm_markerClicked(markerNum)
{
  //alert(markerNum);
  cm_mapMarkers[markerNum].openInfoWindowHtml(cm_mapHTMLS[markerNum]);  
}

/*
  loadListCap: crea la lista a sx della mappa, contenete tutti i msg cap attivi.
  per ogni messaggio viene aggiunto un link al marker e alcune info.
*/

function loadListCap(markers,i,sidebarTD)
{ 
  var sidebarDIV = document.createElement("div");
  sidebarDIV.id = markers[i].getAttribute("identifier"); 
  sidebarDIV.style.fontSize = "11px";
  sidebarDIV.style.color = "#000000";
  sidebarTD.appendChild(sidebarDIV);
  //document.getElementById("cm_mapTR").appendChild(sidebarTD);
  var sent=markers[i].getAttribute("sent");
  var identifier=markers[i].getAttribute("identifier");
  
  var identifierField = new Array();
  identifierField=identifier.split("-");
  
  var dataOraField = new Array();
  var dataField = new Array();
  var oraField = new Array(); 
  dataOraField = sent.split(" ");
  var dataString=dataOraField[0];
  var oraString=dataOraField[1];
  dataField = dataString.split("-");
  oraField = oraString.split(":");
  
  var data=dataField[2]+"/"+dataField[1]+"/"+dataField[0];
  var ora=oraField[0]+":"+oraField[1];
  var num=identifierField[identifierField.length-2];
  var letter="";
  
  var lat=markers[i].getAttribute("lat");
  var lon=markers[i].getAttribute("lon");
  var address=markers[i].getAttribute("areaDesc");
  if(address=="Address Unknown")
  {
    address="";
  }
  var urgency=markers[i].getAttribute("urgency");
  var severity=markers[i].getAttribute("severity");
  var certainty=markers[i].getAttribute("certainty");
  var event=markers[i].getAttribute("event");
  var ente=markers[i].getAttribute("senderName");      
  var msgType=markers[i].getAttribute("msgType");
  var status=markers[i].getAttribute("status");
  var expires=markers[i].getAttribute("expires");
  var close=markers[i].getAttribute("close"); 
  var point =new GLatLng(lat,lon);
  var idParameter=markers[i].getAttribute("parameter");
  var dettaglioTipologia=markers[i].getAttribute("dettaglioTipologia");
  var oggetto=markers[i].getAttribute("headline");
  var orgName=markers[i].getAttribute("orgName");
  var role=markers[i].getAttribute("role");
  var source=markers[i].getAttribute("source");
  var messaggio = new Array(address,num,data,ora,urgency,severity,certainty,event,idParameter,ente,msgType,status);           
  var rank = i;
  
  /* settiamo le icone da visualizzare nella barra di sx*/
  var img = document.createElement('img');
 if(severity=="Extreme")
  {
    img.src = "img/Flag1_red.png";   
  }
  else if(severity=="Severe")
  {
    img.src = "img/Flag1_blue.png"; 
  }
  else if(severity=="Moderate")
  {
    img.src = "img/Flag1_green_light.png"; 
  }
  else if(severity=="Minor")
  {
    img.src = "img/Flag1_green_dark.png"; 
  }
  else if(severity=="Unknown")
  {
    img.src = "img/Flag1_gray.png"; 
  }
  img.setAttribute("align", "left");
  img.setAttribute("style", "margin-right:3px");
  //alert(i);
  var markerA = document.createElement("a");            
  markerA.setAttribute("href","javascript:cm_markerClicked('" + identifier +"');");
  //alert(messaggio[11]);
  if(messaggio[11]=='Exercise')
  {
    markerA.setAttribute('style', 'color:red;font-size:11px;align:center');
  }
  else if(messaggio[11]=='Test')
  {
    markerA.setAttribute('style', 'color:#666666;font-size:11px;align:center');
  }
  else
  {
    markerA.setAttribute('style', 'color:#015BEC;font-size:11px;align:center');
  }  
  var sidebarText= "";
  var sidebarText1= "";
  sidebarText += oggetto;
  markerA.appendChild(img);
  markerA.appendChild(document.createTextNode(sidebarText));
  markerA.appendChild(document.createElement("br")); 
  sidebarDIV.appendChild(markerA);
  
  var paragrafo = document.createElement("p"); 
  var TextDetail= "";
  var TextAddress= "";
  TextDetail += dettaglioTipologia;
  TextAddress += address;
  paragrafo.appendChild(document.createElement("br"));  
  paragrafo.appendChild(document.createElement("br"));  
  paragrafo.appendChild(document.createTextNode(TextDetail));
  paragrafo.appendChild(document.createElement("br"));
  paragrafo.appendChild(document.createTextNode(TextAddress));
  paragrafo.appendChild(document.createElement("br"));        
  sidebarDIV.appendChild(paragrafo);

  /* aggiungiamo l'icona allegati se sono presenti allegati */
  var checkAttach=markers[i].getAttribute("allegato");
  if(checkAttach!="")
  {
    sidebarDIV.appendChild(document.createElement("br"));
    var allegati = document.createElement("a");            
    allegati.setAttribute("href","javascript:showCapAttached('" + markers[i].getAttribute("infokey") +"')");
    allegati.setAttribute("title","Allegati");
    allegati.setAttribute("style","text-decoration:none; font-size:11px");    
    var imgAll = document.createElement("img");
    imgAll.src='img/graffetta.gif';
    imgAll.alt='Allegati';
    imgAll.setAttribute("style","vertical-align:middle");    
    var TextAllegati= "";
    TextAllegati += markers[i].getAttribute("testoAllegati");
    allegati.appendChild(imgAll);
    allegati.appendChild(document.createTextNode(TextAllegati));                  
    sidebarDIV.appendChild(allegati);
    sidebarDIV.appendChild(document.createElement("br"));
  }
  sidebarDIV.appendChild(document.createElement("br"));  
  var linea=document.createElement("hr");
  linea.setAttribute("style","margin-right:5px;color:#7B9EBD;background-color:#7B9EBD;border:0;height:1px;");
  sidebarDIV.appendChild(linea);
  sidebarDIV.appendChild(document.createElement("br"));  
  
}
 

/*
  POPUP LEGENDA
  Permette la visualizzazione della Legenda
*/
function PopupLegenda(altri_enti,extreme,moderate,severe,minor,unknown,legenda)
{
  var w = 600;
  var h = 180;
  var l = Math.floor((screen.width-w)/2);
  var t = Math.floor((screen.height-h)/2);  
  var testo = window.open("", "", "resizable=no,scrollbars=no,toolbar=no,location=no,status=no,width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
  testo.document.write("<html>\n");
  testo.document.write(" <head>\n");
  testo.document.write("  <title>" + legenda + "</title>\n");
  testo.document.write(" </head>\n");
  testo.document.write("<body>\n");
  testo.document.write("<div align=left style=font-size:12px;font-family:Arial;>");
  testo.document.write("<table style=width:100%><tr><td>");  
  testo.document.write("<b>Icone: </b><br>");
  testo.document.write("<img height=16px width=16px src=img/Flag1_red.png><span style=padding-right:6px; padding-left:3px> Attivita' in corso (Vigili del Fuoco)</span> / <i style=font-size:14px>Work in progress (by Firemen)</i><br>");
  testo.document.write("<img height=16px width=16px src=img/Flag1_blue.png><label style=padding-right:6px; padding-left:3px> Attivita' in corso a cura di impresa</label> / <i style=font-size:14px>Work in progress (by private firm)</i><br>");
  testo.document.write("<img height=16px width=16px src=img/Flag1_green_light.png><label style=padding-right:6px; padding-left:15px> Attivita' terminate (Vigili del Fuoco)</label> / <i style=font-size:14px>Work completed (by Firemen)</i><br>");  
  testo.document.write("<img height=16px width=16px src=img/Flag1_green_dark.png><label style=padding-right:6px; padding-left:3px> Attivita' completate. Cantiere chiuso</label> / <i style=font-size:14px>Work completed. Building yard closed</i><br>");  
  testo.document.write("</td></tr></table>");
  testo.document.write("</div>\n");
  testo.document.write("</body>\n");
  testo.document.write("</html>");  
}

/* recupero il valore del campo indirizzo e richiamo la funzione addAddressToMap
per recuperare le coordinate e centrare la mappa nel punto cercato*/
function showLocation()
{
  var address = document.getElementById('fieldSearch').value;
  geocoder.getLocations(address, addAddressToMap);  
}


function addAddressToMap(response)
{
    //cm_map.clearOverlays();
    /*l'indirizzo non è stato trovato*/
    if (!response || response.Status.code != 200)
    {
            //alert(" Sorry, we were unable to geocode that address");                           
    }
    else /* l'indirizzo è stato trovato- centro la mappa in questo punto*/
    {            
            
            place = response.Placemark[0];
            cm_map.setCenter(new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]),16);     
    }
}

/*CREAZIONE FINESTRA DI POPUP*/
function newWindow(a_str_windowURL, a_str_windowName, a_int_windowWidth, a_int_windowHeight, a_bool_scrollbars, a_bool_resizable, a_bool_menubar, a_bool_toolbar, a_bool_addressbar, a_bool_statusbar, a_bool_fullscreen)
{
  var int_windowLeft = (screen.width - a_int_windowWidth) / 2;
  var int_windowTop = (screen.height - a_int_windowHeight) / 2;
  var str_windowProperties = 'height=' + a_int_windowHeight + ',width=' + a_int_windowWidth + ',top=' + int_windowTop + ',left=' + int_windowLeft + ',scrollbars=' + a_bool_scrollbars + ',resizable=' + a_bool_resizable + ',menubar=' + a_bool_menubar + ',toolbar=' + a_bool_toolbar + ',location=' + a_bool_addressbar + ',statusbar=' + a_bool_statusbar + ',fullscreen=' + a_bool_fullscreen + '';
  var obj_window = window.open(a_str_windowURL, a_str_windowName, str_windowProperties)
    if (parseInt(navigator.appVersion) >= 4)
    {
      obj_window.window.focus();
    }
}

/* funzione utilizzata nella ricerca avanzata per visualizzare nella mappa
il messaggio CAP ricercato */
function centerLocation(lat,lon,identifier)
{  
  load="false";  
  cm_map.setCenter(new GLatLng(lat,lon),16);    
  if(load=="true")
  {    
    //setTimeout("cm_markerClicked('"+identifier+"')", 5000);  
    cm_markerClicked(identifier);  
  }
  else
  {    
    setTimeout("cm_markerClicked('"+identifier+"')", 5000);  
  }
}
