function getXMLHTTP(){var xhr=null;if(window.XMLHttpRequest)
xhr=new XMLHttpRequest();else if(window.ActiveXObject){try{xhr=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xhr=new ActiveXObject("Microsoft.XMLHTTP");}catch(e1){xhr=null;}}}
else{alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");}
return xhr;}
var _documentForm=null;var _inputField=null;var _submitButton=null;function initAutoComplete(form,field,submit){_documentForm=form;_inputField=field;field.setAttribute("autocomplete","off");_submitButton=submit;_inputField.autocomplete="off";creeAutocompletionDiv();_currentInputFieldValue=_inputField.value;_oldInputFieldValue=_currentInputFieldValue;cacheResults("",new Array());document.onkeydown=onKeyDownHandler;_inputField.onkeyup=onKeyUpHandler;_inputField.onblur=onBlurHandler;window.onresize=onResizeHandler;setTimeout("mainLoop()",200);}
var _oldInputFieldValue="";var _currentInputFieldValue="";var _resultCache=new Object();var _resultCacheId=new Object();function mainLoop(){if(_oldInputFieldValue!=_currentInputFieldValue){var valeur=escapeURI(_currentInputFieldValue);var suggestions=_resultCache[_currentInputFieldValue];var id=_resultCacheId[_currentInputFieldValue];if(suggestions){metsEnPlace(valeur,suggestions,id)}else{callSuggestions(valeur)}
_inputField.focus()}
_oldInputFieldValue=_currentInputFieldValue;setTimeout("mainLoop()",200);return true}
function escapeURI(La){if(encodeURIComponent){return encodeURIComponent(La);}
if(escape){return escape(La)}}
var _xmlHttp=null;var _adresseRecherche="generate_xml.php"
function callSuggestions(valeur){if(_xmlHttp&&_xmlHttp.readyState!=0){_xmlHttp.abort()}
_xmlHttp=getXMLHTTP();if(_xmlHttp){_xmlHttp.open("GET",_adresseRecherche+"?debut="+valeur,true);_xmlHttp.onreadystatechange=function(){if(_xmlHttp.readyState==4&&_xmlHttp.responseXML){var liste=traiteXmlSuggestions(_xmlHttp.responseXML)
var listeId=traiteXmlId(_xmlHttp.responseXML)
cacheResults(valeur,liste,listeId)
metsEnPlace(valeur,liste,listeId)}};_xmlHttp.send(null)}}
function cacheResults(debut,suggestions,id){_resultCache[debut]=suggestions
_resultCacheId[debut]=id}
function traiteXmlSuggestions(xmlDoc){var options=xmlDoc.getElementsByTagName('option');var optionsListe=new Array();for(var i=0;i<options.length;++i){optionsListe.push(options[i].firstChild.data);}
return optionsListe;}
function traiteXmlId(xmlDoc){var options=xmlDoc.getElementsByTagName('option');var optionsListeId=new Array();for(var i=0;i<options.length;++i){optionsListeId.push(options[i].getAttribute('id'));}
return optionsListeId;}
function insereCSS(nom,regle){if(document.styleSheets){var I=document.styleSheets[0];if(I.addRule){I.addRule(nom,regle)}else if(I.insertRule){I.insertRule(nom+" { "+regle+" }",I.cssRules.length)}}}
function initStyle(){var AutoCompleteDivListeStyle="color:#000; font-size:10px; font-family: arial,sans-serif; word-wrap:break-word; overflow-y:auto;";var AutoCompleteDivStyle="display:block; padding-left:1px; padding-right:3px; height:18px; line-height:18px; background-color:#FFFFFF; color: #000000; overflow:hidden; ";var AutoCompleteDivActStyle="display:block; padding-left:1px; padding-right:3px; line-height:18px; background-color:#B5161C; color: #FFFFFF; overflow:visible; ";var Bold="font-weight: bold; font-size:11px;";insereCSS(".AutoCompleteDivListeStyle",AutoCompleteDivListeStyle);insereCSS(".AutoCompleteDiv",AutoCompleteDivStyle);insereCSS(".AutoCompleteDivAct",AutoCompleteDivActStyle);insereCSS(".bold",Bold);}
function setStylePourElement(c,name){c.className=name;}
function calculateOffsetLeft(r){return calculateOffset(r,"offsetLeft")}
function calculateOffsetTop(r){return calculateOffset(r,"offsetTop")}
function calculateOffset(r,attr){var kb=0;while(r){kb+=r[attr];r=r.offsetParent}
return kb}
function calculateWidth(){return _inputField.offsetWidth-2*1}
function setCompleteDivSize(){if(_completeDiv){_completeDiv.style.top=calculateOffsetTop(_inputField)+_inputField.offsetHeight-1+"px";_completeDiv.style.width=calculateWidth()+"px";_completeDiv.style.left=calculateOffsetLeft(_inputField)+"px";}}
function creeAutocompletionDiv(){initStyle();_completeDiv=document.createElement("DIV");_completeDiv.id="completeDiv";var borderLeftRight=2;var borderTopBottom=2;_completeDiv.style.borderRight="#B5161C "+borderLeftRight+"px solid";_completeDiv.style.borderLeft="#B5161C "+borderLeftRight+"px solid";_completeDiv.style.borderTop="#B5161C "+borderTopBottom+"px solid";_completeDiv.style.borderBottom="#B5161C "+borderTopBottom+"px solid";_completeDiv.style.zIndex="1";_completeDiv.style.paddingRight="0";_completeDiv.style.paddingLeft="0";_completeDiv.style.paddingTop="0";_completeDiv.style.paddingBottom="0";setCompleteDivSize();_completeDiv.style.visibility="hidden";_completeDiv.style.position="absolute";_completeDiv.style.backgroundColor="white";document.body.appendChild(_completeDiv);setStylePourElement(_completeDiv,"AutoCompleteDivListeStyle");}
function metsEnPlace(valeur,liste,listeId){while(_completeDiv.childNodes.length>0){_completeDiv.removeChild(_completeDiv.childNodes[0]);}
for(var f=0;f<liste.length;++f)
{if(liste[f]=="_Pays_")
{var nouveauDiv=document.createElement("DIV");nouveauDiv.onmousedown=divOnMouseDown;nouveauDiv.onmouseover=divOnMouseOver;nouveauDiv.onmouseout=divOnMouseOut;setStylePourElement(nouveauDiv,"AutoCompleteDiv");nouveauDiv.style.borderBottom="#E5E5E5 1px solid";var nouveauSpan=document.createElement("SPAN");setStylePourElement(nouveauSpan,"bold");nouveauSpan.innerHTML="&bull; Pays :";nouveauDiv.appendChild(nouveauSpan);_completeDiv.appendChild(nouveauDiv)}
else if(liste[f]=="_Regions_")
{var nouveauDiv=document.createElement("DIV");nouveauDiv.onmousedown=divOnMouseDown;nouveauDiv.onmouseover=divOnMouseOver;nouveauDiv.onmouseout=divOnMouseOut;setStylePourElement(nouveauDiv,"AutoCompleteDiv");nouveauDiv.style.borderBottom="#E5E5E5 1px solid";var nouveauSpan=document.createElement("SPAN");setStylePourElement(nouveauSpan,"bold");nouveauSpan.innerHTML="&bull; R&eacute;gions :";nouveauDiv.appendChild(nouveauSpan);_completeDiv.appendChild(nouveauDiv)}
else if(liste[f]=="_Departements_")
{var nouveauDiv=document.createElement("DIV");nouveauDiv.onmousedown=divOnMouseDown;nouveauDiv.onmouseover=divOnMouseOver;nouveauDiv.onmouseout=divOnMouseOut;setStylePourElement(nouveauDiv,"AutoCompleteDiv");nouveauDiv.style.borderBottom="#E5E5E5 1px solid";var nouveauSpan=document.createElement("SPAN");setStylePourElement(nouveauSpan,"bold");nouveauSpan.innerHTML="&bull; D&eacute;partements :";nouveauDiv.appendChild(nouveauSpan);_completeDiv.appendChild(nouveauDiv)}
else if(liste[f]=="_Villes_")
{var nouveauDiv=document.createElement("DIV");nouveauDiv.onmousedown=divOnMouseDown;nouveauDiv.onmouseover=divOnMouseOver;nouveauDiv.onmouseout=divOnMouseOut;setStylePourElement(nouveauDiv,"AutoCompleteDiv");nouveauDiv.style.borderBottom="#E5E5E5 1px solid";var nouveauSpan=document.createElement("SPAN");setStylePourElement(nouveauSpan,"bold");nouveauSpan.innerHTML="&bull; Villes :";nouveauDiv.appendChild(nouveauSpan);_completeDiv.appendChild(nouveauDiv)}
else
{var nouveauDiv=document.createElement("DIV");nouveauDiv.setAttribute("id",listeId[f]);nouveauDiv.onmousedown=divOnMouseDown;nouveauDiv.onmouseover=divOnMouseOver;nouveauDiv.onmouseout=divOnMouseOut;setStylePourElement(nouveauDiv,"AutoCompleteDiv");nouveauDiv.style.paddingLeft="8px";var nouveauSpan=document.createElement("SPAN");nouveauSpan.innerHTML=liste[f];nouveauDiv.appendChild(nouveauSpan);_completeDiv.appendChild(nouveauDiv)}}
PressAction();if(liste.length>0)
{var nStyleDiv;if((18*_completeDivRows+4)>250)
{var styleDiv=_completeDiv.getAttribute("style");nStyleDiv=styleDiv.replace(/height: ?[0-9]+px/,"height: 250px;");if(styleDiv==nStyleDiv)
{nStyleDiv=nStyleDiv+";height: 250px;";}}
else
{var styleDiv=_completeDiv.getAttribute("style");nStyleDiv=styleDiv.replace(/height: ?[0-9]+px/,"height: "+(18*_completeDivRows+4)+"px;");if(styleDiv==nStyleDiv)
{nStyleDiv=nStyleDiv+";height: "+(18*_completeDivRows+4)+"px;";}}
_completeDiv.setAttribute("style",nStyleDiv);}
else
{hideCompleteDiv();}}
var _lastKeyCode=null;var onKeyDownHandler=function(event){if(!event&&window.event){event=window.event;}
if(event){_lastKeyCode=event.keyCode;}}
var _eventKeycode=null;var onKeyUpHandler=function(event){if(!event&&window.event){event=window.event;}
_eventKeycode=event.keyCode;if(_eventKeycode==40||_eventKeycode==38){blurThenGetFocus();}
var N=rangeSize(_inputField);var v=beforeRangeSize(_inputField);var V=_inputField.value;if(_eventKeycode!=0){if(N>0&&v!=-1){V=V.substring(0,v);}
if(_eventKeycode==13||_eventKeycode==3){var d=_inputField;if(_inputField.createTextRange){var t=_inputField.createTextRange();t.moveStart("character",_inputField.value.length);_inputField.select()}else if(d.setSelectionRange){_inputField.setSelectionRange(_inputField.value.length,_inputField.value.length)}}else{if(_inputField.value!=V){_inputField.value=V}}}
if(_eventKeycode!=40&&_eventKeycode!=38){_currentInputFieldValue=V;}
if(handleCursorUpDownEnter(_eventKeycode)&&_eventKeycode!=0){PressAction();}}
function handleCursorUpDownEnter(eventCode)
{if(eventCode==40)
{highlightNewValue(_highlightedSuggestionIndex+1);if(_highlightedSuggestionDiv.firstChild.className=="bold")
{highlightNewValue(_highlightedSuggestionIndex+1);}
return false}
else if(eventCode==38)
{highlightNewValue(_highlightedSuggestionIndex-1);if(_highlightedSuggestionDiv.firstChild.className=="bold")
{if(_highlightedSuggestionIndex==0)
highlightNewValue(_highlightedSuggestionIndex+1);else
highlightNewValue(_highlightedSuggestionIndex-1);}
return false}
else if(eventCode==13||eventCode==3)
{critere=_highlightedSuggestionDiv.getAttribute("id");label=_highlightedSuggestionDiv.firstChild.innerHTML;_inputField.value=label;document.getElementById("id_localisation").value=critere;hideCompleteDiv()
return false}
return true}
var _completeDivRows=0;var _completeDivDivList=null;var _highlightedSuggestionIndex=-1;var _highlightedSuggestionDiv=null;function PressAction(){_highlightedSuggestionIndex=-1;var suggestionList=_completeDiv.getElementsByTagName("div");var suggestionLongueur=suggestionList.length;_completeDivRows=suggestionLongueur;_completeDivDivList=suggestionList;_currentInputFieldValue=_inputField.value;if(_currentInputFieldValue==""||suggestionLongueur==0){hideCompleteDiv()}else{showCompleteDiv()}
var trouve=false;for(var i=0;i<suggestionLongueur;i++){setStylePourElement(suggestionList.item(i),"AutoCompleteDiv");}
if(trouve)
{highlightNewValue(indice);}
else
{_highlightedSuggestionIndex=-1;_highlightedSuggestionDiv=null}
var supprSelection=false;switch(_eventKeycode){case 8:case 33:case 34:case 35:case 35:case 36:case 37:case 39:case 45:case 46:supprSelection=true;break;default:break}
if(!supprSelection&&_highlightedSuggestionDiv){setStylePourElement(_highlightedSuggestionDiv,"AutoCompleteDivAct");var z;if(trouve){z=getSuggestion(_highlightedSuggestionDiv).substr(0);}else{z=_currentInputFieldValue;}
if(z!=_inputField.value){if(_inputField.value!=_currentInputFieldValue){return;}
if(_inputField.createTextRange||_inputField.setSelectionRange){_inputField.value=z;}
if(_inputField.createTextRange){var t=_inputField.createTextRange();t.moveStart("character",_currentInputFieldValue.length);t.select()}else if(_inputField.setSelectionRange){_inputField.setSelectionRange(_currentInputFieldValue.length,_inputField.value.length)}}}else{_highlightedSuggestionIndex=-1;}}
var _cursorUpDownPressed=null;function blurThenGetFocus(){_cursorUpDownPressed=true;_inputField.blur();setTimeout("_inputField.focus();",10);return}
function rangeSize(n){var N=-1;if(n.createTextRange){var fa=document.selection.createRange().duplicate();N=fa.text.length}else if(n.setSelectionRange){N=n.selectionEnd-n.selectionStart}
return N}
function beforeRangeSize(n){var v=0;if(n.createTextRange){var fa=document.selection.createRange().duplicate();fa.moveEnd("textedit",1);v=n.value.length-fa.text.length}else if(n.setSelectionRange){v=n.selectionStart}else{v=-1}
return v}
function cursorAfterValue(n){if(n.createTextRange){var t=n.createTextRange();t.moveStart("character",n.value.length);t.select()}else if(n.setSelectionRange){n.setSelectionRange(n.value.length,n.value.length)}}
function getSuggestion(uneDiv){if(!uneDiv){return null;}
return trimCR(uneDiv.getElementsByTagName('span')[0].firstChild.data)}
function trimCR(chaine){for(var f=0,nChaine="",zb="\n\r";f<chaine.length;f++){if(zb.indexOf(chaine.charAt(f))==-1){nChaine+=chaine.charAt(f);}}
return nChaine}
function hideCompleteDiv(){_completeDiv.style.visibility="hidden"}
function showCompleteDiv(){_completeDiv.style.visibility="visible";setCompleteDivSize();}
function highlightNewValue(C){if(!_completeDivDivList||_completeDivRows<=0){return;}
showCompleteDiv();if(C>=_completeDivRows){C=_completeDivRows-1}
if(_highlightedSuggestionIndex!=-1&&C!=_highlightedSuggestionIndex){setStylePourElement(_highlightedSuggestionDiv,"AutoCompleteDiv");_highlightedSuggestionIndex=-1}
if(C<0){_highlightedSuggestionIndex=-1;_inputField.focus();return}
if(C>=14)
{if(_completeDiv.scrollTop<18*(C-13))
_completeDiv.scrollTop=18*(C-13);}
else
if(_completeDiv.scrollTop>18*(C))
_completeDiv.scrollTop=0;_highlightedSuggestionIndex=C;_highlightedSuggestionDiv=_completeDivDivList.item(C);if(_highlightedSuggestionDiv.firstChild.className!="bold"){setStylePourElement(_highlightedSuggestionDiv,"AutoCompleteDivAct");}}
var onResizeHandler=function(event){setCompleteDivSize();}
var onBlurHandler=function(event){if(!_cursorUpDownPressed){hideCompleteDiv();if(_lastKeyCode==9){_submitButton.focus();_lastKeyCode=-1}}
_cursorUpDownPressed=false};var divOnMouseDown=function(){if(_highlightedSuggestionDiv.firstChild.className!="bold"){_inputField.value=getSuggestion(this);critere=_highlightedSuggestionDiv.getAttribute("id");label=_highlightedSuggestionDiv.firstChild.innerHTML;_inputField.value=label;document.getElementById("id_localisation").value=critere;hideCompleteDiv()
_inputField.focus();}
else
return false;};var divOnMouseOver=function(){if(_highlightedSuggestionDiv){setStylePourElement(_highlightedSuggestionDiv,"AutoCompleteDiv");}
for(var i=0;i<this.parentNode.childNodes.length;i++){if(this.parentNode.childNodes[i]==this){highlightNewValue(i);}}};var divOnMouseOut=function(){setStylePourElement(this,"AutoCompleteDiv");};
