
/***********************************************************************
**  Espace Ethique de Bretagne Occidentale
**  Scripts pour la gestion de l'affichage des pages
**  Compatible MS IE et Mozilla Firefox
**     Code créé par Clément WARNEYS
**     clement.warneys@enst-bretagne.fr
**
**
**  Tables des matières : 
**
**  I.   Redimensionnement automatique de la page au démarrage
**  II.  Gestion de l'arborescence de la partie documentation
**  III. Gestion des éléments d'animation de la partie documentation
**           1. pour la présentation des ouvrages
**           2. pour la présentation des articles
**           3. pour la présentation des documents
**			 4. pour la présentation des manifestations
**  IV.  Divers fonctions utiles pour les scripts
***********************************************************************/


/***********************************************************************
**  I.   Redimensionnement automatique de la page au démarrage
***********************************************************************/

function Reglages(hauteurMenu) {

	/* détection des DOMs */
	var nn = (document.layers ? true : false);
	var DOM2 = (document.getElementById ? true : false);
	var ie = ((document.all) ? true : false);

	var haut;
	var hautTotal;
	var larg;
	
	if(nn) { /* Si DOM de NS4 */
		// document.layer
		 var obj = document.Ajustement;
		 var obj2 = document.containerPrinc;
		// il comprend innerHeight
		 hautTotal = window.innerHeight;
		 haut = hautTotal;
		 larg = window.innerWidth;
	}
	
	if (DOM2) { /* Si conforme aux standard */
		// DOM2 avec getElementById
		 var obj = document.getElementById("Ajustement");
		 var obj2 = document.getElementById("containerPrinc");
		// il comprend innerHeight
		 hautTotal = window.innerHeight;
		 haut = hautTotal;
		 larg = window.innerWidth;
	}
	
	if (ie) { /* Si saloperie d'IE */
		// on utilise all
		 var obj = document.all.Ajustement.style;
		 var obj2 = document.all.containerPrinc.style;
		// et faut ruser
		 hautTotal = document.body.clientHeight + document.body.scrollTop;
		 haut = hautTotal;
		 larg = document.body.clientWidth;
	}
	
	haut = haut - hauteurMenu - 320;
	larg = Math.floor((larg - 770)/2);
	if (haut < 100)
		haut = 100;
	if (ie || nn) {obj.height = haut;}
	else if (DOM2) {obj.style.height = haut;}
	if (ie || nn) {obj2.left = larg; obj2.margin = '0px';}
	else if (DOM2) {obj2.style.left = (larg  - 6 )+ 'px'; obj2.style.margin = '0px';}

}


/***********************************************************************
**  II.  Gestion de l'arborescence de la partie documentation
***********************************************************************/

var memoire = new Array(40);		// Mémoire de l'ouverture ou non des thèmes (40 thèmes maximum)
var nbSsThemes = 40;				// Nombres de sous-thème maximum
var animationDefilement = 0;		// Mettre à 1 pour activer l'animation des menus

var fondThemeSombre = '#EAEAEA';    // Variables de couleurs à régler pour le tableau des thèmes et sous-thèmes
var fondThemeClair = '#F5F5F5';
var fondThemeSurvol = '#6D99C6';

var fondSsThemeSombre = '#F9F8E5';
var fondSsThemeClair = '#F9F8E5';
var fondSsThemeSurvol = '#FAF48F';

function ChgColorLoad()				// Fonction à charger au démarrage
{
	for (var i = 0; i < nbSsThemes; i++)
	{
		var obj = MM_findObj('div'+i);
		if (obj)
			if (i%2 == 0)
				eval("obj.style.backgroundColor = '" + fondThemeSombre + "'");
			else
				eval("obj.style.backgroundColor = '" + fondThemeClair + "'");
	}		

}


function ChgColor(action, id, idSs, lien, nbSsTheme)
{
	if (idSs == -1)
	{
		var obj = MM_findObj('div'+id);
		if (memoire[id] == 0 || memoire[id] == undefined)
		{
			if (action == 'over')
			{
				if (nbSsTheme == 0)
					eval("obj.style.backgroundColor = '" + fondSsThemeSurvol + "'");
				else
					eval("obj.style.backgroundColor = '" + fondThemeSurvol + "'");
				if (lien != -1)
					eval("obj.style.cursor = 'pointer'"); // pointer
				else
					eval("obj.style.cursor = 'default'");
			}
			if (action == 'out')
				if (id%2 == 0)
					eval("obj.style.backgroundColor = '" + fondThemeSombre + "'");
				else
					eval("obj.style.backgroundColor = '" + fondThemeClair + "'");
		}
			
		var obj2 = MM_findObj('ssdiv'+id);
		if (obj2)
		{	
			if (action == 'clk' & (memoire[id] == 0 || memoire[id] == undefined))
			{
				if (animationDefilement == 1)
					animation(id, nbSsTheme, 1, -1);
				else
					eval("obj2.className = 'containerThemeVisible'");
				var objFleche = MM_findObj('plus'+id);
				eval("objFleche.className = 'moinsArbo'");
				memoire[id] = 1;
				for (var i = 0; i < nbSsThemes; i++)
					if (i != id)
					{
						memoire[i] = 0;
						var obj3 = MM_findObj('ssdiv'+i)
						if (obj3)
							eval("obj3.className = 'containerTheme'");
						var obj4 = MM_findObj('div'+i)
						if (obj4)
							if (i%2 == 0)
								eval("obj4.style.backgroundColor = '" + fondThemeSombre + "'");
							else
								eval("obj4.style.backgroundColor = '" + fondThemeClair + "'");
						var obj5 = MM_findObj('plus'+i)
						if (obj5)
							eval("obj5.className = 'plusArbo'");
					}
			}
			else if (action == 'clk' & memoire[id] == 1)
			{
				memoire[id] = 0;
				var objFleche = MM_findObj('plus'+id);
				eval("objFleche.className = 'plusArbo'");
				if (animationDefilement == 1)
					animation(id, nbSsTheme, -1, -1);
				else
					eval("obj2.className = 'containerTheme'");
				
			}
		}
		else if (action == 'clk')
		{
			window.location = lien;
		}
	}
	else
	{
		var obj = MM_findObj('th'+id+'ss'+idSs);
		if (action == 'over')
		{
			eval("obj.style.backgroundColor = '" + fondSsThemeSurvol + "'");
			//eval("obj.style.cursor = 'pointer'"); 
		}
		if (action == 'out')
			if (idSs%2 == 0)
				eval("obj.style.backgroundColor = '" + fondSsThemeSombre + "'");
			else
				eval("obj.style.backgroundColor = '" + fondSsThemeClair + "'");
		if (action == 'clk')
			window.location = lien;
	}
}

function animation(ssTheme, nb, sens, position) {		// Fonction d'animation (non achevée et à désactiver de préférence pour le processeur

	var obj5 = MM_findObj('ssdiv'+ssTheme);
	
	if (position == -1)
		if (sens == 1)
		{
			position = -nb*15;
			eval("obj5.className = 'containerThemeVisible'");
		}
		else
		{
			position = 0;
		}

	if (sens == -1 & position == -nb*15)
		eval("obj5.className = 'containerTheme'");

	position += sens*5;
	eval("obj5.style.top = '" + position + "px'");
		
	if ((position < 0 & position >= -nb*15 & sens == 1) || (position <= 0 & position >= -nb*15 & sens == -1))
	{
		var fonction = 'animation(\''+ ssTheme +'???????????????\', ' + nb + ', '+ sens +', '+ position +')';
   		var tempo = setTimeout(fonction, 30);
	}

}


/***********************************************************************
**  III. Gestion des éléments d'animation de la partie documentation
***********************************************************************/

/***********************************************************************
 *           1. pour la présentation des ouvrages
**/

var memoireO = new Array(40);  				// Mémoire de l'ouverture ou non des ouvrages

function AffichageOuvrages(action, id)
{

		var obj = MM_findObj('ouv'+id);
		
		if (memoireO[id] == 0 || memoireO[id] == undefined)
		{
			if (action == 'over')
			{
				eval("obj.className = 'blocOuvrageOver'");
				eval("obj.style.cursor = 'pointer'"); 
			}
			if (action == 'out')
				eval("obj.className = 'blocOuvrage'");
		}
			
		var objDesc =  MM_findObj('ouv'+id+'Desc');
			
		if (action == 'clk' & (memoireO[id] == 0 || memoireO[id] == undefined))
		{
			eval("objDesc.className = 'ouvrageDescriptionVisible'");
			memoireO[id] = 1;
		}
		else if (action == 'clk' & memoireO[id] == 1)
		{
			memoireO[id] = 0;
			eval("objDesc.className = 'ouvrageDescription'");
		}

}

/***********************************************************************
 *           2. pour la présentation des articles
**/

var memoire1 = new Array(40);  				// Mémoire de l'ouverture ou non des articles

function AffichageArt(action, id)
{

		var obj = MM_findObj('art'+id);
		
		if (memoire1[id] == 0 || memoire1[id] == undefined)
		{
			if (action == 'over')
			{
				eval("obj.className = 'blocOuvrageOver'");
				eval("obj.style.cursor = 'pointer'"); 
			}
			if (action == 'out')
				eval("obj.className = 'blocOuvrage'");
		}
			
		var objDesc =  MM_findObj('art'+id+'Desc');
			
		if (action == 'clk' & (memoire1[id] == 0 || memoire1[id] == undefined))
		{
			eval("objDesc.className = 'ouvrageDescriptionVisible'");
			memoire1[id] = 1;
		}
		else if (action == 'clk' & memoire1[id] == 1)
		{
			memoire1[id] = 0;
			eval("objDesc.className = 'ouvrageDescription'");
		}

}

/***********************************************************************
**           3. pour la présentation des documents
**/

var memoire2 = new Array(40);  				// Mémoire de l'ouverture ou non des documents

function AffichageDoc(action, id)
{

		var obj = MM_findObj('doc'+id);
		
		if (memoire2[id] == 0 || memoire2[id] == undefined)
		{
			if (action == 'over')
			{
				eval("obj.className = 'blocOuvrageOver'");
				eval("obj.style.cursor = 'pointer'"); 
			}
			if (action == 'out')
				eval("obj.className = 'blocOuvrage'");
		}
			
		var objDesc =  MM_findObj('doc'+id+'Desc');
			
		if (action == 'clk' & (memoire2[id] == 0 || memoire2[id] == undefined))
		{
			eval("objDesc.className = 'ouvrageDescriptionVisible'");
			memoire2[id] = 1;
		}
		else if (action == 'clk' & memoire2[id] == 1)
		{
			memoire2[id] = 0;
			eval("objDesc.className = 'ouvrageDescription'");
		}

}



/***********************************************************************
**			 4. pour la présentation des manifestations
**/

var memoire3 = new Array(40);  				// Mémoire de l'ouverture ou non des documents

function AffichageManif(action, id)
{

		var obj = MM_findObj('manif'+id);
		
		if (memoire3[id] == 0 || memoire3[id] == undefined)
		{
			if (action == 'over')
			{
				eval("obj.className = 'blocManifOver'");
				eval("obj.style.cursor = 'pointer'"); 
			}
			if (action == 'out')
				eval("obj.className = 'blocManif'");
		}
			
		var objDesc =  MM_findObj('manif'+id+'Desc');
			
		if (action == 'clk' & (memoire3[id] == 0 || memoire3[id] == undefined))
		{
			eval("objDesc.className = 'ouvrageDescriptionVisible'");
			memoire3[id] = 1;
		}
		else if (action == 'clk' & memoire3[id] == 1)
		{
			memoire3[id] = 0;
			eval("objDesc.className = 'ouvrageDescription'");
		}

}





/***********************************************************************
**  IV.  Divers fonctions utiles pour les scripts
***********************************************************************/

function MM_findObj(n, d) { 
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}



/***********************************************************************
**  IV.  Pour la gestion des éléments facultatifs dans les formulaires
***********************************************************************/

function change_theme(nom)
{
	var select_themes = MM_findObj('themes_' + nom) ;
	var select_ssthemes = MM_findObj('ssthemes_' + nom) ;
	
	if(select_themes.value==0 || ssthemes[select_themes.value]==false)
	{
		select_ssthemes.style.visibility="hidden";
		select_ssthemes.disabled=true;
	}
	else
	{
		select_ssthemes.style.visibility="visible";
		select_ssthemes.disabled=false;
		select_ssthemes.options.length=0;
		this_sstheme=ssthemes[select_themes.value];
		for(i=0; i<ssthemes[select_themes.value].length; i++)
			select_ssthemes.options[select_ssthemes.options.length]=new Option(this_sstheme[i].split("|")[1],this_sstheme[i].split("|")[0])
	}
}


function init_theme(numero,nom)
{
	var select_themes = MM_findObj('themes_' + nom) ;
	var select_ssthemes = MM_findObj('ssthemes_' + nom) ;

	if(numero<100)
	{
		select_themes.value=numero;
		change_theme(nom);
	}
	else
	{
		select_themes.value=Math.floor(numero/100);
		change_theme(nom);
		select_ssthemes.value=numero;
	}
}



function changeOptionnel(nomliste,nomtexte,valueAutre)
{
	var textbox = MM_findObj(nomtexte);
	var liste = MM_findObj(nomliste) ;
	
	if(liste.value == valueAutre)
	{
		textbox.style.visibility = "visible" ;
	}
	else
	{
		textbox.style.visibility = "hidden" ;
	}
}