var li_selected = null;
var mon_timer = null;
var recherche_text = 'Ville, région, enseigne, résidence, école...';
var delai = "250";

window.addEvent('domready', function(){
	var recherche = $('destination');
	if(recherche) {
		recherche.setProperty('autocomplete', 'off');
		recherche.addEvent('click', function(e) {
			if(recherche.value == recherche_text)
				recherche.value = '';
		});
	}

	var field_provenance = $('field_provenance');
	var field_from_back = $('field_from_back');

	var bloc_suggestion = $('bloc_suggestion');
	if(bloc_suggestion)
		bloc_suggestion.myScrollEffect = new Fx.Scroll(bloc_suggestion, {
			offset: {
				'x': 0,
				'y': -100
		    }
		});

	var type_object = $('type_object');
	var id_object = $('id_object');

	var submit_form = $('submit_form');
	if(submit_form)
	{
		submit_form.addEvent('click', function(e){
			e.stop();
			var form_recherche = $('recherche_rapide');

			if(form_recherche) {
				if(id_object.value != '' || type_object.value != '') {
					form_recherche.submit();
				}
			}
		});
	}


	if(recherche) {
		/*
		recherche.addEvent('blur', function(e) {

			bloc_suggestion.fade('out');
			//Si le bloc se ferme s'en avoir choisi parmi les choix on efface ce qu'il a tape
			if(type_object && id_object) {
				if(type_object.value == '' && id_object.value == '') {
					recherche.value = 'Ville, région, enseigne, résidence, école...';
				}
			}
		});
		*/

		recherche.addEvent('keyup', function(e) {
			var mot_cle = recherche.value.trim();
			var provenance = field_provenance.value.trim();

			//Navigation au clavier
			switch(e.key) {
				case 'enter' :
					enregistrerChoixEntrer(li_selected);
				break;

				case 'up':
				case 'down':
				case 'left':
				case 'right':
					//console.log(li_selected);
					var new_selectable = null;
					if(e.key == 'down') {
						if(!li_selected)
							new_selectable = $$('#suggestions li.selectable')[0];
						else
							new_selectable = li_selected.getNext('li.selectable');
					}
					else {
						if(e.key == 'up')
							new_selectable = li_selected.getPrevious('li.selectable');
					}
					if(new_selectable) {
						if(li_selected)
							li_selected.removeClass('selected');
						new_selectable.addClass('selected');
						li_selected = new_selectable;

						var bloc_suggestion = $('bloc_suggestion');
						if(bloc_suggestion)
							bloc_suggestion.myScrollEffect.toElement(li_selected);
					}
				break;

				case 'esc':
				case 'tab':
					var bloc_suggestion = $('bloc_suggestion');
					if(bloc_suggestion)
						bloc_suggestion.fade('out');
					//Si le bloc se ferme s'en avoir choisi parmi les choix on efface ce qu'il a tape
					if(type_object && id_object) {
						if(type_object.value == '' && id_object.value == '') {
							recherche.value = '';
						}
					}
				break;

				case 'backspace':
				case 'delete':
					type_object.value = '';
					id_object.value = '';

				default:
					li_selected = null;
					if(mon_timer)
						$clear(mon_timer);

					if(mot_cle.length > 1) {
						mon_timer = function() {envoyerRequete(mot_cle, provenance);}.delay(delai);
					}
					else if(mot_cle.length == 1) {
						var bloc_suggestion = $('bloc_suggestion');
						if(bloc_suggestion) {
							bloc_suggestion.set('html', '<ul id="suggestions"><li class="error">Merci de saisir au moins 3 caractères pour accéder à vos résultats personnalisés</li></ul>');
							bloc_suggestion.fade('in');
						}
					}
			}//fin du switch
		});
	}
});

function envoyerRequete(mot_cle, provenance) {
	var bloc_suggestion = $('bloc_suggestion');
	var postData = 'do=lieu/autocompletion.do&provenance='+encodeURIComponent(provenance)+'&mot_cle='+encodeURIComponent(mot_cle);
	if(!bloc_suggestion.myRequest){
		bloc_suggestion.myRequest = new Request({
			url: 'index4.php' ,
			method: 'post',
			link:'cancel',
			onRequest: function(){

			},
			onSuccess: function(responseText, responseXML){
				//alert(responseText);
				bloc_suggestion.set('html', responseText);
				bloc_suggestion.fade('in');
				$$('#suggestions li.selectable').each(function(item) {
					item.addEvent('mouseover', function(e) {
						//au survol de la souris on déselectionne l'item sélectionné pour linitialiser sur celui survolé par la souris
						$$('#suggestions li.selectable.selected').each(function(li) {
							li.removeClass('selected');
						});
						item.addClass('selected');
						li_selected = item;
					});
				});
			},
			onFailure: function(xhr){
				alert(tr('Une erreur est survenue'));
			}
		});
	}


	bloc_suggestion.myRequest.send(postData);
}

function enregistrerChoixEntrer(li) {
	var temp = li.id.split('_');
	var bloc_suggestion = $('bloc_suggestion');
	enregistrerChoix(temp[1], temp[2], temp[3], li.getAttribute('rel'));
	if(bloc_suggestion)
		bloc_suggestion.fade('out');
	return false;
}


function enregistrerChoix(typeobject, id, table_id, valeur) {
	var type_object = $('type_object');
	var id_object = $('id_object');
	var table_object = $('table_object');
	var submit_form = $('submit_form');

	type_object.value = typeobject;
	id_object.value = id;
	table_object.value = table_id;

	if(type_object.value == '' || id_object.value =='') {
		submit_form.setStyle('cursor', 'default');
	}
	else
		submit_form.setStyle('cursor', 'pointer');


	var destination = $('destination');
	if(destination)
		destination.value = valeur;

	var bloc_suggestion = $('bloc_suggestion');
	if(bloc_suggestion) {
		bloc_suggestion.fade('out');
	}
	return false;
}
