
	jQuery(function($){
		/******************************* Formulaires intrazik ******************************************************/		
		
		/**
		 * Valide un formulaire 
		 * 
		 * url 			=> url_ajax de la page de traitement des données 
		 * id_form 		=> id du formulaire a valider 
		 * popin_close 	=> booleen pour savoir si on ferme ou pas la popin apres la validation 
		 * method		=> methode du formulaire
		 * nb_lignes	=> nombre de lignes a traiter (mise a jour des tableaux intrazik avec un grand nombre de lignes : voir style )
		 * ligne_debut	=> ligne du debut à mettre a 0 quand on est pas dans le cas d'une mise a jour d'un tableaux intrazik avec un grand nombre de lignes : voir style )
		 * id_element	=> id de l'element a actualiser rapres traitement 
		 */
		AjaxValiderFormulaire = function(url_ajax, id_form, popin_close, method, nb_lignes, ligne_debut, id_element, message_chargement){
			
			if(method == 'POST')
			{
				$("body").append("<div id='div_chargement'>"+message_chargement+"</div>");
				jQuery.post( url_ajax+"&lignes_par_retour="+nb_lignes+"&ligne_debut="+ligne_debut, $('#'+id_form).serializeArray() ,function(data){
				
					
					/* lorsque l'on valide un formulaire via une popup (engreistrement + affectation) */ 
					if(data.popup == "close")
					{
						if(data.input_contact)
						{
							window.opener.$("#input_contact").empty();
							window.opener.$("#input_contact").append(data.input_contact);
						}
						if(data.input_personne_morale)
						{
							window.opener.$("#input_personne_morale").empty();
							window.opener.$("#input_personne_morale").append(data.input_personne_morale);
						}
						for(affect_attribut in data['affect'])
						{
							window.opener.$("input[name="+affect_attribut+"]").val(data['affect'][affect_attribut]);
						}
						window.close(); 
					}
					else
					{
						if(nb_lignes == " " && ligne_debut == 0)
						{
							$("#"+id_element).empty();
							$("#"+id_element).append(data.tableau);
							
							if(popin_close!= 'non')
							{
								popin_reaction.close();
							}
							
						}
						else //cas d'un tableau intrazik
						{
							if( data.success === false ){
								$(':input.fieldInvalid').removeClass('fieldInvalid');
							
								if( data.formErrors ){
									ShowFormErrors(data.formErrors);
								}else if( data.error ){
									alert( data.error );
								}else{
									alert('Erreur inconnue');
								}
							}else{
								if(data.update == "oui")
								{
									ajaxSetLigne(data)
								}
								else
								{
									ajaxSetDataTab(data);
								}
								if((data.premier_passage == 'oui' && popin_close!= 'non') || data.popin_close == 'oui')
								{
									popin_reaction.close();
								}
								if(data.lignes_traitees != '0')
								{
									AjaxValiderFormulaire(url_ajax, id_form, popin_close, method, data.nb_lignes, data.ligne_debut,message_chargement)
								}
								else
								{
//									$("#div_chargement").empty();
								}
							}
						}
					}
				}
				, 'json' );
				
			}
		}
		
		/**
		 * permet le tri d'un tableau intrazik 
		 */
		AjaxSort = function (url_ajax, nb_lignes,ligne_debut){
			jQuery.post( url_ajax+"&lignes_par_retour="+nb_lignes+"&ligne_debut="+ligne_debut ,function(data){
					ajaxSetDataTab(data);
					if(data.lignes_traitees != '0')
					{
						AjaxSort(url_ajax, data.nb_lignes, data.ligne_debut)
					}
				}
				, 'json' );
		}
		
		
		/**
		 * permet l'affichage des informations d'une ligne d'un tableau intrazik
		 */
		AjaxShowView = function (url_ajax){
			jQuery.post( url_ajax,function(data){
					
					$("#show"+data.id).hide("fast");
					$("#show"+data.id).empty();
					
					if(!data.hide)
					{
						$("#show"+data.id).append(data.html);
						$("#show"+data.id).show("fast");
					}
					
					$("#boutton_afficher_detail_"+data.id).empty();
					$("#boutton_afficher_detail_"+data.id).append(data.html_button);
				}
				, 'json' );
		}
		
		/**
		 * Update d'une ligne d'un tableau intrazik 
		 */
		AjaxUpdateLigne = function (url_ajax){
			jQuery.post( url_ajax+"&jquery=oui",function(data){
					ajaxSetLigne(data);
				}
				, 'json' );
		}
		
		ajaxSetDataTab= function(data)	{
			if(data.premier_passage == 'oui')
			{
				
				$("#data_tab_recap").empty();
				$("#data_tab_recap").append(data.tableau);
				
				/*$("#header_tab_recap").append(data.header);
				$("#footer_tab_recap").empty();
				$("#footer_tab_recap").append(data.footer);*/
			
			}	
			$("#messages").empty();
			$("#messages").append(data.message);
			var html = "";
			nb_lignes = data.lignes;
			for(idLigne in data.lignes)
			{
				html +=data.lignes[idLigne] ;
			}
			$("#table_data_recap").append(html);
			
		}
		
		ajaxSetLigne = function (data){
			$("#"+data.id_ligne).replaceWith(data.lignes);
			$("#"+data.id_div_show).empty();
			$("#messages").empty();
			$("#messages").append(data.message);
			if(typeof(popin_reaction)!='undefined')
			{
				popin_reaction.close();
			}

		}

/******************************* Fonction diverses ******************************************************/
		derouler_segmentation = function(){
			$("#recherche_float_right").removeClass();
			$("#recherche_float_right").addClass("recherche_float_right_deroulee");

		}
		enrouler_segmentation = function(){
			$("#recherche_float_right").removeClass();
			$("#recherche_float_right").addClass("recherche_float_right_enroulee");

		}
		
		HideDiv = function(divId){
			$("#"+divId).slideUp("fast");
		}
		
		ShowDiv = function(divId){
			$("#"+divId).slideDown("fast");

		}
		setDiv = function (div_id,content)
		{
			$("#"+div_id).empty();
			$("#"+div_id).append(content);
		}
		/**
		 * Permet de définir la classe d'un element 
		 */
		setClass = function(id_class, idElement){
			if($("#"+idElement).hasClass('odd'))
			{
				$("#"+idElement).removeClass('odd');
			}
			if($("#"+idElement).hasClass('even'))
			{
				$("#"+idElement).removeClass('even');
			}
			if($("#"+idElement).hasClass('marked'))
			{
				$("#"+idElement).removeClass('marked');
			}
			$("#"+idElement).addClass(id_class);
		}
		
		
		setPartialFields = function (url,id_form){
			jQuery.post(url,$('#'+id_form).serializeArray(), function(data){
				
				for(attribut in data)
				{
					$("input[name="+attribut+"]").val(data[attribut]);
					$("#"+attribut).empty();
					$("#"+attribut).append(data[attribut]);
				}
			}
			, 'json' );
		}
		
	/*************************************** Live Search ****************************************************/
		
		/**
		 * url 			=> url de la page a appeller en ajax
		 * name_input 	=> nom du champ à lire pour la recherche 
		 * id_element 	=> nom de l'element ou inserer la réponse ajax
		 * id_form 		=> nom du forulaire auquel appartient le champ lu 
		 * action_clic 	=> action à effectuer (voir le switch)
		 * 
		 */
		rechercheJquery = function (url, name_input,id_element, id_form, action_clic){
			
			switch(action_clic)
			{
				case 'affecter':
						url = url+"&input="+name_input;
					break;
					
				case 'affect_contact_artiste':
					id_contact = window.opener.$("input[name=id_contact]").val();
//					id_personne_morale = window.opener.$("select[name=id_personne_morale]").val();
					url = url+"&input="+name_input+"&affect_contact_artiste=oui&action=affect_contact_artiste&id_contact="+id_contact;
				break;
					
				default : 
					url = url+"&input="+name_input
					break;
			}
			jQuery.post(url,$('#'+id_form).serializeArray(), function(data){
				$("#"+id_element).empty();
				if(data != null)
				{
					$("#"+id_element).append(data.html);
				}
			}
			, 'json' );
		}
		
		setFields = function (url, element_a_vider){
			jQuery.post(url, function(data){
				
				if(element_a_vider != null)
				{
					$("#"+element_a_vider).empty();
				}
				for(attribut in data)
				{
					switch(attribut)
					{
						case 'critere' :
							for(idcritere in data['critere'])
							{
								$("input[name=critere["+idcritere+"]]").attr("checked","checked");
							}
							break;
							
						case 'activite' :
							for(idactivite in data['activite'])
							{
								$("input[name=activite["+idactivite+"]]").attr("checked","checked");
							}
							break;
							
						case 'id_style': 
								$("select[name=id_style]").val(data.id_style);
							break;
							
						case 'actif': 
							if(data[attribut] == 'oui')
							{
								$("input[name="+attribut+"]").attr("checked","checked");
							}
							else
							{
								$("input[name="+attribut+"]").removeAttr("checked");
							}
						break;
							
						case 'popin' :  // à ajouter a la main pour fermer la popin
							popin_reaction.close(); 
							break;
						
						case 'affect' :
							for(affect_attribut in data['affect'])
							{
								window.opener.$("input[name="+affect_attribut+"]").val(data[attribut][affect_attribut]);
							}
							break;
						
						case 'input_personne_morale' : 
							window.opener.$("#input_personne_morale").empty();
							window.opener.$("#input_personne_morale").append(data.input_personne_morale);
							break;
							
						case 'input_contact' : 
							window.opener.$("#input_contact").empty();
							window.opener.$("#input_contact").append(data.input_contact);
							break;
							
						case 'affect_contact_artiste' :
							window.opener.$("#coord_contact_moral").empty();
							window.opener.$("#coord_contact_moral").append(data.affect_contact_artiste);
							break;
							
						case 'popup' :  // à ajouter a la main pour fermer la popup
							window.close(); 
							break;
							
						default :
							$("input[name="+attribut+"]").val(data[attribut]);

							break;
					}
				}
	
			}
			, 'json' );
		}
	});	
	
