// FONCTIONS UTILES 

  
// Complete une date pour qu'elle soit au format JJ/MM/AAAA 
// 1.01.1, 1/1/01, 01-01-01, 010101, 01012001 donneront tous 01/01/2001 
// dans le cas ou l'annee n'est pas completement renseignee, 
// celle-ci est deduite en fonction de l'annee en cours 
// (ex: 2/12/54 -> 02/12/1954 et 2/12/4 -> 02/12/2004) 
String.prototype.completeDate = function() { 
    var chain = this; 
    if (/^\d+$/.test(chain) && (6 == chain.length || 8 == chain.length)) 
    chain=chain.substring(0,2)+"/"+chain.substring(2,4)+"/"+chain.substring(4,chain.length);
    var reg = /^(\d{1,2})[\/\.\\-](\d{1,2})[\/\.\\-](\d{1,4})$/; 
    if (reg.test(chain)) { 
        chain = chain.replace(reg, "$1/$2/$3"); 
        var tab = chain.split("/"); 
        for (var i = 0; i < 2; i++) 
            tab[i] = eval(tab[i]) > 9 ? tab[i] : "0" + eval(tab[i]); 
        if (4 != tab[2].length) { 
            var ObjetDate = new Date(); 
            var year = new String(ObjetDate.getFullYear()); 
            if (eval(tab[2]) > eval(year.substring(2,4))) 
                year = eval(year.substring(0,2) - 1) + year.substring(2,4); 
            tab[2] = year.substring(0, 4 - tab[2].length) + tab[2]; 
        } 
        return tab.join("/"); 
    } 
    return chain; 
} 
  
// Remplace toutes les occurences d'une chaine 
String.prototype.replaceAll = function(search, repl) { 
    var str = this; 
    while (str.indexOf(search) != -1) 
       str = str.replace(search, repl); 
    return str; 
} 
  
// Supprime les espaces de debut et de fin de chaine 
String.prototype.trim = function() { 
    return this.replace(/(^\s*)|(\s*$)/g, ""); 
} 
  
  
// VERIFICATION DE CHAINES DE CARACTERES 
  
// Date au format JJ/MM/AAAA (a utiliser eventuellement avec completeDate()) 
// Verifie si la date existe. 
String.prototype.isDate = function() { 
    if (/^\d{2}[\/]\d{2}[\/]\d{4}$/.test(this)) { 
        var dat1 = this.split("/"); 
				var date = new Date();
				var annee = date.getFullYear();
				//if ((dat1[2] < annee-98) || (dat1[2] > (annee-18)))
					//return false;
        var dat2 = new Date(dat1[2], dat1[1] - 1, dat1[0]); 
        return (dat2.getDate() == dat1[0] && dat2.getMonth() == dat1[1]-1 && dat2.getFullYear() == dat1[2]); 
    } 
    return false; 
} 


// -------------------------------------------

// Sépare les jours, les mois et les années dans une date de type "22/05/1981"
// Renvoye le tout dans un tableau de taille 3
function DecomposeDate(LeParam1){ 
	LeRetour = new Array(3);
	LeJour="";
	LeMois="";
	LeAnnee="";
	
	// Extraction du jour
	i=0;
	while((LeParam1.charAt(i)!="/")&&(i<10)){
		LeJour+=LeParam1.charAt(i);
		i++;
	}
	if(LeJour.charAt(0)=="0"){
		LeJour=LeJour.charAt(1);
	}
	LeParam1=LeParam1.substring(i+1,LeParam1.length);
	
	// Extraction du mois
	i=0;
	while((LeParam1.charAt(i)!="/")&&(i<10)){
		LeMois+=LeParam1.charAt(i);
		i++;
	}
	if(LeMois.charAt(0)=="0"){
		LeMois=LeMois.charAt(1);
	}
	LeParam1=LeParam1.substring(i+1,LeParam1.length);
	
	// Extraction de l'année
	LeAnnee=LeParam1;
	LeRetour[0]=LeJour;
	LeRetour[1]=LeMois;
	LeRetour[2]=LeAnnee;
	return LeRetour;
}

// Renvoye une date en format anglais avec le séparateur choisi "02/03/1981" -> "1981-3-2"
// Le premier paramètre est la date a convertir, le second est le caractère de séparation choisi
function DateAnglaise(LeParam1,LeParam2){
	LaDate = new Array(3);
	LaDate = DecomposeDate(LeParam1);
	
	LeRetour = LaDate[2]+LeParam2+LaDate[1]+LeParam2+LaDate[0];
	return LeRetour;
}

// Renvoi true si la date2 est inferieur a date1 le nombre de mois nbmois
function comparerDateMois(date1, date2, nbmois) {
	
	Date1Arr = DecomposeDate(date1);
	DateSup = new Date(Date1Arr[2], Date1Arr[1] - 1 + nbmois, Date1Arr[0]);
	
	DateSupString = DateSup.getDate()+"/"+(DateSup.getMonth()+1)+"/"+DateSup.getFullYear();
	
	if (ComparerDates(DateSupString, date2) == 1) {
		return true;
	} else {
		return false;
	}
}

// Compare 2 dates au format jj/mm/aaaa
// Renvoye 0 si égalité, 1 si la première est supérieure, sinon 2
function ComparerDates(LeParam1,LeParam2){
	var LeParam1 = DateAnglaise(LeParam1,"/");// Ne pas oublier d'utiliser cette fonction
	// pour convertir en date anglaise, sinon le 05/07/2003 sera compris "7 mai 2003" par JavaScript
	
	var LeParam2 = DateAnglaise(LeParam2,"/");
	LeParam1 = Date.parse(LeParam1);
	LeParam2 = Date.parse(LeParam2);
	
	if (LeParam1 == LeParam2) { 
		return 0;
	}

	if (LeParam1 > LeParam2){
		return 1;
	}else{
		return 2;
	}
}

// non utilisee
function isDateValid(saisie) {
if (saisie == "") return false;
saisie = (saisie).split("/")
if ((saisie.length != 3) || isNaN(parseInt(saisie[0])) || isNaN(parseInt(saisie[1])) || 

isNaN(parseInt(saisie[2]))) return false
var laDate = new Date(eval(saisie[2]),eval(saisie[1])-1,eval(saisie[0]))
var annee = laDate.getYear()
if ((Math.abs(annee)+"").length < 4) annee = annee + 1900
return ((laDate.getDate() == eval(saisie[0])) && (laDate.getMonth() == eval(saisie[1])-1) && (annee 

== eval(saisie[2])))
}

  
// Caracteres alphabetiques (accents pris en charge + espaces)
String.prototype.isAlpha = function() {
    return /^[A-Za-zÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôùû,'_\-]+$/.test(this);  
}
 
// Caracteres alphanumeriques (+ accents + espaces)
String.prototype.isAlphaNum = function() {
    return /^[\wÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôùû,'_/\-.:?!#\s]+$/.test(this); 
} 
  
// Caracteres numeriques (= nombre positif) 
String.prototype.isNumeric = function() { 
    return /^\d+$/.test(this); 
} 
  
// La chaine represente un nombre (positif ou negatif) 
String.prototype.isNumber = function() { 
    return /^[-]?\d+$/.test(this); 
} 
  
// La chaine n'est pas constituee que de caracteres d'espacement 
String.prototype.isNotEmpty = function() { 
    return !/^\s*$/.test(this); 
} 
  
// E-mail (verifie juste que l'adresse est conforme puisque l'utilisateur peut toujours 
// s'arranger pour donner une fausse adresse, ou une adresse temporaire...;-) 
String.prototype.isEmail = function() { 
    return /^[\w\._-]+@[\w-]{2,}[.][A-Za-z]{1,6}$/.test(this);
} 
 
// Numero de telephone (formats: 0NNNNNNNNN, 0N-NN-NN-NN-NN, 
// 0N.NN.NN.NN.NN et 0N NN NN NN NN) 
String.prototype.isNoTel = function() { 
		return /^[0-9\s\(\)\+\-]+$/.test(this); 
}  

