	//clase marcador que contiene un objeto Marker emplazado en las coordenadas correspondientes
	function gestorMarcador(instanciaMapa,datosMarcador)
	{
		var marcador = this;
		marcador.instanciaMapa = instanciaMapa;
		
		marcador.marcadorIcono = "";//atributo que contiene el objeto marker de google.maps
		
		marcador.id = datosMarcador.id;
		datosMarcador.nombre ? marcador.nombre = datosMarcador.nombre : marcador.nombre = "";
		datosMarcador.descripcion ? marcador.descripcion = datosMarcador.descripcion : marcador.descripcion = "";
		marcador.estilo = "";
		datosMarcador.enlace ? marcador.enlace = datosMarcador.enlace : marcador.enlace = "";
	    marcador.coordenadas = datosMarcador.coordenadas;
		marcador.ventanaInfo = "";
		marcador.desplazable = datosMarcador.desplazable || false;
		
	
		// El tamaño del marcador se expresa como valor de coordenadas X,Y
		// donde el origen de la imagen se encuentra en la parte superior izquierda
		// es decir, que la distancia se expresa en las X hacia la derecha y las Y hacia abajo
		// (como en flash)
		
		
		// El origen de la imagen será el 0,0 y el punto de ancla de la imagén estará en el centro y abajo
		// Usaremos marcadores de ancho y alto iguales
		if (datosMarcador.imagen)
		{
			marcador.imagenMarcador = datosMarcador.imagen;
		}
		// El marcador por defecto será de 20 pixeles de nacho y 32 de alto
		else
		{
			marcador.imagenMarcador = new google.maps.MarkerImage('http://maps.gstatic.com/intl/es_es/mapfiles/marker.png',new google.maps.Size(32, 32),new google.maps.Point(0,0),new google.maps.Point(16, 32));
		}
		
					
		// La imagen que usaremos como sombra es un poco más grande que la imagen superior
		// mientras que la posición y desplazamiento son los mismos		
		marcador.sombraMarcador = new google.maps.MarkerImage('images/beachflag_shadow.png',new google.maps.Size(37, 32),new google.maps.Point(0,0),new google.maps.Point(0, 32));
			  
	    // 'formaMarcador' define el área sensible de la imagen. 
		// El atributo type puede ser un círculo un rectángulo o una polilínea
	    // El tipo 'poly' establece un elemento HTML <area> que determina una superfice
		// encerrada en un polígono construido mediante una serie de puntos X,Y
		// El punto final de coordenadas, cierra el polígino conectándolo con el punto origen
		// Si no se ha definido forma, usaremos la forma standard
		datosMarcador.forma ? marcador.formaMarcador = datosMarcador.forma : marcador.formaMarcador = {
			  coord: [1, 1, 1, 20, 18, 20, 18 , 1],
			  type: 'poly'
		};
		
		//si hay definido un icono para el marcador, lo usamos, sino, cargamos uno standard
		datosMarcador.estilo ? marcador.estilo = datosMarcador.estilo.icon : marcador.estilo = marcador.imagenMarcador;
		
		
		//creamos el html de la ventana de informacion
		htmlDescripcion = "<h2>"+marcador.nombre+"</h2>" + marcador.descripcion; 
		
		var htmlIcono = '<div class="globo" width="320"><div id="globo-texto">'+htmlDescripcion+'</div></div>';
		
		marcador.ventanaInfo = new google.maps.InfoWindow({
			content: htmlIcono
		});

			
		var crearMarker = function crearMarker(punto) 
		{
			var marc = new google.maps.Marker({
				position: marcador.coordenadas, 
				map: marcador.instanciaMapa, 
				icon: marcador.imagenMarcador,
				shape: marcador.formaMarcador,
				title:unescape(marcador.nombre),
				draggable:marcador.desplazable
			});
		
			return marc;
	    } 
		
		marcador.borrarMarker = function borrarMarker()
		{
			marcador.marcadorIcono.setMap();
		}
		
		marcador.marcadorIcono = crearMarker(marcador.coordenadas);
		
	
	}//Marcador
	
