var gPrefixeIdErrorObject   = "erreur_";
var gPrefixeErrorMessage    = "Erreur : "
var gCol                    = ["radio", "checkbox"];
var gElementHasError;
var r1Tor2;
var r2Tor1;

// ****
function sortNumber(a, b)
{
  return a - b;
}

// ****
function focusFirstObject()
{
  // ****
  var rValue = true;
  
  // ****
  var tmpId;
  var tmp;
  var el;
  
  // ****
  if( true && gElementHasError.length )
  {
    
    // ****
    gElementHasError.sort(sortNumber);
    
    // ****
    tmpId = r1Tor2[gElementHasError[0]].replace(gPrefixeIdErrorObject, "");
    el    = getCol(tmpId);
    el    = el[0];
    
    // ****
    el.focus();
    
    // ****
    rValue = false;
  
  }
  
  // ****
	return rValue;
}

// ****
function setErrorMessage(_hasmessage, _o, _message)
{
	// ****
	var isCol;
	var tmpId;
	var tmp;
	var garbage;
		
	//alert(_o.id);
	// ****
	if( isNotNull(_o) )
	{
    // ****
    tmpId = (_o.tagName != undefined) ? _o.id : _o[0].name;
    tmpId = gPrefixeIdErrorObject + tmpId
    tmp   = getEl(tmpId);
    
    //****
		_message      = gPrefixeErrorMessage + _message;
		tmp.innerHTML = ( _hasmessage && !_message.trim().empty() ) ? _message : "";
		
    //****
    if( _hasmessage )
    {
      gElementHasError.push(r2Tor1[tmpId]);
    }
  }
}

// **** ici : _o = this // le formulaire lui-m�me
function setRelations(_o)
{
  // ****
	var cError;
	var oError;
	var i;
	var iMax;
  var tmp;
  
  // ****
  rValue           = null;
  cError           = _o.getElementsByTagName("*");
  iMax             = cError.length;
  r1Tor2           = new Array();
  r2Tor1           = new Array();
  gElementHasError = new Array();
  
  // ****
  for(i = 0; i < iMax; i++ )
  {
		// ****
		oError = cError[i];

		if( isNotNull(oError.getAttribute("id")) && ( oError.getAttribute("id").indexOf(gPrefixeIdErrorObject) >= 0 ) )
		{
			// ****
			r1Tor2.push(oError.getAttribute("id"));
		}
	}
	
	// ****
	iMax = r1Tor2.length;
	
  // ****
  if( iMax > 0 )
  {
    // ****
    for(i = 0; i < iMax; i++ )
    {
      r2Tor1.push("\"" + r1Tor2[i] + "\":" + i);
    }
    
    // ***
    r2Tor1 = eval("({" + r2Tor1.join(",") + "});");
  } 
}

// ****
function validForm(_o)
{
  // ****
	var rValue = false;

	// ****
	var isValid;
	var el;
	var elerror;
	var val;
	var i;
	var iMax;
	var isChecked;
	var tmp;
	var hasMessage;
	var message;
	
   // ****
 	isChecked  = false;
	isValid    = true;
	hasMessage = false;

	// ****
    setRelations(_o);
	
	// **** Validation du champ Prenom(participant)
	el = getEl("txt_part_prenom");
	message = "Le champ \" Pr&#233;nom \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	// **** Validation du champ Nom(participant)
	el = getEl("txt_part_nom");
	message = "Le champ \" Nom \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	// **** Validation du champ Raison sociale(Enterprise)
	el = getEl("txt_ent_sociale");
	message = "Le champ \" Raison sociale \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	// **** Validation du champ Adresse(Enterprise)
	el = getEl("txt_ent_adresse");
	message = "Le champ \" Adresse \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	// **** Validation du champ Prénom(Signataire de la convention)
	el = getEl("txt_sign_prenom");
	message = "Le champ \" Pr&#233;nom \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	// **** Validation du champ Nom(Signataire de la convention)
	el = getEl("txt_sign_nom");
	message = "Le champ \" Nom \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	// **** Validation du champ Nom
	el = getEl("txt_nom");
	message = "Le champ \" Nom \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	
	// **** Validation du champ T�l�phone
	el      = getEl("txt_tel");
	message = "Le champ \" T&#233;l&#233;phone \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		if( !hasMessage )
		{
			// ****
			hasMessage = !(isValidTel(val.trim()));
			message    = hasMessage ? "Le format du champ \" T&#233;l&#233;phone \" est incorect." : message;
		}

		// ****
		setErrorMessage(hasMessage, el, message);
	}

	

	// **** Validation du champ Email
	el      = getEl("txt_mail");
	message = "Le champ \" Email \" doit &#234;tre renseign&#233;.";
	isValidMail = false;

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		if( !hasMessage )
		{
			// ****
			hasMessage = !(isValidMel(val.trim()));
			message    = hasMessage ? "Le format du champ \" Email \" est incorect." : message;
		}

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	
	
	// **** Validation du champ Nom
	el = getEl("txt_societe");
	message = "Le champ \" Soci�t� \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	// **** Validation du champ Nom
	el = getEl("txt_effectif");
	message = "Le champ \" Effectif \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	
	// **** Validation du champ Nom
	el = getEl("txt_naf");
	message = "Le champ \" Code NAF \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}
	
	
	// **** Validation du champ Nom
	el = getEl("txt_siret");
	message = "Le champ \" Num&#233;ro de SIRET \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}

	

	// **** Validation du champ Adresse principale
	el = getEl("txt_rue");
	message = "Le champ \" N�, rue \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}

	// **** Validation du champ Ville
	el = getEl("txt_ville");
	message = "Le champ \" Ville \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}

	// **** Validation du champ Code postal
	el      = getEl("txt_cp");
	message = "Le champ \" Code postal \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		if( !hasMessage )
		{
			// ****
			hasMessage = !(isValidCp(val.trim()));
			message    = hasMessage ? "Le format du champ \" Code postal \" est incorect." : message;
		}

		// ****
		setErrorMessage(hasMessage, el, message);
	}

	// **** Validation du champ Pays
	el = getEl("txt_pays");
	message = "Le champ \" Pays \" doit &#234;tre renseign&#233;.";

	// ****
	if( isNotNull(el) )
	{
		// ****
		val        = el.value.toString();
		hasMessage = val.trim().empty();
		message    = hasMessage ? message : "";

		// ****
		setErrorMessage(hasMessage, el, message);
	}

	
	// ****
  isValid = focusFirstObject();
  rValue  = isValid;//isValid;
  
  // ****
	return rValue;
}
