/**
* Ce fichier fait parti d'un package, toute modification doit entrainer la génération
* d'un nouveau package pour être pris en compte.
* voir l'objet ObjFichierPackage pour connaitre la marche à suivre pour regénérer un package
* @since 20/05/2009 Olivier REYT <reyt@benchmark.fr> 
*/

jQuery(function($) {
  	$(function(){
    	// L’arbre DOM est complètement chargé
	    	// Ajax sur les input
/*
	    	$("input[@f_ajax]").each(function(){
	    		if($(this).attr('name') != null) {
	    			$(this).attr('f_ajax', $(this).attr('f_ajax')+'&f_idrencontre='+$(this).attr('name') );
			}
			$(this).bind("click", function(){
				// On ajoute l'adresse email en paramètre
				if($('input[@name=f_email_'+$(this).attr('name')+']').val() != null && $('input[@name=f_email_'+$(this).attr('name')+']').val() != '') {
					if($(this).attr('f_ajax').indexOf('&f_email=') != -1) {
						$(this).attr('f_ajax', $(this).attr('f_ajax').substring(0,$(this).attr('f_ajax').indexOf('&f_email=')));
					}
					$(this).attr('f_ajax', $(this).attr('f_ajax')+'&f_email='+$('input[@name=f_email_'+$(this).attr('name')+']').val() );
					// L'action a effectuer sur l'évenement click
					appelScriptAction($(this).attr('f_ajax'), this);
				}else{
					$("#reponse_ajax_"+$(this).attr('name')).html("<a id=\"message_de_confirmation_alerte\" href=\"javascript: void(0);\" onclick=\"this.style.display='none'\" alt=\"fermer\" title=\"fermer\">Vous devez saisir une adresse email&nbsp;!<br></a>");
				}
			});
		});
*/



		// modification d'un type de relation
		$("select[id^='f_id_typelienpersonne_']").change(function () {

			id_select = $(this).attr("id").substring($(this).attr("id").lastIndexOf("_")+1);

			if(id_select > 0) {
		        $("#f_id_typelienpersonne_"+id_select+" option:selected").each(function () {
	    	        if($(this).val() == 3) {
						//$("#f_flag_typelien_"+id_select).parents("tr.relation_lien_parente_cache").show();
						$("#f_flag_typelien_"+id_select).parents("tr:first").show();
					}
	                else {
	                	//$("#f_flag_typelien_"+id_select).parents("tr.relation_lien_parente_cache").hide();
	                	$("#f_flag_typelien_"+id_select).parents("tr:first").hide();
	                	// envoi de la modification du type
	                	url_action = $("input[name='f_ajax_changement_relation_"+id_select+"']").val() + '&f_id_typelienpersonne=' + $(this).val();
	                	//appelScriptAction(url_action, this, 'ChangementListe');
	                	appelScriptAction(url_action, $("#f_id_typelienpersonne_"+id_select), 'ChangementListe');
	                }
	            });
	        }
        })

		// précision de la relation familiale
		$("select[id^='f_flag_typelien_']").change(function () {

			id_select = $(this).attr("id").substring($(this).attr("id").lastIndexOf("_")+1);

	        $("#f_flag_typelien_"+id_select+" option:selected").each(function () {
    	        if($(this).val() != '') {
                	// envoi de la modification du type
                	url_action = $("input[name='f_ajax_changement_relation_"+id_select+"']").val() + '&f_id_typelienpersonne=' + $("#f_id_typelienpersonne_"+id_select).val() + '&f_flag_typelien=' + $(this).val();
                	//appelScriptAction(url_action, this, 'ChangementListe');
                	appelScriptAction(url_action, $("#f_flag_typelien_"+id_select), 'ChangementListe');
                }
            });
        })
        
	    // Modification de plusieur relation en même temps
		$("input[@f_ajax_changement_relation_mult]").bind("click", function(){
			liste_id_relation = '';
			$("input[@name='f_id_lienpersonne[]']").each(function() {
				if(this.checked == true) {
					liste_id_relation += '&liste_id_relation['+this.value+']='+$("input[name='id_personne_fille_"+this.value+"']").val();
				}
			});
			
			if(liste_id_relation == '') {
				alert('Il faut cocher au moins une personne.');
			}
			else {
				// on recupere les modifications que l'on ajoute à l'url
				url_action = $(this).attr('f_ajax_changement_relation_mult')
				+''+liste_id_relation
				+'&f_id_typelienpersonne='+$("#f_id_typelienpersonne_deplace").val();

				// appel du script action
				appelScriptAction(url_action, this, 'ChangementListeMult');
			}
		});
	});
});

var ajax_en_cours = new Array();

// mise en commentaire le 06/03/2008 isa
/*
function appelScriptAction(url_action, cur_elt) {
	// test une requete Ajax identique (meme id) est en cours
	var ajax_en_cours_ir;
	var id_requete;
	var url_action_tronquee;
	var idrencontre_en_cours;

	// calcul de l'ID de la requête Ajax
	// si le caractère '&' est trouvé, c'est que des paramètres supplementaires ont été passés
	if(url_action.indexOf('&') != -1) {
		// si on trouve une id de rencontre, on la set
		if(url_action.indexOf('&f_idrencontre=') != -1 && url_action.indexOf('&f_email=') != -1) {
			idrencontre_en_cours = url_action.substring(url_action.indexOf('&f_idrencontre=')+15, url_action.indexOf('&f_email='));
		}
		url_action_tronquee = url_action.substring(0, url_action.indexOf('&'));
	} else {
		url_action_tronquee = url_action;
	}
	id_requete = url_action_tronquee.substr(url_action_tronquee.length-20, 20);
	
	// Test si la requête est en cours
	if(ajax_en_cours[id_requete]){
		ajax_en_cours_ir = ajax_en_cours[id_requete];
	}else{
		ajax_en_cours_ir = 0;
	}
	if(ajax_en_cours_ir == 0){

		ajax_en_cours[id_requete] = 1;
		
		$.ajax({
			type: "GET",

			url: url_action,

			dataType: "json",

			beforeSend: function(xhr){
					avantEnvoiAction(xhr, idrencontre_en_cours, id_requete);
				},

			complete: function(xhr, msg){
					ajax_en_cours[id_requete] = 0;
					apresTraiteRetourAction(xhr, msg, id_requete);
				},

			success: function(json){
					if(traiteRetourAction(json,idrencontre_en_cours)) {
						$("#lien_saisie_email_"+idrencontre_en_cours).remove();
						$("#saisie_"+idrencontre_en_cours).remove();
					};
				},

			error: function (xhr, msg, exception){
					if(xhr.status != 200) {
						traiteRetourErreur (xhr, msg, exception);
					}
				}
		});
		
		// On retourne false pour ne pas valider le formulaire
		return false;
		
	} else{
		//alert("Attention : Une requête est en cours, veuillez patienter !\n");
	}
}
*/

/**
 * Fonction a appeler pour déclencher une action distante
 *
 * @remarks L'alerte sur la requête en cours est désactivée car il n'espas nécessaire dans 
 * la majorité des cas d'en informer l'internaute tant qu'il a ce qu'il veut.
 *
 * @param string url_action URL encodée de l'action à réaliser
 * @param object cur_elt element du DOM déclenchant l'événement
 */
function appelScriptAction(url_action, cur_elt, type_action) {
	// test une requete Ajax identique (meme id) est en cours
	var ajax_en_cours_ir;
	var id_requete;

	// calcul de l'ID de la requête Ajax
	//id_requete = url_action.substr(url_action.length-20, 20);
	id_requete = url_action.replace(
		/[^a-zA-Z0-9]/g,
		function(match){
			return '';
		}
	);
	
	// Test si la requête est en cours
	if(ajax_en_cours[id_requete]){
		ajax_en_cours_ir = ajax_en_cours[id_requete];
	}else{
		ajax_en_cours_ir = 0;
	}
	if(ajax_en_cours_ir == 0){

		ajax_en_cours[id_requete] = 1;

		$.ajax({
			type: "GET",

			url: url_action,

			dataType: "json",

			beforeSend: function(xhr){
					avantEnvoiAction (xhr, cur_elt, id_requete);
				},

			complete: function(xhr, msg){
					ajax_en_cours[id_requete] = 0;
					apresTraiteRetourAction(xhr, msg, id_requete);
				},

			success: function(json){
					eval('traiteRetourAction'+type_action+'(json)');
				},

			error: function (xhr, msg, exception){
					if(xhr.status != 200) {
						traiteRetourErreur (xhr, msg, exception);
					}
				}
		});
		
		// On retourne false pour ne pas valider le formulaire
		return false;

	} else{
		//alert("Attention : Une requête est en cours, veuillez patienter !\n");
	}
}
