// Vérifie un nombre décimal
function IsDecimal(champ, libelle) {
    // Paramétrage
    precision  = 2;
    positif    = false;
    
    // Vérifie la numérotation avec un "." comme séparateur
    tmp_val = champ.value;
    p       = ',';
    valeur  = tmp_val.replace(p, '\.');
    
    // Déclaration objet Number
    var valeur = new Number(valeur);
    
    // Vérifie qu'il s'agit d'un nombre décimal
    if (!parseInt(valeur) && (valeur != 0)) {
        alert("Le champ \"" + libelle +"\" doit être un nombre décimal.");
        champ.focus();
        return false;
    }
    
    // Vérifie valeur positive
    if ( (positif) && (valeur<10) ) {
        alert("Le champ \"" + libelle +"\" doit être un nombre décimal positif.");
        champ.focus();
        return false;
    }
    
    // Limite le nombre de chiffre après la virgule à la précision spécifiée
    valeur = valeur.toFixed(precision);
    
    // Retour du résultat
    champ.value=valeur;
    return true;
}

// Vérifie un nombre entier
function IsNumber(champ)
{
    if (champ.value != parseInt(champ.value) || champ.value=="") {
        alert("Le champ " + champ.name +" doit être un nombre entier.");
        champ.value = "";
        champ.focus();   
        return false;   
    }
    else {
        return true;
   }
}

// Pour les champs obligatoires
function IsEmpty(champ, nom) {
	str=champ.value;
	
	if (str == "") {
 		alert("Merci de saisir une valeur pour le champ \""+ nom +"\"");
 		champ.focus();
 		return(false);
	}
	
	return true;
}

// Pour les champs devant être communs
function IsEqual(val1, val2, nom1, nom2)
{
	value1 = val1.value;
	value2 = val2.value;
	
	if (value1 != value2)
	{
		alert("La valeur du champ \""+ nom1 +"\" ne correspond pas à celle du champ \""+ nom2 +"\". Merci de vérifier");
		val2.focus();
		return false;
	}
	
	return true;
}


// Valide un email
function IsMail(champ)
{
	str = champ.value;
    langue = GetValeurCookie("cardilangue");
    
    switch (langue) {
        case "en" : error = "Invalid email adress";
                    break;
        case "es" : error = "Invalid email adress";
                    break;
        case "it" : error = "Invalid email adress";
                    break;
        default   : error = "Votre adresse email est invalide.";
                    break;
    }

	if (str.indexOf('@', 0) == -1)
	{
		alert(error);
		champ.focus();
		return false;
	}

	if (str.indexOf('.', 0) == -1)
	{
		alert(error);
		champ.focus();
		return false;
	}
	
	return true;
}


// Vérifie la longueur minimale en nombre de caractère d'un champ
function MinLength(champ, size) {
	$str = champ.value;
	
	if (str.length < size) {
		alert("Le champ \"" + champ.name + "\" doit comporter au minimum " + size + " caractères");
		champ.focus();
		return false;
	}
	
	return true;
}

// Compte le nombre de caractère d'un textarea et bloque la saisie lorsque
// "max" est atteint
// E.I. : <textarea name="description" cols="50" rows="10" name="resume" accesskey="r" onFocus="Compter(this, 1000, formulaire.compteur)" onKeyPress="Compter(this, 1000, formulaire.compteur)" onKeyUp="Compter(this, 1000, formulaire.compteur)" onBlur="Compter(this, 1000, formulaire.compteur)"></textarea> <input type="text" readonly name="compteur" size="5" onfocus="blur()" value="1000"> caractères restants
function Compter(target, max, nomchamp)
{
	StrLen = target.value.length;

	if (StrLen > max ) {
		target.value = target.value.substring(0, max);
		CharsLeft = max;
	}
	else {
		CharsLeft = StrLen;
	}

	nomchamp.value = max - CharsLeft;
}


// Renvoie à la page "location" si l'action spécifiée par "msg" a été 
// confirmée
function confirmer(location, msg) {
	if (confirm(msg)) {
		window.document.location.href = location;
	}
}

// Ouvre une popup centrée
function Openwindow(page,largeur,hauteur,options) {
	var top	 = (screen.height-hauteur) /2;
	var left = (screen.width-largeur)  /2;
	fenetre = window.open(page, "popup", "top=" + top + ",left=" + left + ",width=" + largeur + ",height=" + hauteur + "," + options);
    fenetre.focus();
}

// Vérification d'une date
// CheckDate(theform.jour, theform.mois, theform.annee); // et non CheckDate(12, 04, 1979)
function CheckDate1(jour,mois,annee) {
    // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
    var amin=1970; // année mini
    var amax=2037; // année maxi
    var j=jour.value;
    var m=mois.value;
    var a=annee.value;
    
    if ( ((isNaN(j))||(j<1)||(j>31)) ) {
        alert("La date saisie semble incorrecte. Merci de vérifier.");
        jour.focus();
        return(false);
    }
    
    if ( ((isNaN(m))||(m<1)||(m>12)) ) {
        alert("La date saisie semble incorrecte. Merci de vérifier.");
        mois.focus();
        return(false);
    }
    
    if ( ((isNaN(a))||(a<amin)||(a>amax)) ) {
        alert("La date saisie semble incorrecte. Merci de vérifier.");
        annee.focus();
        return(false);
    }
    
    ok=1;
    
    if (ok==1) {
        var d2=new Date(a,m-1,j);
        j2=d2.getDate();
        m2=d2.getMonth()+1;
        a2=d2.getFullYear();
        
        if (a2<=100) {a2=1900+a2; alert(a);}
        
        if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            alert("La date saisie semble incorrecte. Merci de vérifier.");
            return(false);
            verif=1;
        }
        else {
            verif=0;
        }
    }
    
    if (verif==1) {
        return(false);
    }
    else {
        return(true)
    }
}



// On ne passe plus la date décomposée en jour, mois, année mais directement au format jj/mm/aaaa.
function CheckDate2(Date_var) {
    // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
    var amin=1970; // année mini
    var amax=2037; // année maxi
    var DateData = Date_var.value;
    
    pos_first_slash = DateData.indexOf("/");
    pos_last_slash  = DateData.lastIndexOf("/");
   
    var j = DateData.substring(0,pos_first_slash);
    var m = DateData.substring( (pos_first_slash +1), pos_last_slash);
    var a = DateData.substring( (pos_last_slash +1 ) , DateData.length);
  
    if (((isNaN(j))||(j<1)||(j>31)) ) {
        alert("La date saisie semble incorrecte. Merci de vérifier.");
        Date_var.focus();
        return(false);
    }
    
    if ( ((isNaN(m))||(m<1)||(m>12)) ) {
        alert("La date saisie semble incorrecte. Merci de vérifier.");
        Date_var.focus();
        return(false);
    }
    
    if ( ((isNaN(a))||(a<amin)||(a>amax)) ) {
        alert("La date saisie semble incorrecte. Merci de vérifier.");
        Date_var.focus();
        return(false);
    }
    
    ok=1;
    
    if (ok==1) {
        var d2=new Date(a,m-1,j);
        j2=d2.getDate();
        m2=d2.getMonth()+1;
        a2=d2.getFullYear();
        
        if (a2<=100) {a2=1900+a2; alert(a);}
        
        if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            alert("La date saisie semble incorrecte. Merci de vérifier.");
            Date_var.focus();
            return(false);
            verif=1;    
        }
        else {
            verif=0;
        }
    }
    
    if (verif==1) {
        return(false);
    }
    else {
        return(true)
    }
}


// Masque de saisie pour les dates
// Ex d'un appel : <input type="text" size="12" maxlength="11" value="" name="date_deb" onFocus="FormatDate(this)" onKeyPress="FormatDate(this)" onKeyUp="FormatDate(this)" onBlur="FormatDate(this)">
function FormatDate(champ_date) {
    var value_date = champ_date.value;
    
    if ( (value_date.length == 2) && (value_date.indexOf("/") == -1) ) {
        value_date = value_date  + "/";
        champ_date.value = value_date;
    }
    
    if ( (value_date.length == 5) && (value_date.lastIndexOf("/") == 2) ) {
        value_date = value_date  + "/";
        champ_date.value = value_date;
    }
    
    // Empêche la double saisie d'un "/"
    p = "\/\/";
    if (value_date.match(p)) {
        value_date = value_date.replace(p, "/");
        champ_date.value = value_date;
    }
    
}


/*
La fonction ForbiddenChar permet d'interdire une liste de caractère d'une zone de saisie.
Vous définissez dans une variable CharArray de type tableau la liste des caractères interdits. Ensuite, sur l'évènement javascript onChange (par exemple), vous placez l'appel à la fonction.
Exemple d'utilisation :
<script>
var CharArray = new Array("\"", "'", ",");
</script>

<input type="text" name="test" onChange="ForbiddenChar(this, CharArray)">
*/

function ForbiddenChar(champ, CharArray) {
    Val = '';
    // Parcours du tableau des caractères interdits
    for (i=0; i<CharArray.length;i++) {
        // Parcours caractère par caractère de la chaine à vérifier
        for (z=0; z<champ.value.length; z++) {
            
            if (champ.value.charAt(z) != CharArray[i]) {
                Val = Val + champ.value.charAt(z);
            }
            
        }
    }
    
    champ.value = Val;
}


/************************ Fonctions Cookies ***********************/

// Function DateExpiration
// fixe la date d'expiration
function DateExpiration (DateExp) {
    var aujourdhui = new Date(0);
    var aujourdhuidate = aujourdhui.getTime();
    
    if (aujourdhuidate > 0)
        DateExp.setTime (DateExp.getTime() - aujourdhuidate);
}



// Function FixeCookie
// pour créer ou modifier un cookie
function FixeCookie (nom,valeur,expire,path,domaine,securise) {
    document.cookie = nom + "=" + escape (valeur) + ((expire) ? "; expires=" + expire.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domaine) ? "; domain=" + domaine : "") + ((securise) ? "; secure" : "");
}



// Function SupprCookie
// Supprime un Cookie
function SupprCookie (nom,path,domaine) {
    if (GetValeurCookie(nom)) {
        document.cookie = nom + "=" + ((path) ? "; path=" + path : "") + ((domaine) ? "; domain=" + domaine : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}



// Function ValeurCookie
// Utiliser par GetValeurCookie
function ValeurCookie (Pos) {
    var endstr = document.cookie.indexOf (";", Pos);
    
    if (endstr == -1)
        endstr = document.cookie.length;
    
    return unescape(document.cookie.substring (Pos, endstr));
}



// Function GetValeurCookie
// pour récupérer la valeur d'un cookie
function GetValeurCookie (nom) {
    var cookielength = document.cookie.length;
    var arg = nom + "=";
    var arglength = arg.length;
    var i = 0;

    while (i < cookielength) {
        var j = i + arglength;

        if (document.cookie.substring(i, j) == arg)
            return ValeurCookie (j);

        i = document.cookie.indexOf(" ", i) + 1;
        
        if (i == 0) break; 
    }

    return null;
}

/*
Appel des fonctions:

<script language="javascript">


<!--

// Définition de la date d'expiration
var expdate = new Date ();
DateExpiration (expdate);
expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000)); // expire dans 24H 

// Mise en place des cookies
FixeCookie ("MonCookie", "MonTest", expdate);
FixeCookie ("Temporaire", "Ce cookie est temporaire");
FixeCookie ("Domaine", "Ce cookie est valable sur tout le site",null,"/");
FixeCookie ("Secure", "Ce cookie nécessite une connection sécurisée",expdate,"/",null,true);
FixeCookie ("Mort", "Ce Cookie doit disparaitre!");

// Suppression d'un cookie
SupprCookie ("Mort");

// Lecture des cookies
var MonCookie = GetValeurCookie("MonCookie");
var Temporaire = GetValeurCookie("Temporaire");
var Domaine = GetValeurCookie("Domaine");
var Mort = GetValeurCookie("Mort");

// Affichage du résultat
document.write ("MonCookie = " + MonCookie + "<BR>");
document.write ("Temporaire = " + Temporaire + "<BR>");
document.write ("Domaine = " + Domaine + "<BR>");
document.write ("Mort = " + Mort + "<BR>");


//-->

</script>
*/

function Author() {
    alert("Ce module d'administration exceptionnel, à l'architecture nouvelle et aux couleurs chatoyantes, est une réalisation du vénérable et non moins vénéré Olivier VEUJOZ.\n\nQu'il en soit ici remercié :o)");
}

function copypaste(champ) {
    champ.focus();
    champ.select();
    therange=champ.createTextRange();
    therange.execCommand("Copy");
}
