/**
 * TODO (2007-09-28)
 * - placement automatique (left et top), voire au dessus de l'élément s'il est tout en bas de la page
 * - meilleure gestion de l'url et du format du fichier de réponse (xml, json)
 * - meilleure gestion "autocomplete" : remettre à la valeur initiale apres la suggestion
 */

function suggest( inputId, controller ) {

	var inputSuggest = $(document.getElementById(inputId));
	inputSuggest.get(0).setAttribute('autocomplete', 'off');

	var divSuggestions = $('<div id="suggest:' + controller + '" class="suggest"><' + '/div>').hide().insertAfter(inputSuggest);
	
	inputSuggest.focus(function(){$('.suggest').hide();});
	//inputSuggest.blur(function(){$('.suggest').hide();});
	inputSuggest.keyup(function(event){

		$.ajax({
			type: 'GET',
			url: '/fichiergte/ajax.php?controller=' + controller + '&query=' + inputSuggest.val(),
			dataType: 'xml',
			error: function( xml, errMsg ) {
				//alert('Une erreur est survenue : ' + xml.status);
			},
			success: function( xml ) {

			var items = xml.documentElement.getElementsByTagName('item');
				if ( items.length > 0 ) {

					divSuggestions.get(0).innerHTML = '';
					
					$(items).each(function(i) {
					
						var value = items[i].firstChild.nodeValue;
						var label = value.replace(
							new RegExp('(' + inputSuggest.val() + ')', 'ig'), 
							'<span class="highlight">$1<' + '/span>'
						);
					
						var div = document.createElement('div');
						var a = div.appendChild(document.createElement('a'));
						a.innerHTML = label;
						a.href = '#';
						a.onclick = function( e ) {
							e.stopPropagation();
							inputSuggest.val(value);
							divSuggestions.fadeOut('fast');
							return false;
						};
						divSuggestions.get(0).appendChild(div);
						//$(divCentres).append('<div>' + centres[i].firstChild.nodeValue + '<' + '/div>');
					});
					divSuggestions.show();
				} else divSuggestions.hide();
			}
		});
	});
	
} // end of 'suggest()'

$(document).ready(function() {
	$('input[@class^=suggest-]').each(function(i){
		suggest(this.id, this.className.replace(new RegExp('(^|\b)suggest-(.*)(\b|$)'), '$2'));
	});
}); // end of 'ready()'