/*		Fonction d'affichage d'un effet de carré s'ouvrant
	Description : Cette fonction permet d'afficher un effet d'ouverture calculé selon la taille du div source
	et du div de destination.
	!!! Attention cela requière que la div source choisie ait une div parente !!!
*/
function ici_drawsquare_effect(idsource, iddestination, newid, styleend, vitesse)
{
	//Effectuer le calcul des différents css sources et de destination
		//Récupération données de la source
		var width_source = $(idsource).getCoordinates().width;
		var height_source = $(idsource).getCoordinates().height;
		
			//X & Y
			var x_source = getPositionById(idsource)[0];
			var y_source = getPositionById(idsource)[1];
			
		//Récupération données de la cible
		var width_dest = $(iddestination).getCoordinates().width;
		var height_dest = $(iddestination).getCoordinates().height;
		
			//X & Y
			var x_dest = getPositionById(iddestination)[0];
			var y_dest = getPositionById(iddestination)[1];
			
	//Créer un objet par rapport aux données récupérées de la source
	var div_drawsquare_effect = new Element('div', {
									id: newid,
									'class': styleend,
									styles: {
												'position': 'absolute',
												'z-index': 10,
												'top': y_source+'px',
												'left': x_source+'px',
												'width': width_source+'px',
												'height': height_source+'px',
												'opacity' : 0
											  }
									});
									
	$('container').adopt(div_drawsquare_effect);

	//Définition de l'effet de morphing en fonction du source et de la destination
	var MorphEffect = new Fx.Morph(div_drawsquare_effect, {duration : vitesse, transition: Fx.Transitions.Sine.easeOut});

	MorphEffect.start({
			'position' : 'absolute',
			'top' : y_dest+'px',
			'left' : (x_dest-0)+'px',
			'width' : (width_dest-4)+'px',
			'height' : (height_dest-4)+'px',
			'opacity' : 1
		});
}

/*		Fonction d'affichage d'un effet de carré s'ouvrant et se supprimant à la fin
	Description : Cette fonction permet d'afficher un effet d'ouverture calculé selon la taille du div source
	et du div de destination.
	!!! Attention cela requière que la div source choisie ait une div parente !!!
*/
function ici_drawsquare_ephemere_effect(idsource, iddestination, newid, styleend, vitesse)
{
	//Effectuer le calcul des différents css sources et de destination
		//Récupération données de la source
		var width_source = $(idsource).getCoordinates().width;
		var height_source = $(idsource).getCoordinates().height;
		
			//X & Y
			var x_source = getPositionById(idsource)[0];
			var y_source = getPositionById(idsource)[1];
			
		//Récupération données de la cible
		var width_dest = $(iddestination).getCoordinates().width;
		var height_dest = $(iddestination).getCoordinates().height;
		
			//X & Y
			var x_dest = getPositionById(iddestination)[0];
			var y_dest = getPositionById(iddestination)[1];
			
	//Créer un objet par rapport aux données récupérées de la source
	var div_drawsquare_effect = new Element('div', {
									id: newid,
									'class': styleend,
									styles: {
												'position': 'absolute',
												'z-index': 10,
												'top': y_source+'px',
												'left': x_source+'px',
												'width': width_source+'px',
												'height': height_source+'px',
												'opacity' : 0
											  }
									});
									
	$('container').adopt(div_drawsquare_effect);

	//Définition de l'effet de morphing en fonction du source et de la destination
	var MorphEffect = new Fx.Morph(div_drawsquare_effect, {duration : vitesse, transition: Fx.Transitions.Sine.easeOut});

	MorphEffect.start({
			'position' : 'absolute',
			'top' : y_dest+'px',
			'left' : (x_dest-0)+'px',
			'width' : (width_dest-4)+'px',
			'height' : (height_dest-4)+'px',
			'opacity' : 1
		});
		
	setTimeout("$('"+newid+"').dispose();",vitesse);
}

/*		Fonction : getPositionById
	  Argument 0 : Identifiant de l'objet dont on souhaite récupérer le x et le y.
		  Retour : Cette fonction retourne un tableau, la première la position x, et la seconde la position y.
*/
function getPositionById(Objet)
{
	var obj = document.getElementById(Objet);
	var x = 0;
	var y = 0;
	
	if (obj.offsetParent) 
	{
		x = obj.offsetLeft;
		y = obj.offsetTop;
		
		while (obj = obj.offsetParent) 
			{
				x += obj.offsetLeft
				y += obj.offsetTop
			}
	}
	return [x,y];
}

/*		Fonction : getPosition
	  Argument 0 : Reference de l'objet dont on souhaite récupérer le x et le y.
		  Retour : Cette fonction retourne un tableau, la première la position x, et la seconde la position y.
*/
function getPosition(Objet)
{
	var obj = Objet;
	var x = 0;
	var y = 0;
	
	if (obj.offsetParent) 
	{
		x = obj.offsetLeft;
		y = obj.offsetTop;
		
		while (obj = obj.offsetParent) 
			{
				x += obj.offsetLeft
				y += obj.offsetTop
			}
	}
	return [x,y];
}


/* 		Fonction : getvalueCSS
	  Argument 0 : Id Objet
	  Argument 1 : propriete css
*/  
function getvalueCSS(ObjetStyle,styleProp)
{
	var ObjetStyle = document.getElementById(ObjetStyle);
	var result="";
	
	if (ObjetStyle.currentStyle)
		{
		result = ObjetStyle.currentStyle[styleProp];
		}
	else if (window.getComputedStyle)
		{
		result = document.defaultView.getComputedStyle(ObjetStyle,null)[styleProp];
		}
		
	return result;
}


/* 		Fonction : setvalueCSS
	  Argument 0 : Id Objet
	  Argument 1 : propriete css
*/
function setvalueCSS(ObjetStyle,styleProp,styleValue)
{
	var ObjetStyle = document.getElementById(ObjetStyle);
	
	eval("ObjetStyle.style."+styleProp+" = styleValue;");
} 
