<!--

var H = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");

var curLocation="";

function setCurLocation(loc){
 curLocation= loc;
}

function Hex(dec) {

  var a = Math.floor(dec/16);

  var b = dec-(a*16);
  
  return(H[a] + H[b]);
}
function Crypt(s, k) {

  var CryptedString = '';

  for(i=1;i<=s.length;i++) {
    CryptedString = CryptedString + Hex(s.charCodeAt(i-1) ^ k.charCodeAt(i-1)); 
  }
 
  return(CryptedString);

}

function CryptAndSubmit() {

  var args=CryptAndSubmit.arguments;
  if (args[0]==null) args[0]='AUTH';
  
  var mainform=document.mainform;
  var keyform=document.keyform;

  switch (args[0])
  {
   case 'AUTH' :

	//Formulaire d'authentification utilisateur, pas de submit du formulaire

	if ((mainform.username.value=='') || (mainform.password.value=='')) {
	 alert('Tous les champs doivent être renseignés.');
	}
	else
	{
	 var loc=curLocation;

	 //loc+=mainform.target_qs.value;
	 loc+= "?Q=" + Crypt(Crypt(mainform.username.value, keyform.key1.value) + "|" + Crypt(mainform.password.value, keyform.key2.value), keyform.key3.value);
	 //alert("CryptAndSubmit() - loc="+loc);
	 window.location = loc;
	}
	break;

   case 'SUBMIT' :

	//Formulaire nécessitant un cryptage de champs (user et password) avant submit

	if (mainform.txtLogin.value!='')
	{
	 //nouveau login à transmettre , nécessite encryptage 
	 document.mainform.u.value = Crypt(mainform.txtLogin.value, keyform.key1.value);
	}

	if (mainform.txtPasswd.value!='UNCHANGED' && mainform.txtPasswd.value!='')
	{
	 //nouveau password à transmettre , nécessite encryptage 
	 document.mainform.p.value = Crypt(mainform.txtPasswd.value, keyform.key2.value);
	}

	document.mainform.txtLogin.value="";
	document.mainform.txtPasswd.value="";
	document.mainform.txtPasswd2.value="";

	//alert("u="+document.mainform.u.value+ "\n p="+document.mainform.p.value);
	mainform.submit();
	break;
	
  }
}

//  Conversion d'un nombre hexadécimal 2 digits en integer
//  (LB 06/06/2002 à partir des méthodes JAVA du même nom)
function hexValue(ch) {
  
    var HexValues = "0123456789ABCDEF";
  
    var i = 0;
  
    while(i<HexValues.length) {
      if (HexValues.charAt(i) == ch) return(i);
      i++; 	
    }  	
    return(-1);
}

function hex2int(nHex) {
  return( (hexValue(nHex.charAt(0)) * 16) + hexValue(nHex.charAt(1)) );
}

//  Decode une chaine à partir d'une clef donnée
// (LB 06/06/2002 à partir des méthodes JAVA du même nom)
function DecodeValue(shexa , k){
  	
    var s        = "";
    var sUnXored = "";
    var c="";

    //alert ("shexa="+shexa+"\n k="+k);

    for(var i=0; i<(shexa.length -1); i+=2){
	s += String.fromCharCode(hex2int(shexa.substring(i, i+2)));
	//alert("i="+i+" ;  hex2int(shexa.substring(i, i+2)="+ hex2int(shexa.substring(i, i+2)) );
	//alert ("i="+i+" ; shexa.substring(i, i+2)="+shexa.substring(i, i+2)+" ; s="+s);
    }
       
    for(var i=0; i<s.length; i++) {
	c = (k.charCodeAt(i) ^ s.charCodeAt(i));
	sUnXored += String.fromCharCode(c);
	//alert ("k.charAt(i)="+k.charAt(i)+" \n; s.charAt(i)="+s.charAt(i));
	//alert ("i="+i+" \n; k.charCodeAt(i)="+k.charCodeAt(i)+" \n; s.charCodeAt(i)="+s.charCodeAt(i)+" \n; sUnXored ="+sUnXored);
    }
    //alert("sUnXored="+sUnXored);    
    return(sUnXored);
}   

//-->

