//arrays para cada uno de los atributos:
var arrayNombre= new Array();
var arrayDireccion= new Array();
var arrayOtrosDatos= new Array();
var arrayCP= new Array();
var arrayTelefono= new Array();
var arrayPoblacion= new Array();
var arrayEstado= new Array();

//array de objetos Markers,ultimo marker pulsado, contador para generar markers
var marcadores=new Array();
var ultimoMarker=0;
var contador=0;
	
////array de objetos Capas,ultima capa pulsada
var capas=new Array();
var ultimaCapa=0;

var numeroMarkers=0;
//mapa e icono base
var map;
var baseIcon;

function scope(data) {
	var xml = GXml.parse(data);
	var markers = xml.documentElement.getElementsByTagName("farmacia");
 	//almaceno cuantos markers hay
	numeroMarkers=markers.length;
 	//parseo el XML
	for (var i = 0; i < numeroMarkers; i++) {
		arrayNombre.push(markers[i].getAttribute("nombre"));
		arrayDireccion.push(markers[i].getAttribute("direccion"));
		arrayOtrosDatos.push(markers[i].getAttribute("otrosDatos"));
		arrayCP.push(markers[i].getAttribute("CP"));
		arrayTelefono.push(markers[i].getAttribute("telefono"));
		arrayPoblacion.push(markers[i].getAttribute("poblacion"));
		arrayEstado.push(markers[i].getAttribute("estado"));
	}
	geo();
} // fin scope(data)
	

function initialize(f_fecha) {
	var f_fecha;
	if (GBrowserIsCompatible()) {
		//mapa y controles
		map = new GMap2(document.getElementById("objetoMapa"));
			
		//Quito los controles que no necesito
		/*map.removeMapType(G_NORMAL_MAP);*/
		map.removeMapType(G_SATELLITE_MAP);	
		map.removeMapType(G_HYBRID_MAP);	
		map.setCenter(new GLatLng(39.473944, -0.371726), 13);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		// iconos
		baseIcon = new GIcon(G_DEFAULT_ICON);
		baseIcon.shadow = "imagenes/sombraFarmacia.png";
		baseIcon.iconSize = new GSize(22, 22);
		baseIcon.shadowSize = new GSize(22, 22);
		baseIcon.iconAnchor = new GPoint(9, 22);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		
		// xml
		GDownloadUrl("../farmacia/xml_farmaciasguardia.cfm?f_fecha="+f_fecha,scope);
	}
} // fin initialize(f_fecha)

function createMarker(point,nombre,direccion,otrosDatos,CP,telefono,poblacion,estado) {
	var icono = new GIcon(baseIcon);	
	if (estado=="1"){
		icono.image = "imagenes/marcadorFarmacia.png";
	}else{
		icono.image="imagenes/marcadorFarmaciaGuardia.png";
	}

	// eventos y propiedades de marcador
 	markerOptions = { icon:icono };		  
	var marker = new GMarker(point, markerOptions);
	
	marcadores.push(marker);
	marker.contador=contador;

	//click
	GEvent.addListener(marker, "click", function(){ //Almacenamos estas funciones dentro del evento click
									//cambio el icono de este.
									cambiaIcono(marker,marker.contador);

									//Llama a la funcion que pinta datos		
									llamaTextos(nombre,direccion,otrosDatos,CP,telefono,poblacion,estado)
									}
	); //Fin de Click
	return marker;
} // fin createMarker(point,nombre,direccion,otrosDatos,CP,telefono,poblacion,estado)

//datos del XML	
function crear_punto(point) {
	if (!point) {															 
		/*alert(direccion + " no encontrada");*/
		/*Habria que hacer un contador porque estamos rellamando a la funcion por si google es demasiado lento devolviendo la lat y long del marker*/
		geocoder.getLatLng(direccion,function (point){crear_punto(point)});				
		
		//
		/*direccion=arrayDireccion[contador];
		otrosDatos=arrayOtrosDatos[contador];
		CP=arrayCP[contador];
		telefono=arrayTelefono[contador];
		poblacion=arrayPoblacion[contador];
		estado=arrayEstado[contador];
		
		map.addOverlay(createMarker(point,nombre,direccion,otrosDatos,CP,telefono,poblacion,estado));									
		crearElementoLista(nombre,direccion,otrosDatos,CP,telefono,poblacion,estado)
		contador++;
		geo();*/
	} else {
		nombre=arrayNombre[contador];
		// Lo modifico aqui, porque si lo hago en el xml se ve en la pagina el nombre del titular
		if (arrayDireccion[contador] == "José Grollo, 105")
			{
			//direccion="José Grollo 105";
			//map.addOverlay(createMarker((39.493981, -0.392332),nombre,direccion,otrosDatos,CP,telefono,poblacion,estado));
			var punto=new GLatLng(39.493981, -0.392332);
			point=punto;
			
			}
		else{
			direccion=arrayDireccion[contador];
		}
		otrosDatos=arrayOtrosDatos[contador];
		CP=arrayCP[contador];
		telefono=arrayTelefono[contador];
		poblacion=arrayPoblacion[contador];
		estado=arrayEstado[contador];
		
		map.addOverlay(createMarker(point,nombre,direccion,otrosDatos,CP,telefono,poblacion,estado));
		crearElementoLista(nombre,direccion,otrosDatos,CP,telefono,poblacion,estado);
		contador++;
		geo();
	} 
} // fin crear_punto(point)
	
function geo(){
	if (contador<numeroMarkers){
		// Lo modifico aqui, porque si lo hago en el xml se ve en la pagina el nombre del titular
		if (arrayDireccion[contador] == "José Grollo, 105")
			{
			direccion="Concepcion Maya Marti. José Grollo 105 loc: 46025";
			}
		else	
			{
			direccion=arrayDireccion[contador]+". "+arrayPoblacion[contador]+". "+arrayCP[contador];
			}
		geocoder = new GClientGeocoder();
		if (geocoder && direccion != null) {
			geocoder.getLatLng(direccion,function (point){crear_punto(point)});
		}else{
			//si no hubiera direccion
		}
	}
} // Fin geo()


function llamaTextos(nombre,direccion,otrosDatos,CP,telefono,poblacion,estado) {
	document.getElementById("capaResultadosTitulo").innerHTML =direccion;
	document.getElementById("capaResultadosDireccion").innerHTML = telefono;		
	if (estado==1){
		document.getElementById("capaResultadosHorario").innerHTML = "<p class='Horario12'>Farmacia abierta desde las 9 h a las 22 h de hoy</p>";
		contenido="<IMG SRC='imagenes/horas12.gif'/>";
	}else{
		document.getElementById("capaResultadosHorario").innerHTML = "<p class='Horario24'>Farmacia abierta desde las 9 h a las 9 h de mañana</p>";
		contenido="<IMG SRC='imagenes/horas24.gif'/>";
	}
	document.getElementById("capaResultadosOtrosDatos").innerHTML = direccion+" "+otrosDatos+" "+CP;
	cargaImagen(contenido);
	MostrarOcultarCapa('capaResultados','','show','relative');
} //fin llamaTextos
	
function cargaImagen(contenido){
	//document.all['capaImagen'].innerHTML = contenido;
	document.getElementById('capaImagen').innerHTML = contenido;
}

function crearElementoLista(nombre,direccion,otrosDatos,CP,telefono,poblacion,estado){	
	//identificar la capa:
	var capa=document.createElement(capa+contador);
	capa.contador=contador;
	//var h1 = document.createElement("li");
	//h1.innerHTML = direccion+" "+otrosDatos;
	//h1.className="direccion";
	//capa.appendChild(h1);
	capas.push(capa);
	//eventos de capa:
	capa.onclick=function(){
					cambiaIcono(marcadores[contador],contador);
					//Llama a la funcion que pinta datos
					llamaTextos(nombre,direccion,otrosDatos,CP,telefono,poblacion,estado);
					}
	//se aÃ±aden al listado
	document.getElementById("listado").appendChild(capa);
} // fin crearElementoLista(nombre,direccion,otrosDatos,CP,telefono,poblacion,estado) 

	
//cambia el icono del marker una vez pulsado
function cambiaIcono(marker,capa){
	
	marker.setImage("imagenes/seleccionFarmaciaEstatico.gif"); 
	//cambia el ultimo
	if (arrayEstado[ultimoMarker]=="1"){
		marcadores[ultimoMarker].setImage("imagenes/marcadorFarmacia.png"); 
	}else{
		marcadores[ultimoMarker].setImage("imagenes/marcadorFarmaciaGuardia.png"); 
	}
	document.getElementById("capa"+capa).className="capaSeleccionada";
	document.getElementById("capa"+ultimaCapa).className="direccion";
	ultimoMarker=marker.contador;
	ultimaCapa=capa;
	
} //fin cambiaIcono(marker,capa)
	
function anyadeCapa(capa){
	capas.push(capa);
} // fin anyadeCapa(capa)

//Funcion Mostrar Usuario. Posicionamiento del usuario
function mostrarUsuario(direccion) {


// creamos nuestro propio icono
   var usuario = new GIcon(G_DEFAULT_ICON);
   usuario.image = "./imagenes/usuario.gif";

// objeto GMarkerOptions
markerOptions = { icon:usuario };


 if (geocoder) {
direccion = direccion +". Valencia. Comunidad Valenciana. España" 
   geocoder.getLatLng(
     direccion,
     function(point) {
       if (!point) {
         alert(direccion + " not found");
       } else {
         map.setCenter(point, 13);
         var marker = new GMarker(point,markerOptions);
         map.addOverlay(marker);
         
       }
     }
   );
 }
}
