		/**
			DESCRIPTION :
			
					RedimDiv :
							- elems								: Array()
							- elemsAttribs							: Array()
							- pluginCSStoMax						: Array()
							- pluginCSStoMin						: Array()
							- pluginCSStoMaxForElem	: Array()
							- pluginCSStoMinForElem	: Array()
							
							. addElem							:  Ajout d'un element a elems.
							. addElemWithMax						:  Ajout d'un element a elems. Dont Max est deja en place.
							. addElemWithMin						:  Ajout d'un element a elems. Dont Min est deja en place.
							. redimElemToMax						:  Redimensionne tous les elements a la taille defini dans "add...".
							. redimElemToMin						:  Redimensionne tous les elements a la taille defini dans "add...".
							. redimElemToMaxForCommonCSS					:  Applique les ajouts CSS communs a tous les elements.
							. redimElemToMinForCommonCSS					:  Redimensionne tous les elements a la taille défini dans "add...".
							. addCSStoMax							:  Ajout de proprietes CSS communes a tous les elements pour l'evenement "toMax".
							. addCSStoMin							:  Ajout de proprietes CSS communes a tous les elements pour l'evenement "toMin".
							. addCSStoMaxForElem						:  Ajout de proprietes CSS specifique a un element.
							. addCSStoMinForElem						:  Ajout de proprietes CSS specifique a un element.
				
						
				RedimDivFactory :
							- redimsDivs							: Array()
							- redimsDivsInit						: Array()
							
							. redim								:  Lance le redimensionnememant d'un ou pluisieurs eleéemts via RedimDiv.
							. getNewRedim							:  Retourne une instance "vide" de RedimDiv.
							. addRedim							:  Ajout d'une instance de RedimDiv.
							. getRedim							:  Retourne l'instance de RedimDiv correspondant a l'id en parametre. 
							. allRedimToMin							:  Lance le redimensionnement de toutes les instances RedimDiv ajoutees.
							. allRedimToMax							:  Lance le redimensionnement de toutes les instances RedimDiv ajoutees.
							. setInitRedim							:  Effecte la fonction d'initialisation de l'instance RedimDiv... cette fonction utilise : getNewRedim, addRedim et peut ajuster le CSS de certains elements.
							. getInitRedim							:  Retourne la fonction d'initialisation.
							. initAllRedim							:  Lance toutes les fonctions d'initialisation de cet objet.
							. initOneRedim							:  Lance une fonctions d'initialisation précise.
							
							(la relance d'une fonction d'initialisation, n'aura pas d'effets sur les objets RedimDiv... ils seront simplement réinstancies.)
		*/
		
		// Attention l'utilisation de cette classe necessite la configuration des attributs 'width' et 'height' en css, ou via JS.
		function RedimDiv(varname)
		{
			this.varname = varname;
			this.instance = null;
			
			this.activated = false;			// Permet d'activer ou de désactiver un objet.
			this.elems = new Array();		// index id des elems.
			this.elemsAttribs = new Array();	// index id des elems.
			this.pluginCSStoMax = new Array();
			this.pluginCSStoMin = new Array();
			this.pluginCSStoMaxForElem = new Array();
			this.pluginCSStoMinForElem = new Array();
						
			this.addElem = function(elem,maxWidth,maxHeight,minWidth,minHeight) {
				this.elems.push(elem);
				var tmpArray = new Array();
					tmpArray['maxWidth']  = maxWidth;
					tmpArray['maxHeight'] = maxHeight;
					tmpArray['minWidth']  = minWidth;
					tmpArray['minHeight'] = minHeight;
				this.elemsAttribs.push(tmpArray);
				return (this.elems.length-1);
			}

			this.addElemWithMax = function(elem,maxWidth,maxHeight) {
				this.elems.push(elem);
				var tmpArray = new Array();
					tmpArray['maxWidth']  = elem.style.width;
					tmpArray['maxHeight'] = elem.style.height;
					tmpArray['minWidth']  = minWidth;
					tmpArray['minHeight'] = minHeight;
				this.elemsAttribs.push(tmpArray);
				return (this.elems.length-1);
			}

			this.addElemWithMin = function(elem,minWidth,minHeight) {
				this.elems.push(elem);
				var tmpArray = new Array();
					tmpArray['maxWidth']  = maxWidth;
					tmpArray['maxHeight'] = maxHeight;
					tmpArray['minWidth']  = elem.style.width;
					tmpArray['minHeight'] = elem.style.height;
				this.elemsAttribs.push(tmpArray);
				return (this.elems.length-1);
			}
			
			this.redimElemToMax = function() {
				if(!this.activated) return;
				var i=0;
				for(i=0;i<this.elems.length;i++)
				{	this.elems[i].style.width = this.elemsAttribs[i]['maxWidth']; this.elems[i].style.height = this.elemsAttribs[i]['maxHeight']; }
				
				for(i=0;i<this.pluginCSStoMax.length;i++)
				{ if(this.pluginCSStoMax[i][2] == '') this.elems[i].style[this.pluginCSStoMax[i][0]] = this.pluginCSStoMax[i][1]; }
				
				for(i=0;i<this.pluginCSStoMaxForElem.length;i++)
				{	if(isNaN(this.pluginCSStoMaxForElem[i][2])) alert("Erreur de programmation! : Dans pluginCSStoMaxForElem[i][2], this.elems n'est pas une 'HashTable' ou tableau associatif !!!");
					if(this.pluginCSStoMaxForElem[i][2] != '') 
						this.elems[this.pluginCSStoMaxForElem[i][2]].style[this.pluginCSStoMaxForElem[i][0]] = this.pluginCSStoMaxForElem[i][1]; 
				}
			}
			
			this.redimElemToMin = function() {
				if(!this.activated) return;
				var i=0;
				for(i=0;i<this.elems.length;i++)
				{	this.elems[i].style.width = this.elemsAttribs[i]['minWidth']; this.elems[i].style.height = this.elemsAttribs[i]['minHeight']; }
				
				for(i=0;i<this.pluginCSStoMin.length;i++)
				{ if(this.pluginCSStoMin[i][2] == '') 
							this.elems[i].style[this.pluginCSStoMin[i][0]] = this.pluginCSStoMin[i][1]; 
				}

				for(i=0;i<this.pluginCSStoMinForElem.length;i++)
				{ 	if(isNaN(this.pluginCSStoMinForElem[i][2])) alert("Erreur de programmation! : pluginCSStoMinForElem[i][2], this.elems n'est pas une 'HashTable' ou tableau associatif !!!");
					if(this.pluginCSStoMinForElem[i][2] != '')
							this.elems[this.pluginCSStoMinForElem[i][2]].style[this.pluginCSStoMinForElem[i][0]] = this.pluginCSStoMinForElem[i][1];
				}
			}

			this.redimElemToMaxForCommonCSS = function() {
				if(!this.activated) return;
				for(var i=0;i<this.pluginCSStoMax.length;i++)
					{ if(this.pluginCSStoMax[i][2] != '') eval("if(document.getElementById('"+this.pluginCSStoMax[i][2]+"'))"+"{"+"document.getElementById('"+this.pluginCSStoMax[i][2]+"').style."+this.pluginCSStoMax[i][0]+"='"+this.pluginCSStoMax[i][1]+"';"+"}"); }
			}

			this.redimElemToMinForCommonCSS = function() {
				if(!this.activated) return;
				for(var i=0;i<this.pluginCSStoMin.length;i++)
				{ if(this.pluginCSStoMin[i][2] != '') eval("if(document.getElementById('"+this.pluginCSStoMin[i][2]+"'))"+"{"+"document.getElementById('"+this.pluginCSStoMin[i][2]+"').style."+this.pluginCSStoMin[i][0]+"='"+this.pluginCSStoMin[i][1]+"';"+"}"); }
			}
							
			this.addCSStoMax = function(key,value,id) { this.pluginCSStoMax.push(new Array(key,value,id)); }
			this.addCSStoMin = function(key,value,id) { this.pluginCSStoMin.push(new Array(key,value,id)); }
			
			this.addCSStoMaxForElem = function(key,value,index) { this.pluginCSStoMaxForElem.push(new Array(key,value,index)); }
			this.addCSStoMinForElem = function(key,value,index) { this.pluginCSStoMinForElem.push(new Array(key,value,index)); }
		}
		
		function RedimDivFactory(varname)
		{
			this.debugMode = false;
			this.varname = varname;
			this.instance = null;
			this.redimsActivated = new Array();
			this.redimsDivs = new Array();
			this.redimsDivsInit = new Array();
			
			this.redim = function(id,toMax) 
			{	if(this.debugMode) alert("Lancement de la fonction : RedimDivFactory.redim("+id+","+toMax+");");
				if(this.redimsActivated[id] == true)
				{	if(toMax)
					{ this.redimsDivs[id].redimElemToMaxForCommonCSS(); this.redimsDivs[id].redimElemToMax(); }
					else 
					{ this.redimsDivs[id].redimElemToMinForCommonCSS(); this.redimsDivs[id].redimElemToMin(); }
				}
				else if(this.debugMode) alert("La fonction suivante ne s'est pas executée correctement : RedimDivFactory.redim("+id+","+(toMax?'true':'false')+")");
			};
			
			this.getNewRedim = function(id) { return new RedimDiv(id); };
			this.addRedim = function(id,redim) { this.redimsDivs[id] = redim; }
			this.getRedim = function(id) { return this.redimsDivs[id]; };
			this.allRedimToMin = function(){ for(key in this.redimsDivs) { if(document.getElementById(key)) this.redim(key,false); } };
			this.allRedimToMax = function() { for(key in this.redimsDivs) { if(document.getElementById(key)) this.redim(key,true); } };
			
			this.setInitRedim = function(id,fct){ this.redimsDivsInit.push(new Array(id,fct)); };  // A utiliser pour déclarer des fonctions sans parametres!!!
			this.getInitRedim = function(id){ return this.redimsDivsInit[id]; };
			this.initAllRedim = function() {
				for(var i=0;i<this.redimsDivsInit.length;i++)
				{  this.redimsDivsInit[i][1].call(null);   // Initialisation des variables : redimDivs.
				   if(this.redimsActivated[this.redimsDivsInit[i][0]] == true) this.redimsDivs[this.redimsDivsInit[i][0]].activated = true;
				}
			};
			this.initOneRedim = function(id) { for(var i=0;i<this.redimsDivsInit.length;i++) if(this.redimsDivsInit[i][0] == id) { if(this.redimActivated[this.redimsDivsInit[i][0]] == true) this.redimDivs[this.redimsDivsInit[i][0]].activated = true; return this.redimsDivsInit[id].call(null); } };
			
			this.activeRedim = function(id) { this.redimsActivated[id] = true; };
			this.desactiveRedim = function(id) { this.redimsActivated[id] = false; };
		}
		
