// validation de champ
function RequiredField(FieldName, Type, ErrorMsg) {
var returnMessage='';
	
	switch (Type) {
		case 'text' :
			var TextBox = document.getElementById(FieldName);
			if (TextBox.value.replace(/ /gi,'')=='') { returnMessage=ErrorMsg; };
			break;
		
		case 'select' :
			var Select = document.getElementById(FieldName);
			if (Select.selectedIndex==-1 || Select.selectedIndex==0) { returnMessage=ErrorMsg; };
			break;
			
		case 'check' :
			var CheckBox = eval('document.Form1.'+FieldName);	
			if (! CheckBox.checked) { returnMessage=ErrorMsg; };
			break;
			
		case 'radio' :
			var nbRadio = eval('document.Form1.'+FieldName+'.length');
			var checked=false;
			for (i=0; i<nbRadio; i++) {
				var RadioButton = eval('document.Form1.'+FieldName+'['+i+']');
				checked = (checked || RadioButton.checked);
			}
			if (! checked) { returnMessage=ErrorMsg; };
			break;
	}
	
	return returnMessage;
}

function RegularExpression(FieldName, Type, Required, ErrorMsg) {
var returnMessage="";
var nbfiltre;
nbfiltre=1;
	var Expression = document.getElementById(FieldName).value;
	
	if (!Required && (Expression=='')) {return '';}
	
	switch (Type) {
	
			case 'cp' : 
			var filter = new RegExp("[0-9]{5}","gi");
			break;
	
		case 'tel' : 
			nbfiltre=2;
			var filter = new RegExp("([+]33[ ])([0-9]{3}[ ])([0-9]{3}[ ])([0-9]{3})",'');
			var filter2 = new RegExp("([+][0-9]{3}[ ])([0-9]{3}[ ])([0-9]{3}[ ])([0-9]{3})",'');
			break;
			
		case 'mail' :
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			break;
		
		case 'address' :
			var filter = new RegExp("([A-Z]|[a-z]|[0-9]|[ ]|[-]|[']|[&quot;]|[,]|[;]|[.]|[@]|)*",'');
			break;
			
		case 'numeric' :
			var filter = new RegExp("([0-9]|[ ])*",'');
			break;
		
		case 'siret' :
			if (! EstSiretValide(Expression)) {
				return ErrorMsg;
			}
			else {
				return '';
			}
			break;
	}
	
	if (Expression=='') {
		returnMessage=ErrorMsg;
	}else{
		err=0;	
		errfiltre1=0;
		errfiltre2=0;
	
		if(nbfiltre == 1 ) {
			 if (!filter.test(Expression)) {
				 err=1;
			 }
		}
		if(nbfiltre == 2 ) {
			Expression=Expression.replace("(","");
			Expression=Expression.replace(")","");
			 if (!filter.test(Expression) || Expression.length != 15) {
			 		 errfiltre1=1;
			 }

			 if (!filter2.test(Expression) || Expression.length != 16) {
			 		 errfiltre2=1;
			 }			 
			 
			 if((errfiltre1 * errfiltre2 ) == 1 ){ 
				err=1;
			}
		}
		 if(err==1)
		 		 returnMessage=ErrorMsg;

	}
	
	return returnMessage;
}

function EstSiretValide(siret) {
var estValide;
	
	// On calcul le siren si 00000 à la fin du siret
	if (siret.substr(9,5)=='00000') {
		if (EstSirenValide(siret.substr(0,9))==true)
			estValide=true;
		else
			estValide=false;
	}
	else {
		if (siret.length==14 && !isNaN(siret)) {
			// Donc le SIRET est un numérique à 14 chiffres
			// Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants
			// correspondent au numéro d'établissement
			// et enfin le dernier chiffre est une clef de LUHN. 
			var somme = 0;
			var tmp;
			for (var cpt = 0; cpt<siret.length; cpt++)	{
				if ((cpt % 2) == 0) {
					// Les positions impaires : 1er, 3è, 5è, etc... 
					tmp = siret.charAt(cpt) * 2; // On le multiplie par 2
					if (tmp > 9) 
						tmp -= 9;  // Si le résultat est supérieur à 9, on lui soustrait 9
				}
				else
					tmp = siret.charAt(cpt);
				
				somme += parseInt(tmp);
			}
			if ((somme % 10) == 0)
				estValide=true;
			else
				estValide=false;
		}
		else
			estValide=false;
	}			
	
	return estValide;
}
  
function EstSirenValide(siren) {
var estValide;

  if ( (siren.length != 9) || (isNaN(siren)) )
    estValide = false;
  else {
    // Donc le SIREN est un numérique à 9 chiffres
    var somme = 0;
    var tmp;
    for (var cpt = 0; cpt<siren.length; cpt++) {
      if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
        tmp = siren.charAt(cpt) * 2; // On le multiplie par 2
        if (tmp > 9) 
          tmp -= 9;  // Si le résultat est supérieur à 9, on lui soustrait 9
      }
      else
        tmp = siren.charAt(cpt);
      somme += parseInt(tmp);
    }
    if ((somme % 10) == 0)
      estValide = true;  // Si la somme est un multiple de 10 alors le SIREN est valide 
    else
      estValide = false;
  }
  return estValide;
}
