var tableau_aeroport = new Array();
var index_select = -1;

var champsActif = null;
var champsActif_h = null; // code lié au libellé du champs actif associé
var divActif = null;
var ligneActive = null;
var rechercheEnCours = false;

var estAeroportValide = false;
var test = false;
var valeurCourante = '';

document.body.onclick=autoCompleter;

function majAeroports(contenu)
{
	tableau_aeroport = new Array();
	index_select = -1;
	estAeroportValide = false;

	if(contenu.length > 0)
	{
		aeroports = contenu.split('|');
		for(i=0; i<aeroports.length; i++)
		{
			infos = aeroports[i].split('#');
			tableau_aeroport[i] = new Array(infos[0],infos[1],infos[2],infos[3]);
		}
	}

}

function majAffichage()
{
	if(!divActif)
		return false;

	var liste = "";
	var classe="";
	for(i=0; i<tableau_aeroport.length; i++)
	{
		classe="item";
		liste += "<div id=\"aeroport"+i+"\" class=\""+classe+"\" onMouseOver=\"deSurlignerLigne(); selectionnerLigne("+i+");\" onClick=\"selectValue("+i+");\" onMouseOut=\"deSurlignerLigne();\"><div id=\"ligne"+i+"\" class=\"transparent\">"+tableau_aeroport[i][1]+" <span class=\"texte75\"><em>";
		if(tableau_aeroport[i][0])
			liste += "("+tableau_aeroport[i][0]+")";
		if(tableau_aeroport[i][2])
			liste += " - <b>"+tableau_aeroport[i][3]+"</b>";
		liste += "</em></span></div></div>\n";
	}
	divActif.innerHTML = liste;

	if(tableau_aeroport.length > 0)
		afficherDiv();
	else
		masquerDiv();
}

/**
* Permet de récupérer les données d'un fichier via les XmlHttpRequest:
*/
function getFile(page)
{
	sendData('null', page, 'GET')
}//fin fonction getFile

function chargerDonnees(champ_input, div_select)
{
	selectionnerChamps(champ_input);
	selectionnerDiv(div_select);
	deSurlignerLigne();

	champsActif_h.value='';

	if(champ_input.value.length>=3)
	{
		sendData('texte='+champ_input.value, '/alc/searchAirport.php','POST');
	}
	else
	{
		majAeroports('');
		majAffichage();
	}
}


function sendData(data, page, method)
{
	if(!page)
		return;

	rechercheEnCours = true;

	// création de l'objet XHR
	if(document.all)
	{
		//Internet Explorer
		var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
	}
	else
	{
		//Mozilla et autres
		var XhrObj = new XMLHttpRequest();
	}

	//si on envoie par la méthode GET:
	if(method == "GET")
	{
		if(data == 'null')
		{
			//Ouverture du fichier sélectionné:
			XhrObj.open("GET", page);
		}
		else
		{
			//Ouverture du fichier en methode GET
			XhrObj.open("GET", page+"?"+data);
		}
	}
	else if(method == "POST")
	{
		//Ouverture du fichier en methode POST
		XhrObj.open("POST", page);
	}

	//Ok pour la page cible
	XhrObj.onreadystatechange = function()
	{
		if (XhrObj.readyState == 4 && XhrObj.status == 200)
		{
			if(page == '/alc/searchAirport.php')
			{
				rechercheEnCours = false;

				majAeroports(XhrObj.responseText); // VERSION TEXTE
				//majAeroports(XhrObj.responseXML); // VERSION XML

				majAffichage();
			}
		}
	}

	if(method == "GET")
	{
		XhrObj.send(null);
	}
	else if(method == "POST")
	{
		XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		XhrObj.send(data);
	}

}//fin fonction SendData


function afficherDiv()
{
	if(divActif)
		divActif.style.visibility="visible";

	voirSelect('hidden');
}

function masquerDiv()
{
	if(divActif)
	{
		divActif.style.visibility="hidden";
		divActif.innerHTML="";
		divActif = null;
		tableau_aeroport = new Array();
	}

	deSurlignerLigne();

	voirSelect('visible');
}

function selectionnerDiv(div)
{
	if(div)
		divActif = div;
}

function deselectionnerDiv()
{
	divActif = null;
}

function selectionnerChamps(input)
{
	if(input)
	{
		champsActif = input;
		champsActif_h = document.getElementById(input.id+"_h");
	}
}

function deselectionnerChamps()
{
	champsActif = null;
	champsActif_h = null;
}

function selectionnerLigne(index)
{
	if(div = document.getElementById("ligne"+index))
	{
		index_select = index;
		surlignerLigne(div);
		return div;
	}

	return null;
}

function surlignerLigne(div)
{
	if(div)
	{
		ligneActive = div;
		ligneActive.className="surligner";
	}
}

function deSurlignerLigne()
{
	if(ligneActive)
	{
		ligneActive.className="transparent";
		ligneActive = null;
	}
}

function selectValue(indice)
{
	if(divActif && champsActif && tableau_aeroport.length>0 && indice >=0 && indice <tableau_aeroport.length )
	{
		champsActif.value = tableau_aeroport[indice][1];
		champsActif_h.value = tableau_aeroport[indice][0];
		estAeroportValide = true;
		valeurCourante = champsActif.value;
	}
}

function quitChamp()
{
	if(divActif && 	rechercheEnCours)
	{
		rechercheEnCours = false;
		masquerDiv();
	}
}

function deplacementChoix(key)
{
	if(tableau_aeroport.length > 0)
	{
		//haut
		if(key == 38)
		{

			deSurlignerLigne();

			if(index_select <= 0)
				index_select = tableau_aeroport.length;

			index_select -= 1;

			if(div = selectionnerLigne(index_select))
				selectValue(index_select);
		}
		// bas
		else if(key == 40)
		{
			deSurlignerLigne();

			if(index_select >= (tableau_aeroport.length -1))
				index_select = -1;

			index_select += 1;

			if(div = selectionnerLigne(index_select))
				selectValue(index_select);
		}
		// tab
		else if(key == 9 || key == 13)
		{
			autoCompleter();

			// empeche la soumission
			if(key == 13)
				return false;
		}
	}
	return true;
}

function autoCompleter()
{

	if(divActif && champsActif && !estAeroportValide && tableau_aeroport.length > 0)
	{
		champsActif.value = tableau_aeroport[0][1];
		champsActif_h.value = tableau_aeroport[0][0];
		valeurCourante = champsActif.value;
	}

	masquerDiv();
}

function voirSelect(v)
{
	elem = document.getElementsByTagName('select');

	//if(document.all)
		for(i=0;i<elem.length;i++)
			if(elem[i].className.lastIndexOf("masquable") != -1)
				elem[i].style.visibility=v;
}

function switcher(div)
{
	div = document.getElementById(div);
	var visibilite = (div.style.display=="block") ? "none" : "block";
	div.style.display = visibilite;
}