// Libreria para la implementación Ajax del fichero Plataforma Solar - Busqueda Simple con Selects Dependientes.
//Funcion estandar para crear Ajax.
function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	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; 
}

//Funcion especial para separar los datos recibidos de Ajax en un array.
function separarDatos(stringASeparar,condicional) {
	return (stringASeparar.split(condicional));
}

//Funcion para añadir opcion a un Select.
function agregaOpcion(selectDestino,valorOpcion,contenidoOpcion){
	//El proceso para añadir una opción a un Selecte es: 
	// 1) Creamos Nodo
	// 2) Le definimos el valor.
	// 3) Indicamos su contenido.
	// 4) Adjuntamos al Select Destino.
	
	var nuevaOpcion = document.createElement("option");
	nuevaOpcion.value=valorOpcion;
	nuevaOpcion.innerHTML=contenidoOpcion;
	selectDestino.appendChild(nuevaOpcion);
}

//Funcion cargaContenido. Esta función es la que se encarga de gestionar las actualizaciones al cambiar el Select.
// ID: ciudad, uso y area.
function cargaContenido (idSelectCambiado) {
	//Recogemos el select que contiene esta ID.
	var selectCambiado = document.getElementById(idSelectCambiado);

	//Controlamos qué Select ha sido modificado.
	//Es importante el orden en que definimos los selectNoCambiado 1 y 2, ya que después introduciremos datos en estos sin usar condicionales.
	if (idSelectCambiado == "ciudad") {
		var selectNoCambiado1 = document.getElementById("uso");				
		var selectNoCambiado2 = document.getElementById("area");
	} else if (idSelectCambiado == "uso") {
		var selectNoCambiado1 = document.getElementById("ciudad");				
		var selectNoCambiado2 = document.getElementById("area");
	} else if (idSelectCambiado == "area") {
		var selectNoCambiado1 = document.getElementById("ciudad");				
		var selectNoCambiado2 = document.getElementById("uso");
	}
	//Recogemos las opciones actuales
	var opcionSeleccionada = selectCambiado.value;
	var opcionNoSeleccionada1 = selectNoCambiado1.value;
	var opcionNoSeleccionada2 = selectNoCambiado2.value;
	
	
	// Creamos Ajax. Lo utilizaremos para mostrar la consulta con los filtros del usuario.
	var ajax=nuevoAjax();
	
	// Ajax so<licita a una pagina externa la información de los otros dos Select.
	ajax.open("GET", "inc_buscador.Ajax.php?idSelectCambiado="+idSelectCambiado+"&opcionSeleccionada=" + opcionSeleccionada+"&opcionNoSeleccionada1=" + opcionNoSeleccionada1+"&opcionNoSeleccionada2=" + opcionNoSeleccionada2, true);

	ajax.onreadystatechange=function() 	{ 
		if (ajax.readyState==1)	{
			// Mientras cargan los selects, los deshabilito e indico que están cargandose.
			// Creo nodo "Cargando..." para selectNoCambiado1
			agregaOpcion(selectNoCambiado1,"cargando","Cargando...");
			selectNoCambiado1.selectedIndex = selectNoCambiado1.length-1;
			selectNoCambiado1.disabled=true;
			
			// Creo nodo "Cargando..." para selectNoCambiado2
			agregaOpcion(selectNoCambiado2,"cargando","Cargando...");
			selectNoCambiado2.selectedIndex = selectNoCambiado2.length-1;
			selectNoCambiado2.disabled=true;	
		}
		if (ajax.readyState==4)	{
			resultado = separarDatos(ajax.responseText,"|SeparadorAjax|");
			var contenidoOpciones1 = resultado[0];
			var contenidoOpciones2 = resultado[1];
			//var contenidoConsulta1 = resultado[2]; Desactivado.
			
			//Procedemos a completar el primer Select. Los pasos son...
			// 1) Vaciamos el primer Select hasta la primera opcion (la cual dejaremos)
			// 2) Separamos las opciones recibidas de Ajax
			// 3) Agregamos cada opcion separada
			while(selectNoCambiado1.length>1) {
				selectNoCambiado1.removeChild(selectNoCambiado1.lastChild);
			}
			arrayOpciones = separarDatos(contenidoOpciones1,"|SeparadorOpciones|");
			for(var i=0;i<arrayOpciones.length;i++) agregaOpcion(selectNoCambiado1,arrayOpciones[i],arrayOpciones[i]);
			//Procedemos a completar el segundo Select. Mismos pasos.
			while(selectNoCambiado2.length>1) {
				selectNoCambiado2.removeChild(selectNoCambiado2.lastChild);
			}
			arrayOpciones = separarDatos(contenidoOpciones2,"|SeparadorOpciones|");
			for(var i=0;i<arrayOpciones.length;i++) agregaOpcion(selectNoCambiado2,arrayOpciones[i],arrayOpciones[i]);

			//Desactivados el modulo de Informacion de Consulta.
			//document.getElementById('infoConsulta1').innerHTML = contenidoConsulta1;
			
			//Ahora que tenemos las opciones cargadas las introducimos donde corresponde.
			//Tras cargar datos intentamos posicionar de nuevo el select donde estaba.
			//...lo hacemos con el primer nodo...
			for (var i=0; i < selectNoCambiado1.length; i++) {
				if(selectNoCambiado1.options[i].value == opcionNoSeleccionada1) {
					selectNoCambiado1.selectedIndex = i;
				}
			}
			//...y con el segundo!
			for (var i=0; i < selectNoCambiado2.length; i++) {
				if(selectNoCambiado2.options[i].value == opcionNoSeleccionada2) {
					selectNoCambiado2.selectedIndex = i;
				}
			}
				
			selectNoCambiado1.disabled=false;
			selectNoCambiado2.disabled=false;
		} //Fin if (ajax.readyState==4)	
	}
	ajax.send(null);
}
