
// Expressions régulières de test de types administratifs français
var regExpCodePostal=/^([0-9]{4,5})$/g;	// Accepte une chaine de type 'code postal'. Ex : F-33370 ou 33 370 ou 33370 ou F-1 370
var regExpTelephoneFixe=/^(01|02|03|04|05|06|07|08|09)[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/g;		// Accepte un numero de téléphone de type 'fixe'. Ex : 01.34.12.52.30 ou 0134125230
var regExpTelephonePortable=/^(06|07)[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/g;			// Accepte un numero de téléphone de type 'portable'.
var regExpTelephoneNational=/^(0[123456789])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/g;		// Accepte un numero de téléphone de type 'national' y compris numéros en '08'.
var regExpFax=/^(0[1234568])?[0-9]{2}?[0-9]{2}?[0-9]{2}?[0-9]{2}$/g;		// Accepte un numero de téléphone de type 'national' y compris numéros en '08'.
var regExpTelephoneInternational=/^(\+[0-9]{2})[ \.\-]?[0-9][ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/g;	// Accepte un numero de téléphone de type 'international'. Ex : (+33) 1 34 12 52 30
var regExpEmailAdress=/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/g;	// Expressions régulières de test de types liés à internet
var regExpNumeric=/[0-9]$/g;	// Accepte une chaine numérique
var regExpTime=/^([0-9]|[01][0-9]|2[0123])\:([012345][0-9])(\:([012345][0-9])(.([0-9]{3})+)?)?$/g;		 // Accepte une chaine de type 'time'. Ex : 12:51 ou 21:45:35.654
var regExpFrenchDate=/^(0[1-9]|[12][0-9]|3[01])[\- \/\.](0[1-9]|1[012])[\- \/\.](19|20)\d\d$/g;  // date au format jj/mm/aaaa ou jj-mm-aaaa ou jj mm aaaa ou jj.mm.aaaa avec aaaa compris entre 1900 et 2099.
var regExpCompte = /^([0-9]{6}[ \.\-]?[a-zA-Z]{1})$/g;
var regExpNumeroSiret=/^[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{2}$/g;					// Accepte un numero SIRET. Ex : 254 254 254 12345

//Les deux fonction suivantes servent à identifier si une chaine de caractère est compatible ou non avec une expression régulière passée en paramètre
function matchRegularExpression(valeur, regularExpression) {
	var resultat = valeur.match(regularExpression);
	if(resultat!=null && resultat.length==1) return true;
	else return false;
}
function doesntMatchRegularExpression(valeur, regularExpression) {
	if(matchRegularExpression(valeur, regularExpression)) return false;
	else return true;
}

function check_input(field_name, field_size, message) {
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var field_value = form.elements[field_name].value;
    if (field_value == '' || field_value.length < field_size) {
      if(message != "") error_message = error_message + "" + message + "\n";
      error = true;
    }
  }
}
function check_input_description(field_name, field_size, message) {
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var field_value = form.elements[field_name].value;
    if (field_value == '' || field_value.length < field_size || field_value==txtdefaut) {
      error_message = error_message + "* " + message + "\n";
      error = true;
    }
  }
}
function is_client(valeurradio) {
	var valeurradio;
	if(valeurradio == 1){
		document.getElementById('contact_client_numero').disabled = false;
	} else if (valeurradio == 0) {
		document.getElementById('contact_client_numero').disabled = true;
		document.getElementById('contact_client_numero').value = '';
	}
}

function check_input_compte(field_name,message){
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpCompte) ) {
		error_message = error_message + "* " + message + "\n";
		error= true;
	}
}

function check_radio(field_name, message) {
  var isChecked = false;
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var radio = form.elements[field_name];
    for (var i=0; i<radio.length; i++) {
      if (radio[i].checked == true) {
        isChecked = true;
        break;
      }
    }
    if (isChecked == false) {
      error_message = error_message + "" + message + "\n";
      error = true;
    }
  }
}

function check_select(field_name, field_default, message) {
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var field_value = form.elements[field_name].value;

    if (field_value == field_default) {
      if(message != "") error_message = error_message + "" + message + "\n";
      error = true;
    }
  }
}

function check_input_email(field_name, message_mail) {
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpEmailAdress) ) {
		error_message = error_message + "" + message_mail + "\n";
		error= true;
	}
}

function check_confirm_email(field_name,field_name_confirm, message_mail) {
	if(form.elements[field_name].value != form.elements[field_name_confirm].value) {
		error_message = error_message + "* " + message_mail + "\n";
		error= true;
	}
}
  
function check_input_codepostal(field_name, message_codepostal){
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpCodePostal)){
		error_message = error_message + "" + message_codepostal + "\n";
		error= true;
	}
}

function check_input_telephone(field_name, message_telephone)	{
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpTelephoneFixe)){
		error_message = error_message + "* " + message_telephone + "\n";
		error = true;
	} 
}

function check_input_telephonenational(field_name, message_telephone)	{
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpTelephoneNational)){
		error_message = error_message + "* " + message_telephone + "\n";
		error = true;
	} 
}

function check_input_telephoneportable(field_name, message_telephone)	{
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpTelephonePortable)){
		error_message = error_message + "* " + message_telephone + "\n";
		error = true;
	} 
}

function check_input_fax(field_name, message_fax)	{
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpFax)){
		error_message = error_message + "* " + message_fax + "\n";
		error = true;
	} 
}

function check_input_siret(field_name, message) {
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpNumeroSiret)){
		error_message = error_message + "* " + message + "\n";
		error = true;
	} 
}

function check_input_heure(field_name1, field_name2, message_heure)	{
	if(form.elements[field_name2].value==''){ form.elements[field_name2].value = '00'}
	heure = form.elements[field_name1].value + ":" + form.elements[field_name2].value + ":00" ;
	if(doesntMatchRegularExpression(heure, regExpTime)){
		error_message = error_message + "* " + message_heure + heure + "\n";
		error = true;
	} 
}


function check_input_numeric_if_exist(field_name, message_field){
	if (form.elements[field_name].value){
		if(doesntMatchRegularExpression(form.elements[field_name].value, regExpNumeric)){
			error_message = error_message + "* " + message_field + "\n";
			error= true;
		}
	}
}

function check_input_numeric(field_name, message_field){
	if(doesntMatchRegularExpression(form.elements[field_name].value, regExpNumeric)){
		error_message = error_message + "* " + message_field + "\n";
		error= true;
	}
}

function check_checkbox(checkbox_name, message_field ){
	if(form.elements[checkbox_name].checked == false){
			error_message = error_message + "* " + message_field + "\n";
			error= true;
	}
}

function check_checkbox_multiple(checkbox_name, message_field ){
	checked = false;
	for(chk = 0 ; chk < form.elements[checkbox_name].length ; chk++)
	{
		if(form.elements[checkbox_name][chk].checked == true){
			checked = true;
		}
	}
	
	if(!checked)
	{
		error_message = error_message + "* " + message_field + "\n";
		error= true;
	}
}

function check_date_annee(field_name, message_field) {
	
	if( form.elements[field_name].value*1!=form.elements[field_name].value || 1*form.elements[field_name].value>2100 || 1*form.elements[field_name].value<1900) {
			error_message = error_message + "* " + message_field + "\n";
			error= true;
	}
}
function check_checkbox_or_input(checkbox_name, field_name, message_field ){
    //on place un booléen case_cochee à false
    isChecked=false;
    i=0;
    //tant qu'on n'a pas trouvé de case cochée
    //et qu'il reste une case on vérifie la case d'indice i
    while (i<form.length)   {      //si l'élément courant est de type checkbox    //alors on l'inspecte
        if (form.elements[i].type=="checkbox" & form.elements[i].name!='validation_cout' & form.elements[i].name!='newsletter')
        {
            if (form.elements[i].checked)  {       //une case est cochee -> on passe le boolean à true
                isChecked=true;
            }
        }
        i++;
    }    //le parcours est terminé, on inspecte le booléen   //le booléen est toujours à faux -> aucune case n'a été cochée


	if(isChecked == false){
		var field_value = form.elements[field_name].value;
	    if (field_value == ''){
			error_message = error_message + "* " + message_field + "\n";
			error= true;
		}
	}
}


function check_majeur(jour,mois,annee,message_field ){
	d = new Date( Number(form.elements[annee].value) , Number(form.elements[mois].value) - 1 , Number(form.elements[jour].value) );
	
	if(get_age(d) < 18)
	{
		error_message = error_message + "* " + message_field + "\n";
		error= true;
	}
	
}

function valeurradio(rd)
{
	cocher=0;
			
	for(i=0;i<rd.length;i++)
	{
		if(rd[i].checked) cocher=rd[i].value;
	}
			
	return cocher;
}

function get_age(d) 
{
	m = new Date();
	
	age = ""; 
	age_a = 0;
	
	age_a = m.getFullYear() - d.getFullYear();
	
	if(d.getMonth() > m.getMonth()) age_a --;
	else
	{
		if(d.getMonth() == m.getMonth())
		{
			if(d.getDate() > m.getDate()) age_a --;
		}
	}
		
	return age_a;
}

function estunjour(jour)
	{
		j = new String(jour);
		j1 = j.substr(0,1);
		j2 = j.substr(1,1);
		
		if((!isNaN(j1) && !isNaN(j2)) && (Number(jour) >= 1 && Number(jour) <= 31)) return true;
		else return false;
	}
	
function estunmois(mois)
	{
		m = new String(mois)
		m1 = mois.substr(0,1);
		m2 = mois.substr(1,1);
		
		if((!isNaN(m1) && !isNaN(m2)) && (Number(mois) >= 1 && Number(mois) <= 12)) return true;
		else return false;
	}
	
function estuneannee(annee)
	{
		a = new String(annee);
		a1 = annee.substr(0,1);
		a2 = annee.substr(1,1);
		a3 = annee.substr(2,1);
		a4 = annee.substr(3,1);
		
		if((!isNaN(a1) && !isNaN(a2) && !isNaN(a3) && !isNaN(a4)) && (Number(annee) >= 1880 && Number(annee) <= Number(new Date().getFullYear()))) return true;
		else return false;
	}

function nbjours_mois(mois,annee)
	{  
		if ((mois==1)||(mois==3)||(mois==5)||(mois==7)||(mois==8)||(mois==10)||(mois==12))
		{
			return(31);
		}	
		else if ((mois==4)||(mois==6)||(mois==9)||(mois==11))
		{
			return(30);
		}
		else if ((mois==2)&&(annee % 4 ==0))
		{
			return(29);
		}
		else
		{
			return(28);
		}
	}
	
function check_date(field_jour,field_mois,field_annee,message_field)
{
	var jour = form.elements[field_jour].value;
	var mois = form.elements[field_mois].value;
	var annee = form.elements[field_annee].value;
	
	var test = true;
	
	if(jour == "" || mois == "" || annee == "")
	{
		test = false;
	}
	else if(estunjour(jour) && estunmois(mois) && estuneannee(annee))
	{
		i_jour 	= Number(jour);
		i_mois 	= Number(mois);
		i_annee	= Number(annee);
		
		nb_jours	= nbjours_mois(mois,annee);
			
		if ((i_jour <= 31) && (nb_jours == 31)) test = true;
		else if ((i_jour <= 29) && (nb_jours == 29)) test = true;
		else if ((i_jour <=28)&&(nb_jours == 28)) test = true;
		else if ((i_jour <=30)&&(nb_jours == 30)) test = true;
		else test = false;
	}
	else
	{
		test = false;
	}
	
	if(test == false)
	{
		error_message = error_message + "" + message_field + "\n";
		error= true;
	}
}



