	var map;
	var mapInclude;
    var gdir;
    var geocoder = null;
    var addressMarker;


    function initializeMapSingle(gps, contextRoot) {
    	ll = gps.split(',');
      if (GBrowserIsCompatible()) {
    	mapInclude = new GMap2(document.getElementById("map_canvas_include"));
    	mapInclude.setMapType(G_NORMAL_MAP);
        // Centra el mapa en unas coordenadas determinadas 
        //con un nivel de zoom (15)
    	mapInclude.setCenter(new GLatLng(ll[0], ll[1]), 13);
        // Crea un punto.
        var point = new GLatLng(ll[0], ll[1]);
        // Pinta el punto en el mapa
        mapInclude.addOverlay(new GMarker(point));
        // Define los controles que se veran sobre el mapa
        mapInclude.addControl(new GLargeMapControl());
        var mapControl = new GMapTypeControl();
        mapInclude.addControl(mapControl);
        addAramonResorts(mapInclude, contextRoot);
      }
    }
    
    function initializeMap() {
      	if (GBrowserIsCompatible()) {
      	    map = new GMap2(document.getElementById("map_canvas_searchResults"));
      		map.setMapType(G_NORMAL_MAP);
	        map.addControl(new GSmallMapControl());
        	return map;
		}
	}
    
    function addLodgingMarker(map, gps, identificador, contextRoot) {
      ll = gps.split(',');
      if (GBrowserIsCompatible()) {
        var point = new GLatLng(ll[0], ll[1]);
      	if (map == null) {
        	map = initializeMap();
        }
        var marker = createMarker(point, identificador, 'default', contextRoot);
        map.addOverlay(marker);
      }
    	
    }
    
    function createMarker(point, identificador, tipoimg, contextRoot) {
		var baseIcon = new GIcon();		
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);
		
		var letteredIcon = new GIcon(baseIcon);
		switch(tipoimg){
			case "cerler":
				letteredIcon.image = contextRoot + "/img/logos_estaciones/cerler_v.gif";
				letteredIcon.iconSize = new GSize(55, 60);
				break;
			case "formigal":
				letteredIcon.image = contextRoot + "/img/logos_estaciones/formigal_v.gif";
				letteredIcon.iconSize = new GSize(71, 60);
				break;
			case "javalambre":
				letteredIcon.image = contextRoot + "/img/logos_estaciones/javalambre_v.gif";
				letteredIcon.iconSize = new GSize(82, 60);
				break;
			case "valdelinares":
				letteredIcon.image = contextRoot + "/img/logos_estaciones/valdelinares_v.gif";
				letteredIcon.iconSize = new GSize(109, 60);
				break;
			case "panticosa":
				letteredIcon.image = contextRoot + "/img/logos_estaciones/panticosa_v.gif";
				letteredIcon.iconSize = new GSize(94, 60);
				break;
			default: //Para busquedas
				letteredIcon.iconSize = new GSize(20, 34);
				letteredIcon.image = contextRoot + "/img/markers/marker" + identificador + ".png";
		} 
	
		
		// Set up our GMarkerOptions object
		markerOptions = { icon:letteredIcon };
		var marker = new GMarker(point, markerOptions);
							
		return marker;
	}
	
	function addAramonResort(map, point, identifier, contextRoot) {
		if (GBrowserIsCompatible()) {
        	var marker = createMarker(point, '', identifier, contextRoot);
        	map.addOverlay(marker);
		}
	}
	
	function addAramonResorts(map, contextRoot) {
		if (GBrowserIsCompatible()) {
			addAramonResort(map, new GLatLng(42.594570, 0.541056), "cerler", contextRoot);
			addAramonResort(map, new GLatLng(42.775590, -0.373114), "formigal", contextRoot);
			addAramonResort(map, new GLatLng(42.726563, -0.281482), "panticosa", contextRoot);
			addAramonResort(map, new GLatLng(40.125139, -1.019673), "javalambre", contextRoot);
			addAramonResort(map, new GLatLng(40.380210, -0.633360), "valdelinares", contextRoot);
		}
	}
	
	function centerMap(map, arrayX, arrayY){
		var xMedio= coordenadaMedio(arrayX,41.92475971933974);
		var yMedio= coordenadaMedio(arrayY,-0.54107666015625);
		var zOptimo= zoomOptimo(arrayX,arrayY,0.0026524443);
		map.setCenter(new GLatLng(xMedio,yMedio), zOptimo); 
	}
	
	function coordenadaMin(array_coords){
		var valor=0;		
		for(i=0;i<array_coords.length;i++){
			if(valor!=""){
				if (valor > array_coords[i]){
					valor = array_coords[i];
				}
			}else{
				valor = array_coords[i];
			}
		}
		return valor;
	}

	function coordenadaMax(array_coords){
		var valor='';
		for(i=0;i<array_coords.length;i++){
			if(valor!=""){
				if (valor < array_coords[i]){
					valor = array_coords[i];
				}
			}else{
				valor = array_coords[i];
			}
		}
		return valor;
	}

	function coordenadaMedio(array_coords, valorDefault){
		var resultado = valorDefault;
		if(array_coords.length>0){	
			var valormin = validarFloat(coordenadaMin(array_coords));
			var valormax = validarFloat(coordenadaMax(array_coords));
	
			if(valormin!='' && valormax!=''){
				if(valormax<0 && valormin<0){
					resultado = Redondear((valormin - valormax),4)/(-2) + valormin;
				}else{
					resultado = Redondear((valormax - valormin),4)/2 + valormin;
				}
				resultado = validarFloat(Redondear(resultado,7));
			}
		}
		return resultado;
	}
	
    function zoomOptimo(arrayX,arrayY,Constante){
		var Xmin= coordenadaMin(arrayX);
		var Xmax= coordenadaMax(arrayX);
		var Ymin= coordenadaMin(arrayY);
		var Ymax= coordenadaMax(arrayY);
		var aux1= Math.pow((Xmax -Xmin),2);
		var aux2= Math.pow((Ymax -Ymin),2);
		var distanciaXY = Math.sqrt(aux1+aux2);
		var	resultZoom = 17;
		
		if(distanciaXY==0){
			resultZoom = 14;
		}else{
			for(i=0;i<17-1;i++){
				if (distanciaXY > Constante * Math.pow(2,i)){
					resultZoom = 17 - 1 - i;
				}
			}
		}
	
		//Comprobemos resultado
		if (resultZoom < 0){
			resultZoom = 0;
		}
		return resultZoom;
	}
    
	function validarFloat(valor){
		if(valor!=0){
			valor = parseFloat(valor);
			if (isNaN(valor)) {
				return "";
			}
		}
		return valor;
	}
	function Redondear(x, places){
		return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);
	}
	

    
