var sStyle = ".autocomplete\n";
sStyle += "{\n";
sStyle += "	list-style: none;\n";
sStyle += "	color: #000;\n";		
sStyle += "	background: white;\n";
sStyle += "	text-align: left;\n";		
sStyle += "}\n\n";

sStyle += ".autocomplete ul\n";
sStyle += "{\n";
sStyle += "	width:100%;\n";
sStyle += "	margin:0px;\n";
sStyle += "	padding:0px;\n";
sStyle += "}\n\n";
		
sStyle += ".autocomplete li\n";
sStyle += "{\n";
sStyle += "	margin : 0px;\n";
sStyle += "	padding-left : 2px;\n";
sStyle += "}\n\n";			

sStyle += ".autocomplete li:hover\n";
sStyle += "{\n";
sStyle += "	background: #EEE;\n";
sStyle += "	color: #000;\n";
sStyle += "	cursor: pointer;\n";
sStyle += "}\n\n";

document.write("<style type='text/css'>" + sStyle + "</style>");

var aiAutocomplete_TimeOut = Array();
var bAutocomplete_init = false;
var autocomplete_const_TimeOut = 50;
var autocomplete_touche = 0;
var autocomplete_oldElt;
var autocomplete_oField;
var autocomplete_aiCount = Array();

document.onkeydown =  autocomplete_get_key_pressed;

//Event handler
function  autocomplete_get_key_pressed(evt)
{
	 autocomplete_touche =  
	 document.layers ? evt.which :
	 document.all ? event.keyCode :
	 document.getElementById ? evt.keyCode : 0;
	window.status = autocomplete_touche;
	
	autocomplete(null);
	
	return true;
} 

function autocomplete_mooveElement(sIdField, sType)
{
	if(autocomplete_aiCount[sIdField] == null)
	{
		autocomplete_aiCount[sIdField] = -1;	
	}
	
	if(sType == '+')
	{
		autocomplete_aiCount[sIdField]++;
	}
	else
	{
		autocomplete_aiCount[sIdField]--;
		
		if(autocomplete_aiCount[sIdField] < 0)
		{
			autocomplete_aiCount[sIdField] = -1;
		}
	}
	
	oElt = document.getElementById(sIdField + "_" + autocomplete_aiCount[sIdField]);
	
	if(oElt == null && sType == '+')
	{
		autocomplete_aiCount[sIdField]--;
		oElt = document.getElementById(sIdField + "_" + autocomplete_aiCount[sIdField]);
	}
	
	if(autocomplete_oldElt != null)
	{
		autocomplete_oldElt.style.background = '';
	}
	
	if(oElt != null)
	{
		eval(oElt.getAttribute('onmouseover'));
		
		oElt.style.background = '#EEE';
		
		autocomplete_oldElt = oElt;
	}
}

function autocomplete(oField)
{

	//Si on est en mode microsoft
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		asRetour = navigator.appVersion.split('MSIE');
		iVersion = asRetour[1].split(';');
		//version trop vielle pour le script
		if(iVersion[0] < 8)
		{
			return false;
		}
		else
		{
			//on peut continuer
		}
	}
	
	bSend = true;
	bCache = false;
	
	if(oField !== null)
	{
		oField.parentNode.setAttribute('autocomplete', 'off');
		oField.focus();
		autocomplete_oField = oField;
		
		bCache = true;
		bSend = false;
	}
	else
	{
		oField = autocomplete_oField;	
	}
	
	sidAutoComplete = oField.name;
	sidAutoComplete = "autocomplete_" + sidAutoComplete;
	
	sIdField = oField.getAttribute('id');
	
	if(autocomplete_touche >= 65 && autocomplete_touche <= 90)
	{

	}
	else if(autocomplete_touche == 40) //descendre
	{
		autocomplete_mooveElement(sIdField, '+');
		bSend = false;
	}
	else if(autocomplete_touche == 38) //Monter
	{
		autocomplete_mooveElement(sIdField, '-');
		bSend = false;
	}
	else if(autocomplete_touche == 27) //Echap
	{
		autocomplete_cache(sidAutoComplete);
		return true;
	}	
	else
	{
		//alert(autocomplete_touche);
		bSend = false;
	}
	
	if(bAutocomplete_init == false)
	{
		bAutocomplete_init = true;
	}
	
	aiAutocomplete_TimeOut[sidAutoComplete] = autocomplete_const_TimeOut;
	autocomplete_cacheAll();
									
	oText = document.getElementById(sidAutoComplete);
	if(oText === null)
	{
		var oText = document.createElement("div");
		
		oText.setAttribute('id',	sidAutoComplete);
		oText.setAttribute('name', 	'details_autocomplete');
		oText.setAttribute('class', 'autocomplete');

		oField.parentNode.insertBefore(oText, oField.nextSibling);
	}

	if(sIdField === null)
	{
		sIdField = sidAutoComplete + '_input';
		
		oField.setAttribute('id', sIdField); 
	}
	
	sUrl = sSiteUrl + '/ajax/autocomplete_' + oField.name + '.php';

	oText = document.getElementById(oText.getAttribute('id'));
	
	if(bSend)
	{
		var d = new Date();
		var antiBUG = d.getTime();
		
		try
		{ 
			RecupValHTML = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (e) 
		{
			try
			{
				RecupValHTML = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (e2) 
			{
				try
				{  
					RecupValHTML = new XMLHttpRequest();     
				}
				catch (e3)
				{  
					xhr = false;
				}
			}
		}
		
	    //on dÃ©finit l'appel de la fonction au retour serveur
		RecupValHTML.onreadystatechange = function()
		{
		//	alert(RecupValHTML.readyState);
			if (RecupValHTML.readyState == 4)
			{
				sLiId = sIdField + "_0";
				
				asData = eval('(' + RecupValHTML.responseText + ')');
	
				oText.innerHTML = "<ul class='value_autocomplete' onmouseout=\"autocomplete_cache(this)\">";
				oText.innerHTML += "<li id=\"" + sLiId + "\" onclick=\"autocomplete_click(this, '" + sIdField + "')\" onmouseout=\"autocomplete_out(this)\" onmouseover=\"autocomplete_getText('" + oField.value + "', '" + sIdField + "', '" + sLiId + "');\">" + oField.value + "</li>";
	
				iCounter = 1;
				
				for(IndexResult in asData)
				{
					sLiId = sIdField + "_" + iCounter;
					
					oText.innerHTML += "<li id=\"" + sLiId + "\" onclick=\"autocomplete_click(this, '" + sIdField + "')\" onmouseout=\"autocomplete_out(this)\" onmouseover=\"autocomplete_getText('" + asData[IndexResult] + "', '" + sIdField + "', '" + sLiId + "');\">" + asData[IndexResult] + "</li>";
					iCounter++;
				}
				oText.innerHTML += "</ul>";
			}
		};
	
	    //on appelle le fichier reponse
		RecupValHTML.open("POST", sUrl +'?bug=' + antiBUG, true);
	
		RecupValHTML.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
		
	
		RecupValHTML.send('keyWord='+oField.value);
	}
	
	if(oField.style.width != '')
	{
		sWidth = oField.style.width;
	}
	else if (oField.clientWidth != '')
	{
		sWidth = oField.clientWidth+'px';
	}
	else
	{
		sWidth = '180px';
	}

	sTop = eval(oField.offsetTop + oField.clientHeight + 5) + 'px';
	sLeft = oField.offsetLeft + 'px';
	
	oText.style.width 		= sWidth;
	oText.style.border 		= '2px solid #DDD';
	oText.style.left 		= sLeft;
	oText.style.top 		= sTop;
	oText.style.position 	= 'absolute';
	oText.style.color	 	= '#000';
	
	if(bCache)
	{
		oText.style.visibility 	= 'hidden';
		oText.style.display 	= 'none';
	}
	else
	{
		oText.style.visibility 	= 'visible';
		oText.style.display 	= 'block';
	}
	
	oText.style.background 	= '#FFF';
	oText.style.zIndex 		= '1';

	return true;
}


function autocomplete_getText(sText, sInputId, sId)
{
	oObject = document.getElementById(sId);
	
	aiAutocomplete_TimeOut[oObject.parentNode.getAttribute('id')] = null;
	
	document.getElementById(sInputId).value = sText;
}

function autocomplete_cache(divId)
{
	oDiv = document.getElementById(divId);

	if(oDiv !== null)
	{
		oDiv.style.visibility 	= 'hidden';
		oDiv.style.display 		= 'none';
	}

	aiAutocomplete_TimeOut[divId] = null;
}

function autocomplete_TimeOut()
{
	for(i in aiAutocomplete_TimeOut)
	{
		if(aiAutocomplete_TimeOut[i] !== null)
		{
			aiAutocomplete_TimeOut[i] = eval(aiAutocomplete_TimeOut[i]-1);
			
			if(aiAutocomplete_TimeOut[i] <= 0)
			{
				aiAutocomplete_TimeOut[i] = null;
				autocomplete_cache(i);
			}
		}
	}
	
	window.setTimeout("autocomplete_TimeOut()",100);
}

function autocomplete_out(oObject)
{
	aiAutocomplete_TimeOut[oObject.parentNode.getAttribute('id')] = 5;
	autocomplete_TimeOut();
}

function autocomplete_click(oObject, sInputId)
{
	document.getElementById(sInputId).focus();
	document.getElementById(sInputId).parentNode.submit();
	autocomplete_cacheAll();
}

function autocomplete_cacheAll()
{
	for(i in aiAutocomplete_TimeOut)
	{
		if(aiAutocomplete_TimeOut[i] != autocomplete_const_TimeOut)
		{
			autocomplete_cache(i);
		}
	}
}

autocomplete_TimeOut();