<!--
// email.html (http://heiwww.unige.ch/com/script/email.html)
// $Id: email.html 118 2004-09-02 13:58:51Z Oliv $
//
// Librairie de fonctions JavaScript de pour chiffrer/déchiffrer les adresses
// de courrier électronique du site HEI.
//
// (c) 2001-2004 O. Lange, Le Petit Atelier de Génie logiciel
//
// Consultez http://www.petit-atelier.ch/ pour contacter l'auteur.
//
// Ce script fait partie de la solution HEIXML/XPage et il est distribué
// selon les termes de le GNU General Public License (voir notice ci-dessous).
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

// Préfixe 'mailto:' utilisé pour chiffrer et déchiffrer l'URI d'une adresse e-mail
var S_MAILTO_PREFIX = "mailto:";

function emailCrypt() {
// Encrypte l'adresse de courrier électronique et son alias (optionnel) qui se trouvent
// resp. dans les champs 'sEmail' et 'sEmailAlias' et transcrit l'adresse encryptée dans
// le champ 'sEmailCrypted'. Formule également le code HTML qui permet d'ajouter l'adresse
// encryptée sur une autre page et le transcrit dans le champ 'sEmailCryptedTag' et dans
// dans le corps de la division 'eltEmailTest', pour permettre un test immédiat.
var oEmail = MM_findObj( "sEmail");
var oEmailAlias = MM_findObj( "sEmailAlias");
var oEmailCrypted = MM_findObj( "sEmailCrypted");
var oEmailCryptedTag = MM_findObj( "sEmailCryptedTag");
var oEmailTestElt = MM_findObj( "eltEmailTest");

// Extrait et normalise l'adresse e-mail et son alias
var sEmail = new String( oEmail.value);
var sEmailAlias = new String( oEmailAlias.value);
if(( sEmail == undefined) ||( sEmail == '')) {
alert( "Please enter at least an e-mail address to uncrypt (alias is optional).");
return false;
}
var i = 0;
if(( i = sEmail.indexOf( S_MAILTO_PREFIX)) != -1)
// Enlève le mailto: s'il a été spécifié
sEmail = sEmail.substr( S_MAILTO_PREFIX.length);

// Compose l'URI correspondant à l'adresse e-mail
var sEmailURI = S_MAILTO_PREFIX;
if(( sEmailAlias == undefined) ||( sEmailAlias == '')) {
sEmailAlias = sEmail;
sEmailURI += sEmail;
} else {
sEmailURI += sEmailAlias + ' <' + sEmail + '>';
}
sEmailURI = encodeURI( sEmailURI);
// alert( "emailCrypt() called [sEmailURI='" + sEmailURI + "'].");

// Encrypte l'URI de l'adresse e-mail
sEmailURICrypted = xpgEmailCrypt( sEmailURI);

// Compose une balise HTML qui permet d'insérer l'adresse e-mail dans une page
var sEmailTag = "<a href=\"javascript:xpgGotoURL(xpgEmailUncrypt('" + sEmailURICrypted + "'));\"";
sEmailTag += " onmouseover=\"xpgSetStatus('" + sEmail.replace( '@', ' (at) ') + "'); return true;\"";
sEmailTag += " onmouseout=\"xpgClearStatus();\">";
sEmailTag += sEmailAlias + "</a>";

// Affiche les résultats
oEmailCrypted.value = sEmailURICrypted;
oEmailCryptedTag.value = sEmailTag;
oEmailTestElt.innerHTML = sEmailTag;
return false; // empêche la soumission du formulaire si cette fonction est appelée sur onSubmit
};

function emailUncrypt() {
// Décrypte transcrit l'adresse de courrier électronique encryptée qui se trouve dans
// le champ 'sEmailCrypted' et la transcrit dans les champs 'sEmail' et 'sEmailAlias'.
var oEmail = MM_findObj( "sEmail");
var oEmailAlias = MM_findObj( "sEmailAlias");
var oEmailCrypted = MM_findObj( "sEmailCrypted");
var oEmailCryptedTag = MM_findObj( "sEmailCryptedTag");
var oEmailTestElt = MM_findObj( "eltEmailTest");

// Déchiffre l'adresse URI de l'e-mail encrypté
var sEmailCrypted = oEmailCrypted.value;
if(( sEmailCrypted == undefined) ||( sEmailCrypted == '')) {
alert( "Please enter an encrypted e-mail address to decrypt.");
return false;
}
var sEmailURI = xpgEmailUncrypt( sEmailCrypted);
sEmailURI = decodeURI( sEmailURI);
// alert( "emailUncrypt() called [sEmailURI='" + sEmailURI + "'].");

// et répartit celle-ci en l'adresse e-mail et alias (si ce dernier est présent)
var i,j;
var sEmail, sEmailAlias;
if(sEmailURI.indexOf( S_MAILTO_PREFIX) == 0) {
// Enlève le préfixe 'mailto:' s'il est présent (c'est le cas en général)
sEmailURI = sEmailURI.substr( S_MAILTO_PREFIX.length);
}
if(( i = sEmailURI.indexOf( '<')) != -1) {
// Extrait l'alias et l'adresse e-mail
sEmailAlias = sEmailURI.substring( 0, i - 1);
i++;
j = sEmailURI.indexOf( '>', i);
if( j == -1) { j = sEmailURI.length; }
sEmail = sEmailURI.substring( i, j);
} else {
// Pas d'alias
sEmail = sEmailURI;
sEmailAlias = "(none)";
}

// Affiche les résultats
oEmail.value = sEmail;
oEmailAlias.value = sEmailAlias;
oEmailCryptedTag.value = "";
oEmailTestElt.innerHTML = "";
return false; // empêche la soumission du formulaire si cette fonction est appelée sur onSubmit
}
// -->
