// AUTEUR: addeo 
// DATE DE CREATION: 11/10/00 (ET) 
// MODIFICATIONS RA : 09/02/01 
// RA
// MODIFICATIONS ET : 07/03/01 
// MODIFICATIONS ET : 01/08/01 gestion clipping, ajout du parametre layer_param 
// Copyright 2001 Addeo SA All rights reserved. addeo@addeo.com
// ----------------------------------------------------------------------------

var ns6=false;
var ns4 =false;
var ie =false;
var ie4 =false;
var ie5=false;
var ie55=false;
var isMac=false;
var isWin=false;

//**************************
// gestion des layers (calques)
function layer_init_plateforme()
{
ns6=false;
ns4 =false;
ie4 =false;
ie5=false;
ie55=false;

isMac =(navigator.appVersion.indexOf("Mac")!=-1);
isWin = (navigator.appVersion.indexOf("Win") != -1);

//alert(isMac + " " + isWin);
 
if ( navigator.appName == 'Microsoft Internet Explorer')
	{
	ie=true;
	ie4 = (document.all)? true:false;
	if (navigator.userAgent.indexOf('MSIE 5')>0)
		ie5 = true;
	if (navigator.userAgent.indexOf('MSIE 5.5')>0)
		ie55 = true;
	}
if ( navigator.appName == 'Netscape')
	{
	ns6=(document.getElementById)? true:false;
	ns4 = (document.layers)? true:false;
	}
	
/*if (ns6)
	alert("ns6");
if (ns4)
	alert("ns4");
if (ie4)
	alert("ie4");
if (ie5)
	alert("ie5");*/
	
if (!ns6 && !ns4 && !ie4)
	alert("Votre navigateur n'est pas assez récent !");
	
}

//*******************************************************************
// ! le layer parent n'est pas gérer dans tous les cas à faire
function layer_creer(id_layer, x, y, largeur, hauteur, visibilite, layer_parent_id) 
{ 
var html, layer;

if (ns4)
	{
	if (layer_parent_id)	
		layer=eval("document."+layer_parent_id+".document."+id_layer + '=new Layer(width, document."+layer_parent_id+")')
	else
		{
		layer = document.layers[id_layer] = new Layer(largeur);
		eval("document."+id_layer+" = layer");
		}

	layer.name = id_layer;
	layer.left = x;
	layer.top = y;
	if (hauteur!=null) 
		layer.clip.height = hauteur;
	layer.visibility = (visibilite=='hidden')? 'hide' : 'show'
	}
	
if (ie4)
	{	
	html =  '\n<DIV id="' + id_layer + '" style=\"position: absolute; '
	html += 'left: ' + x + 'px; top: ' + y +'px; width: '+ largeur+'px; height: '+hauteur+'px; '
	html += 'clip:rect(0,'+largeur+','+hauteur+',0); ';	
	html += 'visibility: ' + visibilite;
	html += '"> </DIV>';
	if (layer_parent_id)
		{
		pos=layer_parent_id.lastIndexOf("."); 
		layer_parent = (pos != -1)? layer_parent_id.substr(pos+1) : layer_parent_id;
			document.all[layer_parent].insertAdjacentHTML("BeforeEnd",html);
		}
	else 
		{
			document.body.insertAdjacentHTML("BeforeEnd",html);
		}
	}

if(ns6)	// doit marcher pour ie5
	{
	layer = document.createElement('DIV');
	if(layer)
		{
		document.body.appendChild(layer);
		layer.id = id_layer;
		layer.name = id_layer;
		layer.style.position = 'absolute';
		layer.style.left = x;
	 	layer.style.top = y;
  		layer.style.width = largeur; 
	  	layer.style.height = hauteur;
		layer.visibility = (visibilite=='hidden')? 'hide' : 'show';
		}
	}
return(layer_adresse(id_layer));
}

//**************************
function layer_detruire(id_layer, layer_param)
{
var layer, html;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

layer_cacher(id_layer);	
if (ns4)
	{ 
	delete document.layers[id_layer];
	}

if (ns6)
	{ 
	document.body.removeChild(layer);
	}

if (ie4) 
	{
	document.all[id_layer].style.visibility = "hidden";
	document.all[id_layer].innerHTML = "";
	document.all[id_layer].outerHTML = "";
	}
}

//**************************
function layer_montrer(id_layer, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4) 
	layer.visibility = "show"; 
else 
	layer.style.visibility = "visible";
}

//**************************
function layer_cacher(id_layer, layer_param)
{
var layer;

layer=layer_param;
if (!layer) layer = layer_adresse(id_layer);
if (!layer)	return;

if (ns4) 
	layer.visibility = "hide"; 
else 
	layer.style.visibility = "hidden";
}

//**************************
function layer_visible(id_layer, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return false;

if (ns4) 
	return(document.layers[id_layer].visibility == "show"); 

if (ie4 || ns6)
 	{
	layer=layer_adresse(id_layer) 
 	return(layer.style.visibility == "visible");
	}
}

//**************************
function layer_placer(id_layer, x, y, l, h, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

layer_positionner(id_layer, x, y, layer);
layer_dimensionner(id_layer, l, h, layer);
}
	
//**************************
function layer_positionner(id_layer, x, y, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;
	
if (x<0) x=layer_lire_position_x(id_layer, layer_param);
if (y<0) y=layer_lire_position_y(id_layer, layer_param);
	
if (ns4)
	layer.moveTo(x, y);
else
	{
	layer.style.left = x;
	layer.style.top  = y;
	layer.pixelLeft = x;
	layer.pixelTop  = y;
	layer.style.posLeft = x;
	layer.style.posTop = y;
	layer.left = x;
	layer.top  = y;
	}
}

//**************************
function layer_lire_position_x(id_layer, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;
	
if (ns4)
	return(layer.left);
if (ns6)
	return(parseInt(layer.style.left));

return(parseInt(layer.currentStyle.left));
}

//**************************
function layer_lire_position_y(id_layer, layer_param)
{
var layer = layer_adresse(id_layer);

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if(layer == null)	return (-1);
	
if (ns4)
	return(layer.top);
if (ns6)
	return(parseInt(layer.style.top));

return(parseInt(layer.currentStyle.top));
}

//**************************
// penser à réactuliser le clipping après un redimensionnement (layer_definir_clipping)
function layer_dimensionner(id_layer, l, h, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4)
	{
	if (l>=0)
		layer.clip.width = l;
	if (h>=0)
		layer.clip.height = h;
	}
if (ie4 || ns6) 
	{
	if (l>=0)
		{
		layer.style.width = l;
		layer.width = l;
		}
	if (h>=0)
		{
    	layer.style.height  = h;
    	layer.height  = h;
		}
	}
}

//**************************
function layer_definir_clipping(id_layer, x, y, l, h, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4)
	{
	if (x>=0) layer.clip.left = x;
	if (l>=0) layer.clip.width = l;
	layer.clip.right = layer.clip.left + layer.clip.width; 

	if (y>=0) layer.clip.top = y;
	if (h>=0) layer.clip.height = h;
	layer.clip.bottom = layer.clip.top + layer.clip.height; 
	}

if (ie4 || ns6) 
	{
	if (x<0) x=layer_lire_clipping_x(id_layer, layer_param); 
	if (y<0) y=layer_lire_clipping_y(id_layer, layer_param); 
	if (l<0) l=layer_lire_clipping_largeur(id_layer, layer_param); 
	if (h<0) h=layer_lire_clipping_hauteur(id_layer, layer_param); 
	
	layer.style.clip="rect(" + y +"px " + (x + l) +"px " + (y+h) + "px " + x + "px)";
	}
}

//**************************
function layer_lire_clipping_x(id_layer, layer_param)
{
var layer;
var clipv;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4) return(layer.clip.left);

if (ns6)
	{ 
	clipv = layer.style.clip.split("rect(")[1].split(")")[0].split("px")
	return(Number(clipv[3]));
	}
return(parseInt(layer.currentStyle.clipLeft));
}

//**************************
function layer_lire_clipping_y(id_layer, layer_param)
{
var layer;
var clipv;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4) return(layer.clip.top);

if (ns6)
	{ 
	clipv = layer.style.clip.split("rect(")[1].split(")")[0].split("px")
	return(Number(clipv[0]));
	}

return(parseInt(layer.currentStyle.clipTop));
}

//**************************
function layer_lire_clipping_largeur(id_layer, layer_param)
{
var layer;
var clipv;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4) return(layer.clip.width);

if (ns6)
	{ 
	clipv = layer.style.clip.split("rect(")[1].split(")")[0].split("px")
	return(Number(clipv[1]) - Number(clipv[3]));
	}
return(parseInt(layer.currentStyle.clipRight) - parseInt(layer.currentStyle.clipLeft));
}

//**************************
function layer_lire_clipping_hauteur(id_layer, layer_param)
{
var layer;
var clipv;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4) return(layer.clip.height);

if (ns6)
	{ 
	clipv = layer.style.clip.split("rect(")[1].split(")")[0].split("px")
	return(Number(clipv[2]) - Number(clipv[0]));
	}

return(parseInt(layer.currentStyle.clipBottom) - parseInt(layer.currentStyle.clipTop));
}
	
//**************************
function layer_lire_largeur(id_layer, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return null;
if (ns4)
	{
//	return(layer.clip.width);
	return (layer.clip.right-layer.clip.left);
	}
if (ns6) 
	return(parseInt(layer.style.width));
else
	return(parseInt(layer.offsetWidth));	
}

//**************************
function layer_lire_hauteur(id_layer, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return(-1);

if (ns4)
	return(layer.clip.height);
if (ns6) 
	return(parseInt(layer.style.height));

return(parseInt(layer.offsetHeight));	
}

//**************************
function layer_lire_zindex(id_layer, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return(-1);

if (ns4)
	return(layer.zIndex);
else
	return(layer.style.zIndex);
}

//**************************
function layer_definir_zindex(id_layer, zlayer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4)
	layer.zIndex = z;
else
	layer.style.zIndex = z;
}

//**************************
function layer_definir_fond(id_layer, couleur, image, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return(-1);

if (couleur == null || couleur == 'transparent')
	{
	if(ns4)
		couleur = null;
	else
	   	couleur = 'transparent';
	}	

if(ns4)
	layer.bgColor = couleur;
else
	layer.style.backgroundColor = couleur;
    
if (image)
	{
	if(ns4)
		layer.background.src = image;
	else      
		layer.style.backgroundImage = "url(" + image + ")";
  	}
return;
}

//**************************
function layer_adresse(id_layer) 
{
var layer = null;

if (ns4) 
	layer= document.layers[id_layer]; 
if (ns6) 
	layer = document.getElementById(id_layer);
if (ie4) 
	layer = document.all[id_layer];

return(layer);
}

//**************************
function layer_ecrire_contenu(id_layer, contenu, layer_param)
{
var layer;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if (!layer)	return;

if (ns4) 
	{
	layer.document.close();
	layer.document.open();
	layer.document.write(contenu);
	layer.document.close();
	return;
	}
if (ns6)
	{ 
    while (layer.hasChildNodes()) layer.removeChild(layer.lastChild);
            var range = document.createRange();
            range.selectNodeContents(layer);
            layer.appendChild(range.createContextualFragment(contenu));
	return;
	}

 if (ie4)
 	{ 
 	layer.innerHTML = contenu;
	return;
	}
}

//**************************
// retourne l'adresse d'un formulaire dans un layer
function layer_adresse_form(id_layer, nom_formulaire)
{
var layer;

if (ns6 || ie4)
	return(document.forms[nom_formulaire]);
if (ns4)
	{ 
	layer=layer_adresse(id_layer);
	if (!layer)
		return(null);
	return(document.layers[id_layer].document.forms[nom_formulaire]);
	}
return(null);
}

//**************************
function layer_adresse_obj(id_layer, id_obj) 
{

if (ns4) 
	{
	if(id_layer)
		return(document.layers[id_layer].document[id_obj]);
	else
		return(document[id_obj]);
	}		
 if (ie4) 
 	return(document[id_obj]);
if (ns6)
	return(document.getElementById(id_obj));

return(null);
}


//**************************
function layer_centrer(id_layer, layer_param)
{
var layer = layer_adresse(id_layer);
var x;

if (!layer_param) layer = layer_adresse(id_layer); else layer=layer_param;
if(layer == null)	return ;

x = (document_lire_largeur()-layer_lire_largeur(id_layer, layer))/2;
if (x<0) x=0;

layer_positionner(id_layer, x, -1, layer);
	
}

//**************************
function document_lire_largeur()
{
if (ie4) 
 return(parseInt(document.body.clientWidth));		

return(parseInt(document.width));
}
