var tabLangErreur = new Array();

var errorClassName = "checkfield_error";
var okClassName = "checkfield_ok";

function FORM_getSelected(listeObj)
{
	var selected_value = new Array();
	var Obj;
	
	if(typeof(listeObj) != "object")
	{
		Obj = $(listeObj);
	}else{
		Obj = listeObj;
	}
	
	if(typeof(Obj) == "object")
	{
		var liste = Obj.getElementsByTagName('option');
		var options = $A(liste);
		
		options.each(function(ligne){
			if(ligne.selected == true)
			{
				selected_value.push(ligne.value);
			}
		});
	}
	
	return selected_value;
}

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).className = $(row).className.replace(errorClassName,"");
			$(row).className = $(row).className.replace(okClassName,"");
		}
	);
}

function FORM_razlang()
{
	var langErreurClassName = "erreur_lang"
	var langSuccessClassName = "success_lang"

	//On remet toutes les langues dans leur état par défaut
	var lst = $$('.disp_langue');
	for(var i = 0; i < lst.length; i++)
	{
		lst[i].className = lst[i].className.replace(" "+langErreurClassName, "");
	}
}

function FORM_recordlang(field)
{
	//Enregistrement de la langue de l'erreur
	var indexChar = field.indexOf("_lang");
	if(indexChar >-1)
	{
		indexChar +=5;
		var langNum = field.substring(indexChar,indexChar+1);
		if(parseInt(langNum)!= NaN && tabLangErreur.in_array(langNum)===false)
			tabLangErreur.push(langNum);
	}
}

function FORM_affichelang(field)
{
	var langErreurClassName = "erreur_lang"
	var langSuccessClassName = "success_lang"

	//Traitement des erreurs sur les langues
	var tabLangok = $$("."+langErreurClassName);
	var tabLangerr = $$("."+langSuccessClassName);
	var tabLang = tabLangok.concat(tabLangerr);
	for(var i=0; i< tabLang.length;i++)
	{
		var tabIdLang = tabLang[i].id.split("_");
		var idLang = tabIdLang[3];
		if(tabLangErreur.in_array(idLang)===false)
			tabLang[i].className=langErreurClassName;
		else
			tabLang[i].className=langSuccessClassName;
		tabLang[i].style.display="";
	}
	if(tabLangErreur.length>0)
	{
		span = $(type + "_lang_erreur");
		if(span)
		{
			if(tabLangErreur.length==1)
				span.innerHTML = "1 langue contient des erreurs";
			else
				span.innerHTML = tabLangErreur.length + " langues contiennent des erreurs";
		}
	}
}

function FORM_treatTaskMsg(json_res_object,ctn,type)
{
	var marqueurMsgErreurValidation = "ECHEC";
	var marqueurMsgReussiteValidation = "SUCCES";
	var symboleSpan = '<span>';
	var debConteneurMsgEchec = '<a href="javascript:;" class="msg_erreur" tabindex="-1">';
	var debConteneurMsgSucces = '<a href="javascript:;" class="msg_succes" tabindex="-1">';
	var finsymboleSpan = '</span>';
	var finConteneurMsg = '</a>';
	var finConteneurMsgSucces = '</span>';
	var classErreur = "l_form_err";
	var couleurOK = "transparent";
	
	var ctn = ctn || document.body;

	//On clear les messages, les couleurs de ligne et la langue
	FORM_razerrormsg();
	FORM_clearcolormsg();
	FORM_razlang();

	if(json_res_object.res==="")
	{
		for(var i=0;i<json_res_object.checkinglines.length;i++)
		{
			var line = json_res_object.checkinglines[i];
			//Si l'execution n'a pas eu lieu, il faut exploiter les messages
			var msg = line.msg;
			var el = ctn.select('#msg_' + line.field);

			if(el.length>0&& msg != "")
			{
				var oField = el[0];
				var el = ctn.select('#ligne_' + line.field);
				if(el.length>0)
					var oLine = el[0];
				
				oLine.className = oLine.className.replace(' '+classErreur, '');
				if(msg == null)
					msg = '';
				if(line.state == marqueurMsgErreurValidation)
				{
					//Record Langue erreur
					FORM_recordlang(line.field);
					if(msg == '&nbsp;' || msg == '')
						oField.innerHTML = debConteneurMsgEchec+msg+finConteneurMsgSucces;
					else
						oField.innerHTML = debConteneurMsgEchec+symboleSpan+msg+finsymboleSpan+finConteneurMsg;
	
					//oLine.style.backgroundColor = couleurErreur;
					oLine.className += ' '+classErreur;
				}
				else if(line.state == marqueurMsgReussiteValidation)
				{
					if(msg == '&nbsp;' || msg == '')
						oField.innerHTML = debConteneurMsgSucces+msg+finConteneurMsgSucces;
					else
						oField.innerHTML = debConteneurMsgSucces+symboleSpan+msg+finsymboleSpan+finConteneurMsg;
					//oLine.style.backgroundColor = couleurOK;
				}
			}
		}
		FORM_affichelang(type);
	}
	return;
}

function FORM_buildpoststring(conteneur,recorder)
{
	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 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);
		}
	}
	
	for(var cpt = 0; cpt < inputs.length; cpt++)
	{
		var pushId = true;
		var pushValue = true;
		if(inputs[cpt].className.indexOf("phx_treeview")>-1)
		{
			var tv_id = tv_getSelectedItem(inputs[cpt]);
			tabValue.push(tv_id);
			pushValue = false;
		}
		else if(inputs[cpt].tagName == "SELECT")
		{
			var tabElement = FORM_getSelected(inputs[cpt]);
			tabValue.push(tabElement.join("#"));
			pushValue = false;
		}
		else
		{
			if(inputs[cpt].tagName == "TEXTAREA")
			{
				if(TINY_exists(inputs[cpt].id))
				{
					elementValue = escape(TINY_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 = tabId.in_array(tabCheck[0]);
						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
							elementValue = "";
					}
				}
				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)
		{
			if(typeof(elementValue) == 'undefined' || elementValue == "")
			{
				elementValue = "";			
			}else{
				elementValue = elementValue.replace(/\+/g, "%2B");
				elementValue = elementValue.replace(/’/g, "'"); //rsquo
				elementValue = elementValue.replace(/%09/g, "");//tab
				elementValue = elementValue.replace(/%7C/g, "");//pipe
				elementValue = elementValue.replace(/%u0153/g, "oe");//oe
				elementValue = elementValue.replace(/%u2026/g, "...");//3 points word
				elementValue = elementValue.replace(/%u2013/g, "-");//en dash
				elementValue = elementValue.replace(/%u2019/g, "'");//en dash
				elementValue = elementValue.replace(/%u2022/g, "-");//en dash
			}
			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;
}
