var geocoder = null;
var lat=0;
var lng=0;
//var ind_iniziale="10023 Chieri TO";
var flagPrimo=0;
var map;
var arrLAT=new Array();
var arrLNG=new Array();
var arrIND=new Array();
var arrStato=new Array();
var arrStatoInd=new Array();
var chiamata_admin=1;



function load(){
 if (GBrowserIsCompatible()){
  // Creo GeoCoder assegnandolo alla variabile globale
  geocoder = new GClientGeocoder();
  map = new GMap2(document.getElementById("map"));
  map.addControl(new GLargeMapControl()); 
  var objInd=new objIndirizzo();
  objInd.setCitta(ind_iniziale);
  geocode(objInd,14,flagPrimo);
  //alert("Longitudine: " + lng + "\n" + "Latitudine: " + lat);
 }
}

function geocode(objInd,level,flagPrimo){
 var address = objInd.getVia()+ " " + objInd.getCitta() + ", Italia";
 geocoder.getLatLng(address,
	  function(point){
		if (!point){
		 // Indirizzo non trovato
		 alert(address + " non trovato!");
		}else{
		 // Utilizzo i dati ricavati dal geocoder
		 //alert(address + "\n" +
         //                   "Longitudine: " + point.x + "\n" +
         //                   "Latitudine: " + point.y);
		 lat=point.y;
		 lng=point.x;
		 map.setCenter(new GLatLng(lat, lng), level);
 		 point = new GLatLng(lat,lng);
		 map.clearOverlays();
		 switch(chiamata_admin){
 		  case 1: ramo_sito(map,point,objInd); break;
		  case 0: ramo_admin(map,point); break;
		 }
		}
	});
}

// RAMO SITO visualizza il marker sulla mappa del sito esterno
function ramo_sito(map,point,objInd){
 var marker = createMarker(point,"nuovo","nuovo");  
 map.addOverlay(marker); 
 html='<div class="map">'+objInd.getVia()+'<br><b>'+objInd.getCitta()+'</b></div>';
 map.openInfoWindow(point,html);
 eval("var latit=document."+f_lat);
 eval("var long=document."+f_long);
 latit.value=lat;
 long.value=lng;
 //alert(lat+" "+lng);
}

// RAMO ADMIN visualizza i marker sulla mappa del pannello di controllo
function ramo_admin(map){
   // setta icona e marker per punti con LAT e LNG
  for(i=0;i<arrLAT.length;i++){
   var icona = new GIcon();
   var path = dir_img + arrStato[i]+".png";
   icona.image = path;
   icona.iconSize = new GSize(20, 34);
   icona.iconAnchor = new GPoint(10, 34);
   icona.infoWindowAnchor = new GPoint(20, 1);
   /*
   var point = new GLatLng(arrLAT[i],arrLNG[i]);
   var m = new GMarker(point,icona);  
   map.addOverlay(m);
   */
   createMarker_admin(arrLAT[i],arrLNG[i],icona,arrID[i]);
 }
   // setta icona e marker per punti senza LAT e LNG
  var objInd=new objIndirizzo();
  objInd.setCitta(ind_iniziale);
  for(i=0;i<arrInd.length;i++){
   var icona = new GIcon();
   var path = dir_img + arrStatoInd[i]+".png";
   icona.image = path;
   icona.iconSize = new GSize(20, 34);
   icona.iconAnchor = new GPoint(10, 34);
   icona.infoWindowAnchor = new GPoint(20, 1);
   
   objInd.setVia(arrInd[i]);
   geocode_marker(objInd,icona,arrIndID[i]);
 }


}


function carica(){
 level=16;
 eval("var citta=document."+f_citta);
 eval("var ind=document."+f_ind);
 eval("var latit=document."+f_lat);
 eval("var long=document."+f_long);
 if(ind.value!=""){
  latit.value="";
  long.value="";
  var objInd=new objIndirizzo();
  objInd.setVia(ind.value);
  objInd.setCitta(citta.value);
  geocode(objInd,level,1);
  //latit.value=lat;
  //long.value=lng;
 }else{ 
  //alert("vuoto");
 }
 //alert(lat+" "+lng);
}

function createMarker(point,name,html) {  
 var marker = new GMarker(point, {draggable: true});  
 GEvent.addListener(marker, "dragstart", function() {
  map.closeInfoWindow();
 });
 GEvent.addListener(marker, "dragend", reverseGeocode);
 return marker;  
}  

function reverseGeocode(overlay){
 if (overlay){  
  geocoder.getLocations(overlay, function(addresses) {  
  if(addresses.Status.code != G_GEO_SUCCESS){  
   infoMap(overlay,0);
  }else{  
   address = addresses.Placemark[0];  
   infoMap(overlay,address);
   compilaForm(address);
  }  
 });  
 }  
} 

function infoMap(overlay,objAddress){
 var via; var citta; var html;
 if(objAddress==0){
  html="Impossibile recuperare l'indirizzo";
 }else{
  var objInd=new objIndirizzo();
  objInd.costrArr(objAddress.address.split(", "));
  if(objInd.getCitta()==ind_iniziale){
   html='<div class="map">'+objInd.getVia()+'<br><b>'+objInd.getCitta()+'</b></div>';
  }else{
   html='<div class="map"><b>'+objInd.getCitta()+'<br>Indirizzo non valido</b></div>';
  }
 }
 map.openInfoWindow(overlay,html);
}

function compilaForm(objAddress){
 eval("var citta=document."+f_citta);
 eval("var ind=document."+f_ind);
 eval("var latit=document."+f_lat);
 eval("var long=document."+f_long);
 latit.value="";
 long.value="";
 if(objAddress!=0){
  var objInd=new objIndirizzo();
  objInd.costrArr(objAddress.address.split(", "));
  if(objInd.getCitta()==ind_iniziale){
   citta.value=objInd.getCitta();
   ind.value=objInd.getVia();
   ind.focus();
  }else{
   citta.value=ind_iniziale;
   ind.value="";
  }
 }else{
  citta.value=ind_iniziale;
  ind.value="";
 }
 //latit.value=lat;
 //long.value=lng;
 //alert(lat+" "+lng);
}


function loadMapMarker(){
 if (GBrowserIsCompatible()){
  // Creo GeoCoder assegnandolo alla variabile globale
  chiamata_admin=0;
  geocoder = new GClientGeocoder();
  map = new GMap2(document.getElementById("map"));
  map.addControl(new GLargeMapControl()); 
  var objInd=new objIndirizzo();
  objInd.setCitta(ind_iniziale);
  geocode(objInd,14,flagPrimo);

 }
}

function geocode_marker(objInd,icona,indID){
 var address = objInd.getVia()+ " " + objInd.getCitta() + ", Italia";
 geocoder.getLatLng(address,
	  function(point){
		if (!point){
		 // Indirizzo non trovato
		 //alert(address + " non trovato!");
		}else{
		 lat=point.y;
		 lng=point.x;
		 /*
 		 point = new GLatLng(lat,lng);
   		 var m = new GMarker(point,icona);  
   		 map.addOverlay(m);
		 */
		 createMarker_admin(lat,lng,icona,indID);

		}
	});
}

function createMarker_admin(lat,lng,icona,id) {  
 point = new GLatLng(lat,lng);
 var m = new GMarker(point,icona);  
 map.addOverlay(m);

 GEvent.addListener(m, "click", function() {
  window.opener.location.href="mod_geotick.php?idPag="+idPag+"&sess_form=1&svuota=1&mode=0&codCat="+codCAT+"&agg=no&id="+id;
  //window.opener.focus();
  window.close();
 });

 return m;  
}  

function carica_admin(){
 eval("var citta=document."+f_citta);
 eval("var ind=document."+f_ind);
// eval("var latit=document."+f_lat);
// eval("var long=document."+f_long);
 if(ind.value!=""){
  var objInd=new objIndirizzo();
  objInd.setVia(ind.value);
  objInd.setCitta(citta.value);
  geocoder = new GClientGeocoder();
  geocode_admin(objInd);
  //latit.value=lat;
  //long.value=lng;
  //alert(lat+" "+lng);
 }else{ 
 //alert(lat+" "+lng);
 }
}

function geocode_admin(objInd){
 var address = objInd.getVia()+ " " + objInd.getCitta() + ", Italia";
 //alert(address);
 geocoder.getLatLng(address,
	  function(point){
		if (!point){
		 lat="";
		 lng="";
		 alert(address + " non trovato!\nLa segnalazione non verrà visualizzata sulla mappa.");
		}else{
		 lat=point.y;
		 lng=point.x;
		}

		eval("var latit=document."+f_lat);
 		eval("var long=document."+f_long);
		latit.value=lat;
  		long.value=lng;
                //alert(lat+" "+lng);

	});
}

