
var recorridos_datos_dia=Array();
var recorridos_datos=Array();
var recorridos=Array();
var recorridos_activos=Array();
var recorridos_ida=Array();
var recorridos_carrera_oficial=Array();
var recorridos_vuelta=Array();

var recorridos_procesion=Array();
var recorridos_procesion_tiempo_actual=null;

var recorridos_hora_inicio=Array();
var recorridos_hora_fin=Array();

var ventana_ya_abierta=false;

var polyCarreraOficial=null;

var colores=Array('#ff0000','#7f0000','#ff00ff','#00cc00','#ff6600','#6666ff','#9900ff','#339999','#ffcc00');
var colores_claros=Array('#ffb7b7','#dbb7b7','#ffb7ff','#b7f1b7','#ffd4b7','#d4d4ff','#e2b7ff','#c5e2e2','#fff1b7');

var trazocofradias=Array();
var cluster=null;
var polylineEncoder = null;

var mapa=false;


// marcadores

var edificios_on=false;
var edificios_datos=false;
var edificios_marcadores=Array();
var edificioIcon=null;

var marcadores_en_cluster=Array();

// recomendaciones

var recomendaciones_dia=Array();
recomendaciones_dia[0]=Array();
var recomendaciones_activas=true;

// templos

var templos_dia=Array();
templos_dia[0]=Array();
var templos_dia_negros=Array();
templos_dia_negros[0]=Array();
var templos_activos=false;


//slider
var slider = null;
var slider_activo=false;

//dias activos
var dia_activo_inicial=95;
//var dia_activo_final=102;

var estamosenhoras=false;
var tiemporealactivo=false;

var rmIntervalo;
var rmDiaActivo=0;

var MapaGeneral = {
	start: function(){
		if(GBrowserIsCompatible()){
			$('cajaboton').set('html','<a href="javascript:MapaGeneral.ventanaAbre();" class="col_der_plano_boton" style="background-image:url(../imagenes/movilyplanootones.png);"><span class="color_ciudad_1">'+txtjs['Plano interactivo']+'</span></a>');
			
			if($$('#plano_enlace_2 a').length){
				$('plano_enlace_2').setStyle('display','block');
				$$('#plano_enlace_2 a')[0].setProperty('href','javascript:MapaGeneral.ventanaAbre();')
			}
			polylineEncoder = new PolylineEncoder();
		} else {
			$('cajaboton').set('text',txtjs['Navegador no compatible con Google Maps API.']);
		}
		

		//MapaGeneral.recojePuntos();
		//MapaGeneral.recojePuntos();
	},
	ventanaAbre:function(){
		$$('#elflashgaleria').setStyle('display','none');
		//lert($$('td.combos_galeria_busqueda select').length+"---");
		$$('#combo_cofradia').setStyle('display','none');
		$$('#combo_autor').setStyle('display','none');
		$$('#combo_fecha').setStyle('display','none');


		if(ventana_ya_abierta){
			window.addEvent('resize',function(){
				MapaGeneral.ajustaTamanoyPosicion();
			});
			window.addEvent('scroll',function(){
					MapaGeneral.ajustaTamanoyPosicion();
			});
			MapaGeneral.ajustaTamanoyPosicion();
		} else {
			ventana_ya_abierta=true;
			MapaGeneral.lanzaVentana();
		}
	},
	lanzaVentana:function(){
		
		estamosenhoras=MapaGeneral.rmMiraSiEstamosEnHoras();
		//lert(estamosenhoras)
		
		// Ventana grande
		v_mapa_grande = new Element('div', {
		    'styles': {
		        'position':'absolute',
				'top':'4',
				'left':'4',
				'z-index':'190',
				'width':'0px',
				'height':'0px',
				'background-color':'#fff',
				'display':'none'
		    }
		});
		v_mapa_grande.injectInside($$('body')[0]);
		
		
		v_mapa_pestana_cerrar = new Element('div', {
			'id':'mapa_pestana_cerrar',
			'html':'<a href="javascript:MapaGeneral.ventanaCerrar();void(0);" style="font-size:11px; display:block; padding:3px 0px 0px 25px; ">'+txtjs['Cerrar el mapa']+'</a>',
		    'styles': {
		        'position':'absolute',
				'z-index':'180',
				'background': 'url("../../plantillas/_imagenes/mapa_cerrar.png") no-repeat top left',
				'width': '139px',
				'height': '18px',
				'display':'none'
		    }
		});
		v_mapa_pestana_cerrar.injectInside($$('body')[0]);
		
		v_mapa_grande_fondo = new Element('div', {
		    'styles': {
		        'position':'absolute',
				'top':'0',
				'left':'0',
				'z-index':'120',
				'width':'30px',
				'height':'30px',
				'background-color':'#000',
				'display':'none',
				'opacity':'0.37'
		    }
		});
		v_mapa_grande_fondo.injectInside($$('body')[0]);
		v_mapa_grande_fondo.addEvent('click',MapaGeneral.ventanaCerrar)
				
		//caja_con_el_mapa
		mapa_caja = new Element('div', {
			'id' : 'mapa_caja',
			'html':'<div id="mapa_caja_con_mapa" style="margin:7px 0px 0px 7px;"></div>',
		    'styles': {
		    	'float':'left',
				'width':'0px',
				'height':'0px'
		    }
		});
		mapa_caja.injectInside(v_mapa_grande);
		
		
		//barra_horas
		mapa_barra_horas = new Element('div', {
			'id' : 'mapa_barra_horas',
			'html':'<div id="scrollbar_tiemporeal"'+(estamosenhoras?'':' class="desactivado"')+'><a'+(estamosenhoras?' href="javascript:MapaGeneral.rmCambiarTiempoReal();"':'')+'>'+txtjs['tiemporeal']+'. <span>('+txtjs['tiemporeal2']+')</span> </a></div><div id="scrollbar"><div id="scrollbar_interior"><div id="bar"><div id="bar_hora"></div></div></div></div>',
		    'styles': {
		    	'float':'left',
				'width':'300px',
				'display':'block'
		    }
		});
		mapa_barra_horas.injectAfter($('mapa_caja_con_mapa'));
		
		
		
		//columna_derecha
		mapa_col_der = new Element('div', {
			'html':'',
		    'styles': {
		    	'float':'left',
				'width':'195px'
		    }
		});
		mapa_col_der.injectAfter(mapa_caja);
		
		
		mapa_col_der_cont=new Element('div', {
		    'styles': {
		    	'padding':'7px 12px 0px 12px'
		    }
		});
		mapa_col_der_cont.injectInside(mapa_col_der);
		
		

		
		//combo_dias
		texto_combo="<div style='border-top:#dbdbdb solid 2px;border-bottom:#dbdbdb solid 2px;'><label for='combo_dias' style='font-weight:bold; font-size:11px; padding:7px 0px 5px 0px;'>Selecciona el día</label><select id='combo_dias' name='combo_dias' onchange='MapaGeneral.cambiaDia(this.value);' style='font-size:11px; margin-bottom:7px;'><option value='0'";
			if(mapa_dia==0){
				texto_combo+=" selected='selected'";
			}
			texto_combo+=">--ningún día--</option>";
		mapa_dias.each(function(dia,index){
			if(index>0){
				texto_combo+="<option value='"+index+"'";
				if(index==mapa_dia){
					texto_combo+=" selected='selected'";
				}
				texto_combo+=">"+dia+"</option>";
			}
		});
		texto_combo+="</select></div>";
		mapa_combo_dias=new Element('div', {
			
			'html':texto_combo
		});
		mapa_combo_dias.injectInside(mapa_col_der_cont);
		
		$$('label[for:combo_dias]')[0].setStyles({
			'display':'block',
			'font-weight':'bold'
		})
		
		//flecha
		mapa_flecha_aviso=new Element('div', {
			'id' : 'mapa_flecha_aviso',
			'styles' : {
				'display':'none'
			},
			'html' : '<div></div>'
		});
		mapa_flecha_aviso.injectAfter(mapa_combo_dias);
		$$('#mapa_flecha_aviso div')[0].setStyle('opacity','0');
		
		
		
		
		
		
		// RECOMENDACIONES
		
		mapa_listado_recomendaciones=new Element('div', {
			'id' : 'mapa_listado_recomendaciones',
			'html':'<a href="javascript:MapaGeneral.recomendacionesCambia();void(0);" style="display:block; padding:63px 10px 0px 47px; font-size:11px;">'+txtjs['Recomendaciones del guia']+'.</a>'
		});
		mapa_listado_recomendaciones.injectInside(mapa_col_der_cont);

		
		// COFRADIAS

		mapa_listado_cofradias=new Element('div', {
			'id' : 'mapa_listado_cofradias',
			'html':'<p></p><span class="tapa_blanco"></span><div id="mapa_listado_cofradias_checkboxs"></div>',
		    'styles': {
		    	// 'padding':'10px'
		    }
		});
		mapa_listado_cofradias.injectAfter(mapa_listado_recomendaciones);
		
		
		
		
		// Templos

		mapa_listado_templos=new Element('div', {
			'id' : 'mapa_listado_templos',
			'html':'<a href="javascript:MapaGeneral.templosCambia();void(0);" style="display:block; padding:5px 10px 0px 47px; font-size:11px;">'+txtjs['Templos fuera de recorridos']+'.</a>',
			'class':'inactivo'
		});
		mapa_listado_templos.injectInside(mapa_col_der_cont);
		
		
		// Edificios

		mapa_listado_edificios=new Element('div', {
			'id' : 'mapa_listado_edificios',
			'html':'<a href="javascript:MapaGeneral.edificiosCambia();void(0);" style="display:block; padding:5px 10px 0px 47px; font-size:11px;">'+txtjs['Edificios y monumentos']+'.</a>',
			'class':'inactivo'
		});
		mapa_listado_edificios.injectInside(mapa_col_der_cont);
		
		// Edificios

		mapa_listado_ayuda=new Element('div', {
			'id' : 'mapa_listado_ayuda',
			'html':'<a href="recorridos_plano_ayuda.php" onclick="MapaGeneral.ayudaLanza(this.href);return false;" style="font-size:11px; font-weight:bold;">'+txtjs['Ayuda y leyenda']+'</a>'
		});
		mapa_listado_ayuda.injectInside(mapa_col_der_cont);		
		
		
		
		MapaGeneral.ajustaTamanoyPosicion();
		
		MapaGeneral.cargaMapa();
		
		MapaGeneral.cargaCarreraOficial();
		
		MapaGeneral.cargaTrazadosDia();
		
		
		window.addEvent('resize',function(){
			MapaGeneral.ajustaTamanoyPosicion();
		});
		window.addEvent('scroll',function(){
				MapaGeneral.ajustaTamanoyPosicion();
		});
		
		// Cluster de marcadores

		clusterIcon = new GIcon();
		clusterIcon.image="../../plantillas/_imagenes/mapa_ico_mas.png";
		clusterIcon.iconSize = new GSize(26, 21);
		clusterIcon.shadow = "../../plantillas/_imagenes/mapa_ico_mas_shadow.png";
		clusterIcon.iconAnchor = new GPoint(9, 20);

		cluster = new ClusterMarker(mapa, { clusterMarkerIcon:clusterIcon }); //, { markers:nose, } /, { clusterMarkerIcon:clusterIcon }

		// Iconos de marcadores
		edificioIcon = new GIcon(G_DEFAULT_ICON);
		edificioIcon.image="../../plantillas/_imagenes/mapa_ico_edifcio.png";
		// edificioIcon.iconSize = new GSize(32, 23);
		edificioIcon.shadow = "../../plantillas/_imagenes/mapa_ico_edifcio_shadow.png";
		// edificioIcon.iconAnchor = new GPoint(8, 23);

		recIcon = Array();
		for(aux=0;aux<=8;aux++){
			recIcon[aux] = new GIcon(G_DEFAULT_ICON);
			recIcon[aux].image="../../plantillas/_imagenes/mapa_ico_rec_"+(aux+1)+".png";
			// recIcon[aux].iconSize = new GSize(35, 23);
			recIcon[aux].shadow = "../../plantillas/_imagenes/mapa_ico_rec_shadow.png";
			// recIcon[aux].iconAnchor = new GPoint(11, 21);			
		}

		temploIconGenerico = new GIcon(G_DEFAULT_ICON);
		temploIconGenerico.image="../../plantillas/_imagenes/mapa_ico_templo.png";
		// temploIconGenerico.iconSize = new GSize(25, 20);
		temploIconGenerico.shadow = "../../plantillas/_imagenes/mapa_ico_templo_shadow.png";
		// temploIconGenerico.iconAnchor = new GPoint(6, 20);

		temploIcon = Array();
		for(aux=0;aux<=8;aux++){
			temploIcon[aux] = new GIcon(G_DEFAULT_ICON);
			temploIcon[aux].image="../../plantillas/_imagenes/mapa_ico_templo_"+(aux+1)+".png";
			// temploIcon[aux].iconSize = new GSize(25, 20);
			temploIcon[aux].shadow = "../../plantillas/_imagenes/mapa_ico_templo_shadow.png";
			// temploIcon[aux].iconAnchor = new GPoint(6, 20);
		}
		
		
		
		
		//flecha aviso
		if(!mapa_dia){
			MapaGeneral.flechaAviso();
		}
		
	},















	ajustaTamanoyPosicion:function(){
		//ajusta_tamaños y posicion
		
		
		v_mapa_grande_fondo.setStyle('display','block');
		v_mapa_grande_fondo.setStyle('width',window.getSize().x);
		v_mapa_grande_fondo.setStyle('height',window.getScrollHeight());
		
		var ventana_altura=41;
		var ventana_margen=18;
		var ventana_col_der_ancho=195;
		
		v_mapa_grande.setStyle('display','block');
		v_mapa_grande.setStyle('width',(window.getSize().x-(ventana_margen*2))+"px");
		v_mapa_grande.setStyle('height',(window.getSize().y-ventana_altura-ventana_margen)+"px");
		v_mapa_grande.setStyle('top',(window.getScroll().y+ventana_altura)+"px");
		v_mapa_grande.setStyle('left',(ventana_margen)+"px");
		
		
		
		
		mapa_caja.setStyle('width',(window.getSize().x-ventana_col_der_ancho-(ventana_margen*2))+"px");
		
		// if(mapa_dia>0){
		// 	mapa_caja_con_mapa.setStyle('height',(window.getSize().y-ventana_margen-ventana_altura-80-7)+"px");
		// 	mapa_caja.setStyle('height',(window.getSize().y-ventana_altura-ventana_margen-80)+"px");
		// } else {
		// 	mapa_caja_con_mapa.setStyle('height',(window.getSize().y-ventana_margen-ventana_altura-7-7)+"px");
		// 	mapa_caja.setStyle('height',(window.getSize().y-ventana_altura-ventana_margen-7)+"px");
		// }
		
		if(slider_activo){
			//mapa_barra_horas.setStyle('height',"80px");
			mapa_caja_con_mapa.setStyle('height',(window.getSize().y-ventana_margen-ventana_altura-80-7)+"px");
			mapa_caja.setStyle('height',(window.getSize().y-ventana_altura-ventana_margen-80)+"px");
		} else {
			//mapa_barra_horas.setStyle('height',"80px");
			mapa_caja_con_mapa.setStyle('height',(window.getSize().y-ventana_margen-ventana_altura-30-7-7)+"px");
			mapa_caja.setStyle('height',(window.getSize().y-ventana_altura-ventana_margen-30-7)+"px");
		}
		
		
		
		mapa_barra_horas.setStyle('width',(window.getSize().x-ventana_col_der_ancho-(ventana_margen*2))+"px");
		
		
		v_mapa_pestana_cerrar.setStyle('display','block');
		v_mapa_pestana_cerrar.setStyle('top',(window.getScroll().y+ventana_altura-18)+'px');
		v_mapa_pestana_cerrar.setStyle('left',(window.getSize().x-ventana_margen-139)+"px");
		
		if(mapa){
			mapa.checkResize();
		}
		
		if(slider_activo){
			MapaGeneral.barraActiva();
		} else {
			MapaGeneral.barraOculta();
		}
		
	},
	
	ventanaCerrar:function(){
		$$('#elflashgaleria').setStyle('display','block');
		$$('#combo_cofradia').setStyle('display','block');
		$$('#combo_autor').setStyle('display','block');
		$$('#combo_fecha').setStyle('display','block');
		window.removeEvents('resize');
		window.removeEvents('scroll');
		v_mapa_grande_fondo.setStyle('display','none');
		v_mapa_grande.setStyle('display','none');
		v_mapa_pestana_cerrar.setStyle('display','none');

	},
	
	cargaMapa:function(){
		mapa = new GMap2(document.getElementById("mapa_caja_con_mapa"));
		
		mapa.addControl(new GLargeMapControl());
		mapa.addControl(new GMapTypeControl());
		//mapa.addMapType(G_SATELLITE_3D_MAP);
		mapa.setCenter(new GLatLng(mapa_centro[0],mapa_centro[1]), 15);
		mapa.enableScrollWheelZoom();
		
	},
	
	cambiaDia:function(dia){
		//quita aviso flecha
		mapa_flecha_aviso.setStyle('display','none');
		
		mapa_dia=dia;
		MapaGeneral.recomendacionesLimpia();
		MapaGeneral.templosLimpia();
		if(mapa_dia>0){
			if(recorridos_datos_dia[mapa_dia]){
				MapaGeneral.borraRecorridos();
				recorridos_datos_dia[mapa_dia].each(function(datos,indice){
					recorridos_datos[indice]=datos;
					recorridos_activos[indice]=true;
					recorridos[indice]=MapaGeneral.dibujaTrazado(indice);
				});
				MapaGeneral.centraLosTrazados();
				
				
				MapaGeneral.recomendacionesActualiza();
				MapaGeneral.templosActualiza();
				slider_activo=true;
				MapaGeneral.ajustaTamanoyPosicion();
				
				
				// recomendaciones_dia[mapa_dia].each(function(datos,indice){
				// 	datos.each(function(punto_recomendacion,rec_indice){
				// 		MapaGeneral.recomendacionGenera(punto_recomendacion,indice);
				// 	});
				// });
			} else {
				slider_activo=false;
				MapaGeneral.borraRecorridos();
				$('mapa_listado_cofradias_checkboxs').setStyle('display','block');
				$('mapa_listado_cofradias_checkboxs').set('html','<span class="cargando"></span>');
				MapaGeneral.cargaTrazadosDia();
				MapaGeneral.ajustaTamanoyPosicion();
			}
		} else {
			MapaGeneral.borraRecorridos();
			MapaGeneral.templosActualiza();
			slider_activo=false;
			MapaGeneral.ajustaTamanoyPosicion();
			
		}
	},





	barraActiva:function(){
		// mapa_barra_horas.setStyle('display','block');
		$('scrollbar').setStyle('display','block');
		MapaGeneral.makeScrollbar($('scrollbar_interior'),$('bar'),false);	
	},


	barraOculta:function(){
		//mapa_barra_horas.setStyle('display','none');
		$('scrollbar').setStyle('display','none');
	},



	ponInfoWindow:function(marcador,id,tipo){
		//lert("../../clases/datos_plano.php?a=iw_"+tipo+"&l="+mapa_idioma+"&c="+mapa_ciudad+"&i="+id);
		//location.href="../../clases/datos_plano.php?a=iw_"+tipo+"&c="+mapa_ciudad+"&i="+id;
		 GEvent.addListener(marcador,"click", function() {
		 	marcador.openExtInfoWindow(
		 		mapa,
		 		"simple_example_window",
		 		"<div>Cargando...</div>",
		               {
		                 ajaxUrl: "../../clases/datos_plano.php?a=iw_"+tipo+"&l="+mapa_idioma+"&c="+mapa_ciudad+"&i="+id, 
		                 beakOffset: 3
		               }
		 	); 
		 	    });
		 //return marcador;
	},


	// hazMarcador:function(objeto,tipo){
	// 	var baseIcon = new GIcon(G_DEFAULT_ICON);
	// 	baseIcon.iconSize = new GSize(16, 16);
	// 	baseIcon.shadow = null;
	// 	baseIcon.iconAnchor = new GPoint(8, 8);
	// 	var imagenes=Array();
	// 	imagenes["edificio"]="../plantillas/_imagenes/mapa_ico_edifcio.png";
	// 	imagenes["recomendacion"]="_imagenes/g_icon_rojo.png";
	// 	imagenes["templo"]="_imagenes/g_icon_verde.png";
	// 	baseIcon.image=imagenes[tipo];
	// 	
	// 	var latlng_actual=new GLatLng(objeto[1]*1,objeto[2]*1);
	// 	
	// 	var marcador_actual=new GMarker(latlng_actual, {  icon : baseIcon  }); //title: objeto[3],
	// 	
	// 	GEvent.addListener(marcador_actual,"click", function() {
	// 	    //var myHtml = "<b>" + objeto[3] + "</b><br/>Pa que veas";
	// 	    var ajaxurl = "../clases/datos_plano.php?a=iw_"+tipo+"&c="+mapa_ciudad+"&i="+objeto[0];
	// 	    //window.location.href="../clases/"+ajaxurl;
	// 	    //mapa.openInfoWindowHtml(latlng_actual, myHtml);
	// 	marcador_actual.openExtInfoWindow(
	// 		mapa,
	// 		"simple_example_window",
	// 		"<div>Cargando...</div>",
	//               {
	//                 ajaxUrl: ajaxurl, 
	//                 beakOffset: 3
	//               }
	// 
	// 	); 
	// 
	//     });
	//     return marcador_actual;
	// },
	
	edificiosCambia:function(){
		if(edificios_on){
			edificios_on=false;
			$('mapa_listado_edificios').set('class','inactivo');
			MapaGeneral.edificiosOculta();
		} else {
			edificios_on=true;
			
			//temporal
			// edificios_datos=false;
			// edificios_marcadores=Array();
			
			if(!edificios_datos){
				//lert("cargando");
				MapaGeneral.edificiosCarga();
				$('mapa_listado_edificios').set('class','cargando');
			} else {
				MapaGeneral.edificiosMuestra();
				$('mapa_listado_edificios').set('class','');
				//lert("Sin cargar")
			}
		}
	},
	
	edificiosCarga:function(){
		var myRequest = new Request({
			method: 'post',
			url: '../../clases/datos_plano.php',
			onRequest: function() {  },  
			onFailure: function(xhr){
				alert("Error al cargar los datos...");
			},
			onSuccess: function(response) {
				//lert("si "+responsetext);
				edificios_datos = JSON.decode(response);
				
				edificios_datos.each(function(objeto,index){
					var latlng_actual=new GLatLng(objeto[1]*1,objeto[2]*1);
					marcador_actual=new GMarker(latlng_actual, {  icon : edificioIcon  });
					MapaGeneral.ponInfoWindow(marcador_actual,objeto[0],'edificio');
					edificios_marcadores.push(marcador_actual);
				});
				//lert(edificios_marcadores.length)
				MapaGeneral.edificiosMuestra();
				$('mapa_listado_edificios').set('class','');
			} 
		});
		//lert('a=t&c='+ciudad+'&i='+id_cofradia);
		myRequest.send('a=ed&c='+mapa_ciudad);
	},
	
	edificiosMuestra:function(){
		marcadores_en_cluster=marcadores_en_cluster.concat(edificios_marcadores);
		MapaGeneral.clusterActualiza();
	},
	edificiosOculta:function(){
		// edificios_marcadores.each(function(objeto,index){
		// 	marcadores_en_cluster=marcadores_en_cluster.erase(objeto);
		// });
		//marcadores_en_cluster.removeMarkers();
		marcadores_en_cluster=Array();
		cluster.removeMarkers();
		cluster.refresh(true);
	},
	
	
	
	clusterActualiza:function(){
		cluster.removeMarkers();
		cluster.addMarkers(marcadores_en_cluster);
		cluster.refresh(true);
	},
	
	

	
// 	recojePuntos:function(){
// 		
// 		marcadores['edificio']=Array();
// 		marcadores['recomendacion']=Array();
// 		marcadores['templo']=Array();
// 
// 
// 		var clusterIcon = new GIcon(G_DEFAULT_ICON);
// 		clusterIcon.iconSize = new GSize(16, 16);
// 		clusterIcon.shadow = null;
// 		clusterIcon.iconAnchor = new GPoint(8, 8);
// 		clusterIcon.image="_imagenes/g_icon_plus.png";
// 
// 
// 		cluster = new ClusterMarker(mapa, { clusterMarkerIcon:clusterIcon }); //, { markers:nose, }
// 		
// 		// nose2=[];
// 		// nose2.push(new GMarker(new GLatLng(2,0)));
// 		// nose2.push(new GMarker(new GLatLng(2,1)));
// 		// lala=nose2[0];
// 		// //lert((typeof(window['lala']))+" p2p2p2");
// 		// cluster.addMarkers(nose2);
// 		
// 		
// 		
// 		
// //new MarkerManager(mapa);
// 		marcadores.each(function(marcador,tipo){
// 			//lert('ddd'+tipo+":"+puntos[tipo].length);
// 			puntos[tipo].each(function(punto,index){
// 				marcador_actual=MapaGeneral.hazMarcador(punto,tipo);
// 				marcador.push(marcador_actual);
// 			});
// 			//lert('Marcador: '+tipo+":"+marcador.length);
// 			
// 		});
// 		//lert(marcadores['edificio'].length)
// 		MapaGeneral.ponVentanasTabs();
// 		
// 	},
	
	// ponVentanasTabs:function(){
	// 	
	// 	GEvent.addDomListener(mapa, 'extinfowindowupdate',function(){
	// 		
	//             var windowContent = document.getElementById("custom_info_window_red_contents");
	//             //var tabs = new Array(document.getElementById("tab0"),document.getElementById("tab1"));
	//             tabs=$$('div.tabs div.tabs_header div.tab');
	//             if( tabs.length > 0 ){
	//               var tabContentsArray = new Array(tabs.length);
	//               for( i=0; i < tabs.length; i++){
	//                 tabContentsArray[i] = document.getElementById("tab"+i+"_content");
	//                 if( i > 0){
	//                   tabContentsArray[i].style.display = "none";
	//                   tabContentsArray[i].style.position = "absolute";
	//                 }
	//                 tabs[i].setAttribute("name", i.toString());
	//               
	//                 GEvent.addDomListener(tabs[i],"click",function(){
	//                   var tabIndex = this.getAttribute("name");
	//                 
	//                   for(tabContentIndex=0; tabContentIndex < tabs.length; tabContentIndex++){
	//                     if( tabContentIndex == tabIndex ){
	//                     	tabContentsArray[tabContentIndex].style.display = "block";
	//             			tabContentsArray[tabContentIndex].style.position = "relative";
	//                     }else{
	//                     	tabContentsArray[tabContentIndex].style.display = "none";
	//                     	tabContentsArray[tabContentIndex].style.position = "absolute";
	//                     }
	//                   }
	//                   mapa.getExtInfoWindow().resize();
	//                 });
	//                 mapa.getExtInfoWindow().resize();
	//               }
	//             }
	//           });
	// 
	// },
	
	// marcadoresCambia:function(tipo,accion){     //////////////////////////////////// E S E N C I A L !!!!!!!!!
	// 	
	// 	if(accion=='ocultar'){
	// 		marcadores_activos[tipo]=false;
	// 	} else if(accion=='mostrar'){
	// 		marcadores_activos[tipo]=true;
	// 	}
	// 	
	// 	cluster.removeMarkers();
	// 	marcadores.each(function(marcadores_tipo,tipo_actual){
	// 		if(marcadores_activos[tipo_actual]){
	// 			//lert("nose"+marcadores_tipo.length);
	// 			//lert((typeof(window['marcadores_tipo']))+" sssss");
	// 			//lert(marcadores_tipo[0].getTitle()+" ssssssss");
	// 			cluster.addMarkers(marcadores_tipo);
	// 		}
	// 	});
	// 	cluster.fitMapToMarkers();
	// },
	
	
	
	
	
	
	
	
	// Trazados
	conviertePuntosATrazo:function(puntos){
		var trazo_tratado=Array();
		puntos.each(function(objeto){
			trazo_tratado.push(new GLatLng(objeto[0],objeto[1]));
		});
		return trazo_tratado;
	},
	cargaTrazado:function(indice){    //////////////////////////////////// E S E N C I A L !!!!!!!!!
		var myRequest = new Request({
			method: 'post',
			url: '../../clases/datos_plano.php',
			onRequest: function() {  },  
			onFailure: function(xhr){
				alert("Error al cargar los datos...");
			},
			onSuccess: function(response) {
				//lert("si "+responsetext);
				var datos = JSON.decode(response);
				recorridos_activos[indice]=true;
				recorridos_datos[indice]['trazado_ida']=datos.recorrido_ida;
				recorridos_datos[indice]['trazado_carrera_oficial']=datos.recorrido_carrera_oficial;
				recorridos_datos[indice]['trazado_vuelta']=datos.recorrido_vuelta;
				
				recorridos_datos[indice]['trazado']=recorridos_datos[indice]['trazado_ida'].concat(recorridos_datos[indice]['trazado_carrera_oficial'],recorridos_datos[indice]['trazado_vuelta']);
				//recorridos_datos[indice]['recomendaciones']=datos.recomendaciones;
				// recomendaciones
				
				recomendaciones_dia[mapa_dia][indice]=Array();
				
				datos.recomendaciones.each(function(punto_recomendacion,rec_indice){
					MapaGeneral.recomendacionGenera(punto_recomendacion,indice);
				});
				
				
				//templo
				//lert(datos.templo)
				MapaGeneral.temploGenera(datos.templo,indice,mapa_dia);
				
				//lert(recorridos_datos[indice]['trazado']);
				
				//lert(recorridos_datos[indice]['trazado']);
				recorridos[indice]=MapaGeneral.dibujaTrazado(indice);
				recorridos_ida[indice]=polylineEncoder.dpEncodeToGPolyline(MapaGeneral.conviertePuntosATrazo(recorridos_datos[indice]['trazado_ida']));
				recorridos_carrera_oficial[indice]=polylineEncoder.dpEncodeToGPolyline(MapaGeneral.conviertePuntosATrazo(recorridos_datos[indice]['trazado_carrera_oficial']));
				recorridos_vuelta[indice]=polylineEncoder.dpEncodeToGPolyline(MapaGeneral.conviertePuntosATrazo(recorridos_datos[indice]['trazado_vuelta']));
				MapaGeneral.miraSiRecorridosDiaCargados();
			} 
		});
		//lert('a=t&c='+ciudad+'&i='+id_cofradia);
		myRequest.send('a=t&c='+mapa_ciudad+'&i='+recorridos_datos[indice]['id']);
	},
	miraSiRecorridosDiaCargados:function(){
		todos=true;
		recorridos_activos.each(function(recorrido_activo,index){
			if(!recorrido_activo){
				todos=false;
			}
		});
		if(todos){
			recorridos_datos_dia[mapa_dia]=recorridos_datos;
			MapaGeneral.centraLosTrazados();
			MapaGeneral.recomendacionesActualiza();
			MapaGeneral.templosActualiza();
			slider_activo=true;
			MapaGeneral.ajustaTamanoyPosicion();
			//lert(recorridos_datos[0].hora1+","+recorridos_datos[0].hora2+","+recorridos_datos[0].hora3+","+recorridos_datos[0].hora4);
			//lert(recorridos_hora_inicio+","+recorridos_hora_fin);
		}
	},
	borraRecorridos:function(){
		recorridos_procesion.each(function(recorrido_procesion_actual){
			mapa.removeOverlay(recorrido_procesion_actual);
		});
		
		recorridos.each(function(recorrido,index){
			mapa.removeOverlay(recorrido);
		});
		if(polyCarreraOficial){
			mapa.removeOverlay(polyCarreraOficial);
		}
		recorridos=new Array();
		recorridos_activos=new Array();
		recorridos_datos=new Array();
		$('mapa_listado_cofradias_checkboxs').set('html','');
		$('mapa_listado_cofradias_checkboxs').setStyle('display','none');
		$('mapa_listado_recomendaciones').setStyle('display','none');
		$$('#mapa_listado_cofradias p').set('html','');
		
	},
	cargaTrazadosDia:function(){
		//polyCarreraOficial=null;
		var myRequest = new Request({
			method: 'post',
			url: '../../clases/datos_plano.php',
			onRequest: function() {  },  
			onFailure: function(xhr){
				alert("Error al cargar los datos...");
			},
			onSuccess: function(response) {
				//lert("si "+response);
				var datos = JSON.decode(response);
				recorridos_hora_inicio[mapa_dia]=2000;
				recorridos_hora_fin[mapa_dia]=0;
				recomendaciones_dia[mapa_dia]=Array();
				templos_dia[mapa_dia]=Array();
				templos_dia_negros[mapa_dia]=Array();
				datos.cofradias.each(function(cofradia,index){
					recorridos_activos[index]=false;
					recorridos_datos[index]={'id':cofradia.id,'nombre':cofradia.nombre,'indice':index,'hora1':cofradia.hora1,'hora2':cofradia.hora2,'hora3':cofradia.hora3,'hora4':cofradia.hora4};
					recorridos_hora_inicio[mapa_dia]=cofradia.hora1<recorridos_hora_inicio[mapa_dia]?cofradia.hora1*1:recorridos_hora_inicio[mapa_dia];
					recorridos_hora_fin[mapa_dia]=cofradia.hora4>recorridos_hora_fin[mapa_dia]?cofradia.hora4*1:recorridos_hora_fin[mapa_dia];
					MapaGeneral.cargaTrazado(index);
				});
				//
				//colores[index]
			} 
		});
		//lert('a=t&c='+ciudad+'&i='+id_cofradia);
		myRequest.send('a=ts&c='+mapa_ciudad+'&d='+mapa_dia);
		
	},
	dibujaTrazado:function(indice){    //////////////////////////////////// E S E N C I A L !!!!!!!!!
		var trazo=MapaGeneral.conviertePuntosATrazo(recorridos_datos[indice]['trazado']);
		
		
		//var poligono_actual=new GPolyline(trazo, color, 5);
		var poligono_actual=polylineEncoder.dpEncodeToGPolyline(trazo, colores[indice], 3, 0.4);
		// GEvent.addListener(poligono_actual,"click", function(point) {
		//     var myHtml = "<b>" + cofradia_nombre + "</b>";
		//     mapa.openInfoWindowHtml(point, myHtml);
		// 	    });
		// 	    
		mapa.addOverlay(poligono_actual);
		return poligono_actual;
	},
	centraLosTrazados:function(){
		//lert("centrando");




		//lert(Browser.Engine.trident);
		//if(!Browser.Engine.trident){
			// recorridos.each(function(recorrido,index){
			// 	bounds=recorrido.getBounds();
			// 	NE=bounds.getNorthEast();
			// 	
			// 	
			// 	
			// 	
			// 	top=NE.lat();
			// 	
			// 	right=NE.lng();
			// 	
			// 	
			// 	SW=bounds.getSouthWest();
			// 	bottom=SW.lat();
			// 	left=SW.lng();
			// 	
			// 	if(index==0){
			// 		//lert(top+","+right+","+bottom+","+left);
			// 		max_top=top;
			// 		max_right=right;
			// 		min_bottom=bottom;
			// 		min_left=left;
			// 	} else {
			// 		max_top=top>max_top?top:max_top;
			// 		max_right=right>max_right?right:max_right;
			// 		min_bottom=bottom<min_bottom?bottom:min_bottom;
			// 		min_left=left<min_left?left:min_left;
			// 	}
			// });
			// //lert(max_top+","+max_right+","+min_bottom+","+min_left);
			// boundsParaMapa=new GLatLngBounds(new GLatLng(min_bottom, min_left),new GLatLng(max_top, max_right));
			// mapa.setZoom(mapa.getBoundsZoomLevel(boundsParaMapa));
			// mapa.setCenter(boundsParaMapa.getCenter());
		//}
		//lert("todo cargado");
		if(polyCarreraOficial){
			MapaGeneral.dibujaCarreraOficial();
		}
		MapaGeneral.ponCheckboxesCofradias();
			
	},
	
	cargaCarreraOficial:function(){
		var myRequest = new Request({
			method: 'post',
			url: '../../clases/datos_plano.php',
			onRequest: function() {  },  
			onFailure: function(xhr){
				alert("Error al cargar los datos...");
			},
			onSuccess: function(response) {
				//lert("si "+response);
				var datos = JSON.decode(response);
				
				var trazo=MapaGeneral.conviertePuntosATrazo(datos.carreraoficial);
				
				polyCarreraOficial=polylineEncoder.dpEncodeToGPolyline(trazo, '#999999', 6, 1);
				
				todos=true;
				recorridos_activos.each(function(recorrido_activo,index){
					if(!recorrido_activo){
						todos=false;
					}
				});
				if(todos && recorridos_activos.length>0){
					//lert("dibujando mapa porque está cargado");
					MapaGeneral.dibujaCarreraOficial();
				}
				
			} 
		});
		//lert('a=t&c='+ciudad+'&i='+id_cofradia);
		myRequest.send('a=co&c='+mapa_ciudad);
	},
	
	dibujaCarreraOficial:function(){
		mapa.addOverlay(polyCarreraOficial);
		
		//lert('dibujando carrera oficial');
	},
	
	
	ponCheckboxesCofradias:function(){
		//lert("poniendo checkboxes");
		$('mapa_listado_recomendaciones').setStyle('display','block');
		$$('#mapa_listado_cofradias p').set('html',txtjs["Recorridos de las cofradías de este dia"]+':');
		
		var texto_checkboxes="";
		recorridos_datos.each(function(datos,indice){
			texto_checkboxes+='<div class="activo" id="cof_'+indice+'" class="cof_'+indice+'_ac" ><a href="javascript:MapaGeneral.cofCambioVisibilidad('+indice+');void(0);">'+datos.nombre+'</a></div>'
		});
		$('mapa_listado_cofradias_checkboxs').setStyle('display','block');
		$('mapa_listado_cofradias_checkboxs').set('html',texto_checkboxes);
		if(!Browser.Engine.trident){
			$$('div#mapa_listado_cofradias_checkboxs div').addEvent('mouseover',function(){
				//mapa.removeOverlay(polyCarreraOficial);
				//this.getElements('a').setStyle('color',this.getStyle('background-color'));
				recorridos[this.get('id').substr(4)*1].setStrokeStyle({'weight':6});
				//MapaGeneral.dibujaCarreraOficial();
				if(typeof(window['tempAjustaAnchoCarreraOficial'])!='undefined'){
					tempAjustaAnchoCarreraOficial=$clear(tempAjustaAnchoCarreraOficial);
				}
			});
			$$('div#mapa_listado_cofradias_checkboxs div').addEvent('mouseleave',function(){
				//this.getElements('a').setStyle('color',null);
				//mapa.removeOverlay(polyCarreraOficial);
				recorridos[this.get('id').substr(4)*1].setStrokeStyle({'weight':3});
				polyCarreraOficial.setStrokeStyle({'weight':8});
				tempAjustaAnchoCarreraOficial=MapaGeneral.ajustaAnchoCarreraOficial.delay(100); //para evitar que la carrera oficial se quede detrás
				
			});
		}
		
	},
	ajustaAnchoCarreraOficial:function(){
		polyCarreraOficial.setStrokeStyle({'weight':8});
		MapaGeneral.procesionesPonEnHora.delay(100);
		
	},
	cofCambioVisibilidad:function(indice){
		if(recorridos[indice].isHidden()){
			recorridos[indice].show();
			$$('div#mapa_listado_cofradias_checkboxs div')[indice].set('class','activo');
			//$$('div#mapa_listado_cofradias_checkboxs div')[indice].setStyle('background-color',colores[indice]);

		} else {
			recorridos[indice].hide();
			$$('div#mapa_listado_cofradias_checkboxs div')[indice].set('class','inactivo');
			//$$('div#mapa_listado_cofradias_checkboxs div')[indice].setStyle('background-color',colores_claros[indice]);
		}
		
	},
	
	
	
	
	
	// Recomendaciones
	
	recomendacionGenera:function(datos,indice){
		//lert("A: "+recomendaciones_dia[mapa_dia][indice].length);
		iconoActual=recIcon[indice];
		marcador=new GMarker(new GLatLng(datos[1],datos[2]),iconoActual);
		MapaGeneral.ponInfoWindow(marcador,datos[0],'recomendacion');
		 // GEvent.addListener(marcador, 'click', function(){ 
		 // 	        marcador.openExtInfoWindow(
		 // 	          mapa,
		 // 	          "simple_example_window",
		 // 	          "I'm some HTML content that will go in the simple example's ExtInfoWindow.",
		 // 	          {beakOffset: 3}
		 // 	        ); 
		 // 	      });

		
		//lert("B: "+recomendaciones_dia[mapa_dia][indice].length);
		
		
		  //marker = new GMarker( new GLatLng(43, -120));
		  // GEvent.addListener(marcador, 'click', function(){ 
		  // 	alert("quepaisha"+marcador.getPoint());
		  //   marcador.openExtInfoWindow(
		  //   		      mapa,
		  //   		      "simple_example_window",
		  //   		      "I'm some HTML content that will go in the initial example's ExtInfoWindow.",
		  //   		      {beakOffset: 3}
		  //    		    ); 
		  // });
		  //mapa.addOverlay(marker);
		  
		  recomendaciones_dia[mapa_dia][indice].push(marcador);

	},
	
	recomendacionesCambia:function(){
		recomendaciones_activas=recomendaciones_activas?false:true;
		if(recomendaciones_activas){
			$('mapa_listado_recomendaciones').set('class','');
		} else {
			$('mapa_listado_recomendaciones').set('class','inactivo');
		}
		MapaGeneral.recomendacionesActualiza();
	},
	
	recomendacionesActualiza:function(){
		//mapa.addOverlay(recomendaciones_dia[mapa_dia][indice][rec_indice]);	
		MapaGeneral.recomendacionesLimpia();
		if(recomendaciones_activas){
			recomendaciones_dia.each(function(datos_dia,indice){
				//lert("Dia:"+indice+" ("+mapa_dia+"), "+datos_dia.length);
				 if(indice==mapa_dia){
					datos_dia.each(function(datos_cofradia,indice_cofradia){
						//lert("Cofradía: "+indice_cofradia);
						datos_cofradia.each(function(datos_marcador,indice_marcador){
							mapa.addOverlay(datos_marcador);
							
						})
						
					});
				}
			});
		}
	},
	recomendacionesLimpia:function(){
		//lert("recomendaciones_dia: "+typeof( window[ 'recomendaciones_dia' ] ));
		recomendaciones_dia.each(function(datos_dia,indice){
			//lert("datos_dia:("+indice+") "+typeof( window[ 'datos_dia' ] )+" -> "+datos_dia);
			if(datos_dia){
				//lert("DENTRO:datos_dia:("+indice+") "+typeof( window[ 'datos_dia' ] )+" -> "+datos_dia);
				datos_dia.each(function(datos_cofradia,indice_cofradia){
					
					datos_cofradia.each(function(datos_marcador,indice_marcador){
						
						mapa.removeOverlay(datos_marcador);
					})
					
				});
			}

		});
	},
	
	
	
	
	// Templos
	
	
	templosCambia:function(){
		$('mapa_listado_templos').set('class','cargando');
		if(templos_activos){
			templos_activos=false;
			
			MapaGeneral.templosCargaYActualiza();
		} else {
			templos_activos=true;
			MapaGeneral.templosCargaYActualiza();
			
		}
	},
	
	templosCargaYActualiza:function(){
		contador=0;
		paracargar=Array();
		mapa_dias.each(function(dia,indice){
			if(indice>0){
				if(!templos_dia[indice]){
					paracargar.push(contador);
					
				}
				contador++;
			}

			
		});
		if(paracargar.length>0){
			var myRequest = new Request({
				method: 'post',
				url: '../../clases/datos_plano.php',
				onRequest: function() {  },  
				onFailure: function(xhr){
					alert("Error al cargar los datos...");
				},
				onSuccess: function(response) {
					//lert("si "+response);
					//lert(response);
					var datos = JSON.decode(response);
					//lert(response);
					datos.templos.each(function(datos_dia,indice){
						//alert(datos_dia.dia);
						//lert(datos_dia.puntos);
						//lert("datos_dia.dia:"+datos_dia.dia);
						var dia_actual=(datos_dia.dia*1)+1;
						//lert("dia_actual:"+dia_actual);
						templos_dia[dia_actual]=Array();
						templos_dia_negros[dia_actual]=Array();
						datos_dia.puntos.each(function(cofradia,indice2){
							
							MapaGeneral.temploGenera(cofradia,indice2,dia_actual);
							//lert(dia_actual+","+indice2)
						});
						
						//datos_dia
					});
					MapaGeneral.templosActualiza();
				} 
			});
			myRequest.send('a=templ&c='+mapa_ciudad+'&acargar='+paracargar);
			//window.open('../../clases/datos_plano.php?a=templ&c='+mapa_ciudad+'&acargar='+paracargar,'vale');
		} else {
			
			MapaGeneral.templosActualiza();
		}
		//lert('a=templ&c='+mapa_ciudad+'&acargar='+paracargar);
	},
	
	temploGenera:function(datos,indice,dia){
		//lert("A: "+recomendaciones_dia[mapa_dia][indice].length);
		iconoActual=temploIcon[indice];
		
		/*hay=templos_dia.every(function(eldia,index1){
			if(index1==dia){
				
			} else {............
				return false
			}
		});*/
		/*var tiene=false;
		if(typeof( window[ 'templos_dia' ] )==Array){
			if(templos_dia[dia]!=undefined){
				if(templos_dia[dia][indice]!=undefined){
					tiene=true;
				}
			}
		} else {
			templos_dia[dia]=Array();
			templos_dia_negros[dia]=Array();
		}
		*/

		//if(!tiene){
			
			templos_dia[dia][indice]=new GMarker(new GLatLng(datos[1],datos[2]), {  icon : iconoActual  });
			MapaGeneral.ponInfoWindow(templos_dia[dia][indice],datos[0],'templo');
			
			templos_dia_negros[dia][indice]=new GMarker(new GLatLng(datos[1],datos[2]), {  icon : temploIconGenerico  });
			MapaGeneral.ponInfoWindow(templos_dia_negros[dia][indice],datos[0],'templo');
		//}
		//lert("B: "+recomendaciones_dia[mapa_dia][indice].length);
	},
	templosActualiza:function(){
	
	
		//lert("Actualizando")
		//mapa.addOverlay(recomendaciones_dia[mapa_dia][indice][rec_indice]);	
		MapaGeneral.templosLimpia();
		
		templos_dia[mapa_dia].each(function(marcador_templo){
			mapa.addOverlay(marcador_templo);
			//lert('poniendo marcador');
		});
		
		if(templos_activos){
			$('mapa_listado_templos').set('class','');
			//lert("quesi");
			templos_dia_negros.each(function(marcador_templo,dia_numero){
				//lert("dia:"+dia_numero);
				//lert(marcador_templo.length)
				if(dia_numero!=mapa_dia){
					if(marcador_templo){
						marcador_templo.each(function(elmarcador){
							//lert(indice);
							mapa.addOverlay(elmarcador);
						});
					}
				}
			});			
		} else {
			$('mapa_listado_templos').set('class','inactivo');
		}

		
		// if(recomendaciones_activas){
		// 	recomendaciones_dia.each(function(datos_dia,indice){
		// 		//lert("Dia:"+indice+" ("+mapa_dia+"), "+datos_dia.length);
		// 		 if(indice==mapa_dia){
		// 			datos_dia.each(function(datos_cofradia,indice_cofradia){
		// 				//lert("Cofradía: "+indice_cofradia);
		// 				datos_cofradia.each(function(datos_marcador,indice_marcador){
		// 					mapa.addOverlay(datos_marcador);
		// 					
		// 				})
		// 				
		// 			});
		// 		}
		// 	});
		// }
	},	

	templosLimpia:function(){
		templos_dia.each(function(datos_dia,indice){
			if(datos_dia){
				datos_dia.each(function(datos_cofradia,indice_cofradia){
					mapa.removeOverlay(datos_cofradia);
				});
			}
		});
		templos_dia_negros.each(function(datos_dia,indice){
			if(datos_dia){
				datos_dia.each(function(datos_cofradia,indice_cofradia){
					mapa.removeOverlay(datos_cofradia);
				});
			}
		});
	},	
	
	
	
	
	
	// comienza:function(){
	// 		setTimeout('MapaGeneral.procesionesPasos()',2000);
	// 		
	// 	},
	// 	procesionesPasos:function(){
	// 		setTimeout('MapaGeneral.procesionesPasos()',100);
	// 		recorridos.each(function(objeto,index){
	// 			MapaGeneral.procesionPaso(index);
	// 		});
	// 	}
	// 	,
	// 	procesionPaso:function(cual){
	// 		var salto=10;
	// 		var npuntos=5;
	// 		contadorpaso+=salto;
	// 		//lert(contadorpaso)
	// 		
	// 		if(recorridos_procesion[cual]){
	// 			mapa.removeOverlay(recorridos_procesion[cual]);
	// 		}
	// 		//poligono_original_temporal=new GPolyline(MapaGeneral.conviertePuntosATrazo(recorridos_datos[cual]['trazado']), '#ff0000', 20);
	// 		
	// 		var punto_inicial=contadorpaso+(salto*npuntos);
	// 		punto_inicial=punto_inicial>=0?punto_inicial:0;
	// 		var punto_final=contadorpaso;
	// 		var puntos=Array();
	// 		for(i=0;i<npuntos;i++){
	// 			punto_actual=contadorpaso-(salto*i);
	// 			punto_actual=punto_actual>=0?punto_actual:0;
	// 			puntos.push(GetPointAtDistance(punto_actual,recorridos[cual]));
	// 			//lert("punto:"+GetPointAtDistance(recorrido[cual],i));
	// 		}
	// 		//lert(puntos.length);
	// 		//trozo=GetPointsAtDistance(poligono_original_temporal,100+contadorpaso);
	// 
	// 		recorridos_procesion[cual]=new GPolyline(puntos, colores[cual], 10); //polylineEncoder.dpEncodeToGPolyline(trozo, colores[cual], 10, 1);
	// 		//var recorrido_procesion_actual_datos=[];
	// 		//distancia_total=distancia(recorridos[cual]);
	// 		//lert(contadorpaso+","+recorridos_procesion[cual].getLength());
	// 		//recorridos_procesion[cual]=polylineEncoder.dpEncodeToGPolyline(, colores[indice], 10, 1);
	// 		MapaGeneral.procesionDibuja(cual);
	// 		
	// 	},
	procesionesPonEnHora:function(){
		recorridos.each(function(objeto,indice){
			MapaGeneral.procesionPonEnHora(indice);
		});
	},
	procesionPonEnHora:function(cual){
			tiempo=recorridos_procesion_tiempo_actual;
			var minutos_entre_punto=4;
			var npuntos=5;
			//contadorpaso+=salto;
			//lert(contadorpaso)
			
			var esta_fuera=true;
			
			if(recorridos_procesion[cual]){
				mapa.removeOverlay(recorridos_procesion[cual]);
			}
			//poligono_original_temporal=new GPolyline(MapaGeneral.conviertePuntosATrazo(recorridos_datos[cual]['trazado']), '#ff0000', 20);
			
			var horas1=recorridos_datos[cual].hora1;
			var horas1_o=recorridos_datos[cual].hora2;
			var horas2_o=recorridos_datos[cual].hora3;
			var horas2=recorridos_datos[cual].hora4;
			
			
			//lert(tiempo+","+horas1+","+horas2)
			var tiempo_restado;
			
			
			/// falta EL esta fuera
			
			
	
			
			if(esta_fuera){
				

				
			
				//poligono=recorridos[cual];

					        //var posicion_actual = GetPointAtDistance(por_uno*distancia_total,poligono);
					        
					        
				//var punto_inicial=(por_uno*distancia_total)+(salto*npuntos);
				//punto_inicial=punto_inicial>=0?punto_inicial:0;
				//var punto_final=por_uno*distancia_total;
				//lert(punto_inicial+","+punto_final)
				var puntos=Array();
				var tiempo_actual=null;
				for(i=0;i<npuntos;i++){
					tiempo_actual=tiempo-(minutos_entre_punto*i);
					
					conpunto=true;
					if(tiempo_actual>=horas1 && tiempo_actual<horas1_o){
						poligono=recorridos_ida[cual];
						tiempo_restado=tiempo_actual-horas1;
						tiempo_trozo=horas1_o-horas1;
						
					} else if(tiempo_actual>=horas1_o && tiempo_actual<horas2_o) {
						
						poligono=recorridos_carrera_oficial[cual];
						tiempo_restado=tiempo_actual-horas1_o;
						tiempo_trozo=horas2_o-horas1_o;
						
					} else if(tiempo_actual>=horas2_o && tiempo_actual<=horas2) {
						
						poligono=recorridos_vuelta[cual];
						tiempo_restado=tiempo_actual-horas2_o;
						tiempo_trozo=horas2-horas2_o;
						
					} else {
						conpunto=false;
					}
					

					
					if(conpunto){
						
						distancia_total=distancia(poligono);
						por_uno=tiempo_restado/tiempo_trozo;
						
						
						// punto_actual=punto_final-(salto*i);
						// punto_actual=punto_actual>=0?punto_actual:0;
						puntos.push(GetPointAtDistance(distancia_total*por_uno,poligono));
						
						//lert("punto:"+GetPointAtDistance(recorrido[cual],i));
							
					}
					
				}
				//trozo=GetPointsAtDistance(poligono_original_temporal,100+contadorpaso);
		
				recorridos_procesion[cual]=new GPolyline(puntos, colores[cual], 10,1); //polylineEncoder.dpEncodeToGPolyline(trozo, colores[cual], 10, 1);
				//var recorrido_procesion_actual_datos=[];
				//distancia_total=distancia(recorridos[cual]);
				//lert(contadorpaso+","+recorridos_procesion[cual].getLength());
				//recorridos_procesion[cual]=polylineEncoder.dpEncodeToGPolyline(, colores[indice], 10, 1);
				MapaGeneral.procesionDibuja(cual);

			}
				
			
			
			
			
			
			
			
			

			
		},	
	procesionDibuja:function(cual){
		mapa.addOverlay(recorridos_procesion[cual]);
		// var tiempo_restado;
		// 
		// distancia_total=distancia(poligono);
		// por_uno=tiempo_restado/tiempo_trozo;
		// 
		//         var posicion_actual = GetPointAtDistance(por_uno*distancia_total,poligono);
		// 
		//         marcador_paso.setPoint(posicion_actual);
		//         map.panTo(posicion_actual);
	},
	
	
	
	
	makeScrollbar:function(scrollbar,handle,ignoreMouse){
		//var steps = (horizontal?(content.getScrollSize().x - content.getSize().x):(content.getScrollSize().y - content.getSize().y));
		var steps = 100;
		ultimo_step=0;
		steps=recorridos_hora_fin[mapa_dia]-recorridos_hora_inicio[mapa_dia]+40;
		if(Browser.Engine.trident){  // Sí es internet explorer
			slider = new Slider(scrollbar, handle, {	
				steps: steps,
				mode: 'horizontal',
				onChange: function(step){
					step_actual=step ? step : ultimo_step;
					ultimo_step=step_actual;
					// Scrolls the content element in x or y direction.
					handle.setStyle('opacity','0.5');
					horas=recorridos_hora_inicio[mapa_dia]+step_actual;
					recorridos_procesion_tiempo_actual=horas;
					hora_en_scrollbar=horas;
					$('bar_hora').set('text',MapaGeneral.denumeroahora(horas,true));
				},
				onComplete: function(step){
					handle.setStyle('opacity','1');
					MapaGeneral.procesionesPonEnHora();
					
				}
			}).set(0);
			// handle.addEvent('mouseup', function(e){
			// 	MapaGeneral.procesionesPonEnHora();
			// });

		} else { // Si NO es internet explorer
			slider = new Slider(scrollbar, handle, {	
				steps: steps,
				mode: 'horizontal',
				onChange: function(step){
					step_actual=step ? step : ultimo_step;
					ultimo_step=step_actual;
					// Scrolls the content element in x or y direction.
	
					horas=recorridos_hora_inicio[mapa_dia]+step_actual;
					recorridos_procesion_tiempo_actual=horas;
					MapaGeneral.procesionesPonEnHora();
					hora_en_scrollbar=horas;
					$('bar_hora').set('text',MapaGeneral.denumeroahora(horas,true));
				}
			}).set(0);
			
		}
		if( !(ignoreMouse) ){
			// Scroll the content element when the mousewheel is used within the 
			// content or the scrollbar element.
			$$(scrollbar).addEvent('mousewheel', function(e){	
				e = new Event(e).stop();
				var step = slider.step - e.wheel * 30;	
				slider.set(step);					
			});
		}
		// Stops the handle dragging process when the mouse leaves the document body.
		$(document.body).addEvent('mouseleave',function(){slider.drag.stop()});
	},
	
	denumeroahora:function(numero,conpuntos){
		//console.log(numero)
		var hora=Math.floor(numero/60);
		minuto=(numero%60);
		minuto=minuto<10?"0"+minuto:minuto;
		
		hora=hora>23?hora-24:hora;
		hora=hora<10?"0"+hora:hora;
		

		//lert(segundos)
		var resultado= hora+(conpuntos?":":" ")+minuto;
		return resultado;
	},
	
	scrollPonEn:function(minuto){
/* 	alert($('scrollbar_interior')['offsetWidth']+","+poruno+"="+Math.round(($('scrollbar_interior')['offsetWidth']-35)*poruno)); */
		slider.set(Math.round(poruno));
	},
	
	
	
	
	
	// tiempo real
	rmMiraSiEstamosEnHoras:function(){
		var esta=false;
		var contador=0;
		// horas_minimas=Array(780,705,710,720,900,30,945,910,270);
		// horas_maximas=Array(1605,1650,1650,1635,1530,840,1595,1585,860);
		var minimos=Array();
		var maximos=Array();
		horas_minimas.each(function(objeto,indice1){
			horaminima=horas_minimas[indice1];
			horamaxima=horas_maximas[indice1];
			dia_a_tener_en_cuenta=dia_activo_inicial+indice1+(indice1>=6?-1:0);
			
			if(horamaxima<1440){
				minimos[indice1]=dia_a_tener_en_cuenta*60*24+horaminima;
				maximos[indice1]=dia_a_tener_en_cuenta*60*24+horamaxima;
			} else {
				minimos[indice1]=dia_a_tener_en_cuenta*60*24+horaminima;
				maximos[indice1]=(dia_a_tener_en_cuenta+1)*60*24+(horamaxima-1440);
			}
		});
		var currentDate = new Date()
		var onejan = new Date(currentDate.getFullYear(),0,1);
		var diadelano = Math.ceil((currentDate - onejan) / 86400000);
		var time_js = diadelano*60*24+currentDate.getHours()*60+currentDate.getMinutes();
		var tiempo = time_js + time_diferencia;
		
		minimos.each(function(objeto,indice1){
			//onsole.log(tiempo+" >= "+minimos[indice1]+" && "+tiempo+"<="+maximos[indice1]);
			if(tiempo >= minimos[indice1] && tiempo<=maximos[indice1]){
				esta=true;
				rmDiaActivo=indice1+1;
			}
			
		});
		
		return esta;
		
		// for(var dia_ahora=1;dia_ahora<=9;dia_ahora++){
		// 	dia_en_este_momento=dia_ahora<7?(dia_activo_inicial+dia_ahora-1):(dia_activo_inicial+dia_ahora-2);
		// 	if(mapa_dias[dia_ahora]){
		// 		//lert(dia_en_este_momento);
		// 		eldiainicio=dia_en_este_momento;
		// 		eldiafinal=dia_en_este_momento+(horas_maximas[contador]>=1440?1:0);
		// 		horainicio=horas_minimas[contador];
		// 		horafinal=horas_maximas[contador]+(horas_maximas[contador]>=1440?-1440:0);
		// 		
		// 		momento_ini=eldiainicio*10000+horainicio;
		// 		
		// 		momento_fin=eldiafinal*10000+horafinal;
		// 		if(time_js>=momento_ini && time_js<=momento_fin){
		// 			esta=true;
		// 		}
		// 		//alert(time_js+">="+momento_ini+" && "+time_js+"<="+momento_fin);
		// 		contador++;
		// 	}
		// }
		// return esta;
	},

	rmCambiarTiempoReal:function(){
		tiemporealactivo=tiemporealactivo?false:true;
		if(tiemporealactivo){
			MapaGeneral.rmActivarTiempoReal();
		} else {
			MapaGeneral.rmDesactivarTiempoReal();
		}
	},
	
	rmActivarTiempoReal:function(){
		$('scrollbar_tiemporeal').set('class','activo');
		$('bar').set('class','inactivo');
		$('bar').setStyle('opacity','0.5');
		
		//var eldia=eldiadess>=7?eldiadess-1:eldiadess;
		$('combo_dias').set('value',rmDiaActivo);
		$('combo_dias').disabled = true;	
		//onsole.log("cambiaDia("+rmDiaActivo+")");
		MapaGeneral.cambiaDia(rmDiaActivo);
		//MapaGeneral.rmActualiza();
		rmIntervalo = MapaGeneral.rmActualiza.periodical(1000);

	},
	
	rmDesactivarTiempoReal:function(){
		$('scrollbar_tiemporeal').set('class','');
		$('bar').set('class','');
		$('bar').setStyle('opacity','1');
		$('combo_dias').disabled = false;	
		rmIntervalo = $clear(rmIntervalo); 
	},
	rmActualiza:function(){
		var currentDate = new Date()
		var onejan = new Date(currentDate.getFullYear(),0,1);
		var diadelano = Math.ceil((currentDate - onejan) / 86400000);
		var hora_real=diadelano*60*24+currentDate.getHours()*60+currentDate.getMinutes()+time_diferencia;
		//console.log("hora_real:"+hora_real+","+(hora_real%(60*24)));
		if(slider!=null){
			slider.set((hora_real%(60*24))-horas_minimas[mapa_dia-1]);
		}
	
		var currentDate = new Date()
		var segundos=currentDate.getSeconds();
		$('bar_hora').set('text',MapaGeneral.denumeroahora(hora_real%(60*24),segundos%2));
		
		
		
		//$('scrollbar_tiemporeal').set('text',Math.floor(hora_real/60)+":"+(hora_real%60)+"-- "+hora_real+"-"+horas_minimas[mapa_dia-1]+"("+recorridos_hora_inicio[mapa_dia]+")");
		//alert("eee");
	},
	
	
	
	
	
	
	
	
	
	ayudaLanza:function(direccion){
		window.open(direccion, 'plano_ayuda', 'width=762,height=412,scrollbars=NO');
	},
	
	
	
	
	flechaAviso:function(){
		mapa_flecha_aviso.setStyle('display','block');
		var x = new Chain();
		var uno = function(){
			var aparece = new Fx.Morph($$('#mapa_flecha_aviso div')[0], {
				'duration': 2000,
				'transition' : Fx.Transitions.Sine.easeOut
			});
			aparece.start({
				'background-position':'40% 50%',
				'opacity':'1'
			});
		};

		var dos = function(){
			var rebota1 = new Fx.Morph($$('#mapa_flecha_aviso div')[0], {
				duration: 300,
				transition: Fx.Transitions.Sine.easeIn
			}).addEvent('onComplete',function(){
				var rebota2 = new Fx.Morph($$('#mapa_flecha_aviso div')[0], {
					duration: 300,
					transition: Fx.Transitions.Sine.easeOut
				});
				rebota2.start({
					'background-position':'40% 50%'
				});
			});
			rebota1.start({
				'background-position':'40% 0%'
			});
		};
		var tres = function(){
			var desaparece = new Fx.Morph($$('#mapa_flecha_aviso div')[0], {
				'duration': 1000,
				'transition' : Fx.Transitions.Sine.easeIn
			});
			desaparece.start({
				'opacity':'0'
			});
		};
		var cuatro = function(){
			var desaparece = new Fx.Morph($$('#mapa_flecha_aviso div')[0], {
				'duration': 1000,
				'transition' : Fx.Transitions.Sine.easeIn
			});
			desaparece.start({
				'height':'0'
			});
		};
		var cinco = function(){
			mapa_flecha_aviso.setStyle('display','none');
		};

		x.chain(uno);
		x.chain(dos);
		x.chain(dos);
		x.chain(dos);
		//x.chain(tres);
		//x.chain(cuatro);
		//x.chain(cinco);
		x.callChain.delay(4000, x);
		x.callChain.delay(7000, x);
		x.callChain.delay(9000, x);
		x.callChain.delay(9700, x);
		//x.callChain.delay(12000, x);
		//x.callChain.delay(13000, x);
		//x.callChain.delay(14000, x);

	}


}






function distancia(poligono){
	 var dist = 0;
	  for (var i=1; i < poligono.getVertexCount(); i++) {
	    dist += poligono.getVertex(i).distanceFrom(poligono.getVertex(i-1));
	  }
	  return dist;
	}
	function GetPointAtDistance(metres,poligono) {
	  // some awkward special cases
	  if (metres == 0) return poligono.getVertex(0);
	  if (metres < 0) return null;
	  var dist=0;
	  var olddist=0;
	  for (var i=1; (i < poligono.getVertexCount() && dist < metres); i++) {
	    olddist = dist;
	    dist += poligono.getVertex(i).distanceFrom(poligono.getVertex(i-1));
	  }
	  if (dist < metres) {return null;}
	  var p1= poligono.getVertex(i-2);
	  var p2= poligono.getVertex(i-1);
	  var m = (metres-olddist)/(dist-olddist);
	  return new GLatLng( p1.lat() + (p2.lat()-p1.lat())*m, p1.lng() + (p2.lng()-p1.lng())*m);
	}
    
	function pon_punto_en_hora(tiempo){
		var poligono;
		var tiempo_restado;
		if(tiempo>=horas1 && tiempo<horas1_o){
			
			poligono=poligono_ida;
			tiempo_restado=tiempo-horas1;
			tiempo_trozo=horas1_o-horas1;
			
		} else if(tiempo>=horas1_o && tiempo<horas2_o) {
			
			poligono=poligono_carrera_oficial;
			tiempo_restado=tiempo-horas1_o;
			tiempo_trozo=horas2_o-horas1_o;
			
		} else if(tiempo>=horas2_o && tiempo<=horas2) {
			
			poligono=poligono_vuelta;
			tiempo_restado=tiempo-horas2_o;
			tiempo_trozo=horas2-horas2_o;
			
		} else {
			alert("algo falla...");
		}
		
		distancia_total=distancia(poligono);
		por_uno=tiempo_restado/tiempo_trozo;

        var posicion_actual = GetPointAtDistance(por_uno*distancia_total,poligono);

        marcador_paso.setPoint(posicion_actual);
        map.panTo(posicion_actual);

		//lert(posicion_actual);
		
	}
	
// 	GetPointsAtDistance = function(poligono,metres) {
//   var next = metres;
//   var points = [];
//   // some awkward special cases
//   if (metres <= 0) return points;
//   var dist=0;
//   var olddist=0;
//   for (var i=1; (i < poligono.getVertexCount()); i++) {
//     olddist = dist;
//     dist += poligono.getVertex(i).distanceFrom(poligono.getVertex(i-1));
//     while (dist > next) {
//       var p1= poligono.getVertex(i-2);
//       var p2= poligono.getVertex(i-1);
//       var m = (next-olddist)/(dist-olddist);
//       points.push(new GLatLng( p1.lat() + (p2.lat()-p1.lat())*m, p1.lng() + (p2.lng()-p1.lng())*m));
//       next += metres;    
//     }
//   }
//   return points;
// }


	//      function bearing( from, to ) {
	//        // See T. Vincenty, Survey Review, 23, No 176, p 88-93,1975.
	//        // Convert to radians.
	//        var lat1 = from.latRadians();
	//        var lon1 = from.lngRadians();
	//        var lat2 = to.latRadians();
	//        var lon2 = to.lngRadians();
	// 
	//        // Compute the angle.
	//        var angle = - Math.atan2( Math.sin( lon1 - lon2 ) * Math.cos( lat2 ), Math.cos( lat1 ) * Math.sin( lat2 ) - Math.sin( lat1 ) * Math.cos( lat2 ) * Math.cos( lon1 - lon2 ) );
	//        if ( angle < 0.0 )
	// angle  += Math.PI * 2.0;
	// 
	//         
	//         			if (angle == 0) {crash;}
	// 
	// 
	//        return angle;
	//      }

//angle = bearing(poly.getVertex(lastVertex-1),poly.getVertex(lastVertex) );




window.addEvent('load',function(){
	MapaGeneral.start();
	//MapaGeneral.ventanaAbre();
	});


