// * 	- 13 Novembre 2006	- CEUG - Remplacement du caractère # par par le caractère µ
// * 	- 16 Mai 2007 		- Conversion hexa pour éviter les caractères spéciaux
// Définition des clef de cryptage/decryptage 	
var str_Clef = "arsoedecaen2004jblamarckherouvillesaintclair14000";
var str_Pivot = "synel2003";
   
function CryptMdpJs(str_Mdp) { 
	  t="";
	   
	  // on découpe la phrase en morceaux de même longueur que la clef
	  k = str_Mdp.length;      
	  k2 = str_Clef.length;  
	  nb = Math.ceil(k/k2);   
	  m=0;
	      
	  // pour chaque morceau
	  for(i=1;i<=nb;i++) {
	     
	     if (k >= k2) {
			a = str_Mdp.substr(m,k2);		  				
			k = k - k2;
			m = m + k2;
	      }
	      else {
			a = str_Mdp.substr(m,k); 	
			m = m + k;		
	      } 
	      
	      // pour chaque lettre du morceau
	      for(j=0;j<a.length;j++) {		
	         // on crypte : donne un numérique correspondant a l unicode du caractère à la position j  ==>charCodeAt(j)
	         c = a.charCodeAt(j)- str_Clef.charCodeAt(j)+ str_Pivot.charCodeAt();
	         
	         // on recompose la chaîne : donne le caractère correspondant a la valeur unicode c ==> fromCharCode(c)
	         t += String.fromCharCode(c);
	      }
	  }	       
	   	
	 // 16/05/07 - Conversion hexa pour éviter les caractères spéciaux
	 t = t.replace(/[ ]/g,"+") 
	 t = escape(t);
	      	
	 // Remplace le caractère ? par µ63 et & par µ38 (valeur ascii plus µ)  		
	 var aRemplacer = /\?/g; 
	 t = t.replace(aRemplacer, "µ63") 
	 aRemplacer = /\&/g; 
	 t = t.replace(aRemplacer, "µ38") 
	
	// Retourne la nouvelle chaine
	return t;       
}


function DecryptMdpJs(str_Mdp) {
   	t="";
      
   	// Remplace le caractère µ63 par "?"
   	var aRemplacer = /\µ63/g; 
	str_Mdp = str_Mdp.replace(aRemplacer,"?");

   	// Remplace le caractère µ38 par "&"
	aRemplacer = /\µ38/g; 
	str_Mdp = str_Mdp.replace(aRemplacer,"&");

	// 16/05/07 - Conversion inverse hexa pour éviter les caractères spéciaux
   	str_Mdp = str_Mdp.replace(/[+]/g," ")
   	str_Mdp = unescape(str_Mdp);

	// on découpe la phrase en morceaux de même longueur que la clef
	k = str_Mdp.length;   
	k2 = str_Clef.length;  
	nb = Math.ceil(k/k2); 
	m = 0;
	      
	// pour chaque morceau
	for(i=1;i<=nb;i++) {
	   if (k >= k2) {
		a = str_Mdp.substr(m,k2);		  				
		k = k - k2;
		m = m + k2;
	   }
	   else {
		a = str_Mdp.substr(m,k); 	
		m = m + k;		
	   } 
	      
	   // pour chaque lettre du morceau   
	   for(j=0;j<a.length;j++) {         
	      // on décrypte : donne un numérique correspondant a l'unicode du caractère à la position j  ==>charCodeAt(j)
	      c = a.charCodeAt(j) + str_Clef.charCodeAt(j) - str_Pivot.charCodeAt();
	      // on recompose la chaîne : donne le caractère correspondant a la valeur unicode c ==> fromCharCode(c)
	      t += String.fromCharCode(c); 
	   }
	}     	    
   // Retourne la nouvelle chaine   
   return t; 
}