var map;
var mini;
var gdir;
var geocoder = null;
var addressMarker;
var directions;
var puntos_ruta = [];
var lon_punto;
var lat_punto;
var tipo_usado;
tipo_usado = '';
var direccion_destino;

function load(lon_us,lat_us,zoom) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("maparea"));
		map.addControl(new GSmallMapControl());
		map.enableDoubleClickZoom()
		map.enableContinuousZoom()

		geocoder = new GClientGeocoder();
		
		directionsPanel = document.getElementById("directions");
		directions = new GDirections(map, directionsPanel);    		
		GEvent.addListener(directions, "error", handleErrors);
		lon_punto = lon_us;
		lat_punto =lat_us;
		
		if 	(lon_punto == 0){
			showLocation(document.getElementById('direccion').value + ' ' + document.getElementById('poblacion_maps').value + ', spain'); 
		}else{						
			map.setCenter(new GLatLng(lon_us,lat_us));				  						
			map.setZoom(zoom);  	
			var icon = new GIcon();
			icon.image = "http://www.laguiadetelefonos.es/css/imagenes/punto1.png";
			icon.iconAnchor = new GPoint(16, 16);
			icon.infoWindowAnchor = new GPoint(16, 0);
			icon.iconSize = new GSize(30, 30);
			var marker = new GMarker(new GLatLng(lon_us,lat_us),{icon: icon});
			map.addOverlay(marker);		   
		}
       	
	}
}

function load2() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("maparea"));
		map.addControl(new GSmallMapControl());
		map.enableDoubleClickZoom()
		map.enableContinuousZoom()

		geocoder = new GClientGeocoder();
		
		directionsPanel = document.getElementById("directions");
		directions = new GDirections(map, directionsPanel);    		
		GEvent.addListener(directions, "error", handleErrors);
		
		showLocation(parent.document.getElementById('direccion_destino').value + ', spain');
		   	
	}
}

function setDirections(toAddress, fromAddress,locale) {  			
	directions.load("from: " + fromAddress + " to: " + toAddress , { "locale": locale });	
}

function centrar_nueva(lat,lng)
{
		map.clearOverlays();	
		map.setCenter(new GLatLng(lat,lng));				  						
		map.setZoom(15);  	
		var icon = new GIcon();
		icon.image = "http://www.laguiadetelefonos.es/css/imagenes/punto1.png";
		icon.iconAnchor = new GPoint(16, 16);
		icon.infoWindowAnchor = new GPoint(16, 0);
		icon.iconSize = new GSize(30, 30);
		var marker = new GMarker(new GLatLng(lat,lng),{icon: icon});
		map.addOverlay(marker);
}

function centrar_nueva_google(direc)
{
	map.clearOverlays();		
	showLocation(direc + ', spain');
}

function showLocation(address) {  		
	geocoder.getLocations(address, 
	function(response) {
		if (!response || response.Status.code != 200) {
			
		} else {							
		  place = response.Placemark[0];
		  point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);  		  		  		  		  
		  var icon = new GIcon();
			icon.image = "http://www.laguiadetelefonos.es/css/imagenes/punto1.png";
			icon.iconAnchor = new GPoint(16, 16);
			icon.infoWindowAnchor = new GPoint(16, 0);
			icon.iconSize = new GSize(30, 30);
			var marker = new GMarker(point,{icon: icon});
			map.addOverlay(marker);
		  map.setCenter(point);		
		  map.setZoom(15); 	  
		}
	}
	);
}
 

function handleErrors(){
	   if (directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	     alert("No se ha podido encontrar a una de las direcciones especificadas en la ubicación geográfica correspondiente. Esto puede ser debido al hecho de que la dirección es relativamente nueva, o puede ser incorrecta.\nError code: " + directions.getStatus().code);
	   else if (directions.getStatus().code == G_GEO_SERVER_ERROR)
	     alert("La solicitud de direcciones o la geocodificación no ha podido ser procesado con éxito, sin embargo, la razón exacta para el fracaso no se conoce.\n Error code: " + directions.getStatus().code);
	   
	   else if (directions.getStatus().code == G_GEO_MISSING_QUERY)
	     alert("El parámetro HTTP no existe o no tenía valor. La solictud de codificador geográfico está vacía o no hay dirección de entrada.\n Error code: " + directions.getStatus().code);

	//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
	//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
	     
	   else if (directions.getStatus().code == G_GEO_BAD_KEY)
	     alert("La clave dada no es válida o no coincide con el dominio para el que se le dio. \n Error code: " + directions.getStatus().code);

	   else if (directions.getStatus().code == G_GEO_BAD_REQUEST)
	     alert("La petición de las direcciones no puede ser analizada con éxito.\n Error code: " + directions.getStatus().code);
	    
	   else alert("Ocurrió un error desconocido.");	   
}

