/*
	ExtensionElement v1.0 - objet-extension-element.js
	DHTML - objet permettant de déployer des éléments
	Documentation : http://francois-delegue.fr/developpement-web/dhtml-objet-extension-element.php

	Copyright 2008 François Delègue
	License CC-GNU GPL - Creative Commons et Licence Publique Générale GNU
	Informations http://creativecommons.org/licenses/GPL/2.0/deed.fr
*/


function ExtensionElement (idElement, minimumX, maximumX, decalageX, minimumY, maximumY, decalageY, intervalle)
{

// navigateurs récents seulement
	if (!document.getElementById || !document.createTextNode) { return }	

// variables
	var style;
	var tempo;
	var dimensionX, dimensionY;	// dimensions successives

// propriétés via paramètres
	this.idElement		= idElement;
	this.minimumX		= minimumX;
	this.maximumX		= maximumX;
	this.minimumY		= minimumY;
	this.maximumY		= maximumY;
	this.decalageX		= decalageX;
	this.decalageY		= decalageY;
	this.intervalle	= intervalle;

// propriétés additionnelles
	this.on		= false;
	this.enMvt	= false;

// style
	style	= document.getElementById(this.idElement).style;
	style.position	= "absolute";
	style.overflow = "hidden";
	style.width		= this.minimumX + "px";
	style.height	= this.minimumY + "px";
	
// dimensions au minimum 	
	dimensionX	= this.minimumX;
	dimensionY	= this.minimumY;

// méthodes
	this.etendre	= etendre;
	this.replier	= replier;
	this.cacher		= cacher;

	function etendre ()
	{
		if (!this.on)
		{
			if (!this.enMvt)
			{
				style.display = "block";
				this.enMvt = true;
			}

			dimensionX += this.decalageX;
			dimensionY += this.decalageY;
			style.width = dimensionX + "px";
			style.height = dimensionY + "px";

			if (dimensionX != this.maximumX || dimensionY != this.maximumY)
			{
				tempo = setTimeout (this.idElement + ".etendre()", this.intervalle);
			}
			else
			{
				clearTimeout (tempo);
				this.enMvt = false;
				this.on = true;
			}
		}
	}

	function replier ()
	{
		if (this.on)
		{
			if (!this.enMvt)
			{
				this.enMvt = true;
			}
	
			dimensionX -= this.decalageX;
			dimensionY -= this.decalageY;
			style.width = dimensionX + "px";
			style.height = dimensionY + "px";
	
			if (dimensionX != this.minimumX || dimensionY != this.minimumY)
			{
				tempo = setTimeout (this.idElement + ".replier()", this.intervalle);
			}
			else
			{
				clearTimeout (tempo);
				dimensionX = this.minimumX;
				dimensionY = this.minimumY;
				this.on = false;
				this.enMvt = false;
			}
		}
	}

	function cacher ()
	{
		this.on = false;
		style.display = "none";
		dimensionX = this.minimumX;
		dimensionY = this.minimumY;
	}
}

