/* jason.js : fonctions utilitaires JavaScript du site Jason.			**
** Creation : le 28/09/2000 - par JM.Lesigne (GFI)						**
** Modif : le 17/06/2002 - Division du glossaire en plusieurs pages (FR)**
**************************************************************************
** ouvreCadre(url) - ouvre une fenetre non navigable sur la page 'url'	**
** ouvreImage(url) - ouvre une image 'url' dans une fenêtre non navigable*
** cible(url) - charge 'url' dans la fenetre appelante					**
** glossaire_fr(ancre, nom) - insere le code d'ouverture du glossaire	**
** glossaire_en(ancre, nom) - identique pour le glossaire anglais		**
** lastModif() - affiche la date de derniere modification				**
** changeLangue() - bascule la page vers l'autre langue (fr / uk)		**
** afficheParcours(path) - insere les fleches de parcours (R, V, B)		**
** lienMail(nom,nomMail,url) - compose un lien d'adresse e-mail         **
** melTo(nom,domaine) - lien e-mail a mettre dans la balise href        **
*************************************************************************/
// donne un nom a la fenetre (base target du plan et du glossaire)
window.name="alti-tutorial";

/* Ouvre une fenetre sans barres de navigation, mais redimensionnable.
** Le nom de la fenetre est calcule d'apres l'url afin de n'ouvrir
** qu'une fenetre par service (1 plan, 1 glossaire, etc...)
** Parametres :
**   url = url de la page a afficher
**   w, h = largeur et hauteur (par défaut (650x500)
*********************************************************************/
function ouvreCadre(url) {
	// calcul du nom simple de la page a partir de l'url
	var fin = url.indexOf(".html");
	var nom;
	// page html : nom du fichier (plan, glossaire,...)
	if (fin != -1) {
		var deb = url.lastIndexOf("/");
		nom = url.substring(deb + 1, fin);
	} else {
		// image (gif, jpg) : fenetre 'images'
		fin = url.indexOf(".gif");
		if (fin == -1) fin = url.indexOf(".jpg");
		if (fin != -1) nom = "images";
		// sinon nouvelle fenetre
		else nom = "_blank";
	}
    // traitement des parametres facultatifs de taille
    var w = arguments[1];
    var h = arguments[2];
    if (!w) w = 650;
    if (!h) h = 500;
	// ouverture 
	var win = window.open(url, nom, "resizable=yes,scrollbars=yes,toolbar=no,width=" + w + ",height=" + h);
	if (win.opener == null) win.opener = this;
	// focus (si la fenetre est deja ouverte)
	win.focus();
}

/* Ouvre une image .gif, .jpg ou .png via la page /tools/popup_image.php3
** sans barres de navigation, redimensionnee automatiquement
** a la taille de l'image.
** Par defaut le nom de la fenetre est fixe, toutes les images s'ouvrent
** donc dans ma meme fenetre.
** Parametres :
**   url = url absolue de l'image à afficher (pas de http://.. ni de relatif)
**   target = cible (par défaut 'imagesautoresize')
*********************************************************************/
function ouvreImage(urlImage) {
    // traitement des parametres facultatifs de taille
    var nom = arguments[1];
    // page html : nom du fichier (plan, glossaire,...)
    if (!nom) {
		nom = "imagesautoresize";
    }
    w = 650;
    h = 500;
	url = "/tools/popup_image.php3?"+ urlImage; 
    // ouverture 
    var win = window.open(url, nom, "resizable=yes,scrollbars=no,toolbar=no,status=yes,left=20,top=20,width=" + w + ",height=" + h);
    if (win.opener == null) win.opener = this;
    // focus (si la fenetre est deja ouverte)
    win.focus();
}

/* Charge l'url specifiee dans la fenetre ayant cree la fenetre courante
** (permet de naviguer via une fenetre de controle de type carte du site).
** Parametres :
**   url = url de la page a afficher.
************************************************************************/
function cible(url) {
	self.opener.document.location = url;
}

/* Insere dans une page l'icone d'ouverture de la fenetre Glossaire.
** glossaire(ancre) ouvre le glossaire sur l'ancre specifiee.
** glossaire(ancre, nom) affiche l'intitule d'un sigle dans une bulle.
** La premiere lettre de l'ancre determine la page html du glossaire qui sera
** ouverte, elle doit donc etre identique a l'initiale du terme cherche.
** Parametres :
**   ancre = ancre dans la page glossaire (lettre ou mot)
**   nom = intitule affiche dans une bulle sur rollover (optionnel).
*********************************************************************/
function glossaire_fr(ancre) {
	if (ancre) {
	    var initiale = ancre.substring(0,1).toLowerCase();
		document.write('<A HREF="javascript:ouvreCadre(\'/html/general/glossary/'+ initiale + '_fr.html#' + ancre
			+ '\')"><IMG SRC="/images/icones/glossaire.gif" WIDTH="16" HEIGHT="16" BORDER="0"');
		if (arguments.length > 1) document.write(' ALT="' + arguments[1] + '" TITLE="' + arguments[1] + '"');
		document.write('></A>');
	}
}

/* Identique a glossaire(ancre) pour le glossaire anglais.
** Parametres :
**   ancre = ancre dans la page glossaire (lettre ou mot)
**   nom = intitule affiche dans une bulle sur rollover (optionnel).
*******************************************************************/
function glossaire_en(ancre) {
	if (ancre) {
	    var initiale = ancre.substring(0,1).toLowerCase();
		document.write('<A HREF="javascript:ouvreCadre(\'/html/general/glossary/'+ initiale + '_en.html#' + ancre
			+ '\')"><IMG SRC="/images/common/glossaire.gif" WIDTH="16" HEIGHT="16" BORDER="0"');
		if (arguments.length > 1) document.write(' ALT="' + arguments[1] + '" TITLE="' + arguments[1] + '"');
		document.write('></A>');
	}
}

/* Affiche la date de derniere modification du document, 
** selectionne l'anglais si son nom est de type '_en'.
*******************************************************/
function lastModif() {
	document.write('<P CLASS="date">');
	var date = new Date(document.lastModified);
	var annee = date.getFullYear(); 
	if ((annee<1970)&&(annee>=1900)) {annee+=100}
	// version francaise (_fr dans le nom du document)
	var nom = document.location.toString();
	if (nom.indexOf("_fr") != -1) {
		var months = new Array("janvier", "f&eacute;vrier", "mars", "avril", "mai", "juin", "juillet", "ao&ucirc;t",
			"septembre", "octobre", "novembre", "d&eacute;cembre");
		document.write("Derni&egrave;re mise &agrave; jour le " + months[date.getMonth()] + " " + date.getDate() + ", " + annee);
	// sinon version anglaise
	} else {
		var months = new Array("January", "February", "March", "April", "May", "June", "July", "August",
			"September", "October", "November", "December");
		document.write("Latest update on " + date.getDate() + " " + months[date.getMonth()] + " " + annee);
	}
	document.write('</P>');
}

/* Bascule vers une autre version de la page.
** Parametres :
**   languecible = langue de la version a charger (optionnel)
** Si aucun parametre : basculement versions francaise/anglaise
** Si languecible = 'fr' ou 'uk' ou 'es' : basculement vers la 
**                  version francaise ou anglaise ou espagnole
** Retour :	false si aucune action (document ni '_fr', ni '_en'
**			  ou languecible existe mais ni 'fr', ni 'uk', ni 'es'
**			  ou languecible ok mais document ni '_fr', ni '_en', ni '_es')
**			true si le document alternatif est charge.
***************************************************************/
function changeLangue() {
	var nom = document.location.toString();
    // memorisation de l'extension
	var indExt = nom.lastIndexOf(".");
    var ext = nom.substring(indExt);

  	// version courante anglaise (_en dans le nom du document)
	var newExt;
	indExt = nom.indexOf("_en");

	var languecible = arguments[0];
	// Cas par defaut, basculement simple _fr/_en
	if (!languecible) {
		if (indExt != -1) newExt = "_fr" + ext;
		else {
			// version courante francaise (_fr dans le nom du document)
			indExt = nom.indexOf("_fr");
			if (indExt != -1) newExt = "_en" + ext;
			// sinon aucune action
			else return;
		}
	}
	// Cas optionnel, basculement vers une langue donnee ('fr', 'uk' ou 'es')
	else {
		if (indExt==-1) {indExt = nom.indexOf("_fr")} 
		if (indExt==-1) {indExt = nom.indexOf("_es")}
		if (indExt==-1) {return};
		if ((languecible!="fr") && (languecible!="uk") && (languecible!="es")) { return }
		newExt = "_" + languecible + ext;
	}	
	// page affichee dans la fenetre courante
	document.location = nom.substring(0, indExt) + newExt;
}

/* Compose un lien d'adresse e-mail (pour tenter de minimiser les spams)
** Parametres :
**   nom = Nom qui apparait en lien (John SMITH)
**         Si nom = "adresse" le nom affiche sera l'adresse email
**   nomMail = identifiant de messagerie (john.smith)
**   url = url de l'adresse e-mail (cls.fr)
**   classe = classe de style (class="classe", facultatif)
***************************************************************/
function lienMail (nom,nomMail,url)	{
    // traitement du parametre facultatif de style
    var classe = arguments[3];
	document.write('<a href="&#109;&#97;&#105;'+'&#108;&#116;&#111;&#58;'+nomMail+'&#64;'+url+'"')
	if (!classe) { }
	else {
		document.write(' class="'+classe+'"')
	}
	document.write('>')
	if (nom == "adresse") {
		document.write(nomMail+'&#64;'+url)
	}
	else {
		document.write(nom)
	}
	document.write('</a>')
}

/* Lien e-mail a mettre dans la balise href
** Parametres :
**   nom = identifiant de messagerie
**   domaine = url de l'adresse e-mail
**   options = parametres apres le "?" (Facultatif - par ex : subject=...)
** exemple : href="javascript:melTo('john.smith','cls.fr','subject=Transmitted by Aviso website')"
***************************************************************/
function melTo (nom,domaine) {
    var options = arguments[2];
	var adresse = "mai" + "lto:" + nom + "@" + domaine 
	if (options) {
		adresse =  adresse + "?" + options
	}
	window.location = adresse
}

/* Redirection vers le lien appele depuis un formulaire (liste deroulante)
** Parametres :
**   formselect = select appelant le script (mettre lienForm(this) dans l'appel javascript du select)
** mettre le lien dans le "value" des options du "select", si value="" -> pas de lien
***************************************************************/
function lienForm(formselect){
	var URL = formselect.options[formselect.selectedIndex].value;
	if (URL != "") {
		window.location.href = URL;
	}
	else {
		return true;
	}
}

