function isHeure(h) {
  if (h == "") // si la variable est vide on retourne faux
    return false;

  // On sépare la date en 2 variables pour vérification, parseInt() converti du texte en entier
  hh = parseInt(h.split(":")[0], 10); // heure
  mm = parseInt(h.split(":")[1], 10); // minute

  return (hh>=0 && hh<=23 && mm>=0 && mm<=59);
}

function check_sup_date(d1, d2) {

  	if (d1=="" || d2=="") return true;
  	j = parseInt(d1.split("/")[0], 10); // jour
  	m = parseInt(d1.split("/")[1], 10); // mois
	a = parseInt(d1.split("/")[2], 10); // année
        date1=new Date(a, m-1, j);
  	j = parseInt(d2.split("/")[0], 10); // jour
  	m = parseInt(d2.split("/")[1], 10); // mois
	a = parseInt(d2.split("/")[2], 10); // année
	date2=new Date(a, m-1, j);
        if (date2 < date1) {
                return false; }

        return true;
}


// Fonction de controle des champs vides

function check_empty(formulaire,champ,intitule) {

// Creation d'un alias du champ a tester
		var fld = document.getElementById(champ);

// si valeur du champ comporte moins de 1 caractere
		if ( fld.value.length < 1 ) {
			var message = 'Le champ ' + intitule + ' est obligatoire.';
			//affichage msg
			alert(message);
			// selectionne le champ a modifier
			fld.focus();
			// interrompt le submit
			return false;
		}	
		return true;
	}
	
// Fonction de controle des champs liés

function check_binome(formulaire,champ1,intitule1,champ2,intitule2) {
		var message;
		var fld;
// Creation d'un alias du champ a tester
		var fld1 = document.getElementById(champ1);
		var fld2 = document.getElementById(champ2);

// si champ1 vide et champ2 !vide
		if (fld1.value.length < 1 && fld2.value.length > 0) {
				message = 'Vous devez renseigner le champ ' + intitule1 ;
				// selectionne le champ a modifier
				fld = fld1;
		}
			
// si champ2 vide et champ1 !vide		
			if (fld1.value.length > 0 && fld2.value.length < 1) {
					message = 'Vous devez renseigner le champ ' + intitule2 ;
					// selectionne le champ a modifier
					fld = fld2;
			}
//interrompt la procedure et affiche message si un champ non renseigné
			if(fld){
				alert(message);
				fld.focus();
				// interrompt le submit
					return false;
			}	
				return true;		
	}
	




// Fonction de controle de validation de la saisie

function check_fld(formulaire,champ,format,mini,maxi) {
// Initialisation des variables
	var pb = 0;
	var message = "";
// On affecte a la variable 'RE' le test d'expression reguliere souhaite
//	A	: alphabetique
	if ( format == "A" ) { RE = /^([A-Za-z]+[ ]*[-]*[A-Za-z]*)+$/;}
//	AN	: alphanumerique
	if ( format == "AN" ) { RE = /^[A-Za-zàâäéèêëîïôùûç\s,0-9\-]+$/;}
//	N	: numerique
	if ( format == "NE" ) { RE = /^\d+$/;} //entier
	//if ( format == "ND" ) { RE = /^\d+[.]\d+$/;} //decimal
	//if ( format == "N" ) { RE = /^\d+[.]?\d*$/;}//entier ou decimal
	if ( format == "N" ) { RE = /^\d*[.]?\d*$/;}//entier ou decimal pouvant debuter par '.'
//	CP	: code postal francais (5 chiffres)
	if ( format == "CP" ) { RE = /^\d+[.]\d+$/ ;}
//	D	: Date (xx/xx/xx ou xx/xx/xxxx ou xx-xx-xx ou xx-xx-xxxx)
	//if ( format == "D" ) { RE = /^\d{2}([\/]|[\-])+\d{2}([\/]|[\-])+\d{2}(\d{2})*$/;}	
	//	D	: Date ( xx/xx/xxxx)
		if ( format == "D" ) { RE = /^\d{2}[\/]+\d{2}[\/]+\d{4}$/;}	
//	EMAIL	: email
	if ( format == "EMAIL" ) { RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;}

// Creation d'un alias du champ a tester
	var fld = document.getElementById(champ);

// On ne fera les tests que si le champ est rempli d'au moins un caractere (pas vide)
	if (fld.value.length > 0) {

// Si on ne trouve pas dans le champ l'expression reguliere recherchee
		if (!RE.test(fld.value)) {
				
				switch(format){
					case "A": 
						message = "Ce champ ne peut contenir que des caracteres alphabetiques\n";
					 	break;
					case "AN":
						message = "Ce champ ne peut contenir que des caracteres alphanumeriques\n";
					 	break;
					 case "NE":
					 	message = "Ce champ ne peut contenir que des caracteres numeriques\n";
					 	break;
					 case "ND":
					 	message = "Ce champ ne peut contenir qu\'un nombre decimal\n";
					 	break;
					 case "N":
					 	message = "Ce champ ne peut contenir que des caracteres numeriques\n";
					 	break;
					 case "CP":
					 	message = "Ce champ ne peut contenir que 5 caracteres numeriques\n";
					 	break;
					 case "D":
					 	message = "Ce champ ne peut contenir qu\'une date au format jj/mm/aaaa\n";
					 	break;
					 case "EMAIL":
					        message = "Cette adresse email n'est pas valide\n";				 
				}

// On marque que la saisie n'est pas coherente
			pb = 1;
			}
		if ( format == "D" ){
			var testdate = 0;	
			testdate += check_num_plage(fld.value.substring(0,2),1,31);
			testdate += check_num_plage(fld.value.substring(3,5),1,12);
			testdate += check_num_plage(fld.value.substring(6,10),1900,2100);		
			if(testdate) {
				pb = 1;
				if(message == "")message = "Date invalide";		
			}
		}
               switch(format){
                    case "A":
                       message_mini = 'Vous devez saisir au moins ' + mini + ' caractères.';
                       message_maxi = 'Vous devez saisir moins de ' + maxi + ' caractères.';
			valeuratester=fld.value.length;
                       break;
                    case "AN":
                       message_mini = 'Vous devez saisir au moins ' + mini + ' caractères.';
                       message_maxi = 'Vous devez saisir moins de ' + maxi + ' caractères.';
			valeuratester=fld.value.length;
                       break;
                    case "NE":
                       message_mini = 'Vous devez saisir un nombre supérieur à ' + mini + '.';
                       message_maxi = 'Vous devez saisir un nombre inférieur à ' + maxi + '.';
			valeuratester=fld.value;
                       break;
                    case "ND":
                       message_mini = 'Vous devez saisir un nombre supérieur à ' + mini + '.';
                       message_maxi = 'Vous devez saisir un nombre inférieur à ' + maxi + '.';
			valeuratester=fld.value;
                       break;
                    case "N":
                       message_mini = 'Vous devez saisir un nombre supérieur à ' + mini + '.';
                       message_maxi = 'Vous devez saisir un nombre inférieur à ' + maxi + '.';
			valeuratester=fld.value;
                       break;
                    case "CP":
                       message_mini = 'Vous devez saisir au moins ' + mini + ' caractères.';
                       message_maxi = 'Vous devez saisir plus de ' + maxi + ' caractères.';
			valeuratester=fld.value.length;
                       break;
                    case "D":
                       message_mini = 'Vous devez saisir au moins ' + mini + ' caractères.';
                       message_maxi = 'Vous devez saisir moins de ' + maxi + ' caractères.';
			valeuratester=fld.value.length;
                       break;
                    case "EMAIL":
                       message_mini = 'Vous devez saisir au moins ' + mini + ' caractères.';
                       message_maxi = 'Vous devez saisir moins de ' + maxi + ' caractères.';
			valeuratester=fld.value.length;
               }

// Tests de longueur du champ (nombre de caracteres saisis)
// Si il a ete specifie '0', le test n'est pas effectue
		if ( mini != 0 ) {

// Si la longueur de la saisie est inferieure au minimum demande
			if ( valeuratester < mini ) {
// Envoi d'une alerte
				message += message_mini;
				pb = 1;
				}
			}
// Si la longueur de la saisie est superieure au maximum demande
		if ( maxi != 0 ) {
			if ( valeuratester >= maxi ) {
				message += message_maxi;
				pb = 1;
				}
			}

// Si on a marque qu'il y avait un probleme
		if ( pb == 1 ) {
			alert(message);
			// selectionne le champ a modifier
			fld.focus();
			fld.select();
			}
		}
	}
	
function check_num_plage(num,plancher,plafond) {
	if (num < plancher || num > plafond) return -1;
	return 0;

	}
	
// Functions Check date PPI

function check_format_date(formulaire, chjour, chmois, chan,intitule) {

        var jour = document.getElementById(chjour).value;
        var mois = document.getElementById(chmois).value;
        var an = document.getElementById(chan).value;
        // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
        if (an%4 == 0 && an%100 !=0 || an%400 == 0) fev = 29;
        else fev = 28;

        if (mois=="02" && jour > fev) {
                alert(intitule);
                // selectionne le champ a modifier
                jour.focus();
                // interrompt le submit
                return false; }

        if ((mois=="04" || mois=="06" || mois=="09" || mois=="11") && jour==31) {
                alert(intitule);
                // selectionne le champ a modifier
                jour.focus();
                // interrompt le submit
                return false; }

        return true;
        }

function check_sup_date(formulaire, chjour1, chmois1, chan1, chjour2, chmois2, chan2, intitule) {

        var date1 = document.getElementById(chan1).value + document.getElementById(chmois1).value + document.getElementById(chjour1).value;
        var date2 = document.getElementById(chan2).value + document.getElementById(chmois2).value + document.getElementById(chjour2).value;
        if (date2 < date1) {
                alert(intitule);
                // selectionne le champ a modifier
                document.getElementById(chjour1).focus();
                // interrompt le submit
                return false; }

        return true;
        }

function check_2datecomplete(langue, d1, h1, m1, d2, m2, h2) {

  	var date1=d1.split("/");
  	var date2=d2.split("/");
  	if (langue=='fr') {
  		// jj/mm/aaaa
		datecomplete1=date1[2]+date1[1]+date1[0]+h1+m1;	
		datecomplete2=date2[2]+date2[1]+date2[0]+h2+m2;
	} else {
		// mm/dd/yyyy
		datecomplete1=date1[2]+date1[0]+date1[1]+h1+m1;	
		datecomplete2=date2[2]+date2[0]+date2[1]+h2+m2;
	}
	if (datecomplete1 > datecomplete2) {
                return false; }

        return true;
}
	
function calc_nb_day_transit(formulaire, chjour1, chmois1, chan1, chjour2, chmois2, chan2, chtransit, intitule, min_day, max_day) {
	
	Date1=new Date(document.getElementById(chan1).value, document.getElementById(chmois1).value, document.getElementById(chjour1).value);
	Date2=new Date(document.getElementById(chan2).value, document.getElementById(chmois2).value, document.getElementById(chjour2).value);
	
	var difference= Math.abs(Date2.getTime() - Date1.getTime());
	difference=Math.floor(difference / 1000);
	var nbj = Math.floor(difference / 86400 );
	
	if ((nbj>min_day) && (nbj<max_day)){
		document.getElementById(chtransit).value=nbj;
		return true;
	} else {
		alert(intitule);
		document.getElementById(chtransit).value=0;
		document.getElementById(chjour1).focus();
		return false;
	}
	
	return true;
}

function verif_date_now(formulaire, chjour, chmois, chan, intitule) {

        Date1=new Date(document.getElementById(chan).value, document.getElementById(chmois).value-1, document.getElementById(chjour).value);
	Date2=new Date();

	if (Date1.getTime()<Date2.getTime()) {
		alert(intitule);
		document.getElementById(chjour).focus();
                return false;
        }

        return true;

}

function verif_date_equalnow(formulaire, chjour, chmois, chan, intitule) {

        Date1=new Date(document.getElementById(chan).value, document.getElementById(chmois).value-1, document.getElementById(chjour).value);
        Now=new Date();
	Date2=new Date(Now.getYear(), Now.getMonth(), Now.getDate());
	// Warning : using date without hour and minute
        if (Date1.getTime()<Date2.getTime()) {
                alert(intitule);
                document.getElementById(chjour).focus();
                return false;
        }

        return true;

}

function verif_date_compris(formulaire, chdate, nbjour, intitule) {

	d=document.getElementById(chdate).value;
  	// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  	j = parseInt(d.split("/")[0], 10); // jour
  	m = parseInt(d.split("/")[1], 10); // mois
  	a = parseInt(d.split("/")[2], 10); // année

        Date1=new Date(a, m-1, j);
        Now=new Date();
        Date2=new Date(Now.getYear(), Now.getMonth(), Now.getDate());
	var difference= Date1.getTime() - Date2.getTime();
	difference=Math.floor(difference / 1000);
	var nbj = Math.floor(difference / 86400 );
        // Warning : using date without hour and minute
        if ((nbj>nbjour) || (nbj<0)) {
                alert(intitule);
                document.getElementById(chdate).focus();
                return false;
        }

        return true;

}

function verif_date_2years(formulaire, chjour, chmois, chan, intitule) {

        Date1=new Date(document.getElementById(chan).value, document.getElementById(chmois).value-1, document.getElementById(chjour).value);
	Now = new Date();
        Date2=new Date(Now.getYear()+2, Now.getMonth(), Now.getDate());

        if (Date1.getTime()>=Date2.getTime()) {
                alert(intitule);
                document.getElementById(chjour).focus();
                return false;
        }

        return true;

}


function isDate(langue, d) {
  // Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
  // Par Romuald
  
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  
  if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux
 
  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  if (langue=="fr") {
	  j = parseInt(d.split("/")[0], 10); // jour
	  m = parseInt(d.split("/")[1], 10); // mois
	  a = parseInt(d.split("/")[2], 10); // année
  } else {
	  j = parseInt(d.split("/")[1], 10); // jour
	  m = parseInt(d.split("/")[0], 10); // mois
	  a = parseInt(d.split("/")[2], 10); // année
  }
  // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  if (a < 1000) {
    if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else a+=1900;
  }
  // Définition du dernier jour de février
  // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;
 
  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}

function isShortDate(langue, d) {

	Now=new Date();
	var dc=	d+"/"+(Now.getYear()+1900);
	return(isDate(langue,dc));
}

function check1week(d, h, m) {

  var Nextweek=new Date();
  Nextweek.setDate(Nextweek.getDate() + 7);
  tableau=d.split('/');
  var vdate=new Date(tableau[2], tableau[1]-1, tableau[0], h, m);
  if (vdate> Nextweek) return false;
  return true;

}

function checkdatenow(d) {

  Now=new Date();
  Date2=new Date(Now.getYear(), Now.getMonth(), Now.getDate());
  tableau=d.split('/');
  var vdate=new Date(tableau[2], tableau[1]-1, tableau[0]);
  if (vdate> Date2) return false;
  return true;

}

function checkdate10years(d) {

  Now=new Date();
  Date2=new Date(Now.getYear()-10, Now.getMonth(), Now.getDate());
  tableau=d.split('/');
  var vdate=new Date(tableau[2], tableau[1]-1, tableau[0]);
  if (vdate> Date2) return true;
  return false;

}

function check_weight(formulaire,champ1,champ2,message) {

// Creation d'un alias du champ a tester
		var ptca = document.getElementById(champ1);
		var genrevehic = document.getElementById(champ2);
		erreur=0;
		message='Le PTCA indiqué est en dehors de la plage autorisée pour cette catégorie de véhicule.\n S\'il s\'agit d\'une erreur de frappe, veuillez le modifier, sinon veuillez contacter votre gestionnaire';
		switch(genrevehic.value) {
			case '1' :
				if (ptca.value<0 || ptca.value>3500)  erreur=1;
				break;
			case '2' :
				if (ptca.value<0 || ptca.value>3500)  erreur=1;
				break;
			case '3' :
				if (ptca.value<=3500 || ptca.value>=19000)  erreur=1;
				break;
			case '4' :
				if (ptca.value<19000) erreur=1;
				break;
		}
		if (erreur==1) {
			alert(message);
			ptca.focus();
			// interrompt le submit
			return false;
		}	
		return true;
}

// Remove spaces into a string

function removeSpaces(string) {
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	tstring += splitstring[i];
	return tstring;
}

// Remove spaces into a string

function numericUS(string) {
	var tstring = "";
	var tstring2 = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	  tstring += splitstring[i];
	for(i = 0; i < tstring.length; i++) 
	  if (tstring.charAt(i)==",") tstring2+="."; else tstring2+=tstring.charAt(i);
	return tstring2;
}



