/* VARIABLES GLOBALES GENERALES */
var DELAY = 5;	 				// Délai entre les transitions des fonctions
var NB_TRANSITIONS = 20; 		// Nombre de transitions pour les animations

/*
changeOpacity(
	mixed id, 				--> identifiant de l'element HTML
	[float opacityDeb], 	--> degré d'opacité de départ : de 1 (opaque) à 0 (transparent)
	[float opacityFin], 	--> degré d'opacité souhaité : de 1 (opaque) à 0 (transparent)
	[int nbTrans],			--> nombre de transitions pour l'animation
	[int delay],			--> temps entre chaque transition (en ms)
)							>>> CHANGE L'OPACITE D'UNE element
*/

function changeOpacity(element,opacityDeb,opacityFin,nbTrans,delay) {
	var elm = document.getElementById(element);
	
	var opacityDeb = opacityDeb || 1;
	var opacityFin = opacityFin || 0;
	var nbTrans = nbTrans || NB_TRANSITIONS;
	var delay = delay || DELAY;
	
	// calcul du delta et détermination de la valeur temporaire
	var opacityDelta = Math.round((opacityFin-opacityDeb) / nbTrans * 100);
	opacityDelta /= 100;
	var opacity = opacityDeb;
	
	// setInterval pour la répétition de la fonction
	var interval = setInterval(
		function() {
			opacity += opacityDelta;
			opacityIE = opacity * 100;
			
			elm.style.filter = "alpha(opacity="+opacityIE+")";
			elm.style.opacity = opacity;
			
			if ( ((opacityDeb < opacityFin) && (opacity > opacityFin)) || ((opacityDeb > opacityFin) && (opacity < opacityFin)) ) {
				clearInterval(interval);
				opacityFinIE = opacityFin * 100;
				
				elm.style.filter = "alpha(opacity="+opacityFinIE+")";
				elm.style.opacity = opacityFin;
			}
		},delay);
}

function hide(element) {
	document.getElementById(element).style.display = 'none';
}
function show(element) {
	elm = document.getElementById(element);
	elm.style.display = 'block';
}

function fadeOut(element,opacity,nbTrans,delay){
	var opacity = opacity || 1;
	var nbTrans = nbTrans || NB_TRANSITIONS;
	var delay = delay || DELAY;
	changeOpacity(element,opacity,0,nbTrans,delay);
	var interval = setTimeout(
		function(){
			hide(element);
			clearTimeout(interval);
		},nbTrans*delay*2);
}

function fadeIn(element,opacity,nbTrans,delay){
	var opacity = opacity || 1;
	var nbTrans = nbTrans || NB_TRANSITIONS;
	var delay = delay || DELAY;
	show(element);
	changeOpacity(element,0.01,opacity,nbTrans,delay);
}

function initElements() {
	for(i = 0; i < arguments.length; i++){
         document.getElementById(arguments[i]).style.opacity = 0;
         document.getElementById(arguments[i]).style.filter = "alpha(opacity=0)";
         document.getElementById(arguments[i]).style.display = "none";
    }
}
function showElements() {
	for(i = 0; i < arguments.length; i++){
         if(document.getElementById(arguments[i]).style.opacity != 1) fadeIn(arguments[i]);
    }
}
function hideElements() {
	for(i = 0; i < arguments.length; i++){
        fadeOut(arguments[i]);
    }
}

function showOrHideElements() {
	elm = document.getElementById(arguments[0]);
	if(elm.style.display == 'none')
	{
		for(i = 0; i < arguments.length; i++){
			 if(document.getElementById(arguments[i]).style.opacity != 1) fadeIn(arguments[i]);
		}
	}
	else
	{
		for(i = 0; i < arguments.length; i++){
			fadeOut(arguments[i]);
		}
	}
		
}

/***********************************************
	Colors fades : for borders and backgrounds
************************************************/
function giveDec(Hex)
{
   if(Hex == "A")
      Value = 10;
   else
   if(Hex == "B")
      Value = 11;
   else
   if(Hex == "C")
      Value = 12;
   else
   if(Hex == "D")
      Value = 13;
   else
   if(Hex == "E")
      Value = 14;
   else
   if(Hex == "F")
      Value = 15;
   else
      Value = eval(Hex);

   return Value;
}
function hexToDec(hexa)
{
   hexa = hexa.toUpperCase();

   a = giveDec(hexa.substring(0, 1));
   b = giveDec(hexa.substring(1, 2));
   c = giveDec(hexa.substring(2, 3));
   d = giveDec(hexa.substring(3, 4));
   e = giveDec(hexa.substring(4, 5));
   f = giveDec(hexa.substring(5, 6));

   x = (a * 16) + b;
   y = (c * 16) + d;
   z = (e * 16) + f;
   
   t=new Array(x,y,z);
   
   return t;
}

function fadeBorderColor(element,startColor,stopColor,nbTrans,delay) {

	var elm = document.getElementById(element);	
	var nbTrans = nbTrans || NB_TRANSITIONS/2;
	var delay = delay || DELAY;
	
	startColor = hexToDec(startColor);
	stopColor = hexToDec(stopColor);

	var rDelta = Math.floor((stopColor[0]-startColor[0])/nbTrans);
	var gDelta = Math.floor((stopColor[1]-startColor[1])/nbTrans);
	var bDelta = Math.floor((stopColor[2]-startColor[2])/nbTrans);
	
	var rTemp = startColor[0];
	var gTemp = startColor[1];
	var bTemp = startColor[2];
	
	//alert(startColor[0]);204
	//alert(rDelta);1
	//alert(stopColor[0]);252

	var interval = setInterval(
		function() {
			rTemp += rDelta;
			gTemp += gDelta;
			bTemp += bDelta;
			
			elm.style.borderColor = "rgb("+rTemp+","+gTemp+","+bTemp+" )";
			
			if (  ( (startColor[0] < stopColor[0]) && rTemp>stopColor[0] ) || ( (startColor[0] > stopColor[0]) && rTemp<stopColor[0] ) ) {
				clearInterval(interval);
				elm.style.borderColor = "rgb("+stopColor[0]+","+stopColor[1]+","+stopColor[2]+" )";
			}
		},delay);
	
}


function changer(champ,defaut){
	var defaut = defaut || '';
	if (champ.defaultValue == champ.value) champ.value = defaut;
	else if (champ.value == defaut || champ.value == '' || champ.value==' ') champ.value = champ.defaultValue;
}

function isEmpty(champ, defaut){
	defaut = defaut || '';
	if (champ.defaultValue == champ.value || champ.value == '' || champ.value == ' ' || champ.value == defaut) return true;
	return false;
}


function changeRows(element,rowsDeb,rowsFin,delay) {
	var elm = document.getElementById(element);
	var rowsDeb = rowsDeb || 1
	var delay = delay || DELAY;
	
	var rows = rowsDeb;
	
	// setInterval pour la répétition de la fonction
	var interval = setInterval(
		function() {
			if(rowsDeb<rowsFin) rows++;
			else rows--;
			elm.rows = rows;
			if ( ((rowsDeb < rowsFin) && (rows >= rowsFin)) || ((rowsDeb > rowsFin) && (rows <= rowsFin)) ) {
				clearInterval(interval);
				elm.rows = rowsFin;
			}
		},delay);
}



function getHeight(element) {
	return document.getElementById(element).height;
}
/*
changeHeight(
	mixed element,			--> identifiant de l'element HTML
	int withDeb, 			--> largeur de départ de l'element
	int withFin, 			--> largeur souhaitée de l'element
	[int nbTrans],			--> nombre de transitions pour l'animation
	[int delay],			--> temps entre chaque transition (en ms)
)							>>> DIMINUE OU GROSSIT LA TAILLE D'UN ELEMENT
*/
function changeHeight(element,heightDeb,heightFin,nbTrans,delay) {
	var elm = document.getElementById(element);
	var heightDeb = heightDeb || getHeight(element);
	var nbTrans = nbTrans || NB_TRANSITIONS;
	var delay = delay || DELAY;
	
	// calcul du delta et détermination de la valeur temporaire
	var delta = Math.round((heightFin - heightDeb) / nbTrans);
	var height = heightDeb;
	
	// setInterval pour la répétition de la fonction
	var interval = setInterval(
		function() {
			height += delta;
			elm.style.height = height;
			
			if ( ((heightDeb < heightFin) && (height > heightFin)) || ((heightDeb > heightFin) && (height < heightFin)) ) {
				clearInterval(interval);
				elm.style.height = heightFin;
			}
		},delay);
}


function desactiver(element)
{
	var elm = document.getElementById(element);
	elm.disable=true;
}

function checkOne(i)
{
	if(document.res.elements[i].checked == true)
		document.res.elements[i].checked = false;
	else
		document.res.elements[i].checked = true;
}
function check(val,bool)
{
	for(i=0;i<val;i++)
		document.res.elements[i].checked = bool;
}
function checkInverse(val)
{
	for(i=0;i<val;i++)
		if(document.res.elements[i].checked == true) document.res.elements[i].checked = false;
		else document.res.elements[i].checked = true;
}

