/**
 * Classe Overlay - permet de positionner un calque sur un élément donné
 */
 
var Overlay = Class.create(
{
	/**
	 * constructeur - si un élément est passé en paramètre (node ou ID), ajoute un calque (element <div>) au dessus de l'élément en position absolue. Si pas de paramètre,a lors il faudra appelé la méthode overlay(elementID)
	 * 
	 * @param string|Element element élément ou ID de l'élément
	 * @return Overlay
	 * @access public
	 */
	initialize:				function(element)
							{
								// création du <div> calque
								this.DOM = new Element('div');
								
								this.DOM.setStyle(
								{
									'display'			: 'block',
									'position'			: 'absolute',
									'border'			: 'none',
									// on s'assure que le calque est au dessus de tout élément
									'zIndex'			: '1000',
									'cursor'			: 'pointer',
									// IE a des problèmes si on ne défini pas le background
									'backgroundColor'	: '#CCCCCC'
								});
								
								// paramètre OK
								if(!(Object.isUndefined(element) || element === null))
								{
									// overlay de l'élément
									this.overlay(element);
								}
							},
	/**
	 * positionne un calque en position absolue sur l'élément passé en paramètre (node ou ID)
	 * 
	 * @param string|Element element élément ou ID de l'élément
	 * @access public
	 */
	overlay:				function(element)
							{
								// normalisation de l'élément
								element = $(element);
								
								// sauvegarde de l'élément "calqué" (donc sous le calque) dans targetElement
								this.targetElement = element;
								
								// copie des dimensions et positions
								this.copyTargetOffset();
								this.copyTargetDimensions();
								
								// ajout dans le document courant
								var body = document.getElementsByTagName('body')[0];
								body.appendChild(this.DOM);
								
								// opacitée à 0%, principalement pour IE (cf. initialize())
								new Effect.Opacity(this.DOM,{'duration':0.0,'from':1.0,'to':0.0});
							},
	
	/**
	 * copie les dimensions de l'élément calqué 
	 * 
	 * @access private
	 */				
	copyTargetDimensions: 	function()
							{
								this.dimensions = this.targetElement.getDimensions();
								this.DOM.setStyle({'height':this.dimensions.height+'px','width':this.dimensions.width+'px'});
							},
	/**
	 * copie la position de l'élément calqué
	 * 
	 * @access private
	 */
	copyTargetOffset:		function()
							{
								this.offset = this.targetElement.cumulativeOffset();
								this.DOM.setStyle({'top':this.offset.top+'px','left':this.offset.left+'px'});
							}
}
);