// Buscar la aguja en el pajar. ( Busca un elemento dentro de un array )
Array.prototype.inArray = function ( value ) 
{
	var i;
	for ( i = 0; i < this.length; i++ )
		if ( this[ i ] === value )
			return true;
	return false;
};

var aPalabrasIrrelevantes = 'Ud., Uds., Vd., Vds., a, ab, abajo, acerca, adelante, además, adentro, adonde, adónde, afuera, ah, ahora, ajá, al, ale, algo, alguien, alguna, algunas, alguno, algunos, algún, ambas, ambos, ante, antes, aquel, aquella, aquellas, aquello, aquellos, aquél, aquélla, aquéllas, aquéllos, arre, asi, así, asimismo, atrás, aun, aún, aunque, ay, aúpa, bah, basta, bastante, bastantes, cabe, cada, casi, cataplum, cataplún, ce, chau, che, chis, chist, chito, cierta, ciertas, cierto, ciertos, como, con, conmigo, conque, consigo, contigo, cual, cuales, cualesquiera, cualquier, cualquiera, cuando, cuanta, cuantas, cuanto, cuantos, cuya, cuyas, cuyo, cuyos, cuál, cuáles, cuándo, cuánta, cuántas, cuánto, cuántos, cómo, daca, de, debe, debemos, deben, debes, debido, debo, debéis, del, demasiada, demasiadas, demasiado, demasiados, demás, desde, después, donde, durante, dónde, e, ea, eh, ejem, el, ella, ellas, ello, ellos, empero, en, entonces, entre, erais, eran, eres, ergo, es, esa, esas, ese, eso, esos, esotra, esotras, esotro, esotros, esta, estaba, estabais, estaban, estabas, estad, estamos, estando, estar, estaremos, estará, estarán, estarás, estaré, estaréis, estaría, estaríais, estaríamos, estarían, estarías, estas, este, estemos, esto, estos, estotra, estotras, estotro, estotros, estoy, estuve, estuviera, estuvierais, estuvieran, estuvieras, estuviere, estuviereis, estuvieren, estuvieres, estuvieron, estuviese, estuvieseis, estuviesen, estuvieses, estuvimos, estuviste, estuvisteis, estuviéramos, estuviéremos, estuviésemos, estuvo, está, estábamos, estáis, están, estás, esté, estéis, estén, estés, forte, fu, fue, fuera, fuerais, fueran, fueras, fuere, fuereis, fueren, fueres, fueron, fuese, fueseis, fuesen, fueses, fui, fuimos, fuiste, fuisteis, fuéramos, fuéremos, fuésemos, gua, ha, habed, haber, habiendo, habremos, habrá, habrán, habrás, habré, habréis, habría, habríais, habríamos, habrían, habrías, habéis, había, habíais, habíamos, habían, habías, hace, hacéis, hacemos, hacen, hacer, haces, hacia, hacía, hacíais, hacíamos, hacían, hacías, hago, hala, han, hará, harán, harás, haré, haréis, haremos, has, hasta, hay, haya, hayamos, hayan, hayas, hayáis, he, hemos, hice, hicieron, hicimos, hiciste, hicisteis, hizo, hube, hubiera, hubierais, hubieran, hubieras, hubiere, hubiereis, hubieren, hubieres, hubieron, hubiese, hubieseis, hubiesen, hubieses, hubimos, hubiste, hubisteis, hubiéramos, hubiéremos, hubiésemos, hubo, huy, incluso, ir, irán, irás, iré, iréis, iremos, ja, jamás, je, ji, jo, la, las, le, les, lo, los, luego, mas, más, me, mediante, menos, mi, mientras, mis, misma, mismas, mismo, mismos, mucha, muchas, mucho, muchos, mí, mía, mías, mío, míos, muy, nada, nadie, ni, ninguna, ningunas, ninguno, ningunos, ningún, no, nos, nosotras, nosotros, nra., nro., ntra., ntro., nuestra, nuestras, nuestro, nuestros, nunca, o, obstante, oh, ojalá, ora, os, otra, otro, otrosí, ó, paf, para, pataplún, pche, pchs, pero, pf, poca, pocas, poco, pocos, podamos, poded, podemos, podido, podremos, podrá, podrán, podrás, podré, podréis, podría, podríais, podríamos, podrían, podrías, podáis, podéis, podía, podíais, podíamos, podían, podías, por, porque, pude, pudiendo, pudiera, pudierais, pudieran, pudieras, pudiere, pudiereis, pudieren, pudieres, pudieron, pudiese, pudieseis, pudiesen, pudieses, pudimos, pudiste, pudisteis, pudiéramos, pudiéremos, pudiésemos, pudo, pueda, puedan, puedas, puede, pueden, puedes, puedo, pues, puf, pum, que, queramos, quered, queremos, querer, querido, queriendo, querremos, querrá, querrán, querrás, querré, querréis, querría, querríais, querríamos, querrían, querrías, queráis, queréis, quería, queríais, queríamos, querían, querías, quien, quienes, quienesquiera, quienquiera, quiere, quieren, quieres, quiero, quise, quisieron, quisimos, quisiste, quisisteis, quiso, quién, quiénes, qué, quizá, quizás, ro, salvo, se, sea, seamos, sean, seas, según, ser, seremos, será, serán, serás, seré, seréis, sería, seríais, seríamos, serían, serías, seáis, si, sido, siempre, siendo, sin, sino, siquiera, so, sobre, sois, solamente, solemos, soler, soléis, solía, solíais, solíamos, solían, solías, solo, sólo, somos, son, soy, su, suele, suelen, sueles, sus, suya, suyas, suyo, suyos, sé, sétima, sétimas, sétimo, sétimos, sí, ta, tal, también, tampoco, tanta, tantas, tanto, tantos, tate, tendrá, tendrán, tendrás, tendré, tendréis, tendremos, tenéis, tenemos, tener, tengo, tenía, teníais, teníamos, tenían, tenías, ti, tiene, tienen, tienes, toda, todas, todavía, todo, todos, tras, tu, tus, tuve, tuvieron, tuvimos, tuviste, tuvisteis, tuvo, tuya, tuyas, tuyo, tuyos, tú, u, uf, un, una, unas, uno, unos, upa, usa, usáis, usamos, usan, usar, usas, usted, ustedes, uy, vais, vale, vamos, van, varias, varios, va, vas, vos, vosotras, vosotros, voy, vra., vras., vro., vros., vtra., vtras., vtro., vtros., vuestra, vuestras, vuestro, vuestros, y, yo, zape, zas, zis, zuzo, él, éramos, ésa, ésas, ése, ésos, ésta, éstas, éste, éstos'.split( ', ' );

/* AJAX */

// Utilizar los datos obtenidos.
function descargarDatos( oPagina, sElemento )
{
	var aLineas;
	var oElemento;
	var oEnlace;
	
	if ( oPagina.readyState == 4 && ( oPagina.status == 200 || window.location.href.indexOf ("http") == - 1 ) )
	{
		// Rellenar el listado con los datos obtenidos.
		oElemento = document.getElementById( 'listado_' + sElemento );
		if ( oElemento )
		{
			// Vaciar el contenido del elemento.
			oElemento.innerHTML = '';
			// Volcar los datos.
			aLineas = oPagina.responseText.split( "\n" );
			for ( i = 1; i < aLineas.length; i++ )
			{
				if ( aLineas[ i ].length > 0 )
				{
					// Prerparar el listado
					oEnlace = document.createElement( 'a' );
					oEnlace.innerHTML = aLineas[ i ];
					oEnlace.onclick = activarEnlace;	// Comportamiento del enlace
					// Añadir el dato al listado
					oElemento.appendChild( oEnlace );
				}
			}
			// Mostrar los datos, si hay.
			oElemento.style.display = ( aLineas.length > 2 ) ? 'block' : 'none';
		}
	}
}

// Conectar a una página remota.
function listar( oCampo )
{
	var oPagina = false;
	
	if ( window.XMLHttpRequest )		// Firefox
		oPagina = new XMLHttpRequest ();
	else if ( window.ActiveXObject )	// IE
	{
		try
		{
			oPagina = new ActiveXObject ( 'Msxml2.XMLHTTP' );
		}
		catch ( e )
		{
		}
	}
	else
		return oPagina;
		
	oPagina.onreadystatechange = function () { descargarDatos( oPagina, oCampo.name ); }
	oPagina.open ( 'GET', 'listar.asp?nombre=' + oCampo.name + '&texto=' + oCampo.value, true ); // asignar los métodos open y send
	oPagina.send ( null );
}

/* Tratamiento de los elementos emergentes */

// Volcar el contenido en el contenedor adecuado.
function activarEnlace( event )
{
	var oDestino;
	var sCampo = this.parentNode.id.split( '_' ).pop();

	if ( document.Busqueda_avanzada )
	{
		eval( 'oDestino = document.Busqueda_avanzada.' + sCampo );
		if ( oDestino )
		{
			oDestino.value = this.innerHTML;
			ocultarListado( oDestino );
		}
	}
}

// Eliminar el listado.
function ocultarListado( oCampo )
{
	var oElemento = document.getElementById( 'listado_' + oCampo.name );
	if ( oElemento )
	{
		oElemento.innerHTML = '';
		oElemento.style.display = 'none';
	}
}

/* Tratamiento de los formularios */

// Activar del buscador.
function buscar( oFormulario )
{
	var aCadenas;				// Palabras del término de búsqueda
	var aCampos;				// Conjunto de campos de la búsqueda avanzada
	var bSinRellenar = true;	// Indica si los campos están sin rellenar en la búsqueda avanzada
	var j;						// Contador
	var nIrrelevante = 0;		// Cantidad de palabras irrelevantes
	var sAviso = '';			// Mensaje de aviso
	var sCadena;				// Cadena de caracteres
	
	switch ( oFormulario.name )
	{
		case 'BusquedaSimple':
			// Revisar la cadena de búsqueda.
			if ( oFormulario.busqueda_simple )
			{
				/*
					Modificación realizada por Diego González el 07/02/2008
					Se ha comentado toda la comprobación debido a que se pueden realizar búsquedas genéricas sin necesidad de introducir filtros.

				sCadena = oFormulario.busqueda_simple.value;												
				if ( sCadena.length == 0 )
					sAviso += "\n· Debe introducir algún valor.";
				else
				{
					aCadenas = sCadena.split( ' ' );					
					// Avisar si todas las palabras utilizadas son irrelevantes.
					for ( j = 0; j < aCadenas.length; j++ )
						if ( aPalabrasIrrelevantes.inArray( aCadenas[ j ].toLowerCase() ) )
							nIrrelevante++;
					if ( nIrrelevante == aCadenas.length )
						sAviso += '\n· Todas las palabras utilizadas para la búsqueda son muy comunes y por lo tanto se consideran irrelevantes para una búsqueda.';
				}
				// Tratar el resultado de la revisión.
				if ( sAviso.length > 0 )
					alert( sAviso );
				else
				*/
					return true;
			}
			
			break;
			
		case 'Busqueda_avanzada':
			/*
				Modificación realizada por Diego González el 07/02/2008
				Se ha comentado toda la comprobación debido a que se pueden realizar búsquedas genéricas sin necesidad de introducir filtros.
				
			// Revisar si se ha rellenado alguno de los campos de texto.
			aCampos = 'ciclo, conferencia, conferenciante'.split( ', ' );
			j = 0;
			while ( ( j < aCampos.length ) && bSinRellenar )
			{
				// Comprobar si todas las palabras utilizadas son irrelevantes.
				eval( 'sCadena = oFormulario.' + aCampos[ j ] + '.value' );									
				if ( sCadena.length > 0 )
				{
					aCadenas = limpiarPalabras( sCadena ).split( ' ' );
					for ( j = 0; j < aCadenas.length; j++ )
						if ( aPalabrasIrrelevantes.inArray( aCadenas[ j ].toLowerCase() ) )
							nIrrelevante++;
					if ( nIrrelevante < aCadenas.length )
						bSinRellenar = false;
				}
				j++;
			}
			// Revisar si se ha rellenado alguno de los campos de selección.
			aCampos = 'anio, materia, tipo'.split( ', ' );
			j = 0;
			while ( ( j < aCampos.length ) && bSinRellenar )
			{
				eval( 'bSinRellenar = (oFormulario.' + aCampos[ j ] + '.selectedIndex == 0 )' );
				j++;
			}
			// Tratar el resultado de la revisión.
			if ( bSinRellenar )
				alert( '\n· Debe seleccionar o rellenar al menos un campo de búsqueda.\n· En caso de haberlo rellenado compruebe que las palabras utilizadas no sean irrelevantes.' );
			else
			*/
			{
				// Asegurarse de que va a la dirección correcta del modo adecuado.
				oFormulario.action = 'index.asp';
				oFormulario.method = 'get';
				
				return true;
			}
			
			break;
	}
	return false;
}

// Tratar el evento onSubmit del formulario de búsqueda.
function enviarFormulario( event ) { return buscar( this );	}

// Eliminar los caracteres no deseados para la búsqueda.
function limpiarPalabras( sCadena )
{
	sCadena = sCadena.split( '"' ).join( '' );
	sCadena = sCadena.split( ',' ).join( ' ' );
	sCadena = sCadena.split( '(' ).join( ' ' );
	sCadena = sCadena.split( ')' ).join( ' ' );

	return sCadena;
}

// Mostrar el listado para seleccionar un nombre de un listado.
function solicitar( oEnlace )
{
	var oFormulario = document.Busqueda_avanzada;
	
	if ( oFormulario )
	{
		oFormulario.action = oEnlace.href;	// Nombre del campo que se debe rellenar
		oFormulario.method = 'post';
		oFormulario.submit();
	}
	else
		alert( 'No se encuentra el formulario')
}
			
// Inicializar la página.
window.onload = function()
{
	var aElementos;
	var oElemento;
	var oFormulario;

	/* Búsqueda sencilla */

	oFormulario = document.BusquedaSimple;
	if ( oFormulario )
	{
		// Captura de eventos importantes.
		oFormulario.onsubmit = enviarFormulario;
		// Seleccionar el campo de búsqueda sencilla para empezar a escribir.
		if ( oFormulario.busqueda_simple )
			oFormulario.busqueda_simple.focus();
	}
	
	/* Búsqueda avanzada */
	
	oFormulario = document.Busqueda_avanzada;
	if ( oFormulario )
	{
		// Captura de eventos importantes.
		oFormulario.onsubmit = enviarFormulario;
		// Seleccionar el título del ciclo para empezar a escribir.
		if ( oFormulario.ciclo )
			oFormulario.ciclo.focus();
		/*
		// Eventos de los botones.
		if ( document.getElementById )
		{
			aElementos = oFormulario.getElementsByTagName( 'input' );
			for ( i = 0; i < aElementos.length; i++ )
			{
				oElemento = aElementos[ i ];
				switch ( oElemento.type )
				{
					case 'button':
						// Solicitar listado del elemento adecuado
						oElemento.onclick = solicitar;
						// Mostrar los botones ocultos por falta de funcionalidad en caso de no tener el cliente activado el Javascript ( Firefox )
						oElemento.style.visibility = 'visible';
						break;
						
					case 'text':
						
				//		// Mostrar un listado con nombres orientativos.
				//		oElemento.onkeyup = function()
				//		{
				//			if ( this.value.length > 0 )
				//				listar( this );
				//		};
						// Ocultar el listado con retardo para que se pueda activar la pulsación de enlace.
				//		oElemento.onblur = function() { setTimeout( 'ocultarListado( document.' + this.form.name + '.' + this.name + ' )', 200 ); }	
						break;
				}
			}
		}*/
	}
	
	/*
		Modificación realizada por Diego González el 05/11/2008
		Gestionar los enlaces de descarga de archivos de audio del buscador.
	*/
	if ( document.getElementById )
	{
		oFormulario = document.getElementById('descarga')
		if ( oFormulario )				// Existencia del formulario
		{
			if ( oFormulario.codigo )	// Existencia del campo codigo
			{
				aElementos = document.getElementsByTagName('a');
				
				for ( i = 0; i < aElementos.length; i++ )
				{
					oElemento = aElementos[i];
					if (oElemento.title.indexOf('Descargar archivo de voz') > -1)
					{
						oElemento.onclick = function()
						{
							oFormulario = document.getElementById('descarga');
							oFormulario.action = '/conferencias/anteriores/descargas/download.aspx?file=' + this.href.split('voz.asp?id=').pop() + '.mp3';
							oFormulario.codigo.value = this.alt;
							GAnalitycs_trackPageview(oFormulario.action, false);	// Google Analytics
							oFormulario.submit();
							return false;	// Evitar que se envíe el enlace
						};
					}
				}
			}
		}
	}
};

