//Archivo de funciones para javascript
function nuevoAjax() 
{ 
var xmlhttp=false; 
try 
{ 
/* Creacion del objeto AJAX para navegadores no IE*/ 
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
 catch(e) 
{
try
{ 
// Creacion del objet AJAX para IE 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E)
{
if (!xmlhttp && typeof XMLHttpRequest!="undefined") xmlhttp=new XMLHttpRequest();
}
}
return xmlhttp;
}
//********************************************************************************//
//Esta funcion reordena la matriz para que los datos queden ordenados sin huecos
//entremedio de los puntos que utilizamos.
function verMatriz()
{
	var max=Matriz.length;
	for (i=0;i<max;i++)
	{	
		alert(Matriz[i][0]+"x-"+Matriz[i][1]+"y- con Indice:"+Matriz[i][2]+".");
	}
	
}
//**********************************************************************************************
function nombreXId(id)
{
	ajax=nuevoAjax();
	ajax.open("POST", "ajax_cache_guardar.php?accion=nombreXId&dato="+id, true);
	nombre = ajax.responseText;
	return nombre;
}
//*********************************************************************************************//
//Esta funcion crea una ruta q pasa por los puntos marcados en el mapa, y que deben estar en la matriz
function crearRuta(){
	//Primero pasamos nuestra matriz de datos a la matriz que cargaremos en las rutas
	var MatrizRuta=new Array(0);
	//Mensajes para paletos que no saben hacer 2 clicks
	if (Matriz.length == 0){alert("¿Ruta al vacio? Anda, acuestate.");}
	if (Matriz.length == 1){alert("Con un solo punto poco te vas a mover.");}
	else
	{
		for (var i=0;i<Matriz.length;i++)
		{
			var point = new GPoint (Matriz[i][1],Matriz[i][0]);
			MatrizRuta[i]=point;
		}
		directions.clear();
		map.clearOverlays();
		directions.loadFromWaypoints(MatrizRuta);
	}
}
//***********************************************************************************//
//Esta funcion compara nuestra matriz con la fila que queremos borrar para sacar el
//indice de la tabla que queremos borrar.
//Utilizamos 999 como numero al que nunca llegaremos para saber que esa linea de la matriz ya se ha borrado.
function borrar(r){
max = 50; //Numero maximo de personas listadas
z = 1;
for (var i=0;i<max;i++)
{
	if(Matriz[i][2]!=50)
	{
		if(Matriz[i][2]==r)
		{
			//document.getElementById('tabladatos').deleteRow(z);
			//alert("deberiamos borrar ahora...");
			Matriz.splice(i,1);
			//Matriz[i][2]=50;
			//cont--;
			var i=50;
		}
		else{z++;}
	}
}
//alert("Hemos borrado el punto ya");
//Borramos el punto de la matriz

//Limpiamos todas las marcas
map.clearOverlays();
//Volvemos a cargar las marcas que tenemos en la tabla de datos
mostrarTodos();
}//para la funcion borrar
//*************************************************************************************************//
//Con esta funcion recorremos toda nuestra matriz de los datos, y vamos representando en el mapa los que
//estan.
function mostrarTodos()
{
	var max=Matriz.length;
	for (i=0;i<max;i++)
	{
				//alert("Buscamos");
				var point = new GPoint (Matriz[i][0],Matriz[i][1]);
				var marker = new GMarker(point,{title:""+Matriz[i][2]+""});
				map.addOverlay(marker);
	}

}
//********************************************************************************//
//Esta funcion pasa a nuestra matriz global los datos metidos en el formulario
function listado (MatrizDatos){

	
		var Aux=new Array(3);
		Aux[0]=document.posicion.x.value;
		Aux[1]=document.posicion.y.value;
		Aux[2]=cont;
		//alert("vamosa crear en la matriz");
		MatrizDatos[MatrizDatos.length]=Aux;
		//alert("creado");
		cont++;
//mostrar(cont);
}
//*************************************************************************************//
//Funcion q muestrael trafico que existe en una ruta
function activarTrafico (){
	
	trafico = new GTrafficOverlay();
	map.addOverlay(trafico);
	trafico.show();
}
//*************************************************************************************//
//Funcion q muestrael trafico que existe en una ruta
function desactivarTrafico (){
	
	//trafico = new GTrafficOverlay();
	//map.addOverlay(trafico);
	trafico.hide();
}
//*************************************************************************************//
//Funcion para rechazar el pasajero en el viaje
function verPerfil(id,modo){
	//En el modo el 0 es el conductor y el 1 el pasajero a la hora de actualizar los divs
	//Procedimiento para votar en la base de datos
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=verPerfil&id="+id+"&modo="+modo, true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{
												var cadena = ajax.responseText; 
												document.getElementById("basicModalContent").innerHTML = cadena;
											} 	
										} 
	ajax.send(null)	
		
}
//*************************************************************************************************
//Con esta funcion recorremos toda nuestra matriz de los datos, y vamos representando en el mapa los que
//estan.
function alMapa(cual)
{
				map.clearOverlays();
				if (cual==0){
					var point = new GPoint (document.posicion.xO.value,document.posicion.yO.value);
					var marker = new GMarker(point,{title:"Origen"});
					map.addOverlay(marker);
				}
				else{
					var point = new GPoint (document.posicion.xD.value,document.posicion.yD.value);
					var marker = new GMarker(point,{title:"Destino"});
					map.addOverlay(marker);
				}

}
//*************************************************************************************************//
function denegado(nick){
	//Funcion que nos dice si el usuario esta baneado o no
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=denegado&id="+id, true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{
												var res = ajax.responseText;
											} 	
										} 
	ajax.send(null);	
	if (res="aceptado"){return true}
	else {return false}
}
//*****************************************************************************************
function mostrarDatos2() 
{
	listaCoches();
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=mostrar", true); 
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												var cadena = ajax.responseText;
												//alert(cadena);
												var cadena = cadena.split(",");
												//Ahora la variable cadena es un array que contiene los titulos de todas las rutas de este usuario
												for (var i=0;i<cadena.length;i++){
													if (!cadena[i] == ""){
														anadirRuta(cadena[i],cadena[i+1]);
														i++;
														};};
												//document.form2.texto1.value=ajax.responseText;
												//document.getElementById("prueba").innerHTML = cadena[0];
											} 	
										} 
	ajax.send(null)
	
}
//*********************************************************************************************************
function borrarListaRutas(){
	//Funcion que borra toda la lsita de rutas que tenemos desplegada
	var ruta = document.getElementById("listaRutas");
	var li = ruta.getElementsByTagName("li");
	var total = li.length;
		for (var i=0;i<total;i++){
			ruta.removeChild(li[0]);
		}
}
//*************************************************************************************************
function verRuta(id){
	//Enviamos por ajax la peticion a nuestro servidor
	var MatrizRuta = new Array(0);
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=verRuta&id="+id, true); 
	ajax.onreadystatechange=function() { 
										if (ajax.readyState==4) 
											{ 
												//Transformamos el string cadena en un array con las coordenadas
												var cadenaRuta = ajax.responseText;
												var cadenaRuta = cadenaRuta.split(",");
												//Ahora pasamos de el array cadena a la matriz para mostrarlos en el mapa
												
												var conta = 0; //Variable contador para los indices y la posicion de la matriz
												for (var z=0;z<cadenaRuta.length;z++)
													{
														if (!cadenaRuta[z]=="")
														{
															var Aux=new Array(3);
															Aux[0] = cadenaRuta[z];
															Aux[1] = cadenaRuta[z+1];
															Aux[2] = conta;
															MatrizRuta[conta]=Aux;
															conta++;
															z++;
														}
													}
												//Igualamos las matrices eliminando asi la que tenemos en el mapa, si la hay
												Matriz = MatrizRuta;
												//Limpiamos el mapa
												map.clearOverlays();
												//Ahora pintamos nuestra ruta
												crearRuta();
												//Vamos a pasar los valores al programador de rutas
												ajax2=nuevoAjax(); 
												ajax2.open("POST", "ajax_cache_guardar.php?accion=nombreXId&id="+id, true); 
												ajax2.onreadystatechange=function() { 
																					if (ajax2.readyState==4) 
																						{
																							document.chooseDateForm.ruta.value = ajax2.responseText;
																							document.chooseDateForm.rutaId.value = id;
																						}
																					}
												ajax2.send(null)	
											} 
										} 
	ajax.send(null)
}
//****************************************************************************************
function anadirRuta(nombre,id_ruta) {
// Creamos un nuevo elemento LI
var li = document.createElement("li");
//Convertimos la variable string nombre en un enlace con llamada al evento que lo mostrara
var enlace = "<div class='col_iz_txt2_datos'><a href='#' onclick='javascript:verRuta("+id_ruta+");'>"+nombre+"</a></div><div class='col_iz_txt2_icono'><a href='#'><img src='imgs/Delete-peq.png' border='0' width='25' height='25' alt='borrar' onclick='javascript:eliminarRuta("+id_ruta+");' title='Eliminar la ruta' /></a></div>";
// Añadimos el valor introducido al nuevo elemento
li.innerHTML = enlace;
// Añadimos el elemento LI a la lista UL
var ul = document.getElementById("listaRutas");
ul.appendChild(li);
}
//*****************************************************************************************
function eliminarRuta(id) 
{
	//Accedemos a la bbdd para sacar el titulo de la ruta que queremos borrar debido a fallos en el paso de variables
		ajax2=nuevoAjax(); 
		ajax2.open("POST", "ajax_cache_guardar.php?accion=nombreXId&id="+id, true); 
		
		ajax2.onreadystatechange=function() {  
											if (ajax2.readyState==4) 
												{
													var title = ajax2.responseText;
													var r=confirm("¿Esta seguro de que quiere eliminar la ruta:"+title+"?")
													if (r==true)
													{
														ajax=nuevoAjax(); 
														ajax.open("POST", "ajax_cache_guardar.php?accion=eliminar&id="+id, true); 
														ajax.onreadystatechange=function() {  
																							if (ajax.readyState==4) 
																								{ 
																									document.getElementById("MensajesStandard").style.backgroundColor="#0099FF";
																									document.getElementById("MensajesStandard").innerHTML = "Ruta eliminada";
																									borrarListaRutas();
																									mostrarDatos2();
																									map.clearOverlays();
																									setTimeout("document.getElementById('MensajesStandard').innerHTML = ''",3000)
																								} 
																							} 
														ajax.send(null);
													}
												} 
											}
		ajax2.send(null);
}
//Esta funcion esta conectada con el modulo de programar rutas y lista los coches del usuario que quiere programar la ruta
function listaCoches()
{
	ajax3=nuevoAjax(); 
	ajax3.open("POST", "ajax_cache_guardar.php?accion=listaCoches", true);
	ajax3.onreadystatechange=function() {  
										if (ajax3.readyState==4) 
											{ 
												var coches = ajax3.responseText;
												var coches = coches.split(",");
												//Establecemos el numero de coches en el select
												document.chooseDateForm.coche.length = coches.length-1;
												//Ahora la variable cadena es un array que contiene los coches del usuario
												for (var i=0;i<=coches.length;i++){
													document.chooseDateForm.coche.options[i].value = coches[i];
													document.chooseDateForm.coche.options[i].text = coches[i];	
												}
											} 
										} 
	ajax3.send(null)
}
//*************************************************************************************************
function guardarDatos() 
{
	nombre = prompt('Introduce un titulo para la ruta','');
	if (!nombre=="")
	{
		ajaxg=nuevoAjax();
		ajaxg.open("POST", "ajax_cache_guardar.php?accion=guardar&dato="+Matriz+"&titulo="+nombre, true);
		ajaxg.onreadystatechange=function() { 
											if (ajaxg.readyState==4)
												{
													//alert(ajax.responseText);
													document.getElementById("MensajesStandard").style.backgroundColor="#0099FF";
													document.getElementById("MensajesStandard").innerHTML = "Guardado";
													borrarListaRutas();
													mostrarDatos2();
													setTimeout("document.getElementById('MensajesStandard').innerHTML = ''",3000)
													map.clearOverlays();
												}
											}
		ajaxg.send(null);
	}else
	{
		//alert("Ruta demasiado abstracta, introduce un titulo.");
	}
	document.getElementById('controles').scrollIntoView(true);
}
//******************************************************************************************************
//****************************************************************************************
function verRutaBusqueda(id){
	//Enviamos por ajax la peticion a nuestro servidor
	var MatrizRuta = new Array(0);
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=verRuta&id="+id, true); 
	ajax.onreadystatechange=function() { 
										if (ajax.readyState==4) 
											{ 
												//Transformamos el string cadena en un array con las coordenadas
												var cadenaRuta = ajax.responseText;
												var cadenaRuta = cadenaRuta.split(",");
												//Ahora pasamos de el array cadena a la matriz para mostrarlos en el mapa
												
												var conta = 0; //Variable contador para los indices y la posicion de la matriz
												for (var z=0;z<cadenaRuta.length;z++)
													{
														if (!cadenaRuta[z]=="")
														{
															var Aux=new Array(3);
															Aux[0] = cadenaRuta[z];
															Aux[1] = cadenaRuta[z+1];
															Aux[2] = conta;
															MatrizRuta[conta]=Aux;
															conta++;
															z++;
														}
													}
												//Igualamos las matrices eliminando asi la que tenemos en el mapa, si la hay
												Matriz = MatrizRuta;
												//Limpiamos el mapa
												map.clearOverlays();
												//Ahora pintamos nuestra ruta
												crearRuta();
											} 
										} 
	ajax.send(null)
}
//*********************************************************************************************//
//Esta funcion crea una ruta q pasa por los puntos marcados en el mapa, y que deben estar en la matriz
function crearRutaSinMapa(){
	//Primero pasamos nuestra matriz de datos a la matriz que cargaremos en las rutas
	var MatrizRuta=new Array(0);
		for (var i=0;i<Matriz.length;i++)
		{
			var point = new GPoint (Matriz[i][1],Matriz[i][0]);
			MatrizRuta[i]=point;
		}
		direct = new GDirections();
		direct.loadFromWaypoints(MatrizRuta);
		while (direct.getStatus().code == G_GEO_SUCCESS){};
		var numero = direct.getNumRoutes();
		alert("3");
		alert("rutas: "+numero);
}
//***********************************************************************************//
function borrarListaRutasBusqueda(){
	//Funcion que borra toda la lsita de rutas que tenemos desplegada
	var ruta = document.getElementById("listaRutasBusqueda");
	var li = ruta.getElementsByTagName("li");
	var total = li.length;
		for (var i=0;i<total;i++){
			ruta.removeChild(li[0]);
		}
}
//****************************************************************************************
function pedirViaje(id){
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=pedirViaje&id="+id, true); 
	ajax.onreadystatechange=function() { 
										if (ajax.readyState==4) 
											{
												var cadena = ajax.responseText;
												alert(cadena);
											} 
										} 
	ajax.send(null)
}
//****************************************************************************************
function anadirRutaBusqueda(nombre,id_ruta,id_user,hora,id_ruta_prog) {
//Primero comprobamos que no hemos encontrado ya esa ruta
	if (!document.getElementById("ref"+id_ruta+""))
	{
		// Creamos un nuevo elemento LI
		var li = document.createElement("li");
		//Convertimos la variable string nombre en un enlace con llamada al evento que lo mostrara
		var enlace = "<table width='270' border='0' cellpadding='0' cellspacing='0'><tr><td width='149' height='51' valign='bottom'><a href='#' onclick='javascript:verRutaBusqueda("+id_ruta+");'>"+nombre+"</a></td><td width='74' align='center' valign='bottom'>"+hora+"</td><td width='47' valign='bottom'><a href='verPerfil.php?height=400&width=600&id="+id_user+"'  class='thickbox' id='ref"+id_ruta+"'><img src='./iconos/conductor.png' border='0' valign='middle' title='Ver perfil del conductor'></a>&nbsp;<a href='#'><img src='iconos/pedir_viaje.png' border='0' valign='middle' title='Pedir plaza en el viaje' onclick='javascript:pedirViaje("+id_ruta_prog+");'></a></td></tr></table>";
		// Añadimos el valor introducido al nuevo elemento
		li.innerHTML = enlace;
		// Añadimos el elemento LI a la lista UL
		var ul = document.getElementById("listaRutasBusqueda");
		ul.appendChild(li);
		//Modificamos la clase del href
		var ref = document.getElementById("ref"+id_ruta+"");
		tb_init(ref);
	}else{//alert("Esa ruta ya esta dada de alta");
	}
}
//*****************************************************************************************
function pausecomp(millis)
{
var date = new Date();
var curDate = null;

do { curDate = new Date(); }
while(curDate-date < millis);
} 
//*****************************************************************************************			
function buscarRutasAvanzado()
{
	var ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=buscarRutasAvanzado&fecha="+document.chooseDateForm.fecha.value, true); 
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												var cadena = ajax.responseText;
												//alert (cadena);
												var cadena = cadena.split(",");
												//Ahora la variable cadena es un array que contiene los titulos de todas las rutas de este usuario
												for (var i=0;i<cadena.length;i++){
													if (!cadena[i] == ""){
													//Aqui llamamos a la funcion que nos dira si llas rutas nos valen o no.
														//alert(cadena[i+1]+","+cadena[i+2]+","+cadena[i]+","+cadena[i+3]+","+cadena[i+4]);
														setTimeout("+comprobarRuta('"+cadena[i+1]+"',"+cadena[i+2]+","+cadena[i]+","+cadena[i+3]+","+cadena[i+4]+","+i+")",2000);
														i++;
														i++;
														i++;
														i++;
														};};
											}	
										} 
	ajax.send(null)
}
//*****************************************************************************************			
function buscarRutas()
{
	//Paso a binario los checked
	var fumar = 0;
	var comer = 0;
	var adaptado = 0;
	if (document.chooseDateForm.fumar.checked){fumar = 1;}
	if (document.chooseDateForm.comer.checked){comer = 1;}
	if (document.chooseDateForm.adaptado.checked){adaptado = 1;}
	//Obtengo los valores de los puntos origen y destino asi como la fecha y el margen en kilometros
	//Llamo a la base de datos para que me pase las rutas que tengan el mismo origen y destino dentro del margen
	borrarListaRutasBusqueda();
	var ajaxbr=nuevoAjax(); 
	ajaxbr.open("POST", "ajax_cache_guardar.php?accion=buscarRutas&fecha="+document.chooseDateForm.fecha.value+"&hora1="+document.chooseDateForm.hora1.value+"&hora2="+document.chooseDateForm.hora2.value+"&margen1="+document.chooseDateForm.margen1.value+"&margen2="+document.chooseDateForm.margen2.value+"&origenX="+document.posicion.xO.value+"&origenY="+document.posicion.yO.value+"&destinoX="+document.posicion.xD.value+"&destinoY="+document.posicion.yD.value+"&plazasLibres="+document.chooseDateForm.plazas.value+"&fumar="+fumar+"&comer="+comer+"&adaptado="+adaptado, true); 
	ajaxbr.onreadystatechange=function() {  
										if (ajaxbr.readyState==4) 
											{ 
												var cadena = ajaxbr.responseText;
												var cadena = cadena.split(",");
												//Ahora la variable cadena es un array que contiene los titulos de todas las rutas de este usuario
												for (var i=0;i<cadena.length;i++)
												{
													if (!cadena[i] == "")
													{
													//Aqui llamamos a la funcion que nos dira si llas rutas nos valen o no.
														//alert("Llamammos a:"+cadena[i+1]+","+cadena[i+2]+","+cadena[i]+","+cadena[i+3]+","+cadena[i+4]);
														anadirRutaBusqueda(cadena[i+1],cadena[i+2],cadena[i],cadena[i+3],cadena[i+4]);
														i++;
														i++;
														i++;
														i++;
													}
												}
												//Una vez sacadas las rutas mas exactas e inmediatas vamos a buscar las dificiles
												buscarRutasAvanzado();
											} 	
										} 
	ajaxbr.send(null)
}
//*****************************************************************************************
function comprobarRuta(nombre,id_ruta,id_user,hora,id_ruta_prog,bucle){
	//Enviamos por ajax la peticion a nuestro servidor
	var MatrizRuta = new Array(0);
	var calculoTiempo = new Array(0);
	var ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=verRuta&id="+id_ruta, true); 
	ajax.onreadystatechange=function() { 
										if (ajax.readyState==4) 
											{
												var q = { "locale": "es_ES", "preserveViewport": false, "getPolyline": true, "getSteps": true };
												bucle = new GDirections();												
												var direct = bucle;
												var origenbucle = false;
												var destinobucle = false;
												var margen1 = document.chooseDateForm.margen1.value;
												var margen2 = document.chooseDateForm.margen2.value;
												var margen1 = margen1*1000;
												var margen2 = margen2*1000;
										
												//***************************************************************************************************
												GEvent.addListener(direct, 'load', function(){
												var ti = direct.getDuration();
													var num = direct.getNumRoutes();
													var pasomax = direct.getRoute(num-1).getNumSteps();
													var maxPoli = direct.getRoute(num-1).getStep(pasomax-1).getPolylineIndex();
													var puntoOrigen = direct.getRoute(0).getStep(0).getLatLng();
													var puntoUsuario = new GLatLng(document.posicion.yO.value,document.posicion.xO.value,false);
													var tiempo = new Array(0);
													var t = 0;
													for (var x=1;x<maxPoli;x++)
													{
														//Aqui obtenemos el latlng en nuestra ruta
														var puntoMapa = direct.getPolyline().getVertex(x);
														//vamos a añadir al array de puntos para el calculo del tiempo el siguiente punto
														tiempo[t] = puntoMapa;
														//Ahora vamos a construir el que pide el usuario
														if (!origenbucle){
														puntoUsuario = new GLatLng(document.posicion.yO.value,document.posicion.xO.value,false);
														}
														else if (!destinobucle){
														puntoUsuario = new GLatLng(document.posicion.yD.value,document.posicion.xD.value,false);
														}
														var distancia =puntoMapa.distanceFrom(puntoUsuario);
														//alert(distancia);
														if (!origenbucle){var margen = margen1;}
														else {var margen = margen2;}
														if (distancia<margen)
														{
															if (origenbucle){destinobucle=true;}
															else 
																{
																	origenbucle=true;
																	var r= (x/25)+0.5;
																	r = Math.round(r);
																	var i = 0;
																	for (var p=1;p<x;p++)
																	{
																		calculoTiempo[i] = direct.getPolyline().getVertex(p);
																		p = p+r-1;
																		i++;
																	}
																}
														}
														t++;
														x=x+20;//Aqui pondremos la variables del admin para la precision
														//Ahora que sabemos que esta ruta tiene coincidencias, vamos a agregarla
													}
													if ((origenbucle) && (destinobucle)){
														//Como hay coincidencia, vamos a calcular el tiempo de proceso que tenemos
														GEvent.clearListeners(direct,'load');
														GEvent.addListener(direct, 'load', function(){
																										var t = direct.getDuration();
																										//alert(t.html);
																										//Ajustamos las horas a los parametros del usuario y la cambiamos
																										var h = t.seconds/3600;
																										h = Math.round(h-0.5);
																										var m = (t.seconds-(h*3600))/60;
																										m = Math.round(m-0.5);
																										hora = hora + h;
																										hora = hora+":"+m;
																										if (hora>document.chooseDateForm.hora1.value&&hora<document.chooseDateForm.hora2.value){
																											anadirRutaBusqueda(nombre,id_ruta,id_user,hora,id_ruta_prog);
																										}
																										});
														direct.loadFromWaypoints(calculoTiempo,q);
														}
												});
												//*********************************************************************************************************
												GEvent.addListener(direct, 'error', function(){
													//alert(direct.getStatus().code); 
												});
												
												//Transformamos el string cadena en un array con las coordenadas
												var cadenaRuta = ajax.responseText;
												var cadenaRuta = cadenaRuta.split(",");
												//alert("hola01");
												//Ahora pasamos de el array cadena a la matriz para mostrarlos en el mapa
												var conta = 0; //Variable contador para los indices y la posicion de la matriz
												for (var z=0;z<cadenaRuta.length;z++)
													{
														if (!cadenaRuta[z]=="")
														{
															var point = new GPoint(cadenaRuta[z+1],cadenaRuta[z]);
															MatrizRuta[conta]=point;
															conta++;
															z++;
														}
													}
												//Variables para que el objeto contenga todos los pasos
												direct.loadFromWaypoints(MatrizRuta,q);
											} 
										} 
	ajax.send(null)
}
//****************************************************************************************
//******************************************************************************
function limpiar(cual){
	
	if (cual==0)
		{
		document.posicion.xO.value="";
		document.posicion.yO.value="";
		document.posicion.origen.value="";
		map.clearOverlays();
		}
	else if (cual==1)
		{
		document.posicion.xD.value="";
		document.posicion.yD.value="";
		document.posicion.destino.value="";
		map.clearOverlays();
		}
}
//************************************************************************************************
//Funcion que lista los pasajeros apuntados a una ruta
function verPasajeros(idruta){
	if (document.getElementById("pasajerosRuta"+idruta).style.display=='block')
		{document.getElementById("pasajerosRuta"+idruta).style.display='none';}
	else {document.getElementById("pasajerosRuta"+idruta).style.display='block';}
}
//************************************************************************************************
//Funcion que lista los pasajeros apuntados a una ruta desde la tabla de pasajeros
function verPasajeros2(idruta){
	if (document.getElementById("pasajerosRuta2"+idruta).style.display=='block')
		{document.getElementById("pasajerosRuta2"+idruta).style.display='none';}
	else {document.getElementById("pasajerosRuta2"+idruta).style.display='block';}
}
//************************************************************************************************
//Funcion que lista los pasajeros apuntados a una ruta
function calcularVotos(idruta){
	
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=calcularVotos", true); 
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												var cadena = ajax.responseText;
												var cadena = cadena.split(",");
												//Ahora la variable cadena es un array que contiene los titulos de todas las rutas de este usuario
												for (var i=0;i<cadena.length;i++){
													if (!cadena[i] == ""){
														anadirPasajero(cadena[i],cadena[i+1]);
														i++;
														};};												
											} 	
										} 
	ajax.send(null)
}
//************************************************************************************************
//Funcion para votar
function votar(voto,idruta,id,sesion,modo){	
	//En el modo el 0 es el conductor y el 1 el pasajero a la hora de actualizar sus divs
	//Procedimiento para votar en la base de datos
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=votar&voto="+voto+"&idruta="+idruta+"&id="+id+"&modo="+modo, true); 
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{
												if (ajax.responseText=="tiempo invalido")
													alert("No es posible votar el viaje. Si ya ha realizado el viaje contacte con el Administrador.");
												else
												{
													/*document.getElementById("MensajesStandard").style.backgroundColor="#0099FF";
													document.getElementById("MensajesStandard").innerHTML = "Votacion Realizada";
													setTimeout("document.getElementById('MensajesStandard').innerHTML = ''",3000);*/
													var cadena = ajax.responseText;
													if (modo==0){document.getElementById("pasajerosRuta"+idruta).innerHTML = cadena;}
													else if (modo==1){document.getElementById("pasajerosRuta2"+idruta).innerHTML = cadena;}
													var object = document.getElementById("ref"+sesion+""+id+""+idruta);
													tb_init(object);
												}
											} 	
										} 
	ajax.send(null)	
		
}
//*************************************************************************************************
//Funcion para aceptar el pasajero en el viaje
function aceptarPasajero(id,idruta,sesion){
	//En el modo el 0 es el conductor y el 1 el pasajero a la hora de actualizar sus divs
	//Procedimiento para votar en la base de datos
	var titulo = document.getElementById("Ruta"+idruta).innerHTML;
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=aceptarPasajero&id="+id+"&idruta="+idruta+"&titulo='"+titulo, true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												var cadena = ajax.responseText;
												document.getElementById("pasajerosRuta"+idruta).innerHTML = cadena;
												var object = document.getElementById("ref"+sesion+""+id+""+idruta);
												tb_init(object);	
												alert("Pasajero Aceptado");
											} 	
										} 
	ajax.send(null)	
		
}
//*************************************************************************************************
//Funcion para rechazar el pasajero en el viaje
function rechazarPasajero(id,idruta,sesion){	
	//En el modo el 0 es el conductor y el 1 el pasajero a la hora de actualizar sus divs
	//Procedimiento para votar en la base de datos
	var titulo = document.getElementById("Ruta"+idruta).innerHTML;
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=rechazarPasajero&id="+id+"&idruta="+idruta+"&titulo="+titulo, true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												var cadena = ajax.responseText;
												document.getElementById("pasajerosRuta"+idruta).innerHTML = cadena;
												var object = document.getElementById("ref"+sesion+""+id+""+idruta);
												tb_init(object);	
												alert("Pasajero rechazado");
											} 	
										} 
	ajax.send(null)	
		
}
//*************************************************************************************************
//Funcion para rechazar el pasajero en el viaje
function hacerAmigo(id){	
	//En el modo el 0 es el conductor y el 1 el pasajero a la hora de actualizar sus divs
	//Procedimiento para votar en la base de datos
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cache_guardar.php?accion=hacerAmigo&id="+id, true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												alert("Amigo añadido a tu lista.");																							
											} 	
										} 
	ajax.send(null)	
		
}
//**************************************************************************************************
//Funcion que limpia el mapa de toda las marcas y vacia la matriz que guardaba los puntos
function limpiarMapa(){
	
	map.clearOverlays();
	var aux = new Array();
	Matriz = aux;
}
//********************************************************************************************************
function programarRuta()
{
	if(document.chooseDateForm.rutaId.value!='')
	{
	ajax=nuevoAjax();
	ajax.open("POST", "ajax_cache_guardar.php?accion=altaRuta&ruta="+document.chooseDateForm.rutaId.value+"&fecha="+document.chooseDateForm.fecha.value+"&coche="+document.chooseDateForm.coche.options[document.chooseDateForm.coche.selectedIndex].value+"&tituloRuta="+document.chooseDateForm.ruta.value+"&hora="+document.chooseDateForm.hora.value, true);
	ajax.onreadystatechange=function() { 
										if (ajax.readyState==4)
											{
												var cadena = ajax.responseText;
												if (!cadena==""){alert(cadena);}
												else
												{
													document.getElementById("MensajesStandard").style.backgroundColor="#0099FF";
													document.getElementById("MensajesStandard").innerHTML = "Viaje Programado";
													setTimeout("document.getElementById('MensajesStandard').innerHTML = ''",3000)
												}
											}
										}
	ajax.send(null);
	}
	else
	{
		alert("No ha seleccionado ninguna ruta, guardela antes de programar el viaje.");	
	}
}
//*********************************************************************************************************
function nombreBoton (texto)
{
	document.getElementById("nombreBotones").innerHTML = texto;
	setTimeout("document.getElementById('nombreBotones').innerHTML = '&nbsp;'",2000)
}
//*********************************************************************************************************
function enviarMensaje(){
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cuenta.php?accion=enviarMensaje&iddestino="+document.formnuevo.destino.options[document.formnuevo.destino.selectedIndex].value+"&titulo="+document.formnuevo.titulo.value+"&texto="+document.formnuevo.texto.value, true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												document.getElementById("mensajeEstado").innerHTML = "<h3>Mensaje Enviado<h3>";
												setTimeout("document.getElementById('mensajeEstado').innerHTML = ''",3000)
											} 
										} 
	ajax.send(null)
}
//*********************************************************************************************************
function enviarMail(){
	ajax4=nuevoAjax(); 
	ajax4.open("POST", "ajax_cuenta.php?accion=enviarMail&iddestino="+document.formmail.destino.options[document.formmail.destino.selectedIndex].value+"&titulo="+document.formmail.titulo.value+"&texto="+document.formmail.texto.value, true);
	ajax4.onreadystatechange=function() {  
										if (ajax4.readyState==4) 
											{ 
												document.getElementById("mensajeEstado2").innerHTML = "<h3>E-mail Enviado<h3>";
												setTimeout("document.getElementById('mensajeEstado2').innerHTML = ''",3000)
											} 
										} 
	ajax4.send(null)
}
//********************************************************************************************************
function buscar(){
	if (!document.buscar.usuario.value=="")
	{
		if (document.getElementById("busqueda"+document.buscar.usuario.value)==null)
		{
			ajax=nuevoAjax();
			ajax.open("POST", "ajax_cache_guardar.php?accion=buscarRanking&user="+document.buscar.usuario.value, true); 
			ajax.onreadystatechange=function() {  
												if (ajax.readyState==4) 
													{ 
														var cadena = ajax.responseText;
														if (!cadena=="")
														{
															// Creamos un nuevo elemento LI
															var li = document.createElement("li");
															// Añadimos el valor introducido al nuevo elemento
															li.innerHTML = cadena;
															// Añadimos el elemento LI a la lista UL
															var ul = document.getElementById("busqueda");
															ul.appendChild(li);
															tb_init(document.getElementById("busqueda"+document.buscar.usuario.value));
														}
													} 	
												} 
			ajax.send(null)
		}
		else
		{
			alert("Ya has realizado la busqueda de este usuario.");
		}
	}
	else
	{
		alert("Introduce u usuario.");
	}
}
//*********************************************************************************************
function MM_popupMsg(msg) { //v1.0
  alert(msg);
}

function eliminar(){
    if (!confirm('¿Esta seguro de que desea eliminar este coche?')){
        return false;
    }
}
//-->
//**************************************************************************
function activarEnlaces(maxi){

	for(var i=0;i<maxi;i++)
	{
		tb_init(document.getElementById("mensaje"+i));
		tb_init(document.getElementById("perfil"+i));	
	}
}
//**************************************************************************
function verBandeja(){
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cuenta.php?accion=bandeja", true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{
												var cadena = ajax.responseText;
												var cadena = cadena.split("%"); 
												document.getElementById("panelCuenta").innerHTML = cadena[0];
												activarEnlaces(cadena[1]);
											} 	
										} 
	ajax.send(null)	
}
//**************************************************************************
function verEnviados(){
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cuenta.php?accion=enviados", true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{
												var cadena = ajax.responseText;
												var cadena = cadena.split("%"); 
												document.getElementById("panelCuenta").innerHTML = cadena[0];
												activarEnlaces(cadena[1]);
											} 	
										} 
	ajax.send(null)	
}
//************************************************************************************************
//Funcion que busca un usuario y lo muestra en el ranking
function buscarDenegados(){
	if (!document.buscar.usuario.value=="")
	{
		if (document.getElementById("Denegado"+document.buscar.usuario.value)==null)
		{
			ajax=nuevoAjax();
			ajax.open("POST", "ajax_cache_guardar.php?accion=buscarDenegados&user="+document.buscar.usuario.value, true); 
			ajax.onreadystatechange=function() {  
												if (ajax.readyState==4) 
													{ 
														var cadena = ajax.responseText;
														// Creamos un nuevo elemento LI
														var li = document.createElement("li");
														// Añadimos el valor introducido al nuevo elemento
														li.innerHTML = cadena;
														// Añadimos el elemento LI a la lista UL
														var ul = document.getElementById("listaDenegados");
														ul.appendChild(li);
														tb_init(document.getElementById("Denegado"+document.buscar.usuario.value));											
													} 	
												} 
			ajax.send(null)
		}
		else
		{
			alert("Ya has realizado la busqueda de este usuario.");
		}
	}
	else
	{
		alert("Introduce un usuario.");
	}
}
//***********************************************************************************************
function denegar(id){
	
	ajax2=nuevoAjax(); 
	ajax2.open("POST", "ajax_cache_guardar.php?accion=userXId&id="+id, true); 
	ajax2.onreadystatechange=function() {  
										if (ajax2.readyState==4) 
											{
												var title = ajax2.responseText;
												var r=confirm("¿Esta seguro de que quiere denegar el acceso al usuario "+title+"?");
												if (r==true)
												{
												ajax=nuevoAjax();
												ajax.open("POST", "ajax_cache_guardar.php?accion=Denegar&id="+id, true); 
												ajax.onreadystatechange=function() {  
																					if (ajax.readyState==4) 
																						{
																							document.getElementById("MensajesStandard").style.backgroundColor="#0099FF"; 
																							document.getElementById("MensajesStandard").innerHTML = "Usuario Baneado";
																							setTimeout("document.getElementById('MensajesStandard').innerHTML = ''",3000)
																						} 	
																					} 
												ajax.send(null)
												}
											}
										}
	ajax2.send(null)
}
function listarLogs ()
{
	ajax2=nuevoAjax(); 
	ajax2.open("POST", "ajax_cache_guardar.php?accion=listarLogs&log="+document.form1.lista_Logs.value, true); 
	ajax2.onreadystatechange=function() {  
										if (ajax2.readyState==4) 
											{
												var cadena = ajax2.responseText;
												//alert(cadena);
												var cadena = cadena.split("%");
												document.getElementById("listaLogs").innerHTML = cadena[0];
												for (var i=0;i<cadena[1];i++)
												{
													var object = document.getElementById("log"+i);
													tb_init(object);																							
												}
											}
										}
	ajax2.send(null)
}
function reaceptar (id)
{
	ajax2=nuevoAjax(); 
	ajax2.open("POST", "ajax_cache_guardar.php?accion=reaceptar&id="+id, true); 
	ajax2.onreadystatechange=function() {  
										if (ajax2.readyState==4) 
											{
												document.getElementById("MensajesStandard").style.backgroundColor="#0099FF"; 
												document.getElementById("MensajesStandard").innerHTML = "Usuario Re-Aceptado";
												setTimeout("document.getElementById('MensajesStandard').innerHTML = ''",3000)
												listarLogs();
											}
										}
	ajax2.send(null)
}
function seguridad_clave(){
	var clave = document.getElementById("pass").value;
   var seguridad = 0;
   if (clave.length!=0){
      if (tiene_numeros(clave) && tiene_letras(clave)){
         seguridad += 30;
      }
      if (tiene_minusculas(clave) && tiene_mayusculas(clave)){
         seguridad += 30;
      }
      if (clave.length >= 4 && clave.length <= 5){
         seguridad += 10;
      }else{
         if (clave.length >= 6 && clave.length <= 8){
            seguridad += 30;
         }else{
            if (clave.length > 8){
               seguridad += 40;
            }
         }
      }
   }
   if (seguridad<30){document.getElementById("seguridadclave").style.color="#000";
   						document.getElementById("seguridadclave").align = "center";
						document.getElementById("seguridadclave").innerHTML = "Calidad de contraseña: Mala";
						setTimeout("document.getElementById('seguridadclave').innerHTML = ''",3000)}
   	else{
		if (seguridad<60){document.getElementById("seguridadclave").style.color="#F00";
   						document.getElementById("seguridadclave").align = "center";
						document.getElementById("seguridadclave").innerHTML = "Calidad de contraseña: Media";
						setTimeout("document.getElementById('seguridadclave').innerHTML = ''",3000)}
   			else{
			if (seguridad<80){document.getElementById("seguridadclave").style.color="#00F";
   						document.getElementById("seguridadclave").align = "center";
						document.getElementById("seguridadclave").innerHTML = "Calidad de contraseña: Buena";
						setTimeout("document.getElementById('seguridadclave').innerHTML = ''",3000)}
						
   				else{document.getElementById("seguridadclave").style.color="#026804";
   						document.getElementById("seguridadclave").align = "center";
						document.getElementById("seguridadclave").innerHTML = "Calidad de contraseña: Óptima";
						setTimeout("document.getElementById('seguridadclave').innerHTML = ''",3000)}}}        
}
function tiene_numeros(texto){
	var numeros="0123456789";
   for(i=0; i<texto.length; i++){
      if (numeros.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
} 
function tiene_letras(texto){
	var letras="abcdefghyjklmnñopqrstuvwxyz";
   texto = texto.toLowerCase();
   for(i=0; i<texto.length; i++){
      if (letras.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
} 
function tiene_mayusculas(texto){
	var letras_mayusculas="ABCDEFGHYJKLMNÑOPQRSTUVWXYZ";
   for(i=0; i<texto.length; i++){
      if (letras_mayusculas.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
}
function tiene_minusculas(texto){
	var letras="abcdefghyjklmnñopqrstuvwxyz";
   for(i=0; i<texto.length; i++){
      if (letras.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
} 
function comprobarNombre ()
{
	var nombre = document.getElementById("nick").value;
	ajax122=nuevoAjax(); 
	ajax122.open("POST", "ajax_cache_guardar.php?accion=comprobarNombre&nombre="+nombre, true); 
	ajax122.onreadystatechange=function() {  
										if (ajax122.readyState==4) 
											{
												var usuario = ajax122.responseText;
												document.getElementById("nombreComprobado").style.color="#00F";
   												document.getElementById("nombreComprobado").align = "center";
												document.getElementById("nombreComprobado").innerHTML = usuario;
												setTimeout("document.getElementById('nombreComprobado').innerHTML = ''",3000)
											}
										}
	ajax122.send(null)
}
//*************************************************************************************************
//Funcion para eliminar un viaje programado
function eliminarViaje(id){	
	var r=confirm("¿Esta seguro de que quiere eliminar el viaje programado?")
		if (r==true)
		{
		var motivo = prompt('Introduce un motivo para la eliminación del viaje','');
		ajax=nuevoAjax(); 
		ajax.open("POST", "ajax_cache_guardar.php?accion=eliminarViaje&id="+id+"&motivo="+motivo, true);
		ajax.onreadystatechange=function() {  
											if (ajax.readyState==4) 
												{
													var respuesta = ajax.responseText;
													if (respuesta == '')
														alert("Viaje Eliminado.Actualice la página para ver los cambios.");
													else
														alert(respuesta);
												} 	
											}
		}
	ajax.send(null)	
		
}
//*************************************************************************************************
//Funcion para cancelar un viaje como pasajero
function eliminarViajePasajero(id){	
	var r=confirm("¿Esta seguro de que quiere no asistir en el viaje?")
		if (r==true)
		{
		var motivo = prompt('Introduce un motivo para la cancelacion del viaje','');
		ajax=nuevoAjax(); 
		ajax.open("POST", "ajax_cache_guardar.php?accion=eliminarViajePasajero&id="+id+"&motivo="+motivo, true);
		ajax.onreadystatechange=function() {  
											if (ajax.readyState==4) 
												{
													var respuesta = ajax.responseText;
													if (respuesta == '')
														alert("Viaje cancelado. Actualice la página para ver los cambios.");
													else
														alert(respuesta);
												} 	
											}
		}
	ajax.send(null)	
		
}
//********************************************************************************************************
function buscarComentarios(user,inicio,fin){

	borrarListaComentarios(user,inicio,fin);
	ajaxbc=nuevoAjax();
	ajaxbc.open("POST", "ajax_cache_guardar.php?accion=buscarComentarios&user="+user, true); 
	ajaxbc.onreadystatechange=function() {  
										if (ajaxbc.readyState==4) 
											{
												//Transformamos el string cadena en un array con los comentarios
												var cadenaRuta = ajaxbc.responseText;
												cadenaRuta = cadenaRuta.split("}");
												var z = (inicio*2);
												while(z<fin*2 && z<cadenaRuta.length-1)
													{
														if (!cadenaRuta[z]=="")
														{
															// Creamos un nuevo elemento LI
															var li = document.createElement("li");
															// Añadimos el valor introducido al nuevo elemento
															li.innerHTML = cadenaRuta[z];
															// Añadimos el elemento LI a la lista UL
															var ul = document.getElementById("listaComentarios");
															ul.appendChild(li);
															if (typeof cadenaRuta[z+1]!='undefined')
																tb_init(document.getElementById("comentario"+cadenaRuta[z+1]));
														}
														z++;
														z++;														
													}
													//Aqui tenemos que añadir los enlaces a las demas paginas
													var cuantos = cadenaRuta.length+1;
													var pagina = fin-inicio;
													var numPag = cuantos/pagina;
													var num = Math.ceil(numPag);
													var enlace = "<div class='col_com'><table><tr><td width='80' valign='top'>";
													for (var i=0;i<num/2;i++)
														{
															var ini = i*pagina;
															var fn = (i*pagina)+pagina;
															enlace = enlace+"<a href='javascript:buscarComentarios("+user+","+ini+","+fn+");'class='listaComentarios'> "+i+" </a>";
														}
													enlace = enlace+"</td></tr></table></div>";
													// Creamos un nuevo elemento LI
													var li = document.createElement("li");
													li.innerHTML = enlace;
													var ul = document.getElementById("listaComentarios");
													ul.appendChild(li);
													
													// Creamos un nuevo elemento LI
													var li = document.createElement("li");
													// Añadimos el valor del campo para introducir comentarios
													li.innerHTML = "<div class='col_com'><form id='formComentar' name='formComentar' method='post' action=''><label>Comentario :<br /><textarea name='comentario' id='comentario' cols='30' rows='3'></textarea><br /><br /><a href=''><img border='0' src='/iconos/Comment.png' alt='Hacer Amigo' title='Comentar' onclick='javascript:enviarComentario("+user+");' /></a></label></form><br /></div>";
													// Añadimos el elemento LI a la lista UL
													//var ul = document.getElementById("listaComentarios");
													ul.appendChild(li);
											} 	
										} 
	ajaxbc.send(null)

}
//*********************************************************************************************************
function borrarListaComentarios(user,inicio,fin){
	//Funcion que borra toda la lsita de rutas que tenemos desplegada
	var ruta = document.getElementById("listaComentarios");
	var li = ruta.getElementsByTagName("li");
	var total = li.length;
		while(li.length>0){
				li[0].parentNode.removeChild(li[0]);
		}
}
//***************************************************************************************************
function enviarComentario(id){
	
	ajaxec=nuevoAjax();
	alert("Enviando mensaje");
	ajaxec.open("POST", "ajax_cuenta.php?accion=enviarComentario&iddestino="+id+"&texto="+document.formComentar.comentario.value, true);
	ajaxec.onreadystatechange=function() {
											if (ajax.readyState==4) 
											{ 
												alert("Mensaje Enviado");
											}
										}
	ajaxec.send(null)
}
//****************************************************************************************************************
function enviarMensajeContacto(){
	ajax=nuevoAjax(); 
	ajax.open("POST", "ajax_cuenta.php?accion=enviarMensajeContacto&nombre="+document.formnuevo.nombre.value+"&correo="+document.formnuevo.correo.value+"&texto="+document.formnuevo.texto.value, true);
	ajax.onreadystatechange=function() {  
										if (ajax.readyState==4) 
											{ 
												document.getElementById("mensajeEstado").innerHTML = "<h3>Mensaje Enviado<h3>";
											} 
										} 
	ajax.send(null)
}
//****************************************************************************************************************
