/**
	Consulta ajax para obtener el SAE de horario estimado para una parada/linea, o para una parada.
	Se comprueba primero la existencia de las variables de peticion en los formularios, y posteriormente se realiza la llamada, conversion del xml a html  y mostrado de resultado.
*/
function getSAE(opcion){
 
	var parada='';
	var linea='';
	var nombreLinea='';
	var flagConsulta=0;
	
	if(opcion=="horariosParada")
	{
		if($(opcionBusqueda+'_parada')[$(opcionBusqueda+'_parada').selectedIndex].value=='-'){
			$(opcionBusqueda+'_combo1').innerHTML='<br />'+txtSeleccioneParadaDesplegable[idioma];
			setTimeout("document.getElementById(\""+opcionBusqueda+"_combo1\").innerHTML='';", 4000);
			flagConsulta=0;
		}
		else{
			parada= $(opcionBusqueda+'_parada')[$(opcionBusqueda+'_parada').selectedIndex].value
			linea='';
			//alert("span: "+$(opcionBusqueda+"_spanBusquedaParadas3").innerHTML);
			//alert("combo: "+$(opcionBusqueda+'_combo1').innerHTML);
			//$(opcionBusqueda+"_spanBusquedaParadas3").innerHTML='';
			$(opcionBusqueda+'_combo1').innerHTML='';
			flagConsulta=1;
		}
	}
	else{//horarios linea/parada
		if($(opcionBusqueda+'_lineas')[$(opcionBusqueda+'_lineas').selectedIndex].value=='-'){
			$(opcionBusqueda+'_combo1').innerHTML='<br />'+txtSeleccioneLineaDesplegable[idioma];
			setTimeout("document.getElementById(\""+opcionBusqueda+"_combo1\").innerHTML='';", 4000);
			flagConsulta=0;
		}
		else if($(opcionBusqueda+'_parada') && $(opcionBusqueda+'_lineas')){
			$(opcionBusqueda+'_combo1').innerHTML='';
			linea= $(opcionBusqueda+'_lineas')[$(opcionBusqueda+'_lineas').selectedIndex].text;
			var arrai = linea.split(' - ');
			linea= arrai[0];
			//saco el nombre de la parada de la etiqueta, pq en el value esta el campo id de oracle y no sirve para el SAE
			parada= $(opcionBusqueda+'_parada')[$(opcionBusqueda+'_parada').selectedIndex].value;
			nombreLinea= $(opcionBusqueda+'_lineas')[$(opcionBusqueda+'_lineas').selectedIndex].text;
			flagConsulta=1;
		}
	}
	if(flagConsulta==1){

		//----- ESTADISTICAS ---------------------------------------------------------------
		//if(opcionBusqueda=="pyr1_origen") oEstadisticas.opcion = 'PL';
		//else if(opcionBusqueda=="pyr1_destino") oEstadisticas.opcion2 = 'PL';
		//else oEstadisticas.opcion = 'PL';
		//TODO: AÑADIR PARAMETROS DE ESTADISTICAS EN ESTA FUNCION
		//--------------------------------------------------------------------
	
		//Compruebo si el check de autobuses adaptados esta marcado.
		var adaptados = 'false';
		if($('chkAdaptados').checked){
			adaptados= 'true';
		}
	
		//alert(opcion+' - '+linea+' - '+parada)
		$(opcionBusqueda+"_combo3").innerHTML='<img style="margin-top: 3px; margin-botton:2px;" border="0" src="../EMT/imagenes/cargando_.gif" alt="'+titleCargando[idioma]+'" title="'+titleCargando[idioma]+'" />';

		var data="?sec=getSAE&idioma="+idioma+"&parada="+parada+"&linea="+linea+'&adaptados='+adaptados;
		var aleatorio=Math.random();

		new Ajax.Request(_URL_mapUtilsPetitions+data+"&nocache="+aleatorio,
		{
			method:'get',
			onSuccess: function(transport){
				var response = transport.responseText || "no response text";
				//alert("Success! \n\n" + response);
				
				var equisemeele = getXMLObject(response);
				
				var html= SAE_XMLtoHTML(equisemeele);

				//pyr4_combo1
				if($('chkAdaptados').checked) html+= "&nbsp;&nbsp;"+titleSoloAutobusesAdaptados[idioma];
				$(opcionBusqueda+'_combo1').innerHTML= html;
				
				//quito el cartel de cargando...
				$(opcionBusqueda+"_combo3").innerHTML='';
			},
			onFailure: function(){ 
				$(opcionBusqueda+"_combo3").innerHTML= txtErrorProcesandoPeticion[idioma];
			}
		});
	}
}


/**
	Funcion para calcular la altura de la cabecera  del div de horarios. 
	La altura de la cabecera esta en funcion del num de caracteres (1linea = 32 caracteres).
	Por defecto, una linea sola ocupara 60px de height
*/
function calculaAlturaCabeceraHorarios(cadena){
	
		var long= cadena.length;
		var altura= 60;
		if(long>33){
			//alert('long: '+long)
			var multiplo= Math.ceil(long/33);
			//alert('multiplo: '+multiplo)
			altura+= multiplo*9;
		}
		
		return altura;
}

/**
	Funcion para mostrar el div de horarios en la parte de mapas tras apretarle al reloj del div de informacion de paradas.
*/
function marcarHorario(linea, id_parada, nombre_parada){
    
	var horariosDIV= document.getElementById("horarios");
	horariosDIV.style.display= 'inline';

	horariosDIV.style.top= parseInt(document.getElementById("horariosY").value) + 10
    horariosDIV.style.left= parseInt(document.getElementById("horariosX").value) + 10
	
	var altura= calculaAlturaCabeceraHorarios(id_parada+' - '+nombre_parada);
	
	var alturaOriginal= document.getElementById("horarios").style.height;
	document.getElementById("cabeceraHorarios").style.height= altura;
	var alt= alturaOriginal.split('px');
	//resto la altura de la cabecera a la del total, para que me reste la altura del cuerpo del mensaje.
	document.getElementById("cuerpoHorarios").style.height= parseInt(alt[0]) - parseInt(altura) -2 ;
	
	
	var fecha = new Date()
	var dia = fecha.getDate()
	var mes = fecha.getMonth() +1
	var anyo = fecha.getFullYear()
	if (dia < 10)
		dia = "0" + dia;
	if (mes < 10)
		mes = "0" + mes;
	
	document.getElementById("cabeceraHorarios").innerHTML='<table border="0" width="100%"><tr><td align="center" width="99%">'+txtPasoPorParada[idioma]+'</td><td width="1%"><a href="#arribaMapa" onclick="cerrarHorario()"><img src="../EMT/imagenes/aspa.jpg" border="0" title="'+titleCerrarVentana[idioma]+'" alt="'+titleCerrarVentana[idioma]+'" /></a></td></tr><tr><td colspan="2" align="center">'+id_parada+' - '+nombre_parada+'</td></tr><tr><td colspan="2" align="center">'+txtDia[idioma]+': '+dia+'-'+mes+'-'+anyo+'</td></tr></table>';
	document.getElementById("cuerpoHorarios").innerHTML='<br /><br />'+txtRealizandoConsulta[idioma]+'...';
	peticionSAE(id_parada, linea, 0);
}

/**
	Consulta ajax para obtener el servicio SAE de estimacion de horarios para el div de horarios de informacion de paradas.
	Se transforma el xml a html y se pasa a consultar la tabla de horarios estaticos. (que sera la segunda parte del interior del div de informacion de horarios)
	soloSAE: parametro para mostrar unicamente el resultado de la consulta del SAE, para la parte de esquemas.
*/
function peticionSAE(parada, linea, soloSAE){

	//alert(opcion+' - '+linea+' - '+parada)
	var sae='';
	
	var data="?sec=getSAE&idioma="+idioma+"&parada="+parada+"&linea="+linea;
	var aleatorio=Math.random();

	new Ajax.Request(_URL_mapUtilsPetitions+data+"&nocache="+aleatorio,
	{
		method:'get',
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			//alert("Success! \n\n" + response);
			
				var equisemeele = getXMLObject(response);
			
			sae= SAE_XMLtoHTML(equisemeele);
					
			if(soloSAE==0){
				peticionHorarios(sae, parada, linea);
			}
			else{
				return sae;
			}
			
		},
		onFailure: function(){ 
			html= txtErrorProcesandoPeticion[idioma];
		}
	});
	return 1;
}

/**
	Consulta ajax para obtener la informacion de horarios estaticos de las paradas.
	En caso de haberlas, se transforma el xml a html y se muestra el resultado junto con el de la peticion SAE que ha llegado como parametro.
*/
function peticionHorarios(sae, parada, linea){

	//alert(opcion+' - '+linea+' - '+parada)
	var horario='';
	
	var data="?sec=getHorarios&parada="+parada+"&linea="+linea;
	var aleatorio=Math.random();
	
	new Ajax.Request(_URL_mapUtilsPetitions+data+"&nocache="+aleatorio,
	{
		method:'get',
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			//alert("Success! \n\n" + response);
			
				var equisemeele = getXMLObject(response);
			
			horario= HORARIOS_XMLtoHTML(equisemeele);
					
			var fecha = new Date()
			var hora = fecha.getHours()
			var min = fecha.getMinutes()
			if (hora < 10)
				hora = "0" + hora;
			if (min < 10)
				min = "0" + min;
			
			var txt='<b>'+txtLinea[idioma]+' '+linea+'</b><br />';

			if(horario!=''){
				txt+='<br /><b>'+txtHorarioplanificado2[idioma]+'</b><br />'+horario+'<br />';
			}
			if(sae.indexOf(txtNoHayResultadosLineaParada[idioma])==-1){
				txt+='<br /><b>'+txtServicioEBus[idioma]+'</b><br />'+sae+'<br />';
			}
			
			txt+='<br />'+txtInformacionActualizada[idioma]+': <i>'+hora+':'+min+'</i><br /><a href="#arribaMapa" onclick="cerrarHorario();">'+txtCerrar[idioma]+'</a>';
			document.getElementById("cuerpoHorarios").innerHTML= txt;
			
		},
		onFailure: function(){ 
			html= txtErrorProcesandoPeticion[idioma];
		}
	});

	return 1;

}

function abrirDivInfoParada(parada, linea, nombre_parada){
	var horariosDIV= document.getElementById("horarios");
	horariosDIV.style.display= 'inline';

	horariosDIV.style.top= parseInt(document.getElementById("horariosY").value) + 10
    horariosDIV.style.left= parseInt(document.getElementById("horariosX").value) + 10
	
	var altura= calculaAlturaCabeceraHorarios(parada+' - '+nombre_parada);
	
	var alturaOriginal= document.getElementById("horarios").style.height;
	document.getElementById("cabeceraHorarios").style.height= altura;
	var alt= alturaOriginal.split('px');
	//resto la altura de la cabecera a la del total, para que me reste la altura del cuerpo del mensaje.
	document.getElementById("cuerpoHorarios").style.height= parseInt(alt[0]) - parseInt(altura) -2 ;
	
	
	var fecha = new Date()
	var dia = fecha.getDate()
	var mes = fecha.getMonth() +1
	var anyo = fecha.getFullYear()
	if (dia < 10)
		dia = "0" + dia;
	if (mes < 10)
		mes = "0" + mes;
	
	document.getElementById("cabeceraHorarios").innerHTML='<table border="0" width="100%"><tr><td align="center" width="99%">'+txtPuntoParada[idioma]+'</td><td width="1%"><a href="#arribaMapa" onclick="cerrarHorario()"><img src="../EMT/imagenes/aspa.jpg" border="0" title="'+titleCerrarVentana[idioma]+'" alt="'+titleCerrarVentana[idioma]+'" /></a></td></tr><tr><td colspan="2" align="center">'+parada+' - '+nombre_parada+'</td></tr></table>';
	document.getElementById("cuerpoHorarios").innerHTML='<br /><br />'+txtRealizandoConsulta[idioma]+'...';
}

function infoPuntoParada(parada, idlinea, linea, nombre_parada){
	
	abrirDivInfoParada(parada, idlinea, nombre_parada);
	
	var horario='';
	
	var today=new Date();
	function fmt(v) { return (v < 10) ? '0' + v : v; }
	var date = fmt(today.getDate()) + '-' + fmt(today.getMonth()+1) + '-' + fmt(today.getFullYear());
	
	var hora = fmt(today.getHours());
	var min = fmt(today.getMinutes());
	var time= hora+":"+min;
	var data="?sec=getStopPoints&idparada="+parada+"&idlinea="+idlinea+"&fecha="+$('fechaOA').value+" "+time;
	var aleatorio=Math.random();
	
	new Ajax.Request(_URL_mapUtilsPetitions+data+"&nocache="+aleatorio,
	{
		method:'get',
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			//alert("Success! \n\n" + response);
			
				var equisemeele = getXMLObject(response);
			
			var txt='<b>'+txtLinea[idioma]+' '+linea+'</b><br />';
			puntos = equisemeele.getElementsByTagName('stoppoint');

			i=0;
			while (puntos.item(i)!=null){
				var infoParada=puntos.item(i).firstChild.data;
				var nombreParada=puntos.item(i).attributes[0].nodeValue;
				if (infoParada=='finalSeccion')
					txt+="<p>"+txtFinalSeccion[idioma]+"<strong>"+nombreParada+"</strong></p><br />";
				else
					if (infoParada=='inicioSeccion')
						txt+="<p>"+txtInicioSeccion[idioma]+"<strong>"+nombreParada+"</strong></p><br />";
					else
						if (infoParada=='puntoRegulacion')
							txt+="<p>"+txtPuntoRegulacion[idioma]+"</p><br />";
						else
							if (infoParada=='finalSeccion2')
								txt+="<p>"+txtFinalSeccion2[idioma]+"<strong>"+nombreParada+"</strong></p><br />";
							else
								txt+="<p>"+infoParada+"</p><br />";
				i=i+1;
			}

			txt+='<br /><a href="#arribaMapa" onclick="cerrarHorario();">'+txtCerrar[idioma]+'</a>';
			document.getElementById("cuerpoHorarios").innerHTML= txt;
			
		},
		onFailure: function(){ 
			html= txtErrorProcesandoPeticion[idioma];
		}
	});

	return 1;

}

/**
	Transforma el xml del SAE a html para mostrarlo en el div de informacion de horarios
*/
function SAE_XMLtoHTML(xml){
	var html='';
	
	if(xml.getElementsByTagName("estimacion").item(0).hasChildNodes() && !xml.getElementsByTagName("error").item(0).hasChildNodes()){
		if(xml.getElementsByTagName("parada_linea").item(0).hasChildNodes()){
			//alert("PARADA Y LINEA: "+(xml.getElementsByTagName("bus")).length)
			var i=0;
			var j=1;
			html+= '<center><table border="0"><tr><th>&nbsp;</th><th>'+txtTiempoEstimadoEspera[idioma]+'</th></tr>';
			while(xml.getElementsByTagName("bus").item(i)!=null){

				if(xml.getElementsByTagName("minutos").item(i).hasChildNodes())
					html+= '<tr style="background-color:#F8DEDE;"><td style="background-color:#F8DEDE;">'+j+'&ordm;</td><td align="center">'+xml.getElementsByTagName("linea").item(i).firstChild.data+' : '+xml.getElementsByTagName("destino").item(i).firstChild.data+' : '+xml.getElementsByTagName("minutos").item(i).firstChild.data+'</td></tr>';
				else
					html+= '<tr style="background-color:#F8DEDE;"><td style="background-color:#F8DEDE;">'+j+'&ordm;</td><td align="center">'+xml.getElementsByTagName("linea").item(i).firstChild.data+' : '+xml.getElementsByTagName("destino").item(i).firstChild.data+' : '+xml.getElementsByTagName("horaLlegada").item(i).firstChild.data+'</td></tr>';
				i++;
				j++;
			}
			html+= '</table></center>';

		}
		else if(xml.getElementsByTagName("solo_parada").item(0).hasChildNodes()){
			//alert("SOLO PARADA: "+(xml.getElementsByTagName("bus")).length)
			html= '<select name="x">';
			var i=0;
			while(xml.getElementsByTagName("bus").item(i)!=null){
			if(xml.getElementsByTagName("minutos").item(i).hasChildNodes())
				html+= '<option value="-">'+txtLinea[idioma]+' '+xml.getElementsByTagName("linea").item(i).firstChild.data+' :: '+xml.getElementsByTagName("destino").item(i).firstChild.data+' :: '+xml.getElementsByTagName("minutos").item(i).firstChild.data+'</option>';
			else
				html+= '<option value="-">'+txtLinea[idioma]+' '+xml.getElementsByTagName("linea").item(i).firstChild.data+' :: '+xml.getElementsByTagName("destino").item(i).firstChild.data+' :: '+xml.getElementsByTagName("horaLlegada").item(i).firstChild.data+'</option>';
				i++;
			}
			html+='</select>';
		}
		
		if (xml.getElementsByTagName("info").item(0).hasChildNodes()){
			html += "<br>"+xml.getElementsByTagName("info").item(0).firstChild.data;
		}
	}
	else if(!xml.getElementsByTagName("estimacion").item(0).hasChildNodes()){
		html='<span>'+txtNoHayResultadosLineaParada[idioma]+'.</span>';
	}
	else if(xml.getElementsByTagName("error").item(0).hasChildNodes()){
		html='<span>'+xml.getElementsByTagName("error").item(0).firstChild.data+'.</span>';
	}
	
	return html;
/*
<?xml version="1.0" encoding="utf-8"?>
<estimacion />
*/
/*
<?xml version="1.0" encoding="utf-8"?>
<estimacion>
<solo_parada>
<linea>13</linea><destino>BARÓ DE CÀRCER</destino><minutos>404</minutos>
<linea>14</linea><destino>PL. AJUNTAMENT</destino><minutos>773</minutos>
<linea>18</linea><destino>UNIVERSITATS</destino><minutos>732</minutos>
</solo_parada>
<parada_linea />
</estimacion>
*/	
}

/**
*	Transforma el xml de los horarios estaticos a html para mostrarlo en el div de informacion de horarios
*	
*/
function HORARIOS_XMLtoHTML(xml){
	
	var html='';
	
	//si stoplist no es vacio existira algun nodo "stop"
	if(xml.getElementsByTagName("stop").item(0)!=null){
		var i=0;
		
		//recorremos todos los nodos "stop", habra normalmente 1 o 2.
		while(xml.getElementsByTagName("stop").item(i)!=null){
			
			var flagDireccion=true;
			var j=0;
			//nodo con los nodos horarios de una de las direcciones
			var oHorariosDireccion= xml.getElementsByTagName("stop").item(i);

			//almacenamos los tiempos de llegada del bus
			while(oHorariosDireccion.getElementsByTagName("time").item(j)!=null){
				var flag=0;
								
				if(flagDireccion){
					html+= '<br /><b>'+txtDireccion[idioma]+':</b> <i>'+xml.getElementsByTagName("name").item(i).firstChild.data+'</i><br />';
					flagDireccion= false;
				}
				var hora= oHorariosDireccion.getElementsByTagName("time").item(j).firstChild.data;
				
				//cada 4 horarios, cambiamos de linea.
				if(flag==4){
					html+= '<i>'+hora+'</i>  ';
					html+= '<br />';
					flag=0;
				}
				else
					html+= '<i>'+hora+'</i>  ';
				
				flag++;
				j++;
			}
			i++;
		}
	}
	else{
		html='';
	}
	
	return html;
	
/*
<?xml version="1.0" encoding="UTF-8"?>
<servletresponse>
    <error code="0">Correcto</error>
    <stoplist>
        <stop>
            <name>Ajunt/Malva-rosa</name>
            <timelist>
                <time>23:05</time>
                <time>23:50</time>
                <time>0:35</time>
                <time>1:20</time>
            </timelist>
        </stop>
    </stoplist>
</servletresponse>	
*/
}


/**
	Oculta el div de horarios de la parte de mapas.
*/
function cerrarHorario(){
	document.getElementById("cuerpoHorarios").innerHTML= '';
	document.getElementById("horarios").style.display= 'none';
	
}





