
function FORM_record(type,idelem,conteneur,recorder,idelemsup,callBackName, attente,idlang)
{
	var type = type || "";
	var idelem = idelem || "";
	var conteneur = conteneur || "";
	var recorder = recorder || "";
	var idelemsup = idelemsup || "";
	var callBackName = callBackName || "";
	var idlang= idlang || "";
	var attente = attente || "attenterecord";
	var dispmsg = $('msg');

	if(!$(attente))
		attente = 'attenterecord';
	new Effect.Appear($(attente), {queue:'front'});
	
	var vertical_type = "";
	if(flow_direction == "vertical")
	{
		vertical_type = type;
		nom_conteneur = PHXFlow_getVerticalConteneur(type);
		var lev = PHXFlow_getVerticalLevel(type);
		if($("id_element_"+lev))
		{
			idelemsup = $("id_element_"+lev).value;
		}
	}else{
		nom_conteneur = id_conteneur_form;
	}

	chPost = FORM_buildpoststring(conteneur,recorder,vertical_type);
	if(idelemsup != "")
	{
		chPost = chPost + "&idelemsup=" + idelemsup;
	}

	if(idlang != "")
	{
		chPost = chPost + "&idlang=" + idlang;
	}
	new Ajax.Request(urltask, {
		asynchronous: 'true',
		postBody: 'tache=admin/enregistre/'+type+"_enreg&idelement="+idelem+chPost,
		onSuccess: function(xhr)
		{
			FORM_razerrormsg();
			FORM_clearcolormsg();
			var result = treatTaskMsg(xhr.responseText);
			var msg_res = '';
			if(result == true)
			{
//				if(conteneur != "")
//				{
//					if($(conteneur))
//						RICHTEXT_unload("wysiwyg", $(conteneur).id);
//				}

				if(dispmsg)
				{
					dispmsg.style.display = 'none';
				}
				var response = xhr.responseText.substr(13);
				response = response.split('|');
				if(response.length > 1)
				{
					var idtoupdate = response[1];
					var idliaison = response[2];
					var idliaison2 = response[3];
					var msg_ok = response[0];
				}
				else
					var idtoupdate = response;
				var stayOnPage = false;

				if($(id_stay_on_page))
				{
					if($(id_stay_on_page).checked == true)
					{
						stayOnPage = true;
					}
				}
				
				if(idtoupdate!="")
				{
					FORM_id("set",idtoupdate);
					if($('id_element:'+type))
						$('id_element:'+type).value=idtoupdate;
				}
				
				if(callBackName != "")
				{
					if(window[callBackName])
					{
						window[callBackName](idelem, idtoupdate, "", idliaison, idliaison2,msg_ok);
					}
				}
				
				if(dispmsg && msg_ok)
				{
					FORM_videChampMsg(conteneur,vertical_type);
					dispmsg.innerHTML = msg_ok;
					FORM_performPosition(dispmsg);
					myEffect_FlashInfo(dispmsg,2);
				}
				
				FORM_refreshlist(type);
				FORM_razerrormsg();
				FORM_clearcolormsg();
			}
			else if(result == false)
			{
				if(dispmsg)
				{
					dispmsg.innerHTML = xhr.responseText.substr(11);
					FORM_performPosition(dispmsg);
					myEffect_FlashInfo(dispmsg,2);
				}
			}
			new Effect.Fade($(attente), {queue:'end', afterFinish: function(){alreadyclicked=false;Behaviour.apply();}});
		}
	});
}

function formRecord(idbtn)
{
	var tabID = idbtn.split(":");
	var elemtype = "";
	var attente = "";
	var elemid = "";
	var conteneur = "";
	var elem_sup = "";
	var langid=1;

	//recuperation de la langue
	if($("id_langencours"))
	{
		langid = $("id_langencours").value;
	}

	if(tabID.length > 1)
	{
		//recuperation du type de l'élément
		if($('type_element:'+tabID[1]))
			elemtype = $('type_element:'+tabID[1]).value;
		//recuperation du message d'attente
		attente = 'attenterecord:'+tabID[1];
		//recuperation de l'id de l'élément
		if($('id_element:'+tabID[1]))
			elemid = $('id_element:'+tabID[1]).value;
		//recuperation du conteneur
		if($('conteneur_'+tabID[1]))
			conteneur = 'conteneur_'+tabID[1];
	}

	if(elemtype == "")
	{
		if($('type_element'))
			elemtype = $('type_element').value;
	}
	if(elemid == "")
	{
		if($('id_element'))
			elemid = $('id_element').value;
	}

	//Recuperation du callback
	var callBack = "";
	if($("callback:"+elemtype+":record"))
	{
		callBack = $("callback:"+elemtype+":record").value;
	}

	if($('elem_sup:'+elemtype))
		elem_sup = $('elem_sup:'+elemtype).value;
	FORM_record(elemtype,elemid,conteneur,"",elem_sup,callBack, attente,langid);
}

function FORM_buildpoststring(conteneur,recorder,type)
{
	var conteneur = conteneur || "";
	var recorder = recorder || "";
	
	var checkedField = '';
	var fieldValue = '';
	var elementValue = '';
	var tabValue = [];
	var tabId = [];
	var tabElement = [];
	var inputs = new Array();
	var regle = "";
	var type = type || "";
	
	var class_to_record = "";
	
	if(recorder != "")
	{
		class_to_record = recorder;
	}else{
		class_to_record = class_input_to_record;
	}
	if(conteneur != "")
	{
		if($(conteneur))
		{
			regle = '.'+class_to_record;
			inputs = $(conteneur).select(regle);
		}
	}
	else
	{
		var conteneur = PHXFlow_getVerticalConteneur(type);
		regle = "#" + conteneur + " ." + class_to_record;
		inputs = $$(regle);
	}

	for(var cpt = 0; cpt < inputs.length; cpt++)
	{
		var pushId = true;
		var pushValue = true;
		if(inputs[cpt].tagName == "SELECT")
		{
			tabElement = getSelected(inputs[cpt].id);
			tabValue.push(tabElement.join("#"));
			pushValue = false;
		}
		else
		{
			if(inputs[cpt].tagName == "TEXTAREA")
			{
				if(RICHTEXT_exists(inputs[cpt].id))
				{
					elementValue = escape(RICHTEXT_get(inputs[cpt].id));
					elementValue = elementValue.replace(/%u2019/g, "'");
					if(typeof(elementValue) == 'undefined')
					elementValue = "";
				}
				else
				{
					elementValue = inputs[cpt].value.replace(/\|/g, "");
					elementValue = elementValue.replace(/’/g, "'");
					elementValue = encodeURIComponent(elementValue);
				}
			}
			else
			{
				if(inputs[cpt].type == "checkbox" || inputs[cpt].type == "hidden")
				{
					if(inputs[cpt].id.match(new RegExp("[^:]+:cle:.+")))
					{
						var tabCheck = inputs[cpt].id.split(':');
						var indexCheck = array_search(tabCheck[0], tabId);
						if(inputs[cpt].checked === true || inputs[cpt].type == "hidden")
						{
							if(indexCheck !== false)
								tabValue[indexCheck] += inputs[cpt].value+"#";
							else
							{
								tabId.push(tabCheck[0]);
								tabValue.push(inputs[cpt].value+"#");
							}
						}
						else
						{
						if(indexCheck === false)
						{
							tabId.push(tabCheck[0]);
							tabValue.push("");
						}
					}
					pushId = false;
					pushValue = false;
				}
				else
				{
					if(inputs[cpt].checked === true || inputs[cpt].type == "hidden")
					{
						elementValue = inputs[cpt].value;
					}
				}
			}
			else
			{
				if(inputs[cpt].type == "radio")
				{
					if(inputs[cpt].checked === true)
					{
						var tabRadio = inputs[cpt].id.split(':');
						var topush = inputs[cpt].id.replace(':'+tabRadio[1], '');
						tabId.push(topush);
						if(tabRadio == "")
							elementValue = "";
						else
							elementValue = tabRadio[1];
						tabValue.push(elementValue);
					}
					pushId = false;
					pushValue = false;
				}
				else
				{
					elementValue = inputs[cpt].value;
					elementValue = escape(elementValue);
				}
			}
		}
	}

	if(pushValue)
	{
		elementValue = elementValue.replace(/’/g, "'");
		if(typeof(elementValue) == 'undefined' || elementValue == "")
		elementValue = "";
		//Permet de remplacer les | dans la chaine
		elementValue = elementValue.replace(/%7C/g, "");
		elementValue = elementValue.replace(/%u0153/g, "oe");
		elementValue = elementValue.replace(/%u2026/g, "...");
		tabValue.push(elementValue);
	}

	if(pushId)
		tabId.push(inputs[cpt].id);
	}
	
	var chPOST = "";
	
	if(tabId.length > 0)
	{
		checkedField = tabId.join("|");
		fieldValue = tabValue.join("|");
		chPOST = "&checkedField="+checkedField+"|"+
		"&fieldValue="+fieldValue+"|";
	}
	return chPOST;
}

function FORM_videChampMsg(conteneur, type)
{
	var type = type || "";
	if(conteneur == "")
		conteneur = PHXFlow_getVerticalConteneur(type);
	if($(conteneur))
	{
		regle = '#'+conteneur+' span[id^="'+id_msg_to_display+'"]';
		inputs = $$(regle);
	}
	inputs.each(function(msg) {msg.innerHTML = "";})
	
}

function FORM_razerrormsg()
{
	var listeMsg = $$('span[id^="msg:"]');
	listeMsg.each(function(msgCh){
			$(msgCh).innerHTML = "";
		}
	);
}

function FORM_clearcolormsg()
{
	var listeRow = $$('tr[id^="ligne:"]');
	listeRow.each(function(row){
			$(row).style.backgroundColor = "transparent";
		}
	);
}

function getIDElement(element, idt)
{
	var tabID = element.id.split('-');
	if(tabID.length > 1)
		var idtoreturn = tabID[idt];
	else
		var idtoreturn = element.id;
	return idtoreturn;
}

function FORM_performPosition(conteneur_popup)
{
	if(conteneur_popup)
	{
		if(conteneur_popup.className.match(new RegExp("_popup")))
		{
			if(conteneur_popup.style.top == "")
			{
				conteneur_popup.style.marginTop = Math.round(conteneur_popup.getHeight() / 2) * -1+'px';
				conteneur_popup.style.marginLeft = Math.round(conteneur_popup.getWidth() / 2) * -1+'px';
			}
		}
	}
}

function FORM_refreshlist(tpltype)
{
	var conteneur_list = "liste:"+tpltype;
	var lev = 0
	if($(conteneur_list))
	{
		var url = 'admin/liste/'+tpltype;
		
		if(flow_direction == "vertical")
		{
			nom_conteneur = PHXFlow_getVerticalConteneur(tpltype);
			lev = PHXFlow_getVerticalLevel(tpltype);
			
			if($("id_element_"+lev))
			{
				idelemsup = $("id_element_"+lev).value;
				url = url + "&idelemsup=" + idelemsup;
			}
		}
		
		if($('id_element:'+tpltype))
		{
			var currentvalue = $('id_element:'+tpltype).value;
		}
		else
		{
			selects = $(conteneur_list).getElementsByTagName("select");
			
			//Recupere l'indice de la liste sélectionnée
			if(selects.length>0)
			{
				var select = selects[0];
				var currentvalue= select.options[select.selectedIndex].value;
			}
		}
		url += '&currentvalue=' + currentvalue;

		//Recupere la section pour les pages
		if($('section_encours'))
		{
			var section = $('section_encours').value;
			url += '&section='+ section;
		}

		//Recupere le type de spectacles
		if($('type_spectacle'))
		{
			var typespectacle = $('type_spectacle').value;
			url += '&typespectacle='+ typespectacle;
		}
		
		//Recuperation du filtre si present
		if($("filtre:"+tpltype))
		{
			url += '&filtre='+ $("filtre:"+tpltype).value;
		}
	
		new Ajax.Request(urlaff, {
			asynchronous: 'true', 
			postBody: 'tpl='+url,
			onSuccess: function(zhr)
			{
				//Recuperation du nouveau formulaire			 			
				$(conteneur_list).update(zhr.responseText);
			},
			onComplete: function(zhr)
			{
				//Reparcours du DOM
				Behaviour.apply();
				if($('attenterecord'))
				{
					$('attenterecord').style.display = 'none';
				}
			}
		});
	}
}

