var currentAutocompletion = null;
var ulAutocompletion = null;
var updated = false;
var editMode = false;

// transformer le prix en chaine
function fctMoney(px)
{	{	var i = Math.floor(px);
		var d = px - i;
		var d = Math.round(d*100);

		d=""+d;
		if (d.length<2)	d="0"+d;
		if (d.length<2)	d="0"+d;

		return  ""+i+","+d+" &euro;";
	}
}

function trim (s) 
{
	return s.replace(/^\s+/g,'').replace(/\s+$/g,'') 
}


/*!
 * \brief Gère le post du formulaire de colloque, notamment les champs WYMeditor
 * \param formId (string) id de la form
 */

function fctSubmitMyEdit(selector)
{	/* mettre à jour chaque champ WYMeditor */
	var i=0;
	
	jQuery("input.emptyOnFocus").clearIfDefault();
	while (jQuery.wymeditors(i)) 
	{	jQuery.wymeditors(i++).update();
	}
	if (jQuery(selector).length)
		jQuery(selector).submit();
	else
		alert("element "+selector+" non trouvé");
	
	return false;
}


function fctStartAutocompletion(e)
{	currentAutocompletion = e; // element dans lequel se fait la saisie
	var coord = getElementCoords(e); // position de l'élément

	if (! ulAutocompletion) // ul dans lequel s'affiche les valeurs, création s'il n'existe pas
	{	ulAutocompletion = document.createElement('ul');
		document.body.appendChild(ulAutocompletion);
		jQuery(ulAutocompletion).addClass('autocompletion');
	}

	var value = jQuery(e).attr('value');
	var ids = ',';
	if (! jQuery(e).hasClass('any')) // en absence de la classe any, on va éliminer les id déjà connus
	{	jQuery(e).parents("ul").find("input[type=hidden]").each(function()
		{	if (jQuery(this).attr('value') && jQuery(this).attr('name').indexOf('id')>=0) // champs de saisie dont le nom contient id
				ids += jQuery(this).attr('value')+",";
		});
	}

	if (value.length)
	{	var tbl = jQuery(e).attr('_tbl'); // table étrangères
		var col = jQuery(e).attr('_col'); // éventuellement colonne
		var target = jQuery(e).attr('_target'); // A VOIR !!!
		var url = root+"/?ajax="+AJAX_LST+"&tbl="+(tbl ? tbl : '')+"&col="+(col ? col : '')+"&key="+value

		jQuery.ajax({url:url + "&" + Math.random(),dataType: "json",
			success: function(json){
					var s = '';
					for(var i=0;i<json.lst.length;i++)
					{	if (json.lst[i].id == '0' || ids.indexOf(json.lst[i].id)<0) // id non renseigné ou absent de la liste
						{	var onclick = 'fctClickAutocompletion(this);';
							s += "<li onclick='"+onclick+"' itemId='"+json.lst[i].id+"'>";
							s += json.lst[i].nom;
							if (json.lst[i].suite)	s += " ("+json.lst[i].suite+")";
							s += "</li>";
						}
					}
					if (s)
					{	s = "<li class='close' style='text-align:right' onclick='fctClickAutocompletion();'>Fermer</li>"+s;
						jQuery(ulAutocompletion).html(s).show().css('left',coord.left).css('top',coord.top+e.offsetHeight);
//						jQuery(ulAutocompletion).html(s).show().attr('_target',target).attr('_type',tbl.substr(2)).css('left',coord.left).css('top',coord.top+e.offsetHeight);
					}
					else
						jQuery(ulAutocompletion).hide();
		   }});
	}
}

function fctCloseAutocompletion()
{	if (ulAutocompletion)
		jQuery(ulAutocompletion).hide();
	currentAutocompletion = null;
}
function fctClickAutocompletion(e)
{	var value = '';
	var key = '';
	var blur = false;

	if (e==='blur')
	{	blur = true; // indique que l'on vient de sortir du champ
		value = jQuery(currentAutocompletion).attr('value');
		e = null;
	}
	else if (e)
	{	value = jQuery(e).html();
		key = jQuery(e).attr('itemId');
		if (! key)	key = '';
	}
	var targetLabel = jQuery(currentAutocompletion).attr('_targetLabel');
	var targetKey = jQuery(currentAutocompletion).attr('_targetKey');
	var ifEmptySelector = jQuery(currentAutocompletion).attr('_ifEmptySelector');
	var wakeAfter = jQuery(currentAutocompletion).attr('_wakeAfter');
	var sleep = jQuery(currentAutocompletion).attr('_sleep');
	
	if (! value && ifEmptySelector)
	{	if (ifEmptySelector=='parent')
			jQuery(currentAutocompletion).parent().remove();
		else
			alert('cas non prévu ifEmptySelector = '+ifEmptySelector);
	}
	else if (targetKey)
	{	jQuery(currentAutocompletion).siblings(targetKey).attr('value',key);
		if (editMode)	updated = true;
	}
	if (targetLabel)
	{	jQuery(currentAutocompletion).siblings(targetLabel).html(value).show();
		jQuery(currentAutocompletion).hide();
		jQuery(currentAutocompletion).siblings(targetLabel).attr('waked','');
	}
	jQuery(currentAutocompletion).attr('value',value);

	if (key && wakeAfter)
	{	jQuery(currentAutocompletion).siblings(wakeAfter).wakeUp();
	}
	fctCloseAutocompletion();
}


function fctRegrouper(e,selector,id)
{	if (confirm("Est-vous sur de vouloir regrouper ces deux fiches ?"))
	{	jQuery(selector).attr('value',id);
		jQuery(e).parents('form').submit();
	}
}

/*
*/

/** 
 * Retourne les coordonnées d'un élément sur une page en fonction de tous ses éléments parents.
 * 
 * @param objet element
 * @return json coords = {left:x, top:x}
 */
function getElementCoords(e) 
{	var k = 0;
	var coord = {left:0,top:0};
	while(e && k++ < 50)
	{	coord.left += e.offsetLeft ? e.offsetLeft : 0;
		coord.top += e.offsetTop ? e.offsetTop : 0;
		e = e.offsetParent;
	}
	return coord;
}


function fctClearForm(selector)
{	jQuery('form.search').find('input[type=text]').attr('value','');
	jQuery('form.search').find('select option').attr('selected','');
}

function fctRemoveLine(e)
{	if (confirm('Vous allez enlever cette ligne. Etes-vous sur ?'))	
	{	updated=true; 
		jQuery(e).parent().remove();
	}
}


/**/

	function fctAddPlace(e,delta,evenement_id,cat_id,type_tarif,place_ids)
	{	var nb_place = parseInt(jQuery(e).parents("tr:first").find('td.nb_place').html(),10)+delta;
		var motif = jQuery(e).parents("tr:first").find('td.nom select.motif').attr('value');

		if (!(nb_place > 0))	nb_place = 0;

		var url = "index.php?ajax=setResa" ;
		url += "&evenement_id="+evenement_id ;
		url += "&cat_id="+cat_id ;
		url += "&tarif_billet="+type_tarif;
		url += "&nb="+nb_place;
		url += "&place_ids="+place_ids;
		if (motif)
			url += "&motif="+motif;
		jQuery.ajax({url:url + "&" + Math.random()});

		jQuery(e).parents("tr:first").find('td.nb_place').html(''+nb_place);
		jQuery(e).parents("tr:first").find('td.tarif input.nb_place').attr('value',''+nb_place);
		jQuery(e).parents("tr:first").find('td.tarif input.place_ids').attr('value',place_ids);
		
		
		fctCalcPrix(e);
	}
	function fctClickEvenement(e)
	{	if (jQuery(e).attr('checked'))
			jQuery(e).siblings('div.detail').slideDown();
		else
			jQuery(e).siblings('div.detail').slideUp();
	}

	// calcule le prix d'une ligne
	function fctCalcPrix(e)
	{	var parent = jQuery(e).parents("div:first");
		var prix_total = 0.0;
		var nb_place_total = 0 ;
		var nb_carte_lib = 0 ;
		var nb_place = 0 ;

		jQuery(parent).find('tr').each(function()
		{	if (nb_carte_lib && jQuery(this).hasClass('CL')) // Carte Liberté
			{	nb_place = jQuery(this).find('td.tarif input.nb_place').attr('value');
				if (nb_place < nb_carte_lib)
				{	nb_place = nb_carte_lib;
					jQuery(this).find('td.nb_place').html(''+nb_place);
					jQuery(this).find('td.tarif input.nb_place').attr('value',''+nb_place);
					url = "index.php?ajax=setResa&evenement_id=CL&nb="+nb_place;
					jQuery.ajax({url:url + "&" + Math.random()});
				}
			}
			else
				nb_place = jQuery(this).find('td.tarif input.nb_place').attr('value');

			if (jQuery(this).hasClass('noPrice') && prix_total == 0)
				nb_place = 0;
			else
				nb_place = nb_place ? parseInt(nb_place,10) : 0;

			// lignes carte liberté
			var type_tarif = jQuery(this).find('td.tarif').attr('_type_tarif');
			if (type_tarif == "CarteLib")
			{	if (jQuery(this).next().find("input.CL").attr('checked')) // l'utilisateur prend la carte lib
					nb_carte_lib += nb_place;
			}

			// tarif
			var tarif = jQuery(this).find('td.tarif').attr('_prix');
			tarif = tarif ? parseFloat(tarif) : 0;

			var prix = tarif * nb_place;
			if (jQuery(this).hasClass('total'))
			{	jQuery(this).find('td.prix').html(fctMoney(prix_total));
				jQuery(this).find('td.nb_place').html(nb_place_total ? nb_place_total : "0");
			}
			else
			{	if (jQuery(this).hasClass('noPrice'))
				{	if (prix_total)	jQuery(this).removeClass('hidden');
					else			jQuery(this).addClass('hidden');
				}
				jQuery(this).find('td.prix').html(fctMoney(prix));
			}
			prix_total += prix;
			nb_place_total += nb_place;
		});
		if (prix_total || ! panierVide || backoffice)
			jQuery("#bttCde").show();
		else
			jQuery("#bttCde").hide();			
	}
	var lastTypeTarif = null;
	/* clique sur une chaise */
	function fctClickChaise(e, type_tarif0, evenement_id, imposer)
	{	if (type_tarif0) lastTypeTarif = type_tarif0;
		else	type_tarif0 = lastTypeTarif ? lastTypeTarif : 'Plein';

		var type_tarif = type_tarif0;

		if (jQuery(e).attr('tagName') == "A")
			e = jQuery(e).parents('li:first');
		if (jQuery(e).attr('tagName') == "LI")
		{	var id = jQuery(e).attr('id');
			var key = id.replace('place_','chaise_');
			var selector = "#" + key;
			var e = jQuery(selector);
			fctClickChaise(e, type_tarif0, evenement_id);
		}
		else if (mode_admin)
		{	var key = jQuery(e).attr('id').replace('chaise_','');
			var _id = jQuery(e).attr('_id');
			var url = "index.php?ajax=setOrg&id="+_id+"&evenement_id="+evenement_id+"&free=";
			if (jQuery(e).hasClass('org')) // la place est gelée
			{	jQuery(e).removeClass('org').addClass('free');
				url += "1";
			}
			else if (jQuery(e).hasClass('free')) // la place est libre
			{	jQuery(e).removeClass('free').addClass('org');
				url += "0";
			}
			jQuery.ajax({url:url+ "&" + Math.random()});
		}			
		else
		{	var key = jQuery(e).attr('id').replace('chaise_','');
			var _id = jQuery(e).attr('_id');

			if (jQuery(e).hasClass('free') || imposer) // la place est libre
			{	if (nbPlace && jQuery("#plan").find("div.resa").length>=nbPlace)
					alert("Vous ne devez réserver que "+nbPlace+" place(s)");
				else
				{	jQuery(e).removeClass('free');
					jQuery(e).addClass('resa');
					var categorie_place = jQuery(e).attr('_categorie_place');
					if (jQuery("#select_place").length)
						fctClickSelectPlaceAdd(key,_id,type_tarif);
				}
			}
			else // libérer la place
			{	jQuery(e).removeClass('resa');
				jQuery(e).addClass('free');
				var tr = null; 
				jQuery("#select_place tr.resa").each(function()
				{	if (jQuery(this).attr("_place_id") == _id)
						tr = this;
				});
				if (jQuery("#select_place tr.resa").length == 1) // il ne reste plus qu'une ligne
				{	jQuery(tr).attr("_place_id","");
					jQuery(tr).parents("table:first").addClass("hidden"); // masquer le tableau
				}
				else
					jQuery(tr).remove();
			}
			if (jQuery("#select_place").length)
				fctChangeNbPlace(true);
		}
		if (nbPlace && jQuery("#plan").find("div.resa").length==nbPlace)
			jQuery("#bttSave").show(400);
		else
			jQuery("#bttSave").hide();

	}
	function fctNow(e,type,id)
	{	jQuery(e).hide().prev().html(today).prev().attr("value",now);
		if (type=='transfert' && id)
		{	var url = "index.php?ajax=setTransfertNow&id="+id;
			jQuery.ajax({url:url});
		}
	}

	/* clique bouton commander */
	function fctClickBttOrder()
	{	if (! jQuery("#cgv").attr('checked') && jQuery("#cgv").length)
			alert(validerCgv);
		else
			jQuery('#formCde').submit();
	}
	
	/* clique bouton paiement */
	function fctClickBttPaiement(e, cde_rglt_mode, landingpage)
	{	if (! jQuery("#cgv").attr('checked'))
			alert(validerCgv);
		else
		{	jQuery('#formPaiement').find("input[name=cde_rglt_mode]").attr("value",cde_rglt_mode);
			jQuery('#formPaiement').find('input[name=LANDINGPAGE]').attr('value',landingpage); 
			jQuery('#formPaiement').submit();
		}
	}
	
	/* clique bouton commande concert */
	function fctClickCdeConcert(selector)
	{	var ok = true;
	
		// vérification du choix du type de tarif réduit
		var nbTR = 0;
		jQuery("#tarifs tr.tarif_billet td[_type_tarif=Reduit] input.nb_place").each(function()
		{	var nbPlace = jQuery(this).attr('value');
			var motif = jQuery(this).parents("td:first").prev().find("select.motif").attr("value");
			if (! motif)
			{	alert(msgNoMotif);
				ok = false;
			}
		});
		
		// calcul nombre de place CL
		var nbCL = 0 ;
		jQuery("#tarifs tr td[_type_tarif=CarteLib]").each(function()
		{	var nb_place = jQuery(this).find("input.nb_place").attr('value');
			nbCL += parseInt(nb_place,10);
		});
		if (nbCL)
		{	//ok = jQuery("#tarifs input.CL:first").attr('checked'); // verifier que l'option CL est cochée
			//if (ok)
			{	var nb_place = jQuery("#nbCarteLib").attr('value');
				if (nbCL == parseInt(nb_place,10)) // nombre de CL compatible
					ok = true;
				else if (nbCL < parseInt(nb_place,10)) // trop de CL
					ok = confirm(msgAvert);
				else // pas assez de CL
				{	ok = confirm(msgErr.replace("|NB", ''+nbCL));
					if (ok)
					{	var e = jQuery("#nbCarteLib");
						fctAddPlace(e,nbCL - nb_place,'CL',false,'','');
					}
				}
			}
			//else
			//	alert(msgErr);
		}
		if (ok)
			jQuery("#"+selector).submit();
	}
	
	function fctSaveForm(dest)
	{	jQuery('#formCde input[name=dest]').attr('value',dest);
		jQuery('#formCde').submit();
	}
	function fctAnnulCde(cde_id)
	{	var url = 'index.php?ajax=annulCde&id='+cde_id;
		jQuery.ajax({url:url+ "&" + Math.random()});
	}
	function fctClickBttAnnul()
	{	var url = 'index.php?ajax=annul';
		jQuery.ajax({url:url+ "&" + Math.random(), success:function(a)
		{	document.location = 'home.html';
		}});
	}
	
	function fctChangeCategorie(select)
	{	var categorie_place = jQuery(select).attr("value");
		var tr = jQuery(select).parents("tr:first");

		// tarif_billet
		var select_tarif_billet = jQuery(tr).find("select.tarif_billet");
		var tarif_billet_prev = jQuery(select_tarif_billet).attr("value");
		jQuery(select_tarif_billet).empty();

		for(var i in lstCategorie)
		{	if (lstCategorie[i].categorie_place == categorie_place)
			{	var _maxi = lstCategorie[i].nb_place_libre;
				jQuery(tr).attr("_maxi",_maxi);
				if (_maxi == 0)
				{	var s = "<option>complet !</option>";
					jQuery(select_tarif_billet).append(s);
				}
				else
				{	var s = "<option>" + txt_choisir + "</option>";
					jQuery(select_tarif_billet).append(s);
					for(var j in lstCategorie[i].lstTarif)
					{	var key = lstCategorie[i].lstTarif[j].type_tarif;
						if (key == "Reduit")
							var LstMotif = lstMotif;
						else
							var LstMotif = {0:null};
						var selected = '';
	
						for(var k in LstMotif)
						{	key = lstCategorie[i].lstTarif[j].type_tarif;
							if (LstMotif[k])
							{	key += "-"+k;
								var nom = txt_tarif_reduit + " : " + LstMotif[k];
							}
							else
								var nom = lstCategorie[i].lstTarif[j].tarif_nom;
							if (key == tarif_billet_prev)
								selected = "selected=\"selected\"";
							else
								selected = '';
							var s = "<option "+selected ;
							s += " value=\""+key+"\"" ;
							s += " _prix=\""+lstCategorie[i].lstTarif[j].prix+"\">";
							if (lstCategorie[i].lstTarif[j].prix != "?")
								s += fctMoney(lstCategorie[i].lstTarif[j].prix)+" ";
							else
								s += "? ";
							s += nom;
							s += "</option>";
							jQuery(select_tarif_billet).append(s);
						}
					}
				}
			}
		}
		if (tr)
			fctChangeTarifBillet(tr);
	}
	
	function fctChangeTarifBillet(tr)
	{	if (jQuery(tr).attr("tagName")==="SELECT")
			tr = jQuery(tr).parents("tr:first");
			
		var _maxi = jQuery(tr).attr("_maxi");

		// tarif_billet
		var select_tarif_billet = jQuery(tr).find("select.tarif_billet");
		var tarif_billet_prev = jQuery(select_tarif_billet).attr("value");
		lastTypeTarif = tarif_billet_prev; // mémoriser le dernier choix
		if (! tarif_billet_prev)
			jQuery(select_tarif_billet).find("option:first").attr("value");
		
		// cas du hors Tarif
		var pu = jQuery(select_tarif_billet).find("option:selected").attr("_prix");
		if (pu == "?")
			jQuery(tr).find("input.pu").removeClass("hidden");
		else
			jQuery(tr).find("input.pu").addClass("hidden").attr("value",pu);

		// nb place
		var select_nb_place = jQuery(tr).find("select.nb_place");
		var nb_place_prev = jQuery(select_nb_place).attr("value");
		if (tarif_billet_prev)
			jQuery(select_nb_place).css("visibility","visible");
		else
			jQuery(select_nb_place).css("visibility","hidden");
		jQuery(select_nb_place).empty();
		var mini =0;
		if (tarif_billet_prev == "Reduit-grp")	mini += 10; // groupe à partir de 10 places
		if (tarif_billet_prev == "horsTarif")
			var maxi = mini + 100;
		else
			var maxi = mini + 9;
		if (maxi > _maxi)	maxi = _maxi;
		
		for(var i = mini; i <= maxi; i++)
		{	if (i)
				var s = '' + i +" place"+(i>1 ? "s" : '');
			else
				var s = txt_choisir;
			var selected = '';
			if (i == nb_place_prev)
				selected = "selected=\"selected\"";
			s = "<option value=\""+i+"\" "+selected+">" + s + "</option>";
			jQuery(select_nb_place).append(s);
		}
		fctChangeNbPlace();
	}
	
	function fctInitSelectPlace()
	{	if (lstResa && lstResa.length > 1)
		{	if (lstResa.length > 1)
			{	for(var i in lstResa)
				{	if (i > 0)
					{	jQuery("table#select_place tr.resa:first").clone().insertBefore("table#select_place tr.total");
					}
				}
			}
		}
		jQuery("#select_place tr.resa").each(function(i)
		{	var select = jQuery(this).find("select.categorie_place, input.categorie");
			if (lstResa && lstResa[i])
			{	jQuery(select).attr("value",lstResa[i].categorie_place); // fixer la categorie
				var s = "<option selected=\"selected\" value=\""+lstResa[i].tarif_billet+"\">"+lstResa[i].tarif_billet+"</option>";
				jQuery(this).find("select.tarif_billet").html(s);
				s = "<option selected=\"selected\" value=\""+lstResa[i].nb_place+"\">"+lstResa[i].nb_place+"</option>";
				jQuery(this).find("select.nb_place").html(s);
			}
			fctChangeCategorie(select);
		});
		fctChangeNbPlace();
	}
	
	function fctClickSelectPlaceDel(e)
	{	if (jQuery(e).attr("tagName") == "TR")
			var tr = e;
		else
			var tr = jQuery(e).parents("tr:first");
		var numero_place = jQuery(tr).find("span.numero_place").html();
		if (numero_place)
		{	var chaise = jQuery("#chaise_"+numero_place);
			fctClickChaise(chaise, null, null);
		}
		else
		{	jQuery(tr).remove();
			fctChangeNbPlace(true);
		}
	}
	
	function fctClickSelectPlaceAdd(numero_place,place_id,tarif_billet)
	{	if (jQuery("#select_place").hasClass("hidden"))
		{	jQuery("#select_place").removeClass('hidden');
			var tr2 = jQuery("#select_place tr:first");
		}
		else
		{	var tr = jQuery("#select_place tr.resa:first");
			if (numero_place)
			{	jQuery(tr).clone().insertBefore("#select_place tr.total:first");
				var tr2 = jQuery("#select_place tr.total:first").prev();
			}
			else
			{	jQuery(tr).clone().insertAfter(tr);
				var tr2 = jQuery(tr).next();
			}
			jQuery(tr2).find("select.tarif_billet option").attr("selected",false);
			jQuery(tr2).find("select.nb_place option").attr("selected",false);
		}
		if (numero_place) // plan placé
		{	var option_grp = null;
			jQuery(tr2).find("select.nb_place option").each(function()
			{	if (jQuery(this).attr("value")=="Reduit-grp")
					option_grp = this;
			});
			if (option_grp)	jQuery(option_grp).remove();
			jQuery(tr2).find("select.tarif_billet").attr("value",tarif_billet);	
			jQuery(tr2).find("select.nb_place").attr("value","1").addClass("hidden");
			jQuery(tr2).attr("_place_id",place_id);
			jQuery(tr2).find("select.nb_place option[value=1]").attr("selected",true);
			jQuery(tr2).find("span.numero_place").removeClass("hidden").html(numero_place);
		}
		fctChangeNbPlace();
	}
	
	function fctChangeNbPlace(setResa)
	{	var nb_place_total = 0;
		var nb_place_CL = 0;
		var prix_total = 0;
		var data = {}; // données à envoyer
		var i = 0;
		if (! jQuery("#select_place").hasClass("hidden")) // si le tableau est visible
		{	jQuery("#select_place tr.resa").each(function()
			{	var nb = jQuery(this).find("select.nb_place option:selected").attr("value");
				var categorie_place = jQuery(this).find("select.categorie_place, input.categorie").attr("value");
				var tarif_billet = jQuery(this).find("select.tarif_billet option:selected").attr("value");
				var _place_id = jQuery(this).attr("_place_id");
				
				if (nb)		nb = parseInt(nb,10);
				if (! nb)	nb = 0;
	
				var pu = jQuery(this).find("input.pu").attr("value");
				if (pu)		pu = parseInt(pu,10);
				if (! pu)	pu = 0;
	
				var prix = nb * pu;
				if (prix)
					jQuery(this).find("td.prix").html(fctMoney(prix));
				else
					jQuery(this).find("td.prix").html('');
					
				if (nb && tarif_billet == "Reduit-carte_lib")
					nb_place_CL += nb;
	
				nb_place_total += nb;
				prix_total += prix;
	
				data["categorie_place_"+i] = categorie_place ;
				data["tarif_billet_"+i] = tarif_billet ; 
				data["nb_place_"+i] = nb ;
				data["pu_"+i] = pu ;
				data["place_id_"+i] = _place_id ? _place_id : 0 ;
				i++;
			});
		}
		data["nb_ligne"] = i ;
		data["evenement_id"] = evenement_id ;

		if (i <= 1 && ! isPlan)
			jQuery("#select_place td.del a.bttDel2").hide();
		else
			jQuery("#select_place td.del a.bttDel2").show();

		if (! nb_place_CL)
		{	var nb_ligne_CL = jQuery("table#lstCL tr.cl").length;
			for(var i = nb_ligne_CL; i > 1; i--)
			{	jQuery("table#lstCL tr.cl:last").remove(); // supprimer les lignes en trop
			}
			jQuery("table#lstCL").hide(); // masquer le tableau
		}
		else
		{	jQuery("table#lstCL").show(); // montrer le tableau
			var nb_ligne_CL = jQuery("table#lstCL tr.cl").length;
			if (nb_ligne_CL < nb_place_CL)
			{	for(var i = nb_ligne_CL; i < nb_place_CL; i++)
				{	I = i+1 ;
				
					jQuery("table#lstCL tr.cl:first").clone().insertBefore("#lstCL tr.total"); // ajouter les lignes manquantes
					var tr = jQuery("table#lstCL tr.cl:last");
					jQuery(tr).removeClass("hidden");
					var html = jQuery(tr).find("td:first").html();
					html = html.substr(0,html.length-1)+I;
					jQuery(tr).find("td:first").html(html);
					
					jQuery(tr).find("td input").each(function()
					{	var s = jQuery(this).attr('name').replace('_0','_'+i);
						jQuery(this).attr('name',s);
						var id = jQuery(this).attr('id');
						if (id)
						{	var s = id.replace('_0','_'+i);
							jQuery(this).attr('id',s);
						}
						var row = jQuery(this).attr('_row');
						if (row && row != '')
						{	row = row.replace('0',''+i);
								
							jQuery(this).attr('_row',row);
						
							var name = jQuery(this).attr("name").replace('[]','_')+row;
							var value = lireCookie(name);
							if (value)
							{	jQuery(this).attr('value',value).removeClass('empty').removeClass('hidden');
							}
						}
					});
					
					jQuery(tr).find("td label").each(function()
					{	var s = jQuery(this).attr('for').replace('_0','_'+i);
						jQuery(this).attr('for',s);
					});
					
				}
			}
			else if (nb_ligne_CL > nb_place_CL)
			{	for(var i = nb_ligne_CL; i > nb_place_CL; i--)
				{	jQuery("table#lstCL tr.cl:last").remove(); // supprimer les lignes en trop
				}
			}
			// mettre à jour les champs numero carte, nom et prenom
			jQuery("table#lstCL tr.cl").each(function(i)
			{	var existante = false;
				var cle = '';
				var nom = '';
				var prenom = '';
				var unknown = false;
				if (lstCL && i <= (lstCL.length-1)) // la carte a déjà été définie
				{	existante = lstCL[i].id > 0;
					cle = lstCL[i].cle;
					prenom = lstCL[i].prenom;
					nom = lstCL[i].nom;
				}
				else // la carte n'a pas été définie
				{	unknown = true;
					prenom = jQuery(this).find("input.prenom").attr('_value');
					nom = jQuery(this).find("input.nom").attr('_value');
				}
				var input = jQuery(this).find("input[type=checkbox]");
				jQuery(input).attr("checked",! existante);
				fctClickCL(input);
				if (existante) // carte existante
				{	jQuery(this).find("input.carte_numero").attr('value',cle).removeClass('empty');
					jQuery(this).find("span.prenom").html(prenom).removeClass("empty");
					jQuery(this).find("span.nom").html(nom).removeClass("empty");
					jQuery(this).find("input.titulaire").attr('value','').addClass('empty');
				}
				else // nouvelle carte
				{	jQuery(this).find("input.carte_numero,span.titulaire").html('').addClass('hidden');
					jQuery(this).find("input.prenom").attr("value",prenom);
					jQuery(this).find("input.nom").attr("value",nom);
					if (unknown)
						jQuery(this).find("input.prenom,input.nom").addClass("empty");
					else
						jQuery(this).find("input.prenom,input.nom").removeClass("empty");
				}
			});
		}


		var nb_new_CL = jQuery("table#lstCL tr.cl input.nouvelle:checked").length;
		prix_total += nb_new_CL * 15 ;

		var s = nb_place_total+" place(s)";
		if (nb_new_CL)
			s += " + " + nb_new_CL + " nouvelle(s) carte(s) Liberté";
		jQuery("#select_place tr.total td.nb_place").html(s);
		jQuery("#select_place tr.total td.prix").html(fctMoney(prix_total));

		if (prix_total || ! panierVide || backoffice)
			jQuery("#bttCde").show();
		else
			jQuery("#bttCde").hide();

		if (setResa)
		{	var url = "index.php?ajax=setResa" + "&" + Math.random();
			jQuery.post(url, data);
		}
	}
	
	function fctFocus(e)
	{	if (jQuery(e).hasClass("empty"))
		{	e._value = e.value;
			e.value = '';
			jQuery(e).removeClass("empty");
		}
	}
	function fctBlurCL(e)
	{	var tr = jQuery(e).parents("tr:first");
		jQuery(tr).find("span.titulaire").html('');
		var _row = jQuery(e).attr('_row');
		var name = jQuery(e).attr('name');
		var value = jQuery(e).attr('value');
		var ok = true;
		
		if (jQuery(e).hasClass("carte_numero")) // vérifier que le numéro n'a pas été déjà saisi
		{	jQuery("#lstCL").find("input.carte_numero").each(function()
			{	if (! jQuery(this).hasClass("empty") && ! jQuery(this).hasClass("hidden"))
				{	var value2 = jQuery(this).attr('value');
					var _row2 = jQuery(this).attr('_row');
					
					if (value2 == value && _row2 != _row)
					{	alert("Veuiller entrer un autre code");
						jQuery(e).attr('value','').siblings("span.titulaire").html('');
						ok = false;
					}
				}
			});
		}
		if (ok)
		{
			var url = "index.php?ajax=setCL" ;
			url += "&field=" + name;
			url += "&value=" + value ;
			url += "&numero=" + _row ;
			url += "&" + Math.random();
	
			jQuery.ajax({url:url, dataType:"json", success:function(json)
			{	if (jQuery(e).hasClass("carte_numero"))
				{	if (json && json.id)
					{	jQuery(tr).find("span.prenom").html(json.prenom);
						jQuery(tr).find("span.nom").html(json.nom);
					}
					else
						jQuery(tr).find("span.titulaire").html('');
				}
			}});
		}
		return fctBlur(e);
	}
	function fctBlur(e)
	{	var row = jQuery(e).attr("_row");
		if (row != '')
		{	var name = e.name.replace('[]','_')+row;
			ecrireCookie(name,e.value);
		}
		if (e.value == '' && e._value)
		{	e.value = e._value;
			jQuery(e).addClass("empty");
		}
	}
	
	function fctClickCL(e)
	{	var tr = jQuery(e).parents("tr:first");

		if (jQuery(e).attr("checked")) // nouvelle carte
		{	jQuery(tr).find("input.carte_numero,span.titulaire").addClass('hidden');
    		jQuery(tr).find("input.titulaire").removeClass("hidden")
    	}
    	else
		{	jQuery(tr).find("input.carte_numero,span.titulaire").removeClass('hidden');
    		jQuery(tr).find("input.titulaire").addClass("hidden")
    	}
			
	}


	function getCookieVal(offset)
	{
		var endstr=document.cookie.indexOf (";", offset);
		if (endstr==-1) endstr=document.cookie.length;
		return unescape(document.cookie.substring(offset, endstr));
	}
	function lireCookie(nom)
	{
		var arg=nom+"=";
		var alen=arg.length;
		var clen=document.cookie.length;
		var i=0;
		while (i<clen)
		{	var j=i+alen;
			if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
			i=document.cookie.indexOf(" ",i)+1;
			if (i==0) break;
		}
		return null;
	}
	function ecrireCookie(name,value) 
	{	var days = 365 ;
		var domain = '' ;
		var path = '/' ;
		
		if (days) 
		{	var  date =  new  Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else  var expires = ""; 
		
		if (!path) { var path = '/' ; }
	
		var s = name+"="+value+expires ;
		if (domain)	s += "; domain=" + domain
		if (path)	s += "; path=" + path ;
	
		document.cookie = s ;
		
	}
