function Vigenere(input, clef, output, crypter, type_alphabet)
   {
	var alphabet26  = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var alphabet25  = "ABCDEFGHIJKLMNOPQRSTUVXYZ";
	var alphabet25Z = "ZABCDEFGHIJKLMNOPQRSTUVXY";

	// Type alphabet 26 lettres ou 25 lettres (sans le W)
	if (type_alphabet == 26)
		{
		var alphabet = alphabet26 ;
		var lg_alphabet = 26 ;
		}
	else if (type_alphabet == 25)
		{
		var alphabet = alphabet25 ;
		var lg_alphabet = 25 ;
		}
	else
		{
		var alphabet = alphabet25Z ;	
		var lg_alphabet = 25 ;
		}
	input.value = input.value.toUpperCase();

	// Vérification de la clef:
	if (clef.value == null)
		clef.value = "";
		
	clef.value = clef.value.toUpperCase();
	var clef_long = clef.value.length;
	var clef_correcte = "";
	
	for (var i = 0; i < clef_long; i ++)
	{
		var clef_char = alphabet.indexOf (clef.value.charAt (i));
		if (clef_char > -1) {clef_correcte += alphabet.charAt (clef_char)};
	}
	
	clef.value = clef_correcte;
	clef_long = clef.value.length;
	
	if (clef_long == 0)
	{
		alert ('Entrez votre clef!');
		clef.value = "MYKEY";
		clef_long = 5;
	}

	// (Dé)cryptage:
	output.value = "";
	var clef_index = 0;
	var n=0;
	
	for (i = 0 ; i < input.value.length ; i ++)
	   {
	   var input_char = input.value.charAt (i);
	   var input_char_value = alphabet.indexOf(input_char);
	   
	   if (input_char_value > -1)  // ne (dé)chiffre que les 26 lettres majuscules
		  {
		  if (crypter)
		 	 input_char_value += alphabet.indexOf(clef.value.charAt(clef_index));
		  else
			 input_char_value -= alphabet.indexOf(clef.value.charAt(clef_index));
			
		  input_char_value += lg_alphabet ;
		  input_char_value %= lg_alphabet ;

 	  	  //if ((n%5==0) && (n>0) && (crypter))
 	  	  //   {output.value+=" "};
	 	
	 	  n++;
		  output.value += alphabet.charAt(input_char_value);
		  clef_index = (clef_index+1) % clef_long;
		  }
	  else
	     output.value += " " ;	  
	   }
   }


