/** Effectue une requete Ajax pour rappatrier la liste des villes correspondant à
 *	un code postal puis rappelle la fonction call_at_end une fois la requete effectuée
 */
function updateVilleFromCodePostal( source, cible, preselectedVille, call_at_end ) {
//	console.info('updateVilleFromCodePostal('+name+')');
	var CodePostal = source.getValue();
	if (!CodePostal) {
//		console.info('empty CodePostal setting [entrez Code Postal]');
		cible.setValues({'': '[entrez Code Postal]'});
		if (typeof(call_at_end)=='function')
			call_at_end();
		return ;
	}
	// regle exclusion CORSE
	if (CodePostal.substring(0,2) == 20 && CodePostal.length == 5)
	{
		jQuery.alert(this.title? this.title: 'Le code postal saisi ne vous permet pas d\'accéder à nos offres.');
		cible.setValues({'':''});
		return ;
	}
	
	// regle exclusion DOM TOM
	if (CodePostal.substring(0,2) >= 96 && CodePostal != 98000)
	{
		jQuery.alert(this.title? this.title: 'Le code postal saisi ne vous permet pas d\'accéder à nos offres.');
		cible.setValues({'':''});
		return ;
	}
	
	// regle exclusion Monaco
	if (CodePostal == 98000)
	{
		jQuery.alert(this.title? this.title: 'Le code postal saisi ne vous permet pas d\'accéder à nos offres.');
		cible.setValues({'':''});
		return ;
	}
	
	cible.setValues({'': '[recherche ...]'});
	jQuery.ajax({
		_call_at_end: call_at_end,
		url: '/ajax/villes?json&CodePostal=' + escape(CodePostal),
		dataType: 'json',
		success: function(json, code) {
			if (!json.response.list.length) {
				cible.setValues({'': '[code postal invalide]'});
				if (typeof(this._call_at_end)=='function')
					this._call_at_end();
				return ;
			}
			var options = [];
			for (var i in json.response.list)
				options[json.response.list[i]] = json.response.list[i];
			cible.setValues(options);
//			console.info('setting ville to '+preselectedVille);
			if (preselectedVille != undefined && typeof(preselectedVille)!='undefined')
				cible.setValue(preselectedVille);
			if (typeof(this._call_at_end)=='function')
				this._call_at_end();
		},
		error: function() {
//			alert('Erreur de récupération de la ville');
			if (typeof(this._call_at_end)=='function')
				this._call_at_end();
		}
	});
}


/************************************************************************************************************************
 *
 * Gestion des bulles d'aides
 * 
 ************************************************************************************************************************/

var NHelp = {
	currentHelp: null,
	inhib : null,
	contain_help: function() {
		return (jQuery('.help', this).length);
	},
	init: function() {
		jQuery('.item').filter(NHelp.contain_help)
			.mousemove(function(){
				if (typeof(NHelp)!='object')
					return ;
				if (NHelp.currentHelp == this)
					return ;
				NHelp.showHelp(this);
			})
			.mouseout(function(){
				if (typeof(NHelp)!='object')
					return ;
				NHelp.hideHelp(this);
			});
			
		jQuery('input, select, textarea')
			.focus(function(){
				NHelp.showHelp(jQuery(this).parents('.item').filter(NHelp.contain_help)[0]);
			})
			.blur(function(){
				NHelp.hideHelp(jQuery(this).parents('.item').filter(NHelp.contain_help)[0]);
			});
	},
	showHelp: function(item) {
		if (!item)
			return ;
		if (NHelp.currentHelp)
			jQuery(NHelp.currentHelp).removeClass('focus');
		NHelp.currentHelp = item;
		jQuery(NHelp.currentHelp).addClass('focus');
	},
	hideHelp: function(item) {
		if (!NHelp.currentHelp && item)
			NHelp.currentHelp = item;
		if (NHelp.currentHelp) {
			jQuery(NHelp.currentHelp).removeClass('focus');
			NHelp.currentHelp = null;
		}
	}
};
jQuery(function() {
	NHelp.init();
});
