if(typeof(SuperClass)=='function'){animElements.prototype = new SuperClass; /* héritage des méthodes */}
function animElements(element){
	if(typeof(SuperClass)!='function'){alert("fichier SuperClass.js manquant!");}
	else{		
		/* héritage */
		this.classMere = SuperClass;  // classe parente
		this.classMere(); // appel du super constructeur
		delete this.classMere; // inutile de garder la classe parente
		this.element=element;
		//this.element.style.overflow='hidden';
		this.pas;
	}
}


animElements.prototype.getDimCss = function(element){
if(element==undefined) var element=this.element;

var tab = new Array();
tab[0] = (this.explode('px',this.getCssStyleValue(element, 'width'))[0]);
tab[1] = (this.explode('px',this.getCssStyleValue(element, 'height'))[0]);
return tab;	
}


//////// Donne une hauteur
animElements.prototype.setHeight = function(height, element){
if(element==undefined) var element=this.element;
element.style.height=height+'px';
}

//// Donne une largeur
animElements.prototype.setWidth = function(width, element){
if(element==undefined) var element=this.element;
element.style.width=width+'px';	
}


/* 
Donne une largeur et une hauteur, OU, une largeur ou une hauteur 
si w_or_h non spécifié lors de l'appel de la fonction => Donne une largeur et une hauteur;
si w_or_h=0, => donne une largeur
si w_or_h=1, => donne une hauteur
Ex : setDim('id_div', 100, 200) >> donne largeur=100 et hauteur=200
setDim('id_div', 100, 200,0) >> donne largeur=100
setDim('id_div', 100, 200, 1) >> donne hauteur=200
*/
animElements.prototype.setDim =function(width, height, element, w_or_h){
if(element==undefined) var element=this.element;

var w=width;	
var h=height;	
if(w_or_h==undefined){
	if(width==undefined) w_or_h=1;
	if(height==undefined) w_or_h=0;
}

var w_h=(w_or_h);

	switch (w_h){
		case undefined :
		this.setWidth(w, element);
		this.setHeight(h, element);
		break;
		
		case 0 :
		this.setWidth(w, element);
		break;
		
		case 1 :
		this.setHeight(h, element);
		break;
	}
}

animElements.prototype.calculPas = function(delai, nbPixels){
	return parseFloat(nbPixels/(delai/25));
}

////////// fonction qui anime le div
animElements.prototype.openDiv = function(taille_min, taille_max, delai, w_or_h, callback, element) {
if(element==undefined) var element=this.element;

var t_max = parseInt(taille_max);
var t_min = parseInt(taille_min);
var pas = this.calculPas(delai,(taille_max-taille_min));
var w_h=w_or_h;

var taille=this.getDimCss(element);
taille=parseFloat(taille[w_h]); ///////////// recup hauteur ou largeur

//alert(taille+'+'+pas+' '+t_min+' '+t_max);
if(taille>=t_max) { /////// si taille dépasse taille_max >> anim de fermeture
	pas=-pas; // on inverse le pas
	taille=t_max;
	delai=-delai;
}


if(taille<=t_min) {/////// si taille dépasse taille_min >> anim d'ouverture
	taille=t_min;
	delai=Math.abs(delai);
}


taille=taille+pas;

	//// si div n'a pas atteint la taille de fin
	if(taille<t_max && taille>t_min){	
		this.setDim(taille, taille,element, w_h); /// on lui donne nouvelle taille
		var localThis = this;
		this.timeout[this.timeout.length]=window.setTimeout(function(){localThis.openDiv(t_min, t_max, delai, w_h, callback, element)},25);	
	}
	else {
		taille=taille+pas;
		if(taille>t_max) { // si anim d'ouverture
			this.setDim(t_max, t_max,element, w_h); /// on lui mets taille max
		} /// si anim de fermeture
		if(taille<t_min) this.setDim(t_min, t_min, element, w_h); // on lui mets taille min
		
		this.clearAllTimeout();
		if(callback) callback();
	}
}

