
/*
 commandes sans equivalent-clavier = "||" (or) ; "\n" (<cr><lf>) ;
*/







// ---------------------------------
// CONSTANTES JAVASCRIPT GLOBALES
// ---------------------------------

var versionJS = "7.05";					// A METTRE A JOUR DANS "ATcht.php"

// Langues
var iFR = 1;		// Francais
var iEN = 2;		// Anglais

// Liens RETOUR s'affichant en bas a gauche d'une page
var xNONE= 0;
var xHome = 1;
var xBack = 2;
var xMondo = 3;

// Debugging
var stmp = "";
var partenaire = "";



// ------------------------
// EXTENSIONS TYPES DE BASE
// ------------------------

function debug (s) {
alert (s);
};

function alertErrInconnue (iLangue) {
switch (iLangue) {
	case iFR: alert ("Une erreur inconnue est survenue..."); break;
	 default: alert ("An unknown error has occurred..."); break;
	}
};  //  alertErrInconnue

function makePct (number,virg) {
var n = Math.round (number * 100 * (Math.pow (10,virg))) / (Math.pow (10,virg));
return (n + "%");
}; // String.makePct










// --- ARRAYS ----------------------

Array.prototype.fill = function (value) {
for (var r=0; r<this.length; r++) { this[r] = value; }
return this;
}; // Array.fillWithIndex

Array.prototype.fillWithIndex = function () {
for (var r=0; r<this.length; r++) { this[r] = r; }
return this;
}; // Array.fillWithIndex

Array.prototype.shuffle = function () {
for (var j,x,i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
return this;
}; // Array.shuffle

Array.prototype.fillAleatoire = function (bShuffle) {
this.fillWithIndex ();
if (bShuffle) { this.shuffle (); }
return this;
}; // fillAleatoire

// --- STRINGS ---------------------

String.prototype.makeArray = function (sep) {
if (sep != "") {
	var regSep = new RegExp('[' + sep + ']+','g');
	var newArray = this.split (regSep);
	} else {															//debug ("makeArray, this=" + this + "< length=" + this.length);
	var newArray = new Array (this.length);
	for (var c=0; c<this.length; c++) { newArray[c]= this.charAt(c); }	//debug ("this[" + c + "]=" + this.charAt(c));
	}
return newArray;
}; // String.makeArray

String.prototype.sortBy = function (sOrdre) {							//debug ("this="+this+"< length="+this.length);
// Reclasse le String a partir de l'ordre lu dans le String "so"
if (sOrdre == "") { return ""; }							
var tbo = sOrdre.makeArray (",");										//debug ("tbo="+tbo+"< length="+tbo.length);
if (this.indexOf (",") > 0) { var cSep= ","; } else { var cSep= "";}
var tbq = this.makeArray (cSep);										//debug ("tbq="+tbq+"< length="+tbq.length);
var tbr = new Array (tbq.length); tbr = tbr.fill (0);					//debug ("tbr="+tbr+"< length="+tbr.length);
if (tbo.length != tbq.length) { return ""; }
for (var o=0; o<tbo.length; o++) { tbr[o] = tbq[tbo[o]]; }				//debug ("tbr="+tbr+"< length="+tbr.length);
// A partir d'un array, join construit un String aux valeurs separees par ","
var stbr = tbr.join (cSep);												//debug ("stbr="+stbr+"<");
return stbr;
}; // sortBy






var ctx = {

	// -------------------- Ces constantes SONT A DUPLIQUER dans "ATcht.PHP"
	
	pla_Inconnue : 0,		// iPlatform
	pla_MacOS    : 1,
	pla_Windows  : 2,

	from_Root    : 0,		// iCallFrom
	from_Langue	 : 1,
	// -------------------- from_Root & from_Langue sont propres a JavaScript
	from_Exemple : 2,
	from_Quest   : 3,
	from_ListAll : 4,
	from_Admin   : 5,

	pNone        : 0,		// iPrint
	pHeader      : 1,
	pFooter      : 2,
	pHeaderFooter: 3,
	pHeaderFooterPro: 4,

	nav_Inconnu  : 0,		// iNavig
	nav_MSIE     : 1,
	nav_Chrome   : 2,
	nav_Safari   : 3,
	nav_Netscape : 4,
	nav_Opera    : 5,
	nav_Firefox  : 6,	
	// --------------------- Fin des constantes a dupliquer dans Java

	// --------------------- Constantes d'appel a la fonction "makeCadreBottom"
	menuShort    : 0,		// La page "menu" est une page courte
	menuLong     : 1,       // La page "menu" est une page longue (i.e. de longueur variable) - VALEUR JAMAIS UTILISEE !
							// REMPLACEE a chaque appel par la longueur "reelle" de la page, afin de pallier bug IE !
	rSpan1		 : 1,
	rSpan2		 : 2,
	rSpan3		 : 3,
	anonyme		 : "-",







	// ---------------------------------
	// CONTEXTE DU "CLIENT-USER"
	// ---------------------------------


	userNavig: function () {
	// -------------------
	var Navig = ctx.nav_Inconnu;												// 0 Inconnu
	if ((navigator.userAgent.indexOf ("MSIE") >= 0) || (window.ActiveXObject)) {
		Navig = ctx.nav_MSIE;													// 1 Internet Explorer
		} else {
		if (navigator.userAgent.indexOf ("Chrome") >= 0) {
			Navig = ctx.nav_Chrome;												// 2 Chrome
			} else {
			if (navigator.userAgent.indexOf ("Safari") >= 0) {
				Navig = ctx.nav_Safari;											// 3 Safari
				} else {
				if (navigator.userAgent.indexOf ("Netscape") >= 0) {
					Navig = ctx.nav_Netscape;									// 4 Netscape
					} else {
					if (navigator.userAgent.indexOf ("Opera") >= 0) {
						Navig = ctx.nav_Opera;									// 5 Opera
						} else {
						if (navigator.userAgent.indexOf ("Firefox") >= 0) {
							Navig = ctx.nav_Firefox;							// 6 Firefox
							}
						}
					}
				}
			}
		}
	return Navig;
	},  // userNavig



	userPlatform: function () {
	// ----------------------
	var Platform = ctx.pla_inconnue;
	if (navigator.platform.indexOf ("Mac") >= 0) {
		Platform = ctx.pla_MacOS;
		} else {
		if (navigator.platform.indexOf ("Win") >= 0) {
			Platform = ctx.pla_Windows;
			}
		}	
	return Platform;
	}, // userPlatform



	setContexte: function (iCallFrom,iLangue,iPrint,idUser) {	// voir symetrique : "CadreHTML.getContexte"
	// ----------------------------------------------------
	// RETOURNE UN FLOAT MIS en STRING SUR 6 POSITIONS
	// Construction de la variable Locale "sContexte" passee aux Applets JAVA
	// Il n'y a pas de variable Globale "sContexte"
	// Specification de SContexte = 1 String de 5 Chiffres. Chaque chiffre donne la valeur d'un parametre de contexte : voir detail ci-dessous
		
	// Type de micro : PC ou Mac ? Utilise 1) pour selectionner les feuilles CSS PC ou Mac 2) pour calculer la hauteur du filet vertical
	var iPlatform = ctx.userPlatform ();					
	// Navigateur
	var iNavig = ctx.userNavig ();							

	// Facilite le DEBUGGING de la substance des tests, par l'Administrateur.
	// Declenche l'impression des codages intermediaires : sEgo, sEnergo, sMC, sPos en fin de test
	// Est initialise dans le Menu Administrateur, via la checkBox "Avec impression des reponses" 
	// Est sauve/lu dans le cookie "ATdebugPrintParams"
	var iPrintTest = 0;
	var sCookie = cook.litCookie ("ATdebugPrintParams","");	// cook.Vrai ou cook.Faux
	if (sCookie == cook.Vrai) { iPrintTest = 1; }			// Donc si cookie INEXISTANT ou cook.Faux, iPrintTest = 0 est passe a PHP

	var Contexte = 0;
	Contexte += 1 * iPlatform;								// 0=inconnue; 1=Macintosh; 2=Windows;
	Contexte += 10 * iPrintTest;							// 0=sans impression des parametres; 1=avec impression des parametres;
	Contexte += 100 * iCallFrom;							// 0=from_Root; 1=from_Exemple; 2=from_Quest; 3=from_ListAll; 4=from_Admin;
	Contexte += 1000 * iLangue;								// 0=Francais, 1=EN, 2=SP,
	Contexte += 10000 * iPrint;								// 0=pNone, 1=pHeader, 2=pFooter, 3=pHeaderFooter, 4=pHeaderFooterPro
	Contexte += 100000 * iNavig;							// 0=inconnu, 1=IE, 2=Chrome, 3=Safari, 4=Netscape, 5=Opera, 6=Firefox

	// Rajout du parametre final "idUser", apres controles
	// Controles sur IdUser : ne peut comporter les caracteres suivants...
	var badCars = new RegExp ("[/!;,]","g");
	var zeBads = idUser.match (badCars);
	if (zeBads != null) {
		switch (iLangue) {
			case iFR: alert ("Attention, idUser invalide = " + idUser); break;
			 default: alert ("Warning: invalid idUser = " + idUser); break;
			 }
		idUser = "x";
		}
	Contexte = "/" + Contexte + "!" + idUser;	
	return String (Contexte);								// RETOURNE UN FLOAT MIS en STRING SUR 6 POSITIONS !
	},  // setContexte







	// ---------------------------------
	// PRESENTATION
	// ---------------------------------

	
	site_IsPro: function () {
	// --------------------
	var url_pro = "analyse-transactionnelle.com";
	var url_page = window.location.href;
	var pos = -1;
	pos = url_page.indexOf (url_pro,0);
	if (pos < 0) { return false; }												// SI "url_pro" absente, on est sur "PsyQuo.com" 
	pos = url_page.indexOf ("?idp=",0);
	if (pos > 0) {																// Chaque fois qu'on voit passer une URL PRO avec parametre idp, on sauve l'idp
		var sIDP = unescape (url_page.substring (pos + 5));
		var ec = cook.ecritCookie ("ATidp",sIDP,cook.dureeStatusClie,"",iFR);	// Pas la peine de tester ici : si echec, l'erreur remontera plus tard, en relecture
		}
	return true;
	}, // site_IsPro


	writeBold: function (sTitre,iLangue) {
	// ---------------------------------
	var Navig = ctx.userNavig ();
	var sp = "<p class='titreBold'>";
	switch (Navig) {
		case ctx.nav_Safari: sp = "<p class='TitreH3'>"; break;
		  case ctx.nav_MSIE: sp = "<p class='TitreH4'>"; break;
		            default: sp = "<p class='TitreH3'>"; break;
		}
	window.document.write(sp + sTitre + "</p>");
	},  // writeBold


	makeCadreTop: function (pathGraphs,iLangue) {
	// ----------------------------------------
	// Uniquement LA TOUTE 1ERE LIGNE : L'ANGLE HAUT GAUCHE + LE BANDEAU SUPERIEUR, DANS LA LANGUE DU SITE
	// Le bandeau superieur chap eaute une COLONNE UNIQUE de contenus
	// La Page URL + les N pages INDEX Principal linguistique disposent de ces commandes "en dur", associees aux balises <noscript>
	//----------------------------------------
	var sFlow = "";
	sFlow += "<td width='270' valign=top><img src='" + pathGraphs + "PICS/MasqueGaucheTop.jpg' border=0 alt=''></td>";
	sFlow += "<td width='560' valign=top>";
	if (iLangue == iFR) { sFlow += "<a href=" + pathGraphs + "FR/feedback.php>"; }
	sFlow += "<img border=0 src='" + pathGraphs;
	// ----------------------------------------
	if (ctx.site_IsPro ()) {
		switch (iLangue) {
			case iFR: sFlow += "PICS/MasqueTopProFR.jpg' alt=''>"; break;
			 default: sFlow += "PICS/MasqueTopProEN.jpg' alt=''>"; break;
			}
		} else {
		switch (iLangue) {
			case iFR: sFlow += "PICS/MasqueTopFR.jpg' alt=''>"; break;
			 default: sFlow += "PICS/MasqueTopEN.jpg' alt=''>"; break;
			}
		}
	if (iLangue == iFR) { sFlow += "</a>"; }
	sFlow += "</td>";
	window.document.write (sFlow);
	},  // makeCadreTop



	putMasqueGauche: function (pathGraphs,nbRowsSpan,serie,iLangue) {
	// -----------------------------------------------------------
	// N'EST APPELEE QUE SUR LES PAGES a "menuShort"
	// nbRowsSpan : 1) la row texte 2) la row menu bas et 3) la row recommandez
	// ------------------------------------------------------------------------
	var sIncrust = "";
	if ((serie != "A") && (serie != "B")) { serie = "A"; }
	var img = new Array ();
	var nb = 0;
	if (ctx.site_IsPro ()) {
		nb = 1;
		img[0]=' background="' + pathGraphs + 'PICS/MasqueGauchePro' + serie + '.jpg">';
		} else {
		nb = 3;
		img[0]='><img src="' + pathGraphs + 'PICS/MasqueGauche' + serie + '1.jpg" border=0 alt="">';
		img[1]='><img src="' + pathGraphs + 'PICS/MasqueGauche' + serie + '2.jpg" border=0 alt="">';
		img[2]='><img src="' + pathGraphs + 'PICS/MasqueGauche' + serie + '3.jpg" border=0 alt="">';
		if (serie == "B") {
			nb = 7;
			img[3]='><img src="' + pathGraphs + 'PICS/MasqueGauche' + serie + '4.jpg" border=0 alt="">';
			img[4]='><img src="' + pathGraphs + 'PICS/MasqueGauche' + serie + '5.jpg" border=0 alt="">';
			img[5]='><img src="' + pathGraphs + 'PICS/MasqueGauche' + serie + '6.jpg" border=0 alt="">';
			img[6]='><img src="' + pathGraphs + 'PICS/MasqueGauche' + serie + '7.jpg" border=0 alt="">';
			}
		}
	// Tirage bande laterale hauteur fixe avec masque venitien + superposition du texte a incruster
	// ATTENTION ! nbRowsSpan determine la facon dont ce masque recouvre les lignes de la partie droite (cf makeCadreBottom ci-dessous)
	// "nbRowsSpan" doit prendre les valeurs :
	// - ctx.rSpan1 : pour les pages "menuLong" avec "makeCadreBottom (12345, ...")
	// - ctx.rSpan2 : pour les pages "menuShort" avec "makeCadreBottom (ctx.menuShort, ...")
	// - ctx.rSpan3 : pour les pages "menuShort" d'Index avec double menus en bas (AT.html + index.html x 2)
	var n = Math.floor (nb * Math.random ());
	window.document.write ("<td rowspan=" + nbRowsSpan + " width='270' height='450' valign=top" + img[n] + sIncrust + "</td>");
	},  // putMasqueGauche



	makeCadreBottom: function (shema, callFrom, xLien, iLangue) {
	// --------------------------------------------------------
	/* SHEMAs D'AFFICHAGE...
	
	CAS "menuShort" = AVEC "Menu_BAS" (PAGES TOUJOURS <<< "MV") : INEXs + PNIs
    La fonction trace UNE des lignes (R5) incluant DEUX morceaux de cadre.
	---------------------------------------------------------------------------
	I R1    coin        I     BANDEAU SUPERIEUR                          h=93 I
	I       haut        I     PsyQUO.com                                      I
	I                   I     Les tests de l'Analyse Transactionnelle         I
	---------------------------------------------------------------------------
	I R2   retour       I        I        I        I        I        I   h=21 I
	---------------------------------------------------------------------------
	I R3          h=450 I                     Blah blah                 h=DYN I
	I                   I                     Blah blah                       I
	I      MASQUES      I                                                     I	
	I     Venitiens     I                                                     I
	I                   I                     Blah blah                       I
	I                   I                     Blah blah                       I
	I                   I                     Blah blah                       I
	I                   I                     Blah blah                       I
	I                   I                     Blah blah                       I
	I                   I                     Blah blah                       I
	I                   I                                                     I
	I       ROWSPAN = 3 I-----------------------------------------------------I
	I                   I                     Menu BAS                        I 
	I                   I-----------------------------------------------------I
	I                   I RECOMMANDEZ      I     PLAN      I             DATE I
	--------------------------------------------------------------------------- LIGNE VIDE
	---------------------------------------------------------------------------
	I R5  coin bas      I                    BAS DU CADRE                h=47 I
	---------------------------------------------------------------------------
	
	CAS "menuLong" = SANS "Menu_BAS" (PAGES TOUJOURS >>> "MV") : Menus + QUESTs
    La fonction trace DEUX lignes (R4 et R5) incluant TROIS morceaux de cadre.
	---------------------------------------------------------------------------
	I R3          h=450 I                     Blah blah                 h=DYN I
	I                   I                     Blah blah                       I
	I      MASQUES      I                                                     I	
	I     Venitiens     I                                                     I
	I      ("MV")       I                     Blah blah                       I
	I                   I                     Blah blah                       I
	--------------------I ROWSPAN = 2                                         I
	I R4          h=DYN I                                                     I
	I                   I                     Blah blah                       I
	I      CELLULE      I                     Blah blah                       I
	I   DE "BOURRAGE"   I                     Blah blah                       I
	I     A HAUTEUR     I                                                     I
	I     DYNAMIQUE     I                     Blah blah                       I
	I   (BUG SUR PC !)  I                     Blah blah                       I
	---------------------------------------------------------------------------
	I R5  coin bas      I                    BAS DU CADRE                h=47 I
	---------------------------------------------------------------------------

	L'Identification DU CAS n'est pas automatisee.
	C'est le parametre d'appel "shema" qui oriente la fonction
	Dans la page menu, l'appel a cette fonction est toujours :
	- precede du '<tr>' d'ouverture de R4 et
	- suivi du "</tr> de fermeture de R5
	*/
	var pathIndex = "";		// C'est le Menu d'accueil du Site "index.html", sauf en mode "xMondo + mode _Public" ou c'est un lien de feedback
	var pathGraphs = "";
	switch (callFrom) {
			case ctx.from_Root: pathIndex = "./";  pathGraphs = "./"; break;
		  case ctx.from_Langue: pathIndex = "./";  pathGraphs = "../"; break;

		 case ctx.from_Exemple: pathIndex = "./";  pathGraphs = "../"; break;
		   case ctx.from_Quest: pathIndex = "../"; pathGraphs = "../../"; break;
		 case ctx.from_ListAll: pathIndex = "../"; pathGraphs = "../../"; break;	// Pas de sens, mais == from_Admin
		   case ctx.from_Admin: pathIndex = "../"; pathGraphs = "../../"; break;
					   default: pathIndex = "./";  pathGraphs = "./"; break;
			}
	var sFlow = "";

	// 1. Ligne R4, Cellule 1 (unique), BACKGROUND DYNAMIQUE
	// -----------------------------------------------------
	switch (shema) {
	   case ctx.menuShort: // Cas des 3 INDEXs & des 2 menuTESTs - Le TEXTE est "court", i.e. INFERIEUR AU MASQUE Venitien => pas de Bourrage !
						   //  sFlow += "<td height=0 colspan=4></td>";  // LIGNE VIDE ?! (...supprimee)
						   break;
	 // case ctx.menuLong: Initialement = 1 ! En pratique toujours remplace par une "longueur" de page > 1 afin de traiter le bug MSIE (cf ci-dessous)
				  default: // Cas des MenuS UTILITAIRES & des QUESTIONNAIRES - Le TEXTE est "long", i.e. SUPERIEUR AU MASQUE Venitien => Bourrage !
						   if (ctx.userNavig() != ctx.nav_MSIE) {
								sFlow += "<td valign='top' width='270' background='" + pathGraphs + "PICS/BourrageV.jpg'>&nbsp;</td>";
								} else {
								sFlow += "<td valign='top' height='" + shema + "' width='270' background='" + pathGraphs + "PICS/BourrageV.jpg'>&nbsp;</td>";
								}
						   break;
		}
	// 2. Fermeture de la ligne TR4 et Ouverture de la ligne TR5
	// ---------------------------------------------------------
	sFlow += "</tr><tr>";

	// 3. Ligne R5, Cellule 1 (coin en bas a gauche)
	// ---------------------------------------------
	var sCoin = "";
	switch (iLangue) {
		case iFR: switch (xLien) {
					case xHome: sFlow += "<td width='270'><a href='" + pathIndex + "index.html'><img src='" + pathGraphs + "PICS/MasqueBottomGaucheRetourFR.jpg' border=0 alt=''></a></td>"; break;
				   case xMondo: var shref = "";
								if (!ctx.site_IsPro()) { shref=pathIndex+"feedback.php"; } else { shref="mailto:contact@mondoneo.fr"; }
								sFlow += "<td width='270'><a href='" + shref + "'><img src='" + pathGraphs + "PICS/MasqueBottomGaucheMondoFR.jpg' border=0 alt=''></a></td>";
								break;
					   default: sFlow += "<td width='270' background='" + pathGraphs + "PICS/MasqueBottomGauche.jpg'></td>"; break;
					}; break;
		case iEN: switch (xLien) {
					case xHome: sFlow += "<td width='270'><a href='" + pathIndex + "index.html'><img src='" + pathGraphs + "PICS/MasqueBottomGaucheRetourEN.jpg' border=0 alt=''></a></td>"; break;
					   default: sFlow += "<td width='270' background='" + pathGraphs + "PICS/MasqueBottomGauche.jpg'></td>"; break;
					}; break;
		 default: sFlow += "<td width='270' background='" + pathGraphs + "PICS/MasqueBottomGauche.jpg'></td>"; break;
		}

	// 4. Ligne R5, Cellule 2 (bas du cadre)
	// -------------------------------------
	sFlow += "<td colspan=3 valign='top'><img src='" + pathGraphs + "PICS/MasqueBottom.jpg'></td>";
	// alert (sFlow);
	window.document.write (sFlow);
	},  // makeCadreBottom



	callmdp: function (sPath) {
	// ----------------------
	var sPagePHP = sPath + "getmdp.php";
	window.open (sPagePHP,"getmdp","directories=yes,menubar=yes,status=yes,location=yes,scrollbars=yes,resizable=yes");
	},  // callmdp



	callRecommande: function (sPath) {
	// -----------------------------
	var sPagePHP = sPath + "recom.php";
	window.open (sPagePHP,"recom","menubar=no,status=no,scrollbars=no,width=540,height=450");
	},  // callRecommande



	callDate: function (iLangue) {
	// -------------------------
	var now = new Date();
	var day = now.getDay();
	var month = now.getMonth();
	var dte = now.getDate();
	var yy = now.getYear();
	if (navigator.userAgent.indexOf ("MSIE") < 0) { yy= 1900+yy };

	switch (iLangue) {
		case iFR:
			var daysFR = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
			var monthsFR = new Array("Janvier", "F&eacute;vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao&ucirc;t", "Septembre", "Octobre", "Novembre", "D&eacute;cembre");
			day=daysFR[day];
			month=monthsFR[month];
			window.document.write(day);
			window.document.write(" ");
			window.document.write(dte);
			if (dte == 1) { window.document.write("er "); } else { window.document.write(" "); }
			window.document.write(month);
			window.document.write(" ");
			window.document.write(yy);
			break;
		default:
			var daysEN = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
			var monthsEN = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
			day=daysEN[day];
			month=monthsEN[month];
			window.document.write(day);
			window.document.write(" ");
			window.document.write(month);
			window.document.write(" ");
			window.document.write(dte);
			if ((dte % 10 == 1) && (dte != 11)) { window.document.write("st, "); } else { if (dte % 10 == 2) { window.document.write("nd, "); } else { window.document.write("th, "); }}
			window.document.write(yy);
			break;
		}
	}, // callDate



	callRecPlanDate: function (pathPHP,iLangue) {
	// ----------------------------------------
	var sLigne ="";
	var sRec = "";
	switch (iLangue) {
		case iFR: sRec = "Recommandez ce site"; sPlan = "Plan du site"; break;
		 default: sRec = "Recommend this site"; sPlan = "Site Map"; break;
			}
	var sCallRec = "\"" + "JavaScript:ctx.callRecommande('" + pathPHP + "') " + "\"";
	// sLigne += "<td width='560'>";
	sLigne += "<table border='0' bordercolor='green' cellpadding=1 cellspacing=1>";
	// sLigne +=		"<tr><td colspan=3 style='font-size:5pt;'>&nbsp;</td></tr>";
	sLigne +=		"<tr>";
	sLigne +=			"<td width='220' class='apni'><a href=" + sCallRec + ">" + sRec + "</a></td>";
	sLigne +=			"<td width='120' class='BTPlan'><a href='" + pathPHP + "plan.html'>" + sPlan + "</a></td>";
	sLigne +=			"<td width='220' class='myDate'><script type='text/javascript'>ctx.callDate(" + iLangue + ")</script></td>";
	sLigne +=		"</tr>";
	sLigne += "</table>";
	// sLigne += "</td>";
	window.document.write (sLigne);
	},  // callRecPlanDate







	// ---------------------------------
	// NAVIGATION
	// ---------------------------------


	backHistory: function () {
	// ---------------------
	if (window.history.length > 0) { window.history.back(); } else { window.location.href="../index.html"; }
	},  // backHistory

	scrollUp: function () {
	// ------------------
	window.scrollTo (1,1);
	},  // scrollUp

	scrollDown: function () {
	// ------------------
	window.scrollTo (1,5000);
	}  // scrollDown



}; // ctx




