// centerLayers -> fonction pour centrer un groupe de calques...
// on lui passe en paramètres tous les calques et elle se débrouille pour tout centrer...
// l'origine est obligatoirement 0,0...
// Elle utilise la fonction findObj(n, d) qui est une copie de MM_findObj(n, d) de Macromédia DreamWeaver,
// pour éviter les redéclarations dans les pages
function findObj(n, d) { //v4.0
  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=findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

// déclaration des variables globales :
// la variable FLAG définit si on a déjà centré les calques
// la variable decal va contenir un tableau avec le décalage X et Y du groupe de calque, nécessaire pour
// le système de menu
var FLAG=0;
var decal;

// fonction pour recharger la page si on retaille la fenêtre
function recharge() {location.reload();}

// fonction de centrage des calques
function centerLayers() {
	onresize = recharge;
if(FLAG==0){
	// récupération des arguments de la fonction
	var args = centerLayers.arguments;

	// Largeur et hauteur de la fenêtre interne du navigateur
	var Xscreen = window.innerWidth?window.innerWidth:document.body.clientWidth;
	var Yscreen = window.innerHeight?window.innerHeight:document.body.clientHeight;

	// largeur et hauteur totales du groupe de calques...
	var Grp_Width  = 0;
	var Grp_Height = 0;
	
	// offset X et Y du groupe de calques...
	var Grp_Offset_X = 0;
	var Grp_Offset_Y = 0;


	// trouver la largeur totale et la hauteur totale en fonction de la position et des dimensions de chaque calque...
	for (i=0 ; i<args.length ; i++) {
		var zeCalc = findObj(args[i]);

		if (zeCalc!=null) {
			if (zeCalc.style) zeCalc = zeCalc.style;
			var posX = parseInt(zeCalc.left);
			var posY = parseInt(zeCalc.top);

			var Largeur = parseInt((zeCalc.document)?zeCalc.document.width:zeCalc.width);
			var Hauteur = parseInt((zeCalc.document)?zeCalc.document.height:zeCalc.height);

			// Grp_Width ET Grp_Height...
			var Largeur_Calc = posX + Largeur;
			var Hauteur_Calc = posY + Hauteur;
			if (Largeur_Calc > Grp_Width)  Grp_Width  = Largeur_Calc;
			if (Hauteur_Calc > Grp_Height) Grp_Height = Hauteur_Calc;
		}
	}
	Grp_Offset_X = Math.floor((Xscreen - Grp_Width)/2);
	Grp_Offset_Y = Math.floor((Yscreen - Grp_Height)/2);
	if (Grp_Offset_X < 0) Grp_Offset_X = 0;
	if (Grp_Offset_Y < 0) Grp_Offset_Y = 0;
	
	// extraction des valeurs de décalage pour passage au menu
	decal=new Array(Grp_Offset_X,Grp_Offset_Y);	

	// Maintenant, on ajoute à chaque calque l'offset de décalage
	for (i=0 ; i<args.length ; i++) {
		var zeCalc = findObj(args[i]);
		if (zeCalc!=null) {
			if (zeCalc.style) zeCalc = zeCalc.style;
			var posX = parseInt(zeCalc.left);
			var posY = parseInt(zeCalc.top);

			zeCalc.left = posX + Grp_Offset_X;
			zeCalc.top  = posY + Grp_Offset_Y;
		}
	}
	FLAG=1;}//fin du si
}

// fonction de centrage Horizontale des calques
function centerHLayers() {
	onresize = recharge;
if(FLAG==0){
	// récupération des arguments de la fonction
	var args = centerHLayers.arguments;

	// Largeur et hauteur de la fenêtre interne du navigateur
	var Xscreen = window.innerWidth?window.innerWidth:document.body.clientWidth;
	var Yscreen = window.innerHeight?window.innerHeight:document.body.clientHeight;

	// largeur et hauteur totales du groupe de calques...
	var Grp_Width  = 0;
	var Grp_Height = 0;
	
	// offset X et Y du groupe de calques...
	var Grp_Offset_X = 0;
	var Grp_Offset_Y = 0;


	// trouver la largeur totale et la hauteur totale en fonction de la position et des dimensions de chaque calque...
	for (i=0 ; i<args.length ; i++) {
		var zeCalc = findObj(args[i]);

		if (zeCalc!=null) {
			if (zeCalc.style) zeCalc = zeCalc.style;
			var posX = parseInt(zeCalc.left);
			var posY = parseInt(zeCalc.top);

			var Largeur = parseInt((zeCalc.document)?zeCalc.document.width:zeCalc.width);
			var Hauteur = parseInt((zeCalc.document)?zeCalc.document.height:zeCalc.height);

			// Grp_Width ET Grp_Height...
			var Largeur_Calc = posX + Largeur;
			var Hauteur_Calc = posY + Hauteur;
			if (Largeur_Calc > Grp_Width)  Grp_Width  = Largeur_Calc;
			if (Hauteur_Calc > Grp_Height) Grp_Height = Hauteur_Calc;
		}
	}
	Grp_Offset_X = Math.floor((Xscreen - Grp_Width)/2);
	//Grp_Offset_Y = Math.floor((Yscreen - Grp_Height)/2);
	if (Grp_Offset_X < 0) Grp_Offset_X = 0;
	if (Grp_Offset_Y < 0) Grp_Offset_Y = 0;
	
	// extraction des valeurs de décalage pour passage au menu
	decal=new Array(Grp_Offset_X,0);	

	// Maintenant, on ajoute à chaque calque l'offset de décalage
	for (i=0 ; i<args.length ; i++) {
		var zeCalc = findObj(args[i]);
		if (zeCalc!=null) {
			if (zeCalc.style) zeCalc = zeCalc.style;
			var posX = parseInt(zeCalc.left);
			var posY = parseInt(zeCalc.top);

			zeCalc.left = posX + Grp_Offset_X;
			//zeCalc.top  = posY + Grp_Offset_Y;
		}
	}
	FLAG=1;}//fin du si

}