//id des groupes
var creation = 'creation_790';
var evolution = 'evolution_791';
var aujourdhui = 'aujourdhui_792';

//couleurs d'écriture
var color_on = '#2dabbc';
var color_off = '#2dabbc';

var tableaux_divs = new Array;
var visible_group = new Array();

//après chargement de la page, on met en mémoire les composants de chaque groupe



function window_onload()
{
	var Divs = document.getElementsByTagName("div");
	for (var j = 0; j < Divs.length; j++)
	{				
		var divs_group = (Divs[j].id).split('_');
		if(divs_group[1] > 0)
		{
			if(!tableaux_divs[divs_group[1]]) tableaux_divs[divs_group[1]] = '';
			if(tableaux_divs[divs_group[1]] == '') tableaux_divs[divs_group[1]] += Divs[j].id;
			else tableaux_divs[divs_group[1]] += ','+Divs[j].id;
		}
	}

}

//function qui cache tous les groupes (ajouter l'appel des fonctions nécessaires)
function hide_all()
{
  hide_groupe(creation);
	hide_groupe(evolution);
	hide_groupe(aujourdhui);
}


//function spécifique au groupe (flag = 0, on ne pousse pas; flag = 1, on pousse)
function show_creation(flag)
{
  show_groupe(creation, flag);
}

function show_evolution(flag)
{
	show_groupe(evolution, flag);
}

function show_aujourdhui(flag)
{
	show_groupe(aujourdhui, flag);
}

/////////////////////FUNCTIONS/////////////////////////////
//function qui met une couleur donnée à un texte donné
function color(id_texte, couleur)
{
	document.getElementById(id_texte).style.color = couleur;
}

//function qui cache un groupe donné
function hide_groupe(group)
{
	if(!visible_group[group]) visible_group[group] = 0;
	else if(visible_group[group] == 1)
	{
		identifiants = group.split('_');
		color(identifiants[0], color_off);
		if(tableaux_divs[identifiants[1]])
		{
			divs = tableaux_divs[identifiants[1]].split(',');
			for (var j = 0; j < divs.length; j++)
			{		
				move_show(divs[j], 0, 0);
			}
		}
		visible_group[group] = 0;
	}
}

//function qui rend visible un groupe donné
function show_groupe(group, actionPousse)
{
	if(visible_group[group] == 0)
	{
		identifiants = group.split('_');
		color(identifiants[0], color_on);
    if(tableaux_divs[identifiants[1]])
		{
			divs = tableaux_divs[identifiants[1]].split(',');
			for (var j = 0; j < divs.length; j++)
			{				
				move_show(divs[j], 1, actionPousse);
			}
		}
		visible_group[group] = 1;
	}

}

//function qui pour chaque div donné, le rend visible ou le cache selon le flag et dans le cas où on le rend visible, pousse chaque composant qu'il doit pousser
function move_show(div, ouvre, actionPousse)
{
	var topDiv = document.getElementById(div).offsetTop;
	var leftDiv = document.getElementById(div).offsetLeft;
	var rightDiv = document.getElementById(div).offsetLeft + document.getElementById(div).offsetWidth;
	if(ouvre == 1) 
	{
		show_div(div);
		
		if(actionPousse == 1)
		{
			tab_grandis = document.getElementById('div_grandis').value;
			divs_grandis = tab_grandis.split('|');
			
			tab_pousse = document.getElementById('div_pousse').value;
			divs_pousse = tab_pousse.split('|');
			
			for(var i=0; i<divs_grandis.length; i++)
			{
				if(document.getElementById(divs_grandis[i]).style.display != 'none')
				{
					for(var j=0; j<divs_pousse.length; j++)
					{
						if(document.getElementById(divs_pousse[j]).style.display != 'none')
						{
							divTop = document.getElementById(divs_grandis[i]).offsetTop;
							div2Top = document.getElementById(divs_pousse[j]).offsetTop;
								if ((divs_grandis[i] != divs_pousse[j]) && (divTop < div2Top))
								 move_div_lb(divs_grandis[i], divs_pousse[j]);
								else
								 	maxBottom(divs_grandis[i]);
						}
					}
				}
			}
			bodyHeight();
		}
	}
	else
		hide_div(div);
}

//function qui pousse un composant par rapport à un autre et qui pousse également les composants liés
function move_div_lb(div, div2)
{
	divLeft = document.getElementById(div).offsetLeft;
	divTop = document.getElementById(div).offsetTop;
	divHeight = document.getElementById(div).offsetHeight;
	divWidth = document.getElementById(div).offsetWidth;
	divRight = divLeft + divWidth;
	divBottom = divTop + divHeight;

	div2Left = document.getElementById(div2).offsetLeft;
	div2Top = document.getElementById(div2).offsetTop;
	div2Height = document.getElementById(div2).offsetHeight;
	div2Width = document.getElementById(div2).offsetWidth;
	div2Right = div2Left + div2Width;
	div2Bottom = div2Top + div2Height;

	if ((div2Right < divLeft) || (div2Left > divRight))
	{
  }
	else
	{
	 if (divBottom > div2Top)
	 {
 		document.getElementById(div2).style.top = divBottom+'px';
 		diff = divBottom - div2Top;
 		
 		if(diff > 0)
 		{
		 	comp = div2.split('_');
		 	if(islie(comp[0]))
		 	{
	 			tableau = document.getElementById('liens_'+comp[0]).value;
	 			tab = tableau.split(',');
	 			for(var i=0; i<tab.length; i++)
	 			{
	 				if(document.getElementById(tab[i]).style.display != 'none'){
	 					document.getElementById(tab[i]).style.top = document.getElementById(tab[i]).offsetTop + diff+'px';
	 				}
	 			}
			}
 		}
	 }
	}
}

//function récupérant la situation du composant, à savoir si celui est lié à un autre ou pas
function islie(div)
{
	tab = document.getElementById('div_lies').value;
	lies = tab.split(',');
	
	for(var i = 0; i < lies.length; i++)
	{
		if(lies[i] == div) return true;
	}
	
	return false;
}

