

function $el(id) { return document.getElementById(id); }

/* standard trim function to remove leading and trailing 
 * whitespace from a given string
 */
function trim( str ) { return str.replace(/^\s*|\s*$/g,""); }


var browser = {
        ie: false, 
        firefox: false, 
        safari: false, 
        opera: false, 
        version: -1
    };
var useragent = navigator.userAgent.toLowerCase();
if (useragent.indexOf("opera") != -1) {
   browser.opera = true;
} else if (useragent.indexOf("msie") != -1) {
    browser.ie = true;
    browser.version = parseFloat(useragent.substring(useragent.indexOf('msie') + 4));
} else if (useragent.indexOf("safari") != -1) {
    browser.safari = true;
    browser.version = parseFloat(useragent.substring(useragent.indexOf('safari') + 7));
} else if (useragent.indexOf("gecko") != -1) {
    browser.firefox = true;
}

// w3schools
function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

// w3schools
function getCookie(c_name)
{
	if (document.cookie.length>0)
	  {
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1)
		{
		c_start=c_start + c_name.length+1;
		c_end=document.cookie.indexOf(";",c_start);
		if (c_end==-1) c_end=document.cookie.length;
		return unescape(document.cookie.substring(c_start,c_end));
		}
	  }
	return "";
}


function Ajax()
{
	this.xhr = null;
	this.method = 'get';
	this.async = true;
	this.allowLocalStatus = true;
	this.updateTime = -1;
	this.onComplete = null;
	this.onDownload = null;
	this.onError = null;
	this.body = null;
	//return this;
}

Ajax.prototype.request = function(url, onComplete, onDownload, onError)
{
	this.xhr = getXhr();							// sera PE déplacé dans methode init, à appeler avant request. Permettra d'appeler addRequestHeader avant requete...
	this.onComplete = onComplete ? onComplete:null;
	this.onDownload = onDownload ? onDownload:null;
	this.onError = onError ? onError:null;
	this.xhr.open(this.method, url, this.async);
	this.xhr.setRequestHeader('Content-type','text/xml; charset=iso-8859-1');
	
	var that = this;
	this.xhr.onreadystatechange = function ()
	{
		
		if(that.xhr.readyState == 3 && that.onDownload) that.onDownload(that.xhr);
		if(that.xhr.readyState == 4 && (that.xhr.status == 200 || that.xhr.status == 0))
		{
			if(that.onComplete) that.onComplete(that.xhr);
		}
		else if(that.xhr.readyState == 4 && (that.xhr.status < 200 || that.xhr.status >= 300))
		{
			if(that.onError) that.onError(that.xhr);
		}
	}
	this.xhr.send(this.body);
}

Ajax.loadXml = function(url)
{
	var xhr = getXhr();
	if (window.XMLHttpRequest)
	{
		xhr.open('get',url,false);
		xhr.send(null);
		return xhr.responseXML;
	}
	else if (window.ActiveXObject)
	{
		xhr.async=false;
		xhr.load(url);
		return xhr;
	}
	alert("Error loading document");
	return null;
}

Ajax.loadText = function(url)
{
	var xhr = getXhr();
	xhr.open('get', url, false);
	xhr.send(null);
	return xhr.responseText;
}


function getXhr()
{
	if (window.XMLHttpRequest) return new XMLHttpRequest();
	if (window.ActiveXObject)
	{
		var names = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
		for(var i = 0; i < names.length; ++i) 
		{
			try{ return new ActiveXObject(names[i]); }
			catch(e){}
		}
	}
	alert("XMLHttpRequest is not supported.\nXMLHttpRequest n'est pas supporté.");
	return null;
}

// Indique si Ajax est supporté ou non
Ajax.isSupported = function() {
	var supported = false;
	if (window.XMLHttpRequest) supported = true;
	else if(window.ActiveXObject)
	{
		var names = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
		for(var i = 0; i < names.length; ++i) 
		{
			var axo;
			try{ 
				axo = new ActiveXObject(names[i]); 
				supported = true;
				break;
			}
			catch(e){}
		}
	}
	return supported;
}



function extend(destination, source)
{
	for(var el in source) 
		destination[el] = source[el];
	return destination;
}
function Get_RefFonction( o_, fct_){return( function(){o_[ fct_]()});}

function Elem(){}
Elem.prototype.startZoom = function(wDeb, hDeb, wEnd, hEnd, duration, callback, isFixedCenter)
{
	this.anim_Zoom = new Array();
	this.anim_Zoom.wDeb = (wDeb != null) ? wDeb:this.clientWidth;
	this.anim_Zoom.hDeb = hDeb ? hDeb:this.clientHeight;
	this.anim_Zoom.wEnd = wEnd;	
	this.anim_Zoom.hEnd = hEnd;	
	this.anim_Zoom.isFixedCenter = isFixedCenter ? isFixedCenter:false;	
	this.anim_Zoom.callback = callback ? callback:null;	
	this.anim_Zoom.owner = this.parentNode;	
	this.anim_Zoom.duration = duration;	
	this.anim_Zoom.tick = 33;
	this.anim_Zoom.iterations = Math.floor(this.anim_Zoom.duration / this.anim_Zoom.tick);
	this.anim_Zoom.curIteration = 0;
	var wDist = this.anim_Zoom.wEnd - this.anim_Zoom.wDeb;
	this.anim_Zoom.varW = wDist / this.anim_Zoom.iterations;
	var hDist = this.anim_Zoom.hEnd - this.anim_Zoom.hDeb;
	this.anim_Zoom.varH = hDist / this.anim_Zoom.iterations;
	if(this.anim_Zoom.isFixedCenter)this.addStyles('position:absolute; width:' + this.anim_Zoom.wDeb + 'px; height:' + this.anim_Zoom.hDeb + 'px;');
	setTimeout(Get_RefFonction(this, '_animZoom'), this.anim_Zoom.tick);
}

Elem.prototype._animZoom = animElem_ZoomPlay;

function animElem_ZoomPlay()
{
	this.anim_Zoom.curIteration++;
	this.style.width = (this.offsetWidth + this.anim_Zoom.varW) + 'px';
	this.style.height = (this.offsetHeight + this.anim_Zoom.varH) + 'px';
	if(this.anim_Zoom.isFixedCenter)
	{
		this.style.left = (this.anim_Zoom.owner.clientWidth / 2) - (this.clientWidth / 2) + 'px';
		this.style.top = (this.anim_Zoom.owner.clientHeight / 2) - (this.clientHeight / 2) + 'px';
	}
	if(this.anim_Zoom.curIteration < this.anim_Zoom.iterations) setTimeout(Get_RefFonction(this, '_animZoom'), this.anim_Zoom.tick);
	else
	{
		var ajustW = this.anim_Zoom.wEnd - this.clientWidth;
		var ajustH = this.anim_Zoom.hEnd - this.clientHeight;
		if(ajustW != 0) this.style.width = (this.clientWidth + ajustW) + 'px';
		if(ajustH != 0) this.style.height = (this.clientHeight + ajustH) + 'px';
		if(this.anim_Zoom.isFixedCenter) this.setPosAtCenter(this.anim_Zoom.owner);
		if(this.anim_Zoom.callback)	this.anim_Zoom.callback(this, ajustW, ajustH);
	}
}


/**
*	Permet d'obtenir la valeur d'un paramètre d'url passé par get, sur l'url donné ou sur la page courante.
*	@return la valeur du paramètre donné ou une chaine vide si le paramètre n'est pas trouvé
*/
function getUrlParam( name, url ) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  //var results = regex.exec( window.location.href );
  var url = url ? url : window.location.href;
  var results = regex.exec( url );
  if( results == null ) return "";
  else return results[1];
}

function Timer(){this.startTime = null;this.stopTime = null;this.intervals = new Array();this.isRunning = false;}


Timer.prototype.start = function(){
	this.startTime = new Date().getTime();
	this.isRunning = true;
}


Timer.prototype.stop = function(){
	this.stopTime = new Date().getTime();
	this.isRunning = false;
	this.intervals.push([this.startTime, this.stopTime]);
}


Timer.prototype.getElapsedTime = function(){
	var lastInterval = -1;
	if(this.intervals.length > 0)lastInterval = this.intervals[this.intervals.length - 1][1] - this.intervals[this.intervals.length - 1][0];
	return lastInterval;
}


Timer.prototype.getElapsedIntervals = function(){
	var array = new Array();
	for(var i = 0; i < this.intervals.length; ++i){
		array.push(this.intervals[i][1] - this.intervals[i][0]);
	}
	return array;
}


Timer.prototype.reset = function(){
	if(this.isRunning) this.isRunning = false;
	this.startTime = 0;
	this.stopTime = 0;
	this.intervals = new Array();
}


Timer.prototype.intervalsCount = function(){return this.intervals.length;}


function createCboSearchRes(xml) {
	// xml de type : <ArrayOfPage><Page><id></id><filename></filename><lang></lang></Page></ArrayOfPage>
	
	var cbo = document.createElement('select');
	cbo.id = 'cboSearchRes';
	cbo.setAttribute('onchange', 'gotoPage(this.value);');
	var opt = document.createElement('option');
	opt.innerHTML = 'choix page';
	opt.value = '#';
	cbo.appendChild(opt);
	var res = xml.getElementsByTagName('Page');
	
	for(var i = 0; i < res.length ; i++) {
		
		if(res[i].textContent) {
			opt = document.createElement('option');
			opt.value = res[i].getElementsByTagName('filename')[0].textContent;
			opt.innerHTML = 'Page ' + res[i].getElementsByTagName('id')[0].textContent;
			cbo.appendChild(opt);
		}
		else if(res[i].text) {
			opt = document.createElement('option');
			opt.value = res[i].getElementsByTagName('filename')[0].text;
			opt.innerHTML = 'Page ' + res[i].getElementsByTagName('id')[0].text;
			cbo.appendChild(opt);
		}

	}
	$el('boxSearchContainer').appendChild(cbo);
}


function setStylesheet(szTitle, group)
{
    var link;
    /* Pour chaque <link> trouvé dans le document */
	
	if(group == null)
	{
		for(var i = 0;(link = document.getElementsByTagName("link")[i] );i++ )
		{
			if ( link.getAttribute("rel").indexOf("style") != -1 && link.getAttribute("title") )
			{
				link.disabled = true;      /* Désactiver la feuille de style */
				/* Si c'est la feuille de style que l'on cherche */
				if ( link.getAttribute("title") == szTitle )
					link.disabled = false; /* Réactiver la feuille de style */
			}
		}
		return true;
	}
	else
	{
		for(var i = 0;(link = document.getElementsByTagName("link")[i] );i++ )
		{
			if ( link.getAttribute("rel").indexOf("style") != -1 && link.getAttribute("title") && link.getAttribute('title').indexOf(group) != -1)
			{
				link.disabled = true;      /* Désactiver la feuille de style */
				/* Si c'est la feuille de style que l'on cherche */
				if ( link.getAttribute("title") == szTitle )
					link.disabled = false; /* Réactiver la feuille de style */
			}
		}
		return true;
	}
	
    
}


function changeStylesheet(titleSheet, group)
{
	if(group == null)
	{
		setStylesheet(titleSheet);
		try
		{
			var cboStyle = document.getElementsByTagName('select');
			for(var i = 0; i < cboStyle.length; i++)
			{
				if(cboStyle[i].id.indexOf('cboStylesheet') != -1)
				{
					for(var j = 0; j < cboStyle[i].options.length; j++)
					{
						if(cboStyle[i].options[j].value == titleSheet)
						{
							cboStyle[i].selectedIndex = j;
							break;
						}
					}
				}
			}
		}
		catch(er){}
	}
	else setStylesheet(titleSheet, group);
}


function gotoPage(url) {
	window.location.href = url;
}


//var textMode = new Array("text-normal", "text-80");
var curMode = "text-normal";
	function switchTextMode()
	{
		var texts;
		if(!curMode || curMode == "text-normal")
		{
			curMode = "text-80";
			setCookie("textMode", curMode, 777);
			texts = getElementsByClassName("text-normal");
			for(var i =0;  i < texts.length; i++) texts[i].style.display = "none";
			texts = getElementsByClassName("text-80");
			//for(var i =0;  i < texts.length; i++) texts[i].style.display = "inline";
			for(var i =0;  i < texts.length; i++)
			{
				if(texts[i].tagName.toLowerCase() == "span") texts[i].style.display = "inline";
				//else texts[i].style.display = "block";
				else texts[i].style.display = "inline-block";
			}
			
			try
			{
				$el('btnTextMode1').innerHTML = dl_text['txtModeTextShort'];
				$el('btnTextMode2').innerHTML = dl_text['txtModeTextShort'];
			}
			catch(er) {}
			
		}
		else
		{
			curMode = "text-normal";
			setCookie("textMode", curMode, 777);
			texts = getElementsByClassName("text-80");
			for(var i =0;  i < texts.length; i++) texts[i].style.display = "none";
			texts = getElementsByClassName("text-normal");
			//for(var i =0;  i < texts.length; i++) texts[i].style.display = "inline";
			for(var i =0;  i < texts.length; i++)
			{
				if(texts[i].tagName.toLowerCase() == "span") texts[i].style.display = "inline";
				//else texts[i].style.display = "block";
				else texts[i].style.display = "inline-block";
			}
			
			try
			{
				$el('btnTextMode1').innerHTML = dl_text['txtModeTextNormal'];
				$el('btnTextMode2').innerHTML = dl_text['txtModeTextNormal'];
			}
			catch(er) {}
		}
	}
	
function setTextMode(mode)
{
	curMode = mode;
	setCookie("textMode", curMode, 777);
	
	if(curMode == "text-normal")
	{
		texts = getElementsByClassName("text-80");
		for(var i =0;  i < texts.length; i++) texts[i].style.display = "none";
		texts = getElementsByClassName("text-normal");
		//for(var i =0;  i < texts.length; i++) texts[i].style.display = "inline";
		for(var i =0;  i < texts.length; i++)
		{
			if(texts[i].tagName.toLowerCase() == "span") texts[i].style.display = "inline";
			//else texts[i].style.display = "block";
				else texts[i].style.display = "inline-block";
		}
		
		try
		{
			$el('btnTextMode1').innerHTML = dl_text['txtModeTextNormal'];
			$el('btnTextMode2').innerHTML = dl_text['txtModeTextNormal'];
		}
		catch(er) {}
	}
	else if(curMode == "text-80")
	{
		texts = getElementsByClassName("text-normal");
		for(var i =0;  i < texts.length; i++) texts[i].style.display = "none";
		texts = getElementsByClassName("text-80");
		//for(var i =0;  i < texts.length; i++) texts[i].style.display = "inline";
		for(var i =0;  i < texts.length; i++)
		{
			if(texts[i].tagName.toLowerCase() == "span") texts[i].style.display = "inline";
			//else texts[i].style.display = "block";
				else texts[i].style.display = "inline-block";
		}
		
		try
		{
			$el('btnTextMode1').innerHTML = dl_text['txtModeTextShort'];
			$el('btnTextMode2').innerHTML = dl_text['txtModeTextShort'];
		}
		catch(er) {}
	}
}


// show all buttons with 'playBtn' classname
function showPlayBtn()
{
	var buttons = getElementsByClassName("playBtn");
	for(var i = 0; i < buttons.length; i++) { buttons[i].style.display = 'block'; }
}
// hide all buttons with 'playBtn' classname
function hidePlayBtn()
{
	var buttons = getElementsByClassName("playBtn");
	for(var i = 0; i < buttons.length; i++) { buttons[i].style.display = 'none'; }
}




var language = 'fr';	// langue par défaut

// initialisation de la page au chargement
/**
	* Permet d'afficher/masquer le contenu des sommaires (concerne page sommaire.html uniquement)
	*/
	var curChapHeight = null;
	var curWidth = null;
	
	var curChapOpened = null;
	var toggleInProgress = false;
	var curOrient;
	var orientName = null;
// pr lecture mp3 sur focus... 
// need: id de l'el donné pour charger mp3

var vocalActif = false;
var so = null;	// swf object (player mp3)
var curPlayerId = null;


	// nvelle gestion resize du texte (en '%', contre 'px' avant)
	var font_size_min = 90;
	var font_size_default = 100;
	var font_size_max = 200;
	
	//function resizeText(val, event)
	function resizeText(val)
	{
		var size = document.body.style.fontSize;
		if(size != null && size.length > 0)
		{
			size = parseInt(size) + val;
		}
		else
		{
			size = (100 + val);
		}
		
		if(size >= font_size_min)
			{
				if(size <= font_size_max)
				{
					document.body.style.fontSize = size + "%";
					setCookie("bodySize", size, 777);
				}
				else 
				{
					document.body.style.fontSize = font_size_max + "%";
					setCookie("bodySize", font_size_max, 777);
				}
			}
			else 
			{
				document.body.style.fontSize = font_size_min + "%";
				setCookie("bodySize", font_size_min, 777);
			}
		
		// fix ie 7/8 bug redraw select elements
		if(document.body.setActive) {
			var cbos = document.getElementsByTagName('select');
			for(var i = 0; i < cbos.length; i++) {
				cbos[i].setActive();
			}
			//el.setActive();
		}
	}
	
	function setSizeText(val) {
		var size = font_size_default;
		if(val >= font_size_min && val <= font_size_max) size = val;
		else if(val < font_size_min) size = font_size_min
		else if(val > font_size_max) size = font_size_max;
		
		document.body.style.fontSize = size + '%';
		setCookie("bodySize", size, 777);
		
	}
	
	function changeFgColorText(col)
	{
		// 2010.01.04 : nvelle version (param cbo contre couleur avant
		//var col = cbo.value;
		
	
		// si couleur de bg identique à couleur donnée, on quitte
		var bgColor = getCookie('bgColor');
		if(bgColor.length > 0 && bgColor == col) return false;
		
		
		// on récup la couleur par défatu
		//if(col.length == 0) col = defaultFgColor;	// pr la couleur par défaut des cbo
		

		var els = getElementsByClassName('fgText');
		for(var i = 0; i < els.length; i++) 
			els[i].style.color = col;

			
		// on selectionne l'option correspondante à la couleur dans le select
			// voir à avoir en var globale les select (selFgColor x2 et selBgColor x2), moins tordu que ca..
			var cboPage = document.getElementsByTagName('select');
			for(var i = 0; i < cboPage.length; i++)
			{
				if(cboPage[i].id.indexOf("selFgColor") != -1)
				{
					for(var j = 0; j < cboPage[i].options.length; j++)
					{
						if(cboPage[i].options[j].value == col)
						{
							cboPage[i].selectedIndex = j;
							break;
						}
					}
				}
			}
			
			
		
		setCookie('fgColor', col, 777);
		
	}
	
	
	function changeBgColorText(col)
	{
		// si couleur de bg identique à couleur donnée, on quitte
		var fgColor = getCookie('fgColor');
		if(fgColor.length > 0 && fgColor == col) return false;

		// on récup la couleur par défatu
		document.body.style.backgroundColor = col;

		// 'doublon' pour certain elem, mais utile pour ceux non reconnus par getAllElements
		//var els = $c('bgText');
		var els = getElementsByClassName('bgText');
		
		
		for(var i = 0; i < els.length; i++) 
			els[i].style.backgroundColor = col;
			
			// on selectionne l'option correspondante à la couleur dans le select
			// voir à avoir en var globale les select (selFgColor x2 et selBgColor x2), moins tordu que ca..
			var cboPage = document.getElementsByTagName('select');
			for(var i = 0; i < cboPage.length; i++)
			{
				if(cboPage[i].id.indexOf("selBgColor") != -1)
				{
					for(var j = 0; j < cboPage[i].options.length; j++)
					{
						if(cboPage[i].options[j].value == col)
						{
							cboPage[i].selectedIndex = j;
							break;
						}
					}
				}
			}
		setCookie('bgColor', col, 777);
	}
	
	
	
	function checkAccessCookies()
	{
		
		var tmpCookie = '';
		// nvelle gestion resize
		tmpCookie = getCookie('bodySize');
		if(tmpCookie.length == 0) tmpCookie = font_size_default;
		//alert(tmpCookie);
		document.body.style.fontSize = tmpCookie + "%";
		
		

		tmpCookie = "";
		tmpCookie = getCookie('fgColor');
		if(tmpCookie.length > 0)
		{
			//var els = $c('fgText');
			
			var els = getElementsByClassName('fgText');
			
			for(var i = 0; i < els.length; i++) 
				els[i].style.color = tmpCookie;
				
			// on selectionne l'option correspondante à la couleur dans le select
			
			// voir à avoir en var globale les select (selFgColor x2 et selBgColor x2), moins tordu que ca..
			var cboPage = document.getElementsByTagName('select');
			for(var i = 0; i < cboPage.length; i++)
			{
				if(cboPage[i].id.indexOf("selFgColor") != -1)
				{
					for(var j = 0; j < cboPage[i].options.length; j++)
					{
						if(cboPage[i].options[j].value == tmpCookie)
						{
							cboPage[i].selectedIndex = j;
							break;
						}
					}
				}
			}
			
			
			
			
			// on modifie la couleur du player
			//changePlayerColor(tmpCookie);
			
		}
		//alert("tt")
		tmpCookie = "";
		tmpCookie = getCookie('bgColor');
		if(tmpCookie.length > 0)
		{
			document.body.style.backgroundColor = tmpCookie;
		
			// 'doublon' pour certain elem, mais utile pour ceux non reconnus par getAllElements
			//var els = $c('bgText');
			var els = getElementsByClassName('bgText');
			
			for(var i = 0; i < els.length; i++) 
				els[i].style.backgroundColor = tmpCookie;
				
			// on selectionne l'option correspondante à la couleur dans le select
			// voir à avoir en var globale les select (selFgColor x2 et selBgColor x2), moins tordu que ca..
			var cboPage = document.getElementsByTagName('select');
			for(var i = 0; i < cboPage.length; i++)
			{
				if(cboPage[i].id.indexOf("selBgColor") != -1)
				{
					for(var j = 0; j < cboPage[i].options.length; j++)
					{
						if(cboPage[i].options[j].value == tmpCookie)
						{
							cboPage[i].selectedIndex = j;
							break;
						}
					}
				}
			}
		}
		
		// gestion synthèse vocale
		try
		{
			vocalCookie = getCookie('vocal');
			if(vocalCookie.length > 0) { vocalActif = (vocalCookie.indexOf('true') != -1) ? true:false; }
			else vocalActif = false;
			// on modif le texte du bouton suivant l'activation ou non de le lecture du texte
			if(vocalActif) 
			{
				$el('btnVocal1').innerHTML = dl_text['txtVocalOn'];
				$el('btnVocal2').innerHTML = dl_text['txtVocalOn'];
				// show buttons with 'playBtn' classname
				showPlayBtn();
			}
			else 
			{
				$el('btnVocal1').innerHTML = dl_text['txtVocalOff'];
				$el('btnVocal2').innerHTML = dl_text['txtVocalOff'];
				// hide buttons with 'playBtn' classname
				hidePlayBtn();
			}
		}
		catch(er){}
		
		
		// gestion textMode (texte sur tte largeur ou max 80 carac
		mode = getCookie('textMode');
		if(mode.length > 0) mode = (mode == "text-normal") ? "text-normal":"text-80";
		setTextMode(mode);
		
		
	}

	
	

				
// mode contrasté, texte blanc sur fond noir
function setModeContraste()
{
	if(getCookie('fgColor') == '#ffffff' && getCookie('bgColor') == '#000000')
	{
		changeFgColorText(''); 
		changeBgColorText('');
	}
	else
	{
		changeFgColorText('#ffffff'); 
		changeBgColorText('#000000');
	}
}


	function showMetaViewport() {
		var metas = document.getElementsByTagName('meta');
		meta = metas[metas.length - 1];
		alert('meta.content : ' + meta.content);
	}





	// 2010.01.07 -> elem dont le mp3 doit être coupé sur l'event onclick
	var navPageElements;
	
	window.onload = initPage;
	function initPage()
	{
		if(navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) positionFlashPlayer();
		//alert('initPage called');
	
		// récup de la langue
		language = document.getElementsByTagName('html')[0].getAttribute('lang');
		

		// si iphone, on ajoute les effets sur le sommaier (toggleContent)
		if(navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i))
		{
			window.scrollTo(0,1); // on masque la barre d'url en faisant scroller
		}
		else if(navigator.userAgent.match(/Blackberry/i)) {
			
			font_size_min = 90;
			font_size_default = 100;
			font_size_max = 150;
		}
		
		//checkAccessCookies();
		
		navPageElements = getElementsByClassName("navPage");
		for(var i= 0; i < navPageElements.length ; i++)
		{
			if(document.addEventListener) { navPageElements[i].addEventListener('click', navPage_stopMp3, true); }
			else if(document.attachEvent) { navPageElements[i].attachEvent('onclick', navPage_stopMp3); }
		}

		
		// detection de flash
		// try pr erreur ac vers mobile...
		try {
			flashPlayerOk = DetectFlashVer(8,0,0);
			if(!flashPlayerOk){
				var btnVocal = $el("btnVocal1");
				btnVocal.parentNode.removeChild(btnVocal);
				btnVocal = $el("btnVocal2");
				btnVocal.parentNode.removeChild(btnVocal);	
			}
		}
		catch(er) {  }
		
		
		// on selectionne l'option de cboGoto en fonction de la page sur laquelle on est
		try {
			var pageName = $el('page_name');	// elem input type="hidden"
			var num = pageName.getAttribute('value');
			num = num.replace('page', '').replace('.html', '');
			num = parseInt(num);
			
			var cbo = $el('cboGoto');
			for(var i = 0; i < cbo.options.length; i++) {
				if(i == num) {
					cbo.options[i].selected = 'selected';
					break;
				}
			}
		}
		catch(er) {  }
		
		
		// gestion recherche v1
		try {
			// chargement du fichier xmlSearchFile.js
			s = document.createElement('script');
			s.type = 'text/javascript';
			s.src = 'xmlSearchFile.js';
			document.getElementsByTagName('head')[0].appendChild(s);
			//document.getElementsByTagName('head')[0].remove(s);
		}
		catch(er) { 
			// chargement du fichier xmlSearchFile.xml (secours)
			//alert('ajout script \'xmlSearchFile.js\' dynamique impossible'); 
			
			// add 15 to valid
			var ajax = new Ajax();
			ajax.request('xmlSearchFile.xml', function(xhr){ xmlFile_loaded(xhr);}, null, xmlFile_error);
		}
		
		if(navigator.userAgent.match(/IEMobile/i)) {
			var ajax = new Ajax();
			ajax.request('xmlSearchFile.xml', function(xhr){ xmlFile_loaded(xhr);}, null, xmlFile_error);
		}
		
		if(!navigator.userAgent.match(/iPhone/i) && !navigator.userAgent.match(/iPod/i) &&
		   !navigator.userAgent.match(/Blackberry/i)) {
			s2 = document.createElement('script');
			s2.type = 'text/javascript';
			s2.src = 'xmlThumbsFile.js';
			document.getElementsByTagName('head')[0].appendChild(s2);
		}
		
		// gestion fichiers datalang-dyn
		try {
			var xmlDataLangFile = 'datalang_dyn_' + language + '.xml';
			var ajax = new Ajax();
			ajax.request(xmlDataLangFile, function(xhr) { xmlDataLangFile_loaded(xhr); }, null, xmlDataLangFile_error);
		}
		catch(er) {
			//alert('impossible de charger le fichier datalang-dyn : ' + er);
			// charger fichier datalang-dyn js
			
			var sdl = document.createElement('script');
			sdl.type = 'text/javascript';
			sdl.src = 'datalang_dyn_' + language + '.js';
			document.getElementsByTagName('head')[0].appendChild(sdl);
			
		}

		
		// tests pr recherche sur windows mobile
		//alert(navigator.userAgent);
		if(navigator.userAgent.match(/IEMobile/i)) {
			
			var title = document.getElementsByTagName('title')[0].innerHTML;
			//alert('page :' + title);
			if(title == 'Recherche' || title == 'Search') {
				//alert('page :' + title);
				
				//alert('OK - pageTitle : ' + title);
				
				var ajax = new Ajax();
				ajax.request('xmlSearchFile.xml', function(xhr){ xmlFile_loaded(xhr);}, null, xmlFile_error);
			}
			//else alert('NO - pageTitle : ' + title);
		}
		
		
		// pr ie6/7 qui ne supporte pas la pseudo class ( :focus )
		initFocusVisibility();
	}
	
	
	var datalangDyn;
	
	// récup du fichier xml datalang_dyn_LANG.xml
	function xmlDataLangFile_loaded(xhr) {
		datalangDyn = xhr.responseXML;
		//alert('datalang-dyn : ' + xhr.responseText);
		fillDatalangDyn(datalangDyn);
		
	}
	
	function xmlDataLangFile_error() {
		//alert('erreur lors du chargement du fichier datalang-dyn');
		var sdl = document.createElement('script');
			sdl.type = 'text/javascript';
			sdl.src = 'datalang_dyn_' + language + '.js';
			document.getElementsByTagName('head')[0].appendChild(sdl);
	}
	
	
	var dl_text = new Array();
	// défini les différentes variables contenant les textes dynamiques
	function fillDatalangDyn(xmlDoc) {
		var labels = xmlDoc.getElementsByTagName('label');
		for(var i = 0; i < labels.length; i++) {
			dl_text[labels[i].getAttribute('name')] = labels[i].getAttribute('value');
		}
		
		// appel modifTextLimitFlash
		checkAccessCookies();
		try { modifTextLimitFlash(fp_min_ver_major, fp_min_ver_minor, fp_min_ver_revision); } catch(er) {  }
	}
	
	function fillDatalangDynJs() {
		//alert('fillDatalangDynJs called');
		dl_text['txtVocalOn'] = dl_txtVocalOn;
		dl_text['txtVocalOff'] = dl_txtVocalOff;
		dl_text['txtModeTextNormal'] = dl_txtModeTextNormal;
		dl_text['txtModeTextShort'] = dl_txtModeTextShort;
		dl_text['txtAcc'] = dl_txtAcc;
		dl_text['txtNoFlash'] = dl_txtNoFlash;
		dl_text['txtSearchErr'] = dl_txtSearchErr;
		dl_text['txtSearchRecord'] = dl_txtSearchRecord;
		dl_text['txtSearchRecords'] = dl_txtSearchRecords;
		dl_text['txtSearchNoResult'] = dl_txtSearchNoResult;
		//alert('données du fichier datalang-dyn.js chargées avec succès');
		//alert('dl_text[\'txtNoFlash\'] : ' + dl_text['txtNoFlash']);
		
		// appel modifTextLimitFlash
		checkAccessCookies();
		try { modifTextLimitFlash(fp_min_ver_major, fp_min_ver_minor, fp_min_ver_revision); } catch(er) {  }
	}
	
	
	var thumbsAlreadyInit = false;
	var xmlThumbsDoc;
	function initThumbs() {
		
		if(!thumbsAlreadyInit) {
		
			if(window.DOMParser) {
				var parser = new DOMParser();
				xmlThumbsDoc = parser.parseFromString(strXmlThumbs, 'text/xml');
			}
			else {
				xmlThumbsDoc = new ActiveXObject('Microsoft.XMLDOM');
				xmlThumbsDoc.async = 'false';
				xmlThumbsDoc.loadXML(strXmlThumbs);
			}
			thumbsAlreadyInit = true;
		}

		var tmpThumbs = xmlThumbsDoc.getElementsByTagName("thumbs");
		for(var i = 0; i < tmpThumbs.length; i++)
		{
			if(tmpThumbs[i].getAttribute("lang") == language)
			{
				thumbs = tmpThumbs[i];
				break;
			}
		}
		if(thumbs != null)
		{
			initThumbnailsPopUp();
		}
		
	}
	
	
	
	// stop lecture du mp3 en cours de lecture
	function navPage_stopMp3(e)
	{
		if(vocalActif)
		{
			try
			{
				var olPlayerContainer = $el("flashContainer");
				olPlayerContainer.innerHTML = "";
			}
			catch(er){/*alert("erreur lors de la coupure du son : " + er);*/}
		}
	}
	
	

	function toggleContent (idEl, idIcon)
	{
		var el = $el(idEl);
		el = extend(el, Elem.prototype);
		
		//curChapToggled = idEl;

		// ne passe pas encore sur ie... / Verif si Opera présent car user agent d'opéra sous linux contient msie
		if(navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Opera') == -1)
		{
			if(el.style.display != 'none')
			{
				el.style.display = 'none';
				if(idIcon != null)
						//$el(idIcon).src = "../../home/images/bas.png";
						$el(idIcon).src = "../../home/images/greyscale_down.gif";
			}
			else 
			{
				el.style.display = 'block';
				if(idIcon != null)
						//$el(idIcon).src = "../../home/images/haut.png";
						$el(idIcon).src = "../../home/images/greyscale_up.gif";
			}
		}
		else
		{
		
			if(!toggleInProgress)
			{
				toggleInProgress = true;
				if(el.clientHeight > 0)
				{
					curWidth = el.clientWidth - parseInt(el.style.paddingLeft);
					el.setAttribute('defHeight', el.clientHeight);
					el.startZoom(curWidth, el.clientHeight, curWidth, 0, 250, chapToggleClosed);
					
					//
					if(idIcon != null)
						//$el(idIcon).src = "../../home/images/bas.png";
						$el(idIcon).src = "../../home/images/greyscale_down.gif";
				}
				else
				{
					curChapOpened = el.id;
					var height = parseInt(el.getAttribute('defHeight'));
					curWidth = el.clientWidth - parseInt(el.style.paddingLeft);
					//el.startZoom(curWidth, 0,curWidth, height, 250, chapToggleOpened);
					el.startZoom(curWidth, 0,curWidth, height, 250, function(el) {chapToggleOpened(el); } );
					
					if(idIcon != null)
						//$el(idIcon).src = "../../home/images/haut.png";
						$el(idIcon).src = "../../home/images/greyscale_up.gif";
				}
			}
			
			// version simple de l'accordion menu
			
			
			
		}
	}
	
	// ferme tous les chapitres de la page de sommaire (au début)
	function toggleAllChaps()
	{
		//var innerChaps= $c('inner');
		var innerChaps= getElementsByClassName('inner');
		for(var i =0; i < innerChaps.length; i++)
		{
			innerChaps[i].setAttribute('defHeight', innerChaps[i].clientHeight);	// on 'stocke' la hauteur
			innerChaps[i].style.height = 0;
		}
	}
	
	
	
	
	function chapToggleClosed()
	{
		toggleInProgress = false;
		curChapOpened = null;
		
	}
	
	function chapToggleOpened(el)
	{
		toggleInProgress = false;
		try { el.style.height = "auto"; }
		catch(er) {  }
	}
	
	
//***************************************************************************
//	Iphone : Accordion menu
//***************************************************************************
	
	iphone_chapOpen = null;
	// gestion du sommaire de l'iphone avec un accordion menu
	function toggleContentIphone(elId)
	{
		var el = $el(elId);
		el = extend(el, Elem.prototype);
		var w = el.clientWidth - parseInt(el.paddingLeft);

		if(iphone_chapOpen && iphone_chapOpen != elId)
		{
			openAfterClose(iphone_chapOpen, elId);
		}
		else
		{
			if(el.clientHeight > 0)	// fermeture d'un chapitre
			{
				el.setAttribute('defHeight', el.clientHeight);	// si déjà récup 1 fois, pas besoin de le refaire (si pas accessible, donc pas de modif de hauteur, etc...)
				el.startZoom(w, el.clientHeight, w, 0, 150)
			}
			else					// ouverture d'un chapitre
			{
				iphone_chapOpen = elId;
				el.startZoom(w, 0, w, parseInt(el.getAttribute('defHeight')), 150);
			}
		}
	}
	
	//
	// anime la fermeture d'un chapitre, puis l'ouverture d'un autre dès que l'anim de fermeture est terminée
	function openAfterClose(idElToClose, idElToOpen)
	{
		var w1 = $el(idElToClose).clientWidth - parseInt($el(idElToClose).paddingLeft);
		var w2 = $el(idElToOpen).clientWidth - parseInt($el(idElToOpen).paddingLeft);
		//$(idElToClose).startZoom(w1, $(idElToClose).clientHeight, w1, 0, 150, function() { $(idElToOpen).startZoom(w2, 0, w2, parseInt($(idElToOpen).getAttribute('defHeight')), 150); iphone_chapOpen = idElToOpen; } );
		extend($el(idElToClose), Elem.prototype).startZoom(w1,  $el(idElToClose).clientHeight, w1, 0, 150, function() { extend($el(idElToOpen), Elem.prototype).startZoom(w2, 0, w2, parseInt($el(idElToOpen).getAttribute('defHeight')), 150); iphone_chapOpen = idElToOpen; } );
	}
	
	
	// ferme tous les chapitres de la page de sommaire (au début)
	function toggleAllChapsIphone()
	{
		//var innerChaps= $c('inner');
		var innerChaps= getElementsByClassName('inner');
		for(var i =0; i < innerChaps.length; i++)
		{
			innerChaps[i].setAttribute('defHeight', innerChaps[i].clientHeight);	// on 'stocke' la hauteur
			innerChaps[i].style.height = 0;
		}
	}
	
//***************************************************************************
	
	var maxScaleModif = false;
	var prevOrient = null;
	
	function orientationChanged()
	{
		
	}
	
	function setMode(mode)
	{
		orientName = mode;
		document.body.setAttribute('orient', mode);
	}

/*
=============  toggleVocal  ===============================
*/

var elF;
var alreadyPlay = false;
// fix ie6 lost focus after dom modif
var idCurBtnPlaying = null;

function restoreFocus(elem) {
	elF.focus();
}

// appelée par flash quand son fini d'être joué (voir fct playText ci-dessus)
function soundPlayed(idElem)
{
	// Edit: Si 'online', on temporise un peu avec de couper le son car quand flash appel cette méthode, 
	//		 le son est coupé à la fin
	
	if(online == 'true') {
		setTimeout(function () { 
			try {
				$el(idElem).getElementsByTagName("img")[0].src = "../../home/images/play.png";
				var olPlayerContainer = $el("flashContainer");
				olPlayerContainer.innerHTML = "";
			}
			catch(er) {  }
		}, 250);
	}
	else {
		try
		{
			//playBtnIsPlaying = false;
			$el(idElem).getElementsByTagName("img")[0].src = "../../home/images/play.png";
			var olPlayerContainer = $el("flashContainer");
			olPlayerContainer.innerHTML = "";
		}
		catch(er) {  }
	}
}


var online = null;
if(window.addEventListener) window.addEventListener('load', initNavMode, false);
else if(window.attachEvent) window.attachEvent('onload', initNavMode);

function initNavMode()
{
	online = (window.location.href.indexOf('http') == 0) ? "true" : "false";
}


// test à valider : correction lecture mp3 qd fenêtre regagne focus avec un elem ayant un mp3
// déclenché sur le focus..
var windowHasFocus = false;
var windowJustFocused = false;
if(window.addEventListener)
{
	window.addEventListener('blur', windowBlured, false);
	window.addEventListener('focus', windowFocused, false);
	//window.addEventListener('load', printWindowMode, false);
	
}
else if(window.attachEvent)
{
	window.attachEvent('onblur', windowFocused);
	window.attachEvent('onfocus', windowFocused);
	//window.attachEvent('onload', printWindowMode);
}

function printWindowMode() {
	var div = document.createElement('div');
	div.id = 'windowMode';
	div.style.cssText = 'position:fixed; top:0;  left:0;';
	div.innerHMTL = '';
	document.body.appendChild(div);
}


function windowBlured() {
	windowHasFocus = false;
	windowJustFocused = false;
	//$el('windowMode').innerHTML  = 'Window blured';
}

function windowFocused() {
	windowHasFocus = true;
	windowJustFocused = true;
	//$el('windowMode').innerHTML  = 'Window focused';
}

function playText(urlMp3, urlPlayer, idElem)
{
	
	if (windowHasFocus == false) return false;
	else if(windowHasFocus && windowJustFocused) {
		windowJustFocused = false;
		return false;
	}
	
	if(idElem != null && idElem == idCurBtnPlaying)
	{
		soundPlayed(idCurBtnPlaying);
		idCurBtnPlaying = null;
		return false;
	}
	else if(idCurBtnPlaying != null)
	{
		// permet de restaurer l'img ('play') sur bouton précédent
		//soundPlayed(idCurBtnPlaying);
		$el(idCurBtnPlaying).getElementsByTagName("img")[0].src = "../../home/images/play.png";
	}
	
	if(idElem != null) idCurBtnPlaying = idElem;
	// fix ie6 focus redonné après 'bug' perte focus après modif dom
	if(window.event && navigator.userAgent.match(/MSIE 6/i) && alreadyPlay == true)
	{
		alreadyPlay = false;
		window.event.returnValue = false;
		return false;
	}

	if(online != null && vocalActif)
	{
		// on supprime l'eventuel player précedent
		try { $el("flashContainer").innerHTML = ""; }
		catch(er){ }
	
		try
		{
			so = new SWFObject(urlPlayer, "myMp3_" + Math.round(Math.random()*1000000) , "1", "1", "8");
			so.addParam("class", "flashMp3");
			so.addParam("wmode", "transparent");
			so.addParam("AllowScriptAccess", "sameDomain");
			so.addVariable("SoundUrl", urlMp3);
			so.addVariable("jsFunction", "soundPlayed");	// appelé via flash sur l'event sound.onComplete
			if (idElem != null) so.addVariable("jsFuncParam", idElem);
			else so.addVariable("jsFuncParam", "");
			so.addVariable("online", online);
			so.write('flashContainer');
			// à laisser pour permettre lecture du mp3 !!?
			//$el("flashContainer").style.cssText += ";z-index:-10; left:0; top:0; width:0px; height:0px; background-color:#00f;";
			
			if(idElem != null) $el(idElem).getElementsByTagName("img")[0].src = "../../home/images/stop.png";
		}
		catch(er) { }
	
		// correction du pb sur ie6 (tabulation impossible)
		// Pas moyen de rendre à nouveau à event.srcElement le focus
		if(window.event && navigator.userAgent.match(/MSIE 6/i))
		{
			try
			{
				elF = event.srcElement;
				alreadyPlay = true;
				setTimeout(restoreFocus, 0);
			}
			catch(er){ alert(er);}
		}
	}
}



function toggleVocal()
{
	if(vocalActif)
	{
		vocalActif = false;
		setCookie('vocal', 'false', 777);
		try
		{
			$el('btnVocal1').innerHTML = dl_text['txtVocalOff'];
			$el('btnVocal2').innerHTML = dl_text['txtVocalOff'];
		}
		catch(er){}
		
		// on supprime l'eventuel player précedent
		try	// if (curPlayerId != null)
		{
			var olPlayerContainer = $el("flashContainer");
			olPlayerContainer.innerHTML = "";
		}
		catch(er){ }
		
		// hide all buttons with 'playBtn' classname
		hidePlayBtn();

	}
	else
	{
		vocalActif = true;
		setCookie('vocal', 'true', 777);
		try
		{
			$el('btnVocal1').innerHTML = dl_text['txtVocalOn'];
			$el('btnVocal2').innerHTML = dl_text['txtVocalOn'];
		}
		catch(er){}
		
		// show all buttons with 'playBtn' classname
		showPlayBtn();

	}
}


//--------------------------------------------------------------------
	
	//  pr ie6/7 qui ne supporte pas la pseudo class ( :focus )
	// sur event focus et focusout (ie only !?) on met en valeur l'element ayant le focus
	function initFocusVisibility()
	{
		if(navigator.userAgent.match(/MSIE 6/i)  || navigator.userAgent.match(/MSIE 7/i))
		{
			try
			{
				var anchors = document.getElementsByTagName("a");
				for(var i = 0; i < anchors.length; i++)
				{
					anchors[i].attachEvent("onfocus", a_focused);
					anchors[i].attachEvent("onfocusout", a_focusOut); 
				}
			}
			catch(er) {}
		}
	}
	
	// visibilité accrue lors du focus (ie6/7)
	function a_focused(e)
	{
		e = (e!=null) ? e:window.event;
		elFocusCurBorderStyle = e.srcElement.currentStyle.borderWidth + " " + e.srcElement.currentStyle.borderStyle + " " + e.srcElement.currentStyle.borderColor;
		var child = e.srcElement.getElementsByTagName('img');
		if(child.length > 0) child[0].style.border = "2px solid #ff6600";
		else e.srcElement.style.border = "2px solid #ff6600";
	}
	
	// suppr de la visibilité accrue lors du focus
	function a_focusOut(e)
	{
		e = (e != null) ? e:window.event;
		var child = e.srcElement.getElementsByTagName('img');
		if(child.length > 0) child[0].style.border = elFocusCurBorderStyle;
		//else e.srcElement.style.border = elFocusCurBorderStyle;
		else e.srcElement.style.border = 'none';
	}


//-----------------------------------------------------------

// fonction utilisées dans index.html pr souligner / supprimer souligenement
// des liens du menu.

function a_mouseOver(el)
{
	try{ el.style.textDecoration = "underline"; }
	catch(er) {  }
}
function a_mouseOut(el)
{
	try{ el.style.textDecoration = "none"; }
	catch(er) {  }
}

//-----------------------------------------------------------

// chemin vers les thumbnails (sommaire.html).
// si cette variable vaux null, on n'affiche pas les thumbnails
var thumbPath = null;
var thumbs = null;
var thumbRequest;

// chargement des infos des thumbnails (appelé dans page sommaire.html)
function loadThumbData()
{
	thumbRequest = new Ajax();
	thumbRequest.request("thumb.xml" + "?" + Math.round(Math.random()*1000000), function(xhr)
	//thumbRequest.request("thumb.xml", function(xhr)
	{
		var tmpThumbs = xhr.responseXML.getElementsByTagName("thumbs");
		for(var i = 0; i < tmpThumbs.length; i++)
		{
			if(tmpThumbs[i].getAttribute("lang") == language)
			{
				thumbs = tmpThumbs[i];
				break;
			}
		}
		if(thumbs != null)
		{
			initThumbnailsPopUp();
		}
	});
}

function initThumbnailsPopUp()
{
	if(thumbs != null)
	{
		var chapTitleElements = getElementsByClassName("chapTitle");
		for(var i = 0; i < chapTitleElements.length; i++)
		{
			if(document.addEventListener)
			{
				chapTitleElements[i].addEventListener("mouseover", tooltip_init, true);
				chapTitleElements[i].addEventListener("mousemove", tooltip_move, true);
				chapTitleElements[i].addEventListener("mouseout", tooltip_remove, true);
			}
			else if(document.attachEvent)
			{
				chapTitleElements[i].attachEvent("onmouseover", tooltip_init);
				chapTitleElements[i].attachEvent("onmousemove", tooltip_move);
				chapTitleElements[i].attachEvent("onmouseout", tooltip_remove);
			}
		}
	}
}
	
	
	
	function tooltip_init(e)
	{
		e = (e != null) ? e:window.event;
		
		var tooltip = null;
		
		var thumbId;
		if(e.target) { thumbId = e.target.id.replace("chapTitle", ''); }
		else if(e.srcElement) { thumbId = e.srcElement.id.replace("chapTitle", ''); }
		
		
		// récupération de l'url du thumb
		var srcThumb = "";
		var wThumb = "";
		var hThumb = "";
		var altThumb = "";
		for(var i = 0; i < thumbs.getElementsByTagName("thumb").length; i++)
		{
			if(thumbs.getElementsByTagName("thumb")[i].getAttribute("id") == thumbId)
			{
				srcThumb = thumbs.getElementsByTagName("thumb")[i].getAttribute("src");
				wThumb = thumbs.getElementsByTagName("thumb")[i].getAttribute("width");
				hThumb = thumbs.getElementsByTagName("thumb")[i].getAttribute("height");
				altThumb = thumbs.getElementsByTagName("thumb")[i].getAttribute("alt");
				borderCol = thumbs.getElementsByTagName("thumb")[i].getAttribute("borderColor");
				borderWidth = thumbs.getElementsByTagName("thumb")[i].getAttribute("borderWidth");
				break;
			}
		}
		
		
		//tooltip = createTooltip(thumbs.getElementById(thumbId).getAttribute("src"));
		//alert("srcThumb : " + srcThumb);
		tooltip = createTooltip(srcThumb, wThumb, hThumb, altThumb, borderCol, borderWidth);

		
		if(tooltip != null)
		{
			var x = e.clientX + 15;
			var y = e.clientY;
			if(document.documentElement && document.documentElement.scrollTop > 0) y += document.documentElement.scrollTop;
			else if(document.body && document.body.scrollTop > 0) y += document.body.scrollTop;
			
			tooltip.style.left = x + "px";
			tooltip.style.top = y + "px";
			
			document.body.appendChild(tooltip);
		}
	}
	
	
	function tooltip_move(e)
	{
		e = (e != null) ? e:window.event;
		try
		{	// corrige pb elem inexistant avec IE8 et Opéra 10.10
			var curX = e.clientX + 15;
			var curY = e.clientY;
			//var bottomEdge = (window.innerHeight) ? window.innerHeight:document.body.clientHeight;
			var bottomEdge = (window.innerHeight) ? window.innerHeight:document.documentElement.clientHeight;
			if(curY + $el("tooltip").clientHeight + 5 > bottomEdge)
			{
				// on ajuste la hauteur
				curY -= (curY + 25 + $el("tooltip").clientHeight - bottomEdge);
				// variante
				//curY-= document.getElementById("tooltip").clientHeight;
			}
			var rightEdge = (window.innerWidth) ? window.innerWidth:document.documentElement.clientWidth;
			if(curX + $el("tooltip").clientWidth + 5 > rightEdge)
			{
				//curX -= (curX + 25 + $el("tooltip").clientWidth - rightEdge);
				curX -= $el("tooltip").clientWidth + 30; // 30 = 15 * 2
			}
			
			if(document.documentElement && document.documentElement.scrollTop > 0) curY += document.documentElement.scrollTop;
			else if(document.body && document.body.scrollTop > 0) curY += document.body.scrollTop;
			
			$el("tooltip").style.left = curX + "px";
			$el("tooltip").style.top = curY + "px";
		}
		catch(er) { }
	}
		
	function tooltip_remove(e)
	{
		e = (e != null) ? e:window.event;
		try { document.body.removeChild($el("tooltip")); }
		catch(er) {  }
	}
	
	
	function createTooltip(src, width, height, alt)
	{
		var tooltip = document.createElement("div");
		tooltip.id = "tooltip";
		tooltip.className = "rounded5";
		//tooltip.style.cssText = "position:absolute; border:2px solid #ff6600; z-index:1000; background-color:#333; color:#fff;";
		tooltip.style.cssText = "position:absolute; border:" + borderWidth + " solid " + borderCol + "; z-index:1000; background-color:#333; color:#fff;";
		
		if(src != null)
		{
			var thumb = document.createElement("img");
			thumb.id = "thumb_" + src;
			thumb.style.position = "relative";
			thumb.src = src;
			if(width && parseInt(width) > 0) thumb.width = width;
			if(height && parseInt(height) > 0) thumb.height = height;
			if(alt && alt.length > 0) thumb.alt = alt;
			else thumb.alt = "thumb " + src;
			thumb.style.zIndex = "1001";
			tooltip.appendChild(thumb);
		}
		return tooltip;
	}
	


	// remplace la / les classes données par la classe donnée
	// ex:	- replaceClassName("foo", "bar");
	//		- replaceClassName(new Array("foo", "bar", "foobar"), "baz");
	// 
	function replaceClassName(oldClassName, newClassName)
	{
		if(oldClassName.length)
		{
			for(var j = 0; j < oldClassName.length; j++)
			{
				var els = getElementsByClassName(oldClassName[j]);
				for(var i = 0; i < els.length; i++)
				{
					els[i].setAttribute("className", newClassName);
					els[i].setAttribute("class", newClassName);
				}
			}
		}
		else
		{
			var els = getElementsByClassName(oldClassName);
			for(var i = 0; i < els.length; i++)
			{
				els[i].setAttribute("className", newClassName);
				els[i].setAttribute("class", newClassName);
			}
		}
	}




function toggleOptionsAccess(idEl) {
	var el = $el(idEl);
	if(el.style.display == 'none') el.style.display = 'block';
	else el.style.display = 'none';
}


// annule toutes les options activées (vocalisation, bgColor, fgColor, taille texte, contraste, 'style', text-normal ou text-80)
function clearAllOptions() {
	
	//if(curMode == 'text-80') switchTextMode();
	setTextMode('text-normal');
	//resizeText(font_size_default);
	setSizeText(font_size_default);
	changeFgColorText('');	
	changeBgColorText('');
	
	if(vocalActif) toggleVocal();
	
	//changeStylesheet('défaut');
	//changeStylesheet('default');
	
	var styleSheetDefault = document.getElementsByTagName('link')[0];
	changeStylesheet(styleSheetDefault.getAttribute('title'));
	
}


// nvelle version (utilise les textes contenus dans les tableaux dynamiques
function modifTextLimitFlash(flMajor, flMinor, flRevision)
{
	//alert('fp_min_ver_major : ' + fp_min_ver_major);
/*
	if(dl_text['txtAcc'] == undefined) {
		
		setTimeout(modifTextLimitFlash(flMajor, flMinor, flRevision), 1000);
		return false;
	}*/

	var lang = document.getElementsByTagName('html')[0].getAttribute('lang');
	
	//alert('dl_text[\'txtAcc\'] : ' + dl_text['txtAcc']);
	
	var strTxtAcc = dl_text['txtAcc'];
	var strTxtNoFlash = dl_text['txtNoFlash'];
	
	var flpmajor = (flMajor != null && parseInt(flMajor) >= 0) ? parseInt(flMajor) : 9;
	var flpminor = (flMinor != null && parseInt(flMinor) >= 0) ? parseInt(flMinor) : 0;
	var flprevision = (flRevision != null && parseInt(flRevision) >= 0) ? parseInt(flRevision) : 124;
	
	switch(lang) {
		case 'fr':
			strTxtAcc = strTxtAcc.replace('cliquez ici', 'cliquez <a href="' + document.getElementById('bvLink').href + '" title="" style="text-decoration:none;"><span>ici</span></a>');
			strTxtAcc = strTxtAcc.replace('plugin', '<span lang="en">plugin</span>');
		break;
		
		case 'en':
			strTxtAcc = strTxtAcc.replace('click here', 'click <a href="' + document.getElementById('bvLink').href + '" title="" style="text-decoration:none;"><span>here</span></a>');
		break;
		
		case 'es':
			strTxtAcc = strTxtAcc.replace('clic aquí', 'click <a href="' + document.getElementById('bvLink').href + '" title="" style="text-decoration:none;"><span>aquí</span></a>');
			strTxtAcc = strTxtAcc.replace('plug-in', '<span lang="en">plug-in</span>');
		break;
		
		case 'it':
			strTxtAcc = strTxtAcc.replace('clic qui', 'clic <a href="' + document.getElementById('bvLink').href + '" title="" style="text-decoration:none;"><span>qui</span></a>');
			strTxtAcc = strTxtAcc.replace('plug-in', '<span lang="en">plug-in</span>');
		break;
		
		case 'pl':
			strTxtAcc = strTxtAcc.replace('kliknij tutaj', 'clic <a href="' + document.getElementById('bvLink').href + '" title="" style="text-decoration:none;"><span>tutaj</span></a>');
			strTxtAcc = strTxtAcc.replace('plugin', '<span lang="en">plugin</span>');
		break;
		
		default: break;
		
	}
	
	if(lang != 'en') {
		strTxtNoFlash = strTxtNoFlash.replace('plugin', '<span lang="en">plugin</span>');
		strTxtNoFlash = strTxtNoFlash.replace('plug-in', '<span lang="en">plug-in</span>');
	}
	
	
	var elText = document.getElementById('textLimitFlash');
	var flashOk = DetectFlashVer(flpmajor, flpminor, flprevision);
	if(flashOk) { 
		elText.innerHTML = strTxtAcc.replace('TITRE DU DOC', document.getElementById('titreBvContent').innerHTML);
		try { document.getElementById('btnTextNoFlash').onclick = function() {playText('../../_res/' + lang + '/mp3_access/sound_acc.mp3', '../../_res/ExternalMp3Player.swf', this.id); }; }
		catch(er) {  }
	}
	else { 
		elText.innerHTML = strTxtNoFlash.replace('TITRE DU DOC', document.getElementById('titreBvContent').innerHTML); 
		try { document.getElementById('btnTextNoFlash').onclick = function() {playText('../../_res/' + lang + '/mp3_access/sound_no_flash.mp3', '../../_res/ExternalMp3Player.swf', this.id); }; }
		catch(er) {  }
		
	}
	
}


function initListLang() {
	var useragent = navigator.userAgent.toLowerCase();
	var isIE = (useragent.indexOf('opera') == -1 && useragent.indexOf('msie') != -1) ? true : false;
	var listeLang = document.getElementById('listLang');
	var imgLang = listeLang.getElementsByTagName('img');
		
	for(var i = 0; i < imgLang.length; i++) {
		// modif couleur de l'img vers la langue (si dispo, cad img.parent = a)
		if(imgLang[i].parentNode.tagName.toLowerCase() == 'a') {
			if(!isIE){
				imgLang[i].addEventListener('mouseover', listeLangImg_mouseOver, true);
				imgLang[i].addEventListener('mouseout', listeLangImg_mouseOut, true);
			}
			else {
				imgLang[i].attachEvent('onmouseover', listeLangImg_mouseOver);
				imgLang[i].attachEvent('onmouseout', listeLangImg_mouseOut);
			}
			var url = imgLang[i].src.split('/');
			url = url[url.length - 1];
			imgLang[i].setAttribute('srcDef', url);
		}
	}
}


function listeLangImg_mouseOver(e) {
	var e = (e != null) ? e : window.event;
	var el = (e.target != null) ? e.target : e.srcElement;
	if(el.getAttribute('srcDef').indexOf('_') != -1) el.src = '../../home/images/' + el.getAttribute('srcDef').split('_')[0] + '_orange.png';
	else el.src = '../../home/images/' + el.getAttribute('srcDef').split('.')[0] + '_orange.png';
}
				
function listeLangImg_mouseOut(e) {
	var e = (e != null) ? e : window.event;
	var el = (e.target != null) ? e.target : e.srcElement;
	el.src = '../../home/images/' + el.getAttribute('srcDef');
}

// for ie6
function positionFlashPlayer() {
	$el('flashContainer').style.position = 'absolute';
	//$el('flashContainer').style.visible = 'hidden';
	//$el('flashContainer').style.overflow = "hidden";
	$el('flashContainer').style.width = '1px';
	$el('flashContainer').style.height = '1px';
	$el('flashContainer').style.overflow = 'hidden';
	//alert('Mp3FlashPlayer positionné en absolute');
}

	
/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};



