///////////////////////////////////////////////////////////////////////////////////////
// GOOGLE MAPS
////////////////////////////////////////////////////////////////////////////////////////

	var geocoder;
	var map;
    var center;
	var gmarkers = [];
	var gmarkers_punto = [];
	numero_marcas=1;
    
	/////////////
   // Crear marca, y pogon texto 
   ////////////////
	function createMarker(point, myIcon,tipo,html) {
	  var marker = new GMarker(point,{icon:myIcon});
	  		
	  /*GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	  });*/
	  // Guardar los datos de la marca
	  gmarkers[numero_marcas] = marker;
	  gmarkers_punto[numero_marcas] = point;
	  numero_marcas++;
	  return marker;
	}


///////////////////////////////////////
// CONTROL DE ZOOMM MAS
//////////////////////////////////////
var Control_Zoom_IN = function() {	};

Control_Zoom_IN.prototype = new GControl(true);

Control_Zoom_IN.prototype.initialize = function(map) {
	var container = document.createElement("div");
	container.innerHTML = '<img style="cursor:pointer" src="images/google_maps/b_zoomin.gif";" border="0">';
	container.style.width='30px';
	container.style.height='30px';
	
	
	GEvent.addDomListener(container, "click", function() {
		map.zoomIn();
	});
	
	map.getContainer().appendChild(container);
	
	return container;
};

Control_Zoom_IN.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(5, 10));
}
/////////////////////////////


///////////////////////////////////////
// CONTROL DE ZOOMM MENOS
//////////////////////////////////////
var Control_Zoom_OUT = function() {	};

Control_Zoom_OUT.prototype = new GControl(true);

Control_Zoom_OUT.prototype.initialize = function(map) {
	var container = document.createElement("div");
	container.innerHTML = '<img style="cursor:pointer" src="images/google_maps/b_zoomout.gif";" border="0">';
	container.style.width='30px';
	container.style.height='30px';
	
	
	GEvent.addDomListener(container, "click", function() {
		map.zoomOut();
		
	});
	
	map.getContainer().appendChild(container);
	
	return container;
};

Control_Zoom_OUT.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(35, 10));
}
/////////////////////////////


///////////////////////////////////////
// CONTROL DE MAPA -- SATELITE
//////////////////////////////////////
var Control_MAPA_SATELITE = function() {	};

Control_MAPA_SATELITE.prototype = new GControl(true);

Control_MAPA_SATELITE.prototype.initialize = function(map) {
	var container = document.createElement("div");
	container.innerHTML = '<img style="cursor:pointer" src="images/google_maps/b_satelite.gif";" border="0">';
	container.style.width='30px';
	container.style.height='30px';
	
	
	GEvent.addDomListener(container, "click", function() {
		map.setMapType(G_SATELLITE_MAP);
	});
	
	map.getContainer().appendChild(container);
	
	return container;
};

Control_MAPA_SATELITE.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(130, 10));
}

///////////////////////////////////////
// CONTROL DE MAPA -- DIBUJO
//////////////////////////////////////
var Control_MAPA_DIBUJO = function() {	};

Control_MAPA_DIBUJO.prototype = new GControl(true);

Control_MAPA_DIBUJO.prototype.initialize = function(map) {
	var container = document.createElement("div");
	container.innerHTML = '<img style="cursor:pointer" src="images/google_maps/b_mapa.gif";" border="0">';
	container.style.width='30px';
	container.style.height='30px';
	
	
	GEvent.addDomListener(container, "click", function() {
		map.setMapType(G_NORMAL_MAP);
	});
	
	map.getContainer().appendChild(container);
	
	return container;
};

Control_MAPA_DIBUJO.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(50, 10));
}


/////////////////////////////
/// Al pulsar sobre una direccion, se va a la casa del mapa y hace zoom
/////////////////////////////
function pulsado_casa(latitud,longitud,numero_casa){
	
       for (pon=1;pon<numero_marcas;pon++){
  	     gmarkers[pon].hide();
	   }
	   
	   gmarkers[numero_casa].show();
	   center = new GLatLng(latitud, longitud); // Centro de melilla	  		
	   map.setCenter(center, 16); //Centro del mapa, con zoom de 16
}	

// Poner la casa a invisible
function mouse_over_casa(numero_casa){
	   for (pon=1;pon<numero_marcas;pon++){
  	     gmarkers[pon].hide();
	   }
	  gmarkers[numero_casa].show();
	  var center= gmarkers_punto[numero_casa];
  	  map.setCenter(center, 15);

	}	

// Poner la casa a visible
function mouse_out_casa(numero_casa){
	//  center = new GLatLng(35.29088891222422, -2.9477691650390625);
	//  map.setCenter(center, 13);
}
/////////////////////////////////////////////////////////////////

    //Cargar el mapa con las opciones que desses
    function load() {

      if (GBrowserIsCompatible()) {
	  
		map = new GMap2(document.getElementById("map")); // Mapa de google
		geocoder = new GClientGeocoder();
		
		// Controles de zoom
  	 	map.addControl(new Control_Zoom_IN());
		map.addControl(new Control_Zoom_OUT());
		
		// tipo del mapa
		map.addControl(new Control_MAPA_DIBUJO()); // Control del mapa de dibujo
		map.addControl(new Control_MAPA_SATELITE()); // Control del mapa de satelite
		
		
		
      // ====== Restringir el zoom a un maximo y un minimo =====
      // Get the list of map types      
      var mt = map.getMapTypes();
      // Sobreesccribe las funciones de getMinimumResolution() y getMaximumResolution() 

      for (var i=0; i<mt.length; i++) {
        mt[i].getMinimumResolution = function() {return 12;} // Zoom minimo 13
        mt[i].getMaximumResolution = function() {return 17;}  // Zoom maximo 7
      }
	  
	  
	   center = new GLatLng(35.29088891222422, -2.9477691650390625); // Centro de melilla	  		
		

		map.setCenter(center, 13); //Centro del mapa, con zoom de 13
        map.setMapType(G_SATELLITE_MAP);

////////////////////////////////////////////////////////
      // Add a move listener to restrict the bounds range
      GEvent.addListener(map, "move", function() {
        checkBounds();
      });

      // The allowed region which the whole map must be within
      var allowedBounds = new GLatLngBounds(new GLatLng(35.27239,-3.01695), new GLatLng(35.34510,-2.87172)); // Limite de la region donde se mueve
      
      // If the map position is out of range, move it back
      function checkBounds() {
        // Perform the check and return if OK
        if (allowedBounds.contains(map.getCenter())) {
          return;
        }
        // It`s not OK, so find the nearest allowed point and move there
        var C = map.getCenter();
        var X = C.lng();
        var Y = C.lat();

        var AmaxX = allowedBounds.getNorthEast().lng();
        var AmaxY = allowedBounds.getNorthEast().lat();
        var AminX = allowedBounds.getSouthWest().lng();
        var AminY = allowedBounds.getSouthWest().lat();

        if (X < AminX) {X = AminX;}
        if (X > AmaxX) {X = AmaxX;}
        if (Y < AminY) {Y = AminY;}
        if (Y > AmaxY) {Y = AmaxY;}
        //alert ("Restricting "+Y+" "+X);
        map.setCenter(new GLatLng(Y,X));
      }



///////////////////////////////////////////////////////

        // Download the data in data.xml and load it on the map. The format we
        // expect is:
        // <markers>
        //   <marker lat="37.441" lng="-122.141"/>
        //   <marker lat="37.322" lng="-121.213"/>
        // </markers>
        GDownloadUrl("coordenadas.xml", function(data) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("marker");
		  var foto_casa=1;
          for (var i = 0; i < markers.length; i++) {

		    var html           = markers[i].getAttribute("html")
		    var tipo           = markers[i].getAttribute("tipo")
		
		  // Icono de del sitio	  			
			var icon = new GIcon();
			icon.image = "images/google_maps/icono.png";
			icon.shadow = "images/google_maps/sombra.png";
			icon.iconSize = new GSize(16, 28);
			icon.shadowSize = new GSize(40, 28);
			icon.iconAnchor = new GPoint(16, 10);
			icon.infoWindowAnchor = new GPoint(16, 10);
			foto_casa=foto_casa+1;
		
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
			
			map.addOverlay(createMarker(point, icon,tipo,html));
			 gmarkers[foto_casa-1].hide();
          }
        });
      
  
      //////////////////
	// EN UN PRINCIPIO SE PONEN TODAS LAS MARCAS A INVISIBLE
	//////////////////
   	  for (pon=1;pon<numero_marcas;pon++){
  	     gmarkers[pon].hide();
	   }

	   }
   }
    //]]>



