var nsx=0, nsy=0;
var x=0; var y=150;
var yplus=0;
var jours_mois,pos_premier,c,l,p;

var top=0,droite=0;
var caractere_invalide;
var isNav = (navigator.appName == "Netscape");

var Caractere_Valide = new Array(" ","&","'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","\\","_","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","|","\n","\r","\t");
var Caractere_a_remplacer = new Array("a","à","ä","â","","c","ç","","","","e","é","ë","è","ê","i","ï","î","ì","","o","ò","ö","ô","","u","ü","û","ù","","y","ÿ");


function RecupMouse(e){
	x=e.pageX;
	y=e.pageY;
}
function NbJourMois(mois, annee)
{
    switch(mois)
    {
        case 2: return ( ((annee % 4 == 0) && ((! (annee % 100 == 0)) || (annee % 400 == 0) ) ) ? 29 : 28);break;
        case 4:; case 6:; case 9:; case 11: return 30;break;
        case 1:; case 3:; case 5:; case 7:; case 8:; case 10:; case 12: return 31;break;
        default: return -1;break;
    }
}

function changeDate (DateIn, Nb, Type)
{
/***********************************************
	DateIn = Date en entrée.
	Nb = Nombre à ajouter ou soustraire.
    Type = "J,M,A" => "Jour, Mois, Annee"
***********************************************/
    var annee = DateIn.getFullYear();
    var mois = DateIn.getMonth() + 1;
    var jour = DateIn.getDate();
    
    if (Type == "J")
    {
        var DateMili = DateIn.setTime(DateIn.getTime() + (86400000 * Nb));
        return DateIn;
    }
    
    if (Type.toUpperCase().substring(0,1) == "A")
        annee += Nb;
    
    if (Type.toUpperCase().substring(0,1) == "M")
    {
        mois += Nb;
        if (mois < 1) 
        {
            mois += 12;
            annee -= 1; 
        }
        if (mois > 12) 
        {
            mois -= 12;
            annee += 1; 
        }
    }
    
    if (jour > NbJourMois(mois,annee))
        jour = NbJourMois(mois,annee);
    return new Date(annee,mois-1,jour,DateIn.getHours(),DateIn.getMinutes(),DateIn.getSeconds());
}


function verif_Caractere(lettre){
	var i=0,j=0, trouve=false,res='';
	while (j<Caractere_a_remplacer.length && trouve==false){
		if (lettre==Caractere_a_remplacer[j]){
			res=Caractere_a_remplacer[parseInt(j/5)*5];
			trouve=true;
		}else{
			j++;
		}
	}
	if(res==''){
		while (i<Caractere_Valide.length && trouve==false){
			if (lettre==Caractere_Valide[i]){
				res=lettre;
				trouve=true;
			}else{
				i++;
			}
		}
		if(trouve==false){
			if(caractere_invalide.indexOf(lettre)<0){
				caractere_invalide+=lettre+',';
			}
			res=lettre;
		}
	}
	if (res=="'"){
		return '\\\''
	}else{
		if (res=="\\"){
			return '\\\\'
		}else{
			return res;
		}
	}
}

function remplace_Caractere(lettre){
	var j=0, trouve=false,res='';
	while (j<Caractere_a_remplacer.length && trouve==false){
		if (lettre==Caractere_a_remplacer[j]){
			res=Caractere_a_remplacer[parseInt(j/5)*5];
			trouve=true;
		}else{
			j++;
		}
	}
	if (res=="'"){
		return '\\\''
	}else{
		if (res=="\\"){
			return '\\\\'
		}else{
			if(trouve==false) res=lettre;
			return res;
		}
	}
}

function replaceSubstring(inputString, fromString, toString) {
   // Goes through the inputString and replaces every occurrence of fromString with toString
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { // If the string being replaced is not a part of the replacement string (normal situation)
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { // String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      // Find a string that doesn't exist in the inputString to be used
      // as an "inbetween" string
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      } // Keep on going until we build an "inbetween" string that doesn't exist
      // Now go through and do two replaces - first, replace the "fromString" with the "inbetween" string
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      // Next, replace the "inbetween" string with the "toString"
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } // Ends the check to see if the string being replaced is part of the replacement string or not
   return temp; // Send the updated string back to the user
} // Ends the "replaceSubstring" function

function verifsaisie(champs){
		var valeur_champ,j,nouvelle_valeur;
		var noprob=true;	
		valeur_champ=eval('document.'+champs+'.value');
		nouvelle_valeur='';
		for (j=0;j<valeur_champ.length;j++){
			nouvelle_valeur+=remplace_Caractere(valeur_champ.charAt(j));
			if (remplace_Caractere(valeur_champ.charAt(j))!=valeur_champ.charAt(j)){
				noprob=false;
			}
		}
		
		if(noprob!=true){
			nouvelle_valeur=replaceSubstring(nouvelle_valeur,"'","\\'");
			eval("document."+champs+".value=\'"+nouvelle_valeur+"\'");
		}
}

function verifsaisiefinale(champs){
		var valeur_champ,j,nouvelle_valeur;
		var noprob=true;	
		valeur_champ=eval('document.'+champs+'.value');
		nouvelle_valeur='';
		for (j=0;j<valeur_champ.length;j++){
			nouvelle_valeur+=verif_Caractere(valeur_champ.charAt(j));
			if (verif_Caractere(valeur_champ.charAt(j))!=valeur_champ.charAt(j)){
				noprob=false;
			}
		}
		if(noprob!=true){
			//nouvelle_valeur=replaceSubstring(nouvelle_valeur,"'","\\'");
			//alert(nouvelle_valeur);
			eval("document."+champs+".value=\'"+nouvelle_valeur+"\'");
		}
		return noprob;
}

function LTrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(0)) != -1) {
      var j=0, i = s.length;
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;
      s = s.substring(j, i);
   }
   return s;
}

function RTrim(str)
{
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
      var i = s.length - 1;
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      s = s.substring(0, i+1);
   }
   return s;
}

function trim(str)
{
   return RTrim(LTrim(str));
}

function test_Objet(objet) {
	if (null == objet) {
		return false;
	}
	if ("undefined" == typeof(objet) ) {
		return false;
	}
	return true;
}

function valeur_Objet_Undefined(objet) {
	
	if (null == objet) {
		return '';
	}
	if ("undefined" == typeof(objet) ) {
		return '';
	}
	if ("undefined" == objet ) {
		return '';
	}
	return objet;
}

function ValidDate(objetDate){
	d=eval(objetDate + '.value');
    if (trim(d) == "") 
        return true;   
    e = new RegExp("^[0-9]{2}\/[0-9]{2}\/([0-9]{4})$");
    if (!e.test(d)){
		alert('Le format de la date est incorrect. (jj/mm/aaaa)');
		return false;	
	}
	tab=d.split("/");
    j = parseInt(tab[0],10); 
    m = parseInt(tab[1],10); 
    a = parseInt(tab[2],10); 
    if (a < 1900) {
		alert('L\'année est incorrecte.');
		eval(objetDate + '.focus()');
		return false;
    }
    if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
    else fev = 28;
    nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
    if(m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] && d.length==10){
		return true;
	}else{
		alert('Le format de la date est incorrect. (jj/mm/aaaa)');
		eval(objetDate + '.focus()');
		return false;		
	}
}

function ValidMail(champ){
	var adrMail='';
	adrMail=eval(champ + '.value');
// déclaration et initialisation des variables
adrMailLength=adrMail.length; // longueur de la chaîne adrMail
caractOk="_.-0123456789abcdefghijklmnopqrstuvwxyz"; // caratères corect d'une adresse mail
var posArrobas=adrMail.indexOf('@',1); // position du premier Arrobas
var posPoint=adrMail.lastIndexOf('.',adrMailLength); // position du dernier point
var posCaractFaux=adrMail.indexOf('..',posArrobas+1); // position d'un caractère faux ('..' ou ' ')
var caract=0; // caractère extrait de la chaîne adrMail (utilisée par les boucles while)
var caractFaux=adrMail.charAt(0)+adrMail.charAt(posArrobas-1)+adrMail.charAt(posArrobas+1)+adrMail.charAt(posPoint-1);
var posCaract=0; // position du caractère à extraire de la chaîne adrMail (utilisée par les boucles while)
var posCaractOk=0; // position du caractère extrait de la chaîne adrMail (utilisée par les boucles while)
var posCaractNon=-1;
var retour=false; // l'adresse e-mail est considérée comme fausse au début

// début du teste
// s'il n'existe pas de caractère '..' alors on teste s'il existe un espace dans la chaîne adrMail
if (posCaractFaux!=-1 || adrMail.indexOf(' ',0)!=-1 || adrMail.indexOf('--',0)!=-1 || adrMail.indexOf('__',0)!=-1) {
    posCaractFaux=0;
}

// Teste les points ou - ou _ au début de l'adrMail, autour de l'arrobas et autour du dernier point
for (posCaract;posCaract<4;posCaract++) {
     caract=caractFaux.charAt(posCaract);
     posCaractNon=caractOk.lastIndexOf(caract,2);
     if (posCaractNon!=-1) {
        posCaractFaux=0;
        break;
     }
}
// si l'adresse mail contient au moins 1 caractère et qu'elle comporte un arrobas
// et qu'elle comporte un point et que l'arrobas est avant le dernier point
// et qu'elle ne contient pas de '..' ou d'espace et que après le dernier point il y est 2,3 ou 4 caractères
// et qu'il n'y est pas de point autour de l'arrobas et que l'adresse ne commence pas par un point
// Alors
if (adrMailLength>0 && posArrobas!=-1 && posPoint!=-1 && posArrobas<posPoint && posCaractFaux==-1 && adrMailLength-posPoint-1>=2 && adrMailLength-posPoint-1<=4) {

    // extraction d'un caractère et teste s'il existe dans la chaîne "_.-0123456789abcdefghijklmnopqrstuvwxyz"
    // S'il n'existe pas alors posCaract=-1 donc au prochain 'tour' on passe aux autres boucles (qui ne s'effecturont pas)
    // Si il existe on continue la boucle jusqu'au caractère avant l'arrobas et on passe à la boucle while suivante

    adrMail=adrMail.toLowerCase();
    posCaract=0;

    while (posCaract<posArrobas && posCaractOk!=-1) {
          caract=adrMail.charAt(posCaract);
          posCaractOk=caractOk.indexOf(caract,0);
          posCaract++;
    }
    posCaract++; // on passe l'arrobas

    // sur le même principe qu'au dessus mais pour la partie entre l'arrobas et le dernier point
    // le test ce fait sur les caractères ".-0123456789abcdefghijklmnopqrstuvwxyz"
    // caractOk.indexOf(caract,1) on ne teste plus l'underscore
    while (posCaract<posPoint && posCaractOk!=-1) {
          caract=adrMail.charAt(posCaract);
          posCaractOk=caractOk.indexOf(caract,1);
          posCaract++;
    }
    posCaract++; // on passe le point

    // sur le même principe qu'au dessus mais pour la partie entre le dernier point et la fin
    // le test ce fait sur les caractères "abcdefghijklmnopqrstuvwxyz"
    // caractOk.indexOf(caract,13) on ne teste plus que des lettres
    while (posCaract<adrMailLength && posCaractOk!=-1) {
          caract=adrMail.charAt(posCaract);
          posCaractOk=caractOk.indexOf(caract,13);
          posCaract++;
    } // fin de la boucle while
    
    // durant le parcour de l'adresse mail si n'y avait pas de caractère interdit
    // posCaractOk a changer plusieurs fois de valeur mais na jamais eu la valeur -1
    // donc l'adresse est bonne
    if (posCaractOk!=-1) {
       retour=true;
    }
}
if(retour==false){
	eval(champ + '.focus()');
}
return retour; // renvoi le résultat (true ou false)
} // fin de la fonction 

if(isNav){
	window.captureEvents(Event.MOUSEClick);
}
