var calculo_de_ruta;

/**
	Consulta ajax para obtener los parametros de origen/destino del usuario actual. Puede haberlos, o no.
*/
function getUserRoute() {

	calculo_de_ruta = 0;
	var aleatorio=Math.random();
	
	new Ajax.Request(_URL_mapUtilsPetitions+"?sec=getUserRoute&idUsuario="+$("idUsuario").value+"&nocache="+aleatorio,
	{
		method:'get',
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			//alert("Success! \n\n" + response);
			
			var equisemeele = getXMLObject(response);
			
			userRouteUpdate(equisemeele);
			rutaBD=1;
			if (transport.responseText != "") calculo_de_ruta = 1;
			
			if ($('fromSchemesPage').value==1 || $('fromIncidencesPage').value==1 || $('llamadaDesdeEsquemaLineas').value=="PARADA"){
				getEncuadreLinea();
			}else if($('fromSchemesPage').value==0 || $('fromIncidencesPage').value==0){
				abreLineasEMT();
			}
			else getOpcionesAvanzadas('calculoRutas');
		},
		onFailure: function(){ 
			alert(txtErrorProcesandoPeticion[idioma]);
			getEncuadreLinea();
		}
	});
}

/**
	Consulta ajax para guardar en BD los parametros de origen/destino del usuario actual.
*/
function setUserRoute() {

    //Si no se esta en el tab de "Como ir a..." no se puede ejecutar.
    if(flagBD==1){
        
		var origin= $("origenText").value;
		var destiny= $("destinoText").value;
		
		if(origin!='' || destiny!=''){
		
			var aleatorio=Math.random();
			
			new Ajax.Request(_URL_mapUtilsPetitions+"?sec=setUserRoute&idUsuario="+$("idUsuario").value+"&origen="+$("origenText").value+"&destino="+$("destinoText").value+"&tipoOrigen="+$("tipoOrigen").value+"&tipoDestino="+$("tipoDestino").value+"&origenX="+$("origenX").value+"&origenY="+$("origenY").value+"&destinoX="+$("destinoX").value+"&destinoY="+$("destinoY").value+"&nocache="+aleatorio,
			{
				method:'get',
				onSuccess: function(transport){
					var response = transport.responseText || "no response text";
					//alert("Success! \n\n" + response);
					
					rutaBD=1;
				},
				onFailure: function(){ 
					//alert("Error procesando su peticion, vuelva a intentarlo por favor.");
				}
			});
		}
    }
}

/**
	Actualizo los campos de origen/destino, y los campos hidden con los valores adecuados obtenidos de la consulta getUserRoute()
*/
function userRouteUpdate(xmldata){
    
	if(xmldata.getElementsByTagName('rutaUsuario').item(0)!=null){
		var origen='';
		var destino='';
		var tipoOrigen= '';
		var tipoDestino= '';
		var origenX= '';
		var origenY= '';
		var destinoX= '';
		var destinoY= '';
		
        try{
            if(xmldata.getElementsByTagName('origen').item(0).hasChildNodes())
                origen= xmldata.getElementsByTagName('origen').item(0).firstChild.data;
            else origen='';
                
            if(xmldata.getElementsByTagName('destino').item(0).hasChildNodes())
                destino= xmldata.getElementsByTagName('destino').item(0).firstChild.data;
            else destino='';
            
			tipoOrigen= parseInt(xmldata.getElementsByTagName('tipoOrigen').item(0).firstChild.data);
			tipoDestino= parseInt(xmldata.getElementsByTagName('tipoDestino').item(0).firstChild.data);
            origenX= parseFloat(xmldata.getElementsByTagName('origenX').item(0).firstChild.data);
            origenY= parseFloat(xmldata.getElementsByTagName('origenY').item(0).firstChild.data);
            destinoX= parseFloat(xmldata.getElementsByTagName('destinoX').item(0).firstChild.data);
            destinoY= parseFloat(xmldata.getElementsByTagName('destinoY').item(0).firstChild.data);
            //alert(origen+' - '+destino+' - '+origenX+' - '+origenY+' - '+destinoX+' - '+destinoY)
        }catch(e){
            //alert(origen+' - '+destino+' - '+origenX+' - '+origenY+' - '+destinoX+' - '+destinoY)
        }
        
        if(origen!=''){
            document.getElementById('tabLugarOrigen').innerHTML= origen.substr(0, 40);
            document.getElementById('origenText').value= origen;
			document.getElementById('tipoOrigen').value= tipoOrigen;
            //cambiar imagenes de control de puntos seleccionados
            document.getElementById('origen_XV').src='../EMT/imagenes/origen_V.gif';
            document.getElementById('origen_XV').title= titleImagenOrigenSeleccionada[idioma];
        }
        if(destino!=''){
            document.getElementById('tabLugarDestino').innerHTML= destino.substr(0, 40);
            document.getElementById('destinoText').value= destino;
			document.getElementById('tipoDestino').value= tipoDestino;
            //cambiar imagenes de control de puntos seleccionados
            document.getElementById('destino_XV').src='../EMT/imagenes/destino_V.gif';
            document.getElementById('destino_XV').title= titleImagenDestinoSeleccionada[idioma];
        }
        document.getElementById('origenX').value= origenX;
        document.getElementById('origenY').value= origenY;
        document.getElementById('destinoX').value= destinoX;
        document.getElementById('destinoY').value= destinoY;
        
    }
    
}

/**
	Inicializo los hidden de la pagina de "plano_y_rutas" al inicio de la pagina, debido a bugs de los navegadores, que se inicializan a veces con valores indebidos.
*/
function inicializarHiddens(){
    document.getElementById("origenText").value='';
    document.getElementById("destinoText").value='';
	document.getElementById("tipoOrigen").value=0;
	document.getElementById("tipoDestino").value=0;
    document.getElementById("origenX").value=0;
    document.getElementById("origenY").value=0;
    document.getElementById("destinoX").value=0;
    document.getElementById("destinoY").value=0;
    document.getElementById("puntitoX").value=0;
    document.getElementById("puntitoY").value=0;
	
	if(document.getElementById("activarMarco")){
		document.getElementById("activarMarco").value=0;
	
		document.getElementById("horariosX").value=0;
		document.getElementById("horariosY").value=0;
	}
}



/**
	opcion-> calculoRutas o mapa
	Consulta ajax para obtener los valores de las opciones avanzadas almacenadas para este usuario concreto.
	En caso de haberlas, se asignan a sus formularios y inputs mediante las funciones modificarInputsAvanzadosMapa/modificarInputsAvanzadosCR
*/
function getOpcionesAvanzadas(opcion){
    	
	var data="?sec=getOpcionesAvanzadas&"+"idUsuario="+$('idUsuario').value;
	//alert('PRUEBAS.'+ data)
	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);
			
			if(opcion=="mapa"){
				//si existe "idusuario", es pq si hay resultados para un usuario, sino, ese nodo no existiria, tan solo el de "fechaVigenciaMaxima"
				if(equisemeele.getElementsByTagName("idUsuario").item(0)!=null){
					modificarInputsAvanzadosMapa(equisemeele);
				}
				else if(equisemeele.getElementsByTagName("fechaVigenciaMaxima").item(0)!=null){
					//asigno la fecha de vigencia maxima a un hidden para posteriormente poder realizar la comparacion ante una fecha introducida por el usuario
					$('fechaVigenciaMaxima').value= equisemeele.getElementsByTagName("fechaVigenciaMaxima").item(0).firstChild.data;
				}
				
				//cargar (en caso de haberla) la llamada proveniente de esquemas para hallar un lugar de interes o parada.
				if(document.getElementById("llamadaDesdeEsquemaLineas").value=='POI'){
					var nombrePOI= document.getElementById("nombre").value;
					nombrePOI= nombrePOI.replace('$', '"');
					nombrePOI= nombrePOI.replace('$', '"');
					cargarOpcionesGET('POI', nombrePOI, document.getElementById("whatTab").value);
				}
				else if(document.getElementById("llamadaDesdeEsquemaLineas").value=='PARADA'){
					var nombrePOI= document.getElementById("nombre").value;
					nombrePOI= nombrePOI.replace('$', '"');
					nombrePOI= nombrePOI.replace('$', '"');
					cargarOpcionesGET('PARADA', nombrePOI, document.getElementById("whatTab").value);
				}
				else if(document.getElementById("llamadaDesdeEsquemaLineas").value=='CALLE'){
					var nombrePOI= document.getElementById("nombre").value;
					nombrePOI= nombrePOI.replace('$', '"');
					nombrePOI= nombrePOI.replace('$', '"');
					cargarOpcionesGET('CALLE', nombrePOI, document.getElementById("whatTab").value);
				}
				else if(document.getElementById("llamadaDesdeEsquemaLineas").value=='ESQUINA'){
					var nombrePOI= document.getElementById("nombre").value;
					nombrePOI= nombrePOI.replace('$', '"');
					nombrePOI= nombrePOI.replace('$', '"');
					cargarOpcionesGET('ESQUINA', nombrePOI, document.getElementById("whatTab").value);
				}
				else if(document.getElementById("llamadaDesdeEsquemaLineas").value=='RUTA') {
					marcarPestanyaPyR('1');
					calcula_ruta('mapa');
				}
			}
		},
		onFailure: function(){ 
			$(opcionBusqueda+"_combo3").innerHTML= txtErrorProcesandoPeticion[idioma];
		}
	});
}

/**
	opcion-> calculoRutas o mapa
	Consulta ajax para guardar en BD las opciones avanzadas para este usuario concreto.
	No hacemos nada con el resultado.
*/
function setOpcionesAvanzadas(){
    
	if($('tipoHora').checked) var tipoHora=0;
	else if($('tipoHora_').checked) var tipoHora=1;
	var data="?sec=setOpcionesAvanzadas&"+"idUsuario="+$('idUsuario').value+'&fecha='+$('fechaOA').value+'&hora='+$("horaOA").value+'&transbordos='+$('transbordosOA').value+'&tiporuta='+$('tipoRutaOA').value+'&longpie='+$('longitudMaximaAPieOA').value+'&velocidadpie='+$('velocidadAPieOA').value+'&tipohora='+tipoHora;
	//alert('PRUEBAS.'+ data)
	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);
		},
		onFailure: function(){ 
			$(opcionBusqueda+"_combo3").innerHTML= txtErrorProcesandoPeticion[idioma];
		}
	});
}

/**
	Asigna a los formularios y inputs  de opciones avanzadas los valores almacenados en la BD para ese usuario concreto
*/
function modificarInputsAvanzadosMapa(xml){

	$('fechaOA_pyr').value= xml.getElementsByTagName("fecha").item(0).firstChild.data;
	$('horaOA_pyr').value= xml.getElementsByTagName("hora").item(0).firstChild.data;
	if(xml.getElementsByTagName("tipohora").item(0).firstChild.data=='0') $('tipoHora_pyr').checked='checked';
	else $('tipoHora_pyr_').checked='checked';
	
	$('transbordosOA_pyr').selectedIndex= xml.getElementsByTagName("transbordos").item(0).firstChild.data;
	$('longitudMaximaAPieOA_pyr').value= xml.getElementsByTagName("longpie").item(0).firstChild.data;
	
	$('tipoRutaOA_pyr').selectedIndex= xml.getElementsByTagName("tiporuta").item(0).firstChild.data;
	$('velocidadAPieOA_pyr').selectedIndex= xml.getElementsByTagName("velocidadpie").item(0).firstChild.data;
	
	//asigno la fecha de vigencia maxima a un hidden para posteriormente poder realizar la comparacion ante una fecha introducida por el usuario
	$('fechaVigenciaMaxima').value= xml.getElementsByTagName("fechaVigenciaMaxima").item(0).firstChild.data;
}


/**
	Carga los parametros del get, y busca por los parametros concretos (whattab, nombrePoi, nombreParada, valorX, valorY)
	provenientes de la parte esquemas de lineas, y sirven para cargar origen/destino, buscar lugar de interes, o centrar en el mapa.
*/

function cargarOpcionesGET(opcion, nombre, whatTab){
	
	//alert(opcion+' '+nombre+' '+whatTab);		
	
	if(opcion=='POI'){
	
		if(whatTab=="3"){
			//opcion -> parada/puntoInteres/comoIrA
			queTengoCerca('puntoInteres', nombre);
		}
		else if(whatTab=="2"){
			marcarPestanyaPyR('2');
			pyr_2_pie_menus('3');
			
			document.getElementById("pyr2_origen_lugarInteres").value= nombre;
			findPoint('pyr2_origen');
		}
		else if(whatTab=="1_1"){
			marcarPestanyaPyR('1');
			pyr_1_pie_tab('Origen');
			pyr_1_pie_menu_origen('3');
			
			flagBD=1;
			document.getElementById("pyr1_origen_lugarInteres").value= nombre;
			findPoint('pyr1_origen');
			pyr_1_pie_tab("Destino");
		}
		else if(whatTab=="1_2"){
			marcarPestanyaPyR('1');
			pyr_1_pie_tab('Destino');
			pyr_1_pie_menu_destino('3');
			
			flagBD=1;
			document.getElementById("pyr1_destino_lugarInteres").value= nombre;
			findPoint('pyr1_destino');
			pyr_1_pie_tab("Origen");
		}
	}
	else if(opcion=='PARADA'){
		if(whatTab=="3"){
			//opcion -> parada/puntoInteres/comoIrA
			queTengoCerca('parada', nombre);
		}
		else if(whatTab=="2"){
			marcarPestanyaPyR('2');
			pyr_2_pie_menus('4');
			
			document.getElementById("pyr2_origen_BusquedaParada").value= nombre;
			findParadaPorNombre('pyr2_origen');
		}
		else if(whatTab=="1_1"){
		
			marcarPestanyaPyR('1');
			pyr_1_pie_tab('Origen');
			pyr_1_pie_menu_origen('4');
			
			flagBD=1;			
			document.getElementById("pyr1_origen_BusquedaParada").value= nombre;
			findParadaPorNombre('pyr1_origen');
			pyr_1_pie_tab("Destino");
		}
		else if(whatTab=="1_2"){
			marcarPestanyaPyR('1');
			pyr_1_pie_tab('Destino');
			pyr_1_pie_menu_destino('4');

			flagBD=1;			
			document.getElementById("pyr1_destino_BusquedaParada").value= nombre;
			findParadaPorNombre('pyr1_destino');
			pyr_1_pie_tab("Origen");
		}
	}
	else if(opcion=='CALLE') {
		if(whatTab=="3"){
			//opcion -> parada/puntoInteres/comoIrA
			queTengoCerca('calle', nombre);
		}
		else if(whatTab=="2") {
			marcarPestanyaPyR('2');
			pyr_2_pie_menus('1');
			
			/* Separamos la calle del número */
			var direccion = nombre.split(', ');
			document.getElementById("pyr2_origen_street").value= direccion[0];
			document.getElementById("pyr2_origen_number").value= direccion[1];
			findStreet('pyr2_origen');

		}
	}
	else if(opcion=='ESQUINA') {
		if(whatTab=="3"){
			//opcion -> parada/puntoInteres/comoIrA
			queTengoCerca('esquina', nombre);
			//alert("QTC ESQUINA");
		}
		else if(whatTab=="2") {
			marcarPestanyaPyR('2');
			pyr_2_pie_menus('2');
			document.getElementById("pyr2_origen_street1").value = nombre;
			findCorner1('pyr2_origen');
		}
	}
	//else if(opcion=='RUTA'){
	//	
	//}

}

/**
	Consulta ajax para obtener la calle mas cercana al punto seleccionado
*/
function getNearestStreet(x, y, hiddenID, tabID) {

	var aleatorio=Math.random();
	
	new Ajax.Request(_URL_mapUtilsPetitions+"?sec=getNearestStreet&x="+x+"&y="+y+"&nocache="+aleatorio,
	{
		method:'get',
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			//alert("Success! \n\n" + response);
			
			var equisemeele = getXMLObject(response);
			
			//calle mas cercana al punto seleccionado
			if(equisemeele.getElementsByTagName("nombre").item(0)!=null){
				$(hiddenID).value= txtCercaDe[idioma]+": "+equisemeele.getElementsByTagName("nombre").item(0).firstChild.data;
				$(tabID).innerHTML= txtCercaDe[idioma]+": "+equisemeele.getElementsByTagName("nombre").item(0).firstChild.data;
				//alert($(id).value);
			}
			else{
				$(hiddenID).value= txtPuntoSeleccionadoEnPlano[idioma];
				$(tabID).innerHTML= txtPuntoSeleccionadoEnPlano[idioma];
			}
		},
		onFailure: function(){ 
			alert(txtErrorProcesandoPeticion[idioma]);
		}
	});
}

