
var ajaxRequest;  /* L'oggetto che si occupa della counicazione Ajax. */


function showResults() {

	var searchResults = document.getElementById("searchResults");
	
	searchResults.style.visibility="hidden";
	
	if(searchResults.getElementsByTagName("table")[0] != null) {
	//alert(searchResults.offsetWidth);
	//	.style.width = (searchResults.offsetWidth) + "px";	
		searchResults.style.width = (searchResults.getElementsByTagName("table")[0].offsetWidth) + "px";
		
		//if(isExplorer()) {
		//	extraMargin = 54;
			//searchResults.style.left = (54 + -1 * searchResults.getElementsByTagName("table")[0].offsetWidth) + "px";
		//} else {
		
		var extraMargin;
		if(getLanguage() == "it") extraMargin = 52;
		if(getLanguage() == "fr") { 
			if(!isExplorer()) extraMargin = 98;
			else extraMargin = 95;
		}
		if(getLanguage() == "de") { 
			if(!isExplorer()) extraMargin = 56;
			else extraMargin = 54;
		}
		if(isExplorer()) extraMargin += 2;
		
	
		searchResults.style.left = (extraMargin + -1 * searchResults.getElementsByTagName("table")[0].offsetWidth) + "px";
	}
	
	searchResults.style.visibility="visible";
}

function hideResults() {
	document.getElementById("searchInputField").value = "";
	document.getElementById("searchInputField").blur();
	document.getElementById("searchResults").style.visibility="hidden";
	
}

function isExplorer() {
	return (navigator.userAgent.indexOf("MSIE") > 0);
}


/* Inizializzazione di Ajax. */
function setUpAjax(){
	
	
	try{ 
		/* Opera 8.0+, Firefox, Safari */
		ajaxRequest = new XMLHttpRequest();
        
	} catch (e){
	
		/* Internet Explorer */
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				/* Nessun supporto per Ajax. */
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	
	
	
	/*var age = document.getElementById('age').value;
	var wpm = document.getElementById('wpm').value;
	var sex = document.getElementById('sex').value;
	var queryString = "?age=" + age + "&wpm=" + wpm + "&sex=" + sex;
	ajaxRequest.open("GET", "ajax-example.php" + queryString, true);
	ajaxRequest.send(null);*/
}

function processData() {

if (ajaxRequest.readyState != 4) return;
	isBusy = false;

	/* La funzione che riceverà il codice ritornato dal server. */
		if(ajaxRequest.readyState == 4){
			//alert("ricevuto dati");
			
			
			
			var ajaxDisplay = document.getElementById('searchResults');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		//	document.getElementById("log").innerHTML += ", scritto, ";
			//document.getElementById("")
			
			
			showResults();
		}
	//}
}
var isBusy = false;

function search() {
	
	var text = document.getElementById("searchInputField").value;
	var language = getLanguage();
	var queryString = "?text=" + text + "&language=" + language;
	//document.getElementById("log").innerHTML += "Invio richiesta: " + queryString + "<br>";

if (isBusy)
{
	/* Tutto questo va fatto perche firefox ha un baco quando cerchi di inviare una rchiesta quando c'è già una 
	richesta in corso. Quindi abortiamo. Visto che abortendo la pagina della richiesta precedente veiene 
	comunque processata ricreiamo l'oggetto. */
ajaxRequest.onreadystatechange = function () {}
	//ajaxRequest.abort();
	setUpAjax();
//	document.getElementById("log").innerHTML += ", ABORT, ";
}
	ajaxRequest.open("GET", "http://" + location.host + "/functional/functions/search/support/search.php" + queryString, true);
	isBusy = true;
	ajaxRequest.onreadystatechange = processData;

	//document.getElementById("log").innerHTML += ", send(" + text + "), ";
	//if (ajaxRequest.readyState > 0 && ajaxRequest.readyState < 4) {
	//ajaxRequest.onreadystatechange = function () {}
	//ajaxRequest.abort(); // kill if 1,2,3 
	//}
	ajaxRequest.send(null);
	
	//IL PROBLEMA È IL FALSE SOPRA!!!!!!
	
	
//	document.getElementById("log").innerHTML += ", inviato, ";
	
	//ajaxRequest.send(null);
//	document.getElementById("log").innerHTML += "Inviata<br>";
	
}

function setUpSearch() {

	/* Senza questa istruzione Safari continua a visualizzare "Cancelled opening the page" nello 
	status quando si scrive nella casella di ricerca. Questo perchè ogni volta che l'utente digita 
	un nuovo carattere la richiesta Ajax precedente viene cancellata e Safari notifica l'utente 
	che il caricamento della pagina non è stato completato. */
	//window.status = " ";

	/* Aggiunta dell'evento onkeydown nella casella di ricerca. */
	document.getElementById("searchInputField").onkeyup = search;

	
	/* Impostazione della posizione orrizontale della casella di ricerca. */
	if(getLanguage() == "it") document.getElementById("searchInput").style.left = "-156px";
	if(getLanguage() == "fr") {
		if(!isExplorer()) document.getElementById("searchInput").style.left = "-110px";
		else document.getElementById("searchInput").style.left = "-113px";
	}
	if(getLanguage() == "de") {
		if(!isExplorer()) document.getElementById("searchInput").style.left = "-152px";
		else document.getElementById("searchInput").style.left = "-154px";
	}
	
	
	//document.getElementById("searchInputField").onkeyup = showResults;
	

	/* Inizializzazione di Ajax. */
	setUpAjax();
	
	
	
	
}





/* Aggiunta dell'evento per l'arrotondamento dell'immagine del titolo. */
fun = setUpSearch;
if (window.addEventListener) window.addEventListener('load', fun, false); 
else if (window.attachEvent) window.attachEvent("onload", fun);