// UNAV Diccionario.  (c) 2005 Universidad de Navarra
// Programado por Erik Norvelle, para el Servicio de Innovación Educativa
//
// Cuando el usuario introduce una(s) palabra(s) en el campo "Search Text", y marca el teclado Enter o hace click en 
// el botón "Search", la funcion buscar() es llamada.  Esa funcion busca definiciones en el diccionario interno 
// (incluido en el archivo diccionario_index.js), y las despliegue dentro de la página actual, reemplazando 
// el texto corriente con una tabla que contiene todas las definiciones encontradas.  El usuario puede quitar los
// resultados de la busqueda con hacer click en el botón "Return to Previous Screen"
//
// Este programa depende del archivo diccionario_index.js, que tiene que ser regenerado cada vez que haya
// cambios al diccionario en ANAÍ.  Actualmente el batchfile generate_dictionary.bat se usa para generar 
// los archivos HTML y un índice preliminar de las palabras.  Paso siguiente el programa Perl parse_dict.pl
// tiene que correrse para generar diccionario_index.js.

var undefined;         // Necesario porque algunos navegadores no predefinen 'undefined' como keyword
var antiguoHTML = "";

// Saca la entrada del usuario del campo de texto, y lo busca en la lista de palabras indexadas (includidas en
// el archivo diccionario_index.js).  Si la palabra se encuentra, guarda los contenidos actuales de la página,
// y los reemplaza con una tabla generada por la funcion generateSitiosHTML().  Esa tabla incluye un botón para
// devolver los contenidos reemplazados (ver removeSearchResults()).
function buscar() {
	var word = document.getElementById('palabras').value;
	word = replaceTildes(word.toLowerCase());   // We eliminate tildes because the index doesn't have them
	var defIds = palabras[word];
	if (defIds == undefined) { alert(word + ' not in dictionary'); return; }
	else {
		if (antiguoHTML == "") antiguoHTML = document.getElementById("cuerpo").innerHTML;
		document.getElementById("cuerpo").innerHTML = generateSitiosHTML(word, defIds);
	}
}

function replaceTildes(cword) {
	cword = cword.replace(/\341/, "a");	
	//alert("Checking " + cword);
	cword = cword.replace(/\351/, "e");
	cword = cword.replace(/\355/, "i");
	cword = cword.replace(/\363/, "o");
	cword = cword.replace(/\372/, "u");
	cword = cword.replace(/\374/, "u");
	cword = cword.replace(/\377/, "y");
	cword = cword.replace(/\361/, "n");
	cword = cword.replace(/\347/, "c");
	return cword;
}

function countWords(cword) {
	var sitios = cword.split('||');
	return sitios.length;
}

function capturarEnter(e) {
  	if (e.keyCode == 13) {
    	buscar();
	}
}

function removeSearchResults() {
	document.getElementById("cuerpo").innerHTML = antiguoHTML;
	antiguoHTML = "";
}

// Desplegar las varias definiciones encontradas 
function generateSitiosHTML(word, defIds) {
	var i, sitioParts, sitioDoc, sitioID; 
	var respuestaHTML = "<style>.brdr { border-bottom: solid 1px #CCCCCC; }</style>";
	respuestaHTML += "<table border='0' width='100%'>";
	respuestaHTML += "<TR><td colspan='2' style='background-color: #cdd9e9;'><span style='font-size: 13pt; font-weight: bold;'>Entries found for '" + word + "'</span></td></tr>";
	respuestaHTML += "<TR><td class='brdr'><span style='font-weight: bold'>Spanish</span></td><td class='brdr'><span style='font-weight: bold'>English</span></td></tr>";
	for (i = 0; i < defIds.length; i++) {
		var def = definiciones[defIds[i]];
		var defParts = def.split("||");
		respuestaHTML += "<TR><td  class='brdr'>" + defParts[0] + "</td><td class='brdr'>" + defParts[1] + "</td></TR>";
	}	
	respuestaHTML += "</TABLE>";
	respuestaHTML += "<br><input type='button' onClick='removeSearchResults();' name='Back' value='Return to Prior Page'>";
	return respuestaHTML;
}
