var _proxiType=null;
var _proxiVille = '';
var _proxiVille_used = '';
var _proxiCache=new Object(); 
var _proxiDiv;
var _proxiInput;
var _proxiDivRows;
var _VilleProxiDivStyle="font-size: 13px; position: relative; z-index: 999; font-family: arial,sans-serif; word-wrap:break-word; overflow:scroll;";
var _VilleDivStyle="display: block; padding-left:3px; padding-right:3px; height: 20px; overflow: hidden; background-color: white;";
var _VilleDivActStyle="display: block; padding-left:3px; padding-right:3px; height: 20px; overflow: hidden; background-color: #3366cc; color: white ! important; ";
var _VilleDivCroixStyle="text-align:right; padding-right: 2px;";

function initProximite(){
	creeProximiteDiv();
	putCache(_proxiCache, "",new Array());

	$('proximite_exacte').onclick=onClickHandler;
	$('proximite_5').onclick=onClickHandler;
	$('proximite_15').onclick=onClickHandler;
}

function creeProximiteDiv() {

	proxiInitStyle();
	_proxiDiv=document.createElement("div");
	_proxiDiv.id="proxiProxiDiv";
	
	var borderLeftRight=1;
	var borderTopBottom=1;
	_proxiDiv.style.borderRight="black "+borderLeftRight+"px solid";
	_proxiDiv.style.borderLeft="black "+borderLeftRight+"px solid";
	_proxiDiv.style.borderTop="black "+borderTopBottom+"px solid";
	_proxiDiv.style.borderBottom="black "+borderTopBottom+"px solid";

	_proxiDiv.style.zIndex="1";
	_proxiDiv.style.paddingRight="0";
	_proxiDiv.style.paddingLeft="0";
	_proxiDiv.style.paddingTop="0";
	_proxiDiv.style.paddingBottom="0";
	
	setProxiPosition();
	_proxiDiv.style.visibility="hidden";
	_proxiDiv.style.position="absolute";
	_proxiDiv.style.backgroundColor="white";

	document.body.appendChild(_proxiDiv);
	setStyle(_proxiDiv,"VilleProxiDivStyle");
}

function proxiInitStyle() {

	insereCSS(".VilleProxiDivStyle", _VilleProxiDivStyle);
	insereCSS(".VilleDivStyle", _VilleDivStyle);
	insereCSS(".VilleDivActStyle", _VilleDivActStyle);
	insereCSS(".VilleDivCroixStyle", _VilleDivCroixStyle);
}

function getVille() {

	if(document.forms['search'].elements['FNAIM_Input_Ville']) {
		_proxiVille = document.forms['search'].elements['FNAIM_Input_Ville'].value;
	}
	if(_proxiVille == '') {
		return false;
	}
	return true;
}

function callProximite() {
 
	if(_proxiType != '5' && _proxiType != '15') {
		return;
	}
	var pars = "call=xml_villes&ville="+escapeURI(_proxiVille)+"&type="+_proxiType;
	new Ajax.Request("index.php", 
		{
			method: 'get', 
			parameters: pars, 
			onSuccess: function(xhr) {
				var liste = proxiConvertXml(xhr.responseXML);
				putCache(_proxiCache, _proxiVille+_proxiType,liste);
				proxiMetsEnPlace(liste);
			}
		}
	);	
}

function proxiConvertXml(xmlDoc) {

	var options = xmlDoc.getElementsByTagName('ville');
	var optionsListe = new Array();
	for(var i=0; i < options.length; ++i) {
		optionsListe.push(options[i].firstChild.data);
	}
	return optionsListe;
}

function proxiMetsEnPlaceCroix() {

	var nouveauDiv=document.createElement("div");
	setStyle(nouveauDiv, "VilleDivCroixStyle");
	var nouveauSpan=document.createElement("span");
	nouveauDiv.appendChild(nouveauSpan);
	nouveauSpan.innerHTML= '<a href="javascript:hideProxiDiv();">x</a>';
	_proxiDiv.appendChild(nouveauDiv);
}

function proxiViderDiv() {
	while(_proxiDiv.childNodes.length>0) {
		_proxiDiv.removeChild(_proxiDiv.childNodes[0]);
	}
	proxiMetsEnPlaceCroix();
	_proxiDivRows = 0;
	setVillesValues('');
	hideProxiDiv();
}

function proxiMetsEnPlace(liste) {

	proxiViderDiv();
	for(var i=0; i < liste.length; ++i) {
		var nouveauDiv=document.createElement("div");
		setStyle(nouveauDiv, "VilleDivStyle");
		var nouveauSpan=document.createElement("span");

		var nouveauInput=document.createElement("input");
		nouveauInput.setAttribute("type", "checkbox");
		nouveauInput.setAttribute("name", "villes_proxi[]");
		nouveauInput.setAttribute("value", liste[i]);
		nouveauInput.onclick = clickVilleValues;

		nouveauSpan.appendChild(nouveauInput);

		nouveauDiv.appendChild(nouveauSpan);

		var nouveauSpan2=document.createElement("span");
		nouveauSpan2.innerHTML = removeInsee(liste[i]);
		nouveauDiv.appendChild(nouveauSpan2);
		nouveauInput.setAttribute("checked", "checked");

		appendVilleValues(liste[i]);
		_proxiDiv.appendChild(nouveauDiv);
		_proxiDivRows++;
	}
	if(_proxiDivRows>0) {
		_proxiDiv.style.height= 20*_proxiDivRows+40+"px";
		if(_proxiDiv.style.height >= 300+40) {
			_proxiDiv.style.height = '340px';
		}
		_proxiVille_used = _proxiVille;
		showProxiDiv();
		_proxiDiv.focus()
		setTimeout("proxiVerifyChange()",200);
	} 
	else {
		hideProxiDiv();
	}
}

function proxiVerifyChange() {
	if(getVille() == false || _proxiVille_used != _proxiVille) {
		proxiViderDiv();
	}
	setTimeout("proxiVerifyChange()", 200);
}

function hideProxiDiv() {

	_proxiDiv.style.visibility = "hidden";
}

function showProxiDiv() {

	_proxiDiv.style.visibility = "visible";
}

function setProxiPosition(){
	
	if(_proxiDiv && _proxiInput){
		_proxiDiv.style.left=calculateOffsetLeft(_proxiInput)+"px";
	    _proxiDiv.style.top=calculateOffsetTop(_proxiInput)+_proxiInput.offsetHeight-1+"px";
	    _proxiDiv.style.width="200px";
	}
}

var onClickHandler=function(){

	if(getVille() == false) {
		return;
	}
	_proxiInput = this;
	if(this.id == 'proximite_exacte') {
		setVillesValues('');
		hideProxiDiv();
		return;
	}
	if(this.id == 'proximite_15') {
		_proxiType = 15;
	}
	if(this.id == 'proximite_5') {
		_proxiType = 5;
	}
	setProxiPosition();

	if(_proxiType == '5' || _proxiType == '15') {
		var suggestions = _proxiCache[_proxiVille+_proxiType];
		if(suggestions) { 
			proxiMetsEnPlace(suggestions);
		}
		else{
			callProximite();
		}
	}
	else {
		hideProxiDiv();
	}
};

function getVilleValues() {

	if($F('FNAIM_Input_Ville_Values') != '') {
		return $F('FNAIM_Input_Ville_Values');
	}
	return false;
}

function setVillesValues(villes) {
	$('FNAIM_Input_Ville_Values').value = villes;
}

function appendVilleValues(ville) {

	var villes = getVilleValues();
	if(villes == false) {
		villes = '';
	}
	else {
		if(villes.indexOf(ville+'|') > -1) {
			return;
		}
	}
	setVillesValues(villes + ville + "|");
}

function removeVilleValues(ville) {

	var villes = getVilleValues();
	if(villes == false) {
		return;
	}
	var cur_ville = '';
	var new_villes = '';
	for(var i=0; i < villes.length; ++i) {
		if(villes.charAt(i) == '|') {
			if(cur_ville != ville) {
				new_villes = new_villes + cur_ville + "|";
			}
			cur_ville = '';
		}
		else {
			cur_ville = cur_ville + villes.charAt(i);
		}
	}
	setVillesValues(new_villes);
}

function clickVilleValues() {

	var ville = this.value;
	if(this.checked == false) {
		removeVilleValues(ville);
	}
	else {
		appendVilleValues(ville);
	}
	return true;
}

function removeInsee(string) {

	var res = string;
	
	if(string.indexOf(';') != -1) {
		var elements = string.split(';');
		if(elements[0]) {
			res = elements[0];
		}
	}
	return res;
}