﻿//<![CDATA[

    var map = null;
    var geocoder = null;
	var DobleClickocurrido = false;
 	
 	var kmxmilla = 1.609345;
    // Una milla romana son 1.478 km. Es decir: 1.088 millas
    var millaromanaxmilla = 1.08886;
    
    
    function load() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
		
        map.setCenter(new GLatLng(40.41208692013738, -3.687141537666321), 6);
        geocoder = new GClientGeocoder();
        
       			// map.addMapType(G_PHYSICAL_MAP);
         		//map.addControl(new GLargeMapControl());
		       // map.addControl(new GMapTypeControl());
		       // map.addControl(new GOverviewMapControl());
		       // map.addControl(new GScaleControl());
		        
		          map.setMapType(G_PHYSICAL_MAP);
		      //  map.enableScrollWheelZoom();
		       
		      map.setUIToDefault();
		        
		        // Este bloque muestra las coordenadas en el DIV coordenadas
				GEvent.addListener(map, "moveend", function() {
					var center = map.getCenter();
					var vzoom = map.getZoom();
					
					if (DobleClickocurrido) {
					
						document.getElementById("coordenadasgps").value = center.toString();
						DobleClickocurrido = false;
					}
					
				});
				
			
						
				
			if (idpoblamiento && idpoblamiento != -1 && idruta != idpoblamiento) {
				
				// Este bloque hace se centre el mapa sobre el punto que se hizo doble click, mostrando un marcador
		        // al hacer doble click sobre el marcador, desaparece.
		        GEvent.addListener(map, "click", function(marker, point) {
				  if (marker) {
				   // map.removeOverlay(marker);
				  } else {
				    map.addOverlay(new GMarker(point));
				    
				  }		  
				  
				});
					
			}
			
			if (idruta!=-2) {
			
					GEvent.addListener(map, 'dblclick', function(overlay, point) {
					    document.getElementById('txtLatitude').value = point.y;
					    document.getElementById('txtLongitude').value = point.x;
					
					    if (marker == null) {
					      marker = createMarkerruta(point, "icogreen");
					      marker.enableDragging();
					
					      GEvent.addListener(marker, "drag", function() {
					        document.getElementById('txtLatitude').value = marker.getPoint().y;
					        document.getElementById('txtLongitude').value = marker.getPoint().x;
					      });
						
					      map.addOverlay(marker);
					    } else {
					    
					      marker.setPoint(point);
					    }
					    addPoint();
					    
					    
					  });
					    
					
					
			
			
					GEvent.addListener(map, "click", function(overlay, point) {
					    document.getElementById('txtLatitude').value = point.y;
					    document.getElementById('txtLongitude').value = point.x;
					
					    if (marker == null) {
					      marker = createMarkerruta(point, "icogreen");
					      marker.enableDragging();
					
					      GEvent.addListener(marker, "drag", function() {
					        document.getElementById('txtLatitude').value = marker.getPoint().y;
					        document.getElementById('txtLongitude').value = marker.getPoint().x;
					      });
					
					      map.addOverlay(marker);
					    } else {
					      marker.setPoint(point);
					    }
					    
					    
					    
					  });
					
			
			}
			
        
        descargaxml(idpoblamiento,cadena,zona,tipopoblam,loca);
				
        
        
        
      }
    }


// Creamos el icono CASITA
				function consigueicono(imagen){
				if (!imagen) {
				imagen="casapq";
				}
				var iconcasita = new GIcon();
				iconcasita.image = "googlemaps/"+imagen+".png";
				iconcasita.shadow = "googlemaps/"+imagen+"_sombra.png";
				iconcasita.iconSize = new GSize(32, 32);
				iconcasita.shadowSize = new GSize(60, 32);
				iconcasita.iconAnchor = new GPoint(32, 32);
				iconcasita.infoWindowAnchor = new GPoint(5, 1);
				
				 return iconcasita;
				}

// FUNCION QUE CREA LOS BOCATAS
				function createMarker(point, texto,idficha,icono,lati,longi) {
				
				  var marker = new GMarker(point,consigueicono(icono));
				  GEvent.addListener(marker, "click", function() {
				  
				  if (idficha!=0) {
				  enlaceficha=" &middot; <a href='verlugar.asp?id="+idficha+"'>Visita su ficha</a>"
				  } else {
				  enlaceficha=""
				  }
				   marker.openInfoWindowHtml("<h4>" + texto + "</h4><p><a href='#' onclick='muevemapa("+lati+","+longi+");return false;'>Zoom aqu&iacute;</a>"+enlaceficha+"</p>");
				  
				  });
				  
				 
				  
				  return marker;
				}
				
// CREA LOS ICONOS DE LAS RUTAS.				
function createMarkerruta(point,icono,texto) {
  var f = new GIcon();
  f.image = "googlemaps/" + icono + ".png";
  f.shadow = "googlemaps/icoshadow.png";
  f.iconSize = new GSize(12,20);
  f.shadowSize = new GSize(22,20);
  f.iconAnchor = new GPoint(6,20);
  f.infoWindowAnchor = new GPoint(6,1);
  f.infoShadowAnchor = new GPoint(13,13);



  var marker = new GMarker(point,
    {icon: f,
     draggable: true});
     
    if (texto) {
    
    	GEvent.addListener(marker, "click", function() {
		var opts = new Object();
		opts.maxWidth = 300;
		marker.openInfoWindowHtml(texto); 
	 	 });
    
    }

  return marker;
}
				

	function descargaxml(idpoblam,cadena,zona,tipopoblam,loca){
	map.clearOverlays();
				var waypoints = [];
		        // Descargamos los waypoints desde el fichero data.asp (podr?a ser data.xml)
		        GDownloadUrl("googlemaps/data.asp?idpoblamiento="+idpoblam+"&cadena="+cadena+"&zona="+zona+"&tipopoblam="+tipopoblam+"&loca="+loca, function(data) {
		          var xml = GXml.parse(data);
		          
		          // Waypoints
		          var markers = xml.documentElement.getElementsByTagName("marker");
		          
		         
		  		  var bounds = new GLatLngBounds();
		          
		          for (var i = 0; i < markers.length; i++) {
		          	var lati=parseFloat(markers[i].getAttribute("lat"));
		          	var longi=parseFloat(markers[i].getAttribute("lng"));
			            var point = new GLatLng(lati,longi);
			            var texto = markers[i].getAttribute("txt");
			            var idficha = markers[i].getAttribute("idf");
			            var icono = markers[i].getAttribute("ico");
			           // map.addOverlay(new GMarker(point));
			            
			            
			        	//waypoints.push(new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng"))));
			        
			  			 map.addOverlay(createMarker(point, texto,idficha,icono,lati,longi));
			  			 bounds.extend(point);
		  		 }
		  		 		 
		  		 // RUTA 
		  		  var markers = xml.documentElement.getElementsByTagName("ruta");
		  		  
		  		  kmtotal=0;
		  		  kmparcial=0;
		  		  
		  		  
				          for (var i = 0; i < markers.length; i++) {
				          	var lati=parseFloat(markers[i].getAttribute("lat"));
				          	var longi=parseFloat(markers[i].getAttribute("lng"));
					            var punto = new GLatLng(lati,longi);
					            var texto = markers[i].getAttribute("txt");
					            var level = markers[i].getAttribute("level");
					            var icono = markers[i].getAttribute("ico");
					            var kmtramo = markers[i].getAttribute("kmtramo");
					            
					           
					            
					            kmtotal=parseFloat(kmtotal) + parseFloat(kmtramo);
					            kmparcial=parseFloat(kmparcial) + parseFloat(kmtramo);
					           
					         
					          
					          // map.addOverlay(new GMarker(point));
					            
						            if (texto) {
						            	icono="icotitulo";
						            	//	map.addOverlay(createMarker(punto, texto,0,icono,lati,longi));
						            	 var kmparcialtx=""+redondeodosdecimales(kmparcial);
						            	 	var millaparcialtx=""+redondeodosdecimales(kmparcial/kmxmilla);
						         		 var kmtotaltx=""+redondeodosdecimales(kmtotal);
						         		 	var millatotaltx=""+redondeodosdecimales(kmtotal/kmxmilla);
						            	textopunto="<h4>"+texto+"</h4><p>Ult. tramo: <strong>"+kmparcialtx.replace(".",",")+"</strong> Kms. ("+millaparcialtx+" Millas romanas)<br/>Desde el origen: <strong>"+kmtotaltx.replace(".",",")+"</strong> Kms. ("+millatotaltx+" Millas romanas)<br/>"
							  			textopunto=textopunto + "(Valor aprox. Milla romana: "+kmxmilla+" Kms.)</p>"
							  				if (idruta == -2) { /*Si no se está editando */
							  					map.addOverlay(createMarkerruta(punto,icono,textopunto));
							  				}
						            }else {
						           	 //icono="icoyellow";
						            }
					            
						            if (texto) {
						            	kmparcial=0;
						            }
					            
					        	waypoints.push(new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng"))));
					        
						        	if (idruta!=-2) {/*Si se está editando */
							        	createPoint(lati, longi, level,texto);
							        	createEncodings(false);
						        	}
					  		
				  		 	}
				  		 
						  		 if (waypoints) {
						  		 	map.addOverlay(new GPolyline(waypoints));
						  		 }
					  		 
						  		 if (point && idpoblam != 0) {
						  			map.setCenter(point, 13);
									map.setMapType(G_HYBRID_MAP);
						  		 } else if (idpoblam==0 && (zona!=0 || tipopoblam!=0)) {
						  			map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
						  		 }
		  		 
		          
		        });
        }

    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " no encontrado.\n\rPrueba de otra forma (localidad,spain).");
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
            }
          }
        );
      }
    }
    
   
    
    function redondeodosdecimales(decNum){
		
		return Math.round(decNum * 10)/100;
		
	}
	
	function redondeotresdecimales(decNum){
		
		return Math.round(decNum * 100)/1000;
		
	}
    
    if (navigator.appName == 'Microsoft Internet Explorer'){
	
		document.ondblclick = manejaDblClick;
		bIsIE = true;
		
	} else {
	
		window.ondblclick = manejaDblClick;
		bIsIE = false;
		
	}
    
    
    function manejaDblClick(e) {
	
		DobleClickocurrido = true;
		
	}
   
    
    function distanciaenkm(punto1y, punto1x, punto2y, punto2x) {
		
		var punto1 = new GLatLng(punto1y, punto1x);		
		var punto2 = new GLatLng(punto2y, punto2x);
		var distanciaenkm = punto1.distanceFrom(punto2) * .000621371192*kmxmilla;	
					
		
		//alert (redondeodosdecimales(distanciaenkm));
    	return distanciaenkm
	}
	
	function distanciaenmillasromanas(punto1y, punto1x, punto2y, punto2x) {
		
		var punto1 = new GLatLng(punto1y, punto1x);		
		var punto2 = new GLatLng(punto2y, punto2x);
		var distanciaenml = punto1.distanceFrom(punto2) * .000621371192*millaromanaxmilla;		
		
		return distanciaenml
	}
	
//	 distanciaenkm(42.04393865639606,-3.5834312438964844,42.01537646402208,-3.5533905029296875)
    
    function muevemapa(lati,longi) {
            map.panTo(new GLatLng(lati,longi));
            map.setZoom(13);
        } 
    
    
    //]]>
