function initDivPosition(champ_source, calque, xPX, yPX) {
	var posX = YAHOO.util.Dom.getX(champ_source.id);
	var posY = YAHOO.util.Dom.getY(champ_source.id);

	var calque = document.getElementById(calque);
	calque.style.top = posY+xPX;
	calque.style.left = posX+yPX;
}

var currentSearch = "";
var current_balise_select_id = "";

function ajaxList(champ_source, fields_to_reload_ids, calque, xPX, yPX, balise_select_id, ville_only) {
	initDivPosition(champ_source, calque, xPX, yPX);
	current_balise_select_id = balise_select_id;
	if (champ_source.value == ""){
		resetSearch(champ_source, fields_to_reload_ids);
	}
	else if (champ_source.value != currentSearch) {
		var onSuccess = new Array();
		var i=0;
		onSuccess[i++] = "checkOpenOrUpdate('" + calque + "', '" + champ_source.id + "', '" + fields_to_reload_ids + "')";

		var onError = new Array();
		var i=0;
		onError[i++] = "alert('Erreur de fonctionnement, veuillez réessayer !');";
		
		getFile('ajax/ville.php?recherche='+champ_source.value+'&ville_only='+ville_only+'&fields_to_reload_ids='+fields_to_reload_ids+'&calque_id=' + calque + '&source_field_id='+champ_source.id+'&balise_select_id='+balise_select_id, calque, onSuccess, onError, null);
	}
}

function checkOpenOrUpdate(calque, fields_to_reload_ids, champ_source_id) {
	var divInner = document.getElementById(calque).innerHTML;
	if (divInner.charAt(0) == "<") {
		openDiv(calque);
		//document.getElementById(current_balise_select_id).focus();
	}
	else if(divInner.length > 0) {
		closeDiv(calque);
		var array = divInner.split("|");
		document.getElementById(fields_to_reload_ids).value = array[0];
		document.getElementById(champ_source_id).value = array[1];
		currentSearch = array[0];
	}
	else {
		resetSearch();
	}
}

function resetSearch(champ_source_id, fields_to_reload_ids){
  	document.getElementById(fields_to_reload_ids).value = "";
	document.getElementById(champ_source_id).value = "";
	currentSearch = "";
}

function selectResult(champs_dest_values, champ_source_value, champs_dest_ids, champ_source_id, calque, doClose) {
	document.getElementById(champs_dest_ids).value = champs_dest_values;
	document.getElementById(champ_source_id).value = champ_source_value;
	currentSearch = champ_source_value;
	if (doClose) {
		closeDiv(calque, true);
	}
}

function updateResult(champ_source_value, champ_dest_value, calque, doClose) {
	var liste_value = document.getElementById(current_balise_select_id).value;
	var array = liste_value.split("|");
	selectResult(array[0], array[1], champ_dest_value, champ_source_value, calque, doClose);
}

function openDiv(divId) {
	document.getElementById(divId).style.display = "block";
}

function closeDiv(divId, doEmpty) {
	document.getElementById(divId).style.display = "none";
	if (doEmpty) {
		document.getElementById(divId).innerHTML = "";
	}
}
