//-------------------------- TOUTES LES FONCTIONS UTILES POUR L'APPLICATIF----------------------------------//
////////////////////////---------------------------------------------------------/////////////////////////////


function show_div(div) {document.getElementById(div).style.display = '';}
function hide_div(div) {document.getElementById(div).style.display = 'none';}

function replace_div(div, div2)
{
	document.getElementById(div).style.width = (document.getElementById(div2).offsetWidth)+'px';
	heightDivPrinc = sizeOfDiv(document.getElementById('comp_'+div2).value);
	show_div(div);
	if(sizeOfDiv(div) > heightDivPrinc)
		heightDiv = heightDivPrinc;
	else
		heightDiv = sizeOfDiv(div);
	hide_div(div);
	topDiv = positionTop(div2);
	if(verifLimit(topDiv, heightDiv, heightDivPrinc) == true)
	{
		document.getElementById(div).style.top = topDiv;
	}
	else
	{
		document.getElementById(div).style.top = verifLimit(topDiv, heightDiv, heightDivPrinc);
	}
}

function positionTop(div)
{
	topDiv = 5;
	tab_divs = document.getElementById('composant_'+div).value;
	divs = tab_divs.split('_');
	for (var i = 0; i < divs.length; i++) 
	{
		if(divs[i] != '')
		{
			sizeDiv = sizeOfDiv(divs[i]);
			topDiv += sizeDiv;
		}
	}
	return topDiv;
}

function sizeOfDiv(div)
{
	return document.getElementById(div).offsetHeight;
}

function verifLimit(topDiv, heightDiv, heightDivPrincipal)
{
	if((topDiv + heightDiv) > heightDivPrincipal)
	{
		return (topDiv - (heightDiv - (heightDivPrincipal - topDiv)));
	}
	else
		return true;
}

function findPosLeft(obj) {
  var curleft = 0;
  if (obj.offsetParent) {
    do {
         curleft += obj.offsetLeft;
       } while (obj = obj.offsetParent);
  }
  return curleft;
}

function findPosTop(obj) {
  var curtop = 0;
  if (obj.offsetParent) {
    do {
         curtop += obj.offsetTop;
       } while (obj = obj.offsetParent);
  }
  return curtop;
}

function move_div_ab(div, div2, tableau)
{
	divLeft = findPosLeft(document.getElementById(div));
	divTop = findPosTop(document.getElementById(div));
	divHeight = document.getElementById(div).offsetHeight;
	divWidth = document.getElementById(div).offsetWidth;
	divRight = divLeft + divWidth;
	divBottom = divTop + divHeight;

	div2Left = findPosLeft(document.getElementById(div2));
	div2Top = findPosTop(document.getElementById(div2));
	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 && tableau != '')
	 		{
	 			tab = tableau.split(',');
	 			for(var i=0; i<tab.length; i++)
	 			{
	 				if(tab[i] != ''){
	 					document.getElementById(tab[i]).style.top = findPosTop(document.getElementById(tab[i])) + diff+'px';
	 				}
	 			}
	 		}
	 }
	}
}

function move_div(div, div2, oldHeight)
{
	divTop = document.getElementById(div).offsetTop;
	divHeight = document.getElementById(div).offsetHeight;
	divLeft = document.getElementById(div).offsetLeft;
	divWidth = document.getElementById(div).offsetWidth;
	divRight = divLeft + divWidth;
	divBottom = divTop + divHeight;

	div2Top = document.getElementById(div2).offsetTop;
	div2Height = document.getElementById(div2).offsetHeight;
	div2Left = document.getElementById(div2).offsetLeft;
	div2Width = document.getElementById(div2).offsetWidth;
	div2Right = div2Left + div2Width;
	div2Bottom = div2Top + div2Height;

	if ((div2Right < divLeft) || (div2Left > divRight))
	{
		// cas où on ne fait rien : les 2 div ne se touchent pas
	}
	else
	{
		diff = divHeight - oldHeight;
		if (diff > 0)
			document.getElementById(div2).style.top = (div2Top + diff)+'px';
	}

	if((document.getElementById(div2).offsetTop + document.getElementById(div2).offsetHeight) >= document.getElementById('maxBottom').value)
	{
		document.getElementById('maxBottom').value = document.getElementById(div2).offsetTop + document.getElementById(div2).offsetHeight;
		document.getElementById('maxBottomBis').value = document.getElementById(div2).offsetTop + document.getElementById(div2).offsetHeight;
	}

	return true;
}

function maxBottom(div)
{
	if((document.getElementById(div).offsetTop + document.getElementById(div).offsetHeight) >= document.getElementById('maxBottom').value)
	{
		document.getElementById('maxBottom').value = document.getElementById(div).offsetTop + document.getElementById(div).offsetHeight;
		document.getElementById('maxBottomBis').value = document.getElementById(div).offsetTop + document.getElementById(div).offsetHeight;
	}

	return true;
}

function bodyHeight()
{
	document.getElementById('maincontent').style.height = document.getElementById('maxBottom').value + 'px';

	return true;
}

function move_div_depli(article, journal, ouvre)
{
	if( (ouvre == 1) && (document.getElementById('articleDeplie').value != ''))
	{
		move_div_depli(document.getElementById('articleDeplie').value, document.getElementById('journalDeplie').value, 0);
	}

	oldHeight = document.getElementById(journal).offsetHeight;

	if(ouvre == 1)
	{
		show_div(article);
		hide_div('blind_down_'+article);
		show_div('blind_up_'+article);
	}
	else
	{
		hide_div(article);
		show_div('blind_down_'+article);
		hide_div('blind_up_'+article);
	}

	divTop = document.getElementById(journal).offsetTop;
	divHeight = document.getElementById(journal).offsetHeight;
	divLeft = document.getElementById(journal).offsetLeft;
	divWidth = document.getElementById(journal).offsetWidth;

	tab = document.getElementById('div_pousse').value;

	divs = tab.split('|');

	for(var i=0; i<divs.length; i++)
	{
		if(divs[i] != '')
		{
		
			div2Top = document.getElementById(divs[i]).offsetTop;
			div2Height = document.getElementById(divs[i]).offsetHeight;
			div2Left = document.getElementById(divs[i]).offsetLeft;
			div2Width = document.getElementById(divs[i]).offsetWidth;
	
			if((div2Top >= (divTop + oldHeight)) && (div2Left<=(divLeft + divWidth)))
			{
				if(((divLeft >= div2Left) && (divLeft <= (div2Left + div2Width))) || ( (divLeft <= div2Left) && ((div2Left + div2Width) <= (divLeft + divWidth))) || ( (divLeft <= div2Left) && ((div2Left + div2Width) >= (divLeft + divWidth))))
				{
					if(ouvre == 1)
					{
						diff = divHeight - oldHeight;
						document.getElementById(divs[i]).style.top = (div2Top + diff)+'px';
					}
					else
					{
						diff = oldHeight - divHeight;
						document.getElementById(divs[i]).style.top = (div2Top - diff)+'px';
					}
					
					nomDiv = divs[i].split('_');
					if(islie(nomDiv[0]))
				 	{
			 			tableau = document.getElementById('liens_'+nomDiv[0]).value;
			 			tab = tableau.split(',');
			 			for(var j=0; j<tab.length; j++)
			 			{
			 				if(ouvre == 1)
			 					document.getElementById(tab[j]).style.top = document.getElementById(tab[j]).offsetTop + diff+'px';
			 				else
			 					document.getElementById(tab[j]).style.top = document.getElementById(tab[j]).offsetTop - diff+'px';
			 			}
					}
				}
			}
			if(ouvre == 1)
			{
				if((document.getElementById(divs[i]).offsetTop + document.getElementById(divs[i]).offsetHeight) >= document.getElementById('maxBottom').value)
					document.getElementById('maxBottom').value = document.getElementById(divs[i]).offsetTop + document.getElementById(divs[i]).offsetHeight;
			}
			else
				document.getElementById('maxBottom').value = document.getElementById('maxBottomBis').value;
		}
	}

	bodyHeight();

	if(ouvre == 1)
	{
		document.getElementById('articleDeplie').value = article;
		document.getElementById('journalDeplie').value = journal;
	}
	else
	{
		document.getElementById('articleDeplie').value = '';
		document.getElementById('journalDeplie').value = '';
	}

	return true;
}

function toogle_div_all(div, inputT)
{
	var tab = new Array();
  var lparent ;
  var lenfant ;
  var compt;
  var spaceniveau;
 tab = document.getElementById('Listniveau2').value.split('/');

 for (compt = 0; compt < tab.length ;compt++)
 {
  lparent = tab[compt].substr(0,6);
  lenfant = 'tr_'+tab[compt].substr(7,3);
  spaceniveau ='space_niveau'+tab[compt].substr(7,3);
  /*  if(document.getElementById(inputT).value != div)
	{
		if(document.getElementById(inputT).value != '')
		{
			div2 = document.getElementById(inputT).value;
			if(document.getElementById(div2)) hide_div(div2);
		}
	}*/
 
  if (div==lparent)
  {
   if (document.getElementById(tab[compt]).style.display == 'none')
	{
	
  if (document.getElementById(spaceniveau)&& spaceniveau !='space_niveau' )
  show_div(spaceniveau);
  
  show_div(tab[compt]);
		document.getElementById(inputT).value = div;
	}
	else
	{
	  if (document.getElementById(lenfant))
    {
      if (document.getElementById(lenfant).style.display == '')
  	  hide_div(lenfant);
  	}
	  if (document.getElementById(spaceniveau))
    hide_div(spaceniveau);
    
    hide_div(tab[compt]);
		document.getElementById(inputT).value = '';
	}
  }
}
}
function toogle_div(div, inputT)
{

  if(document.getElementById(inputT).value != div)
	{
		if(document.getElementById(inputT).value != '')
		{
			div2 = document.getElementById(inputT).value;
			if(document.getElementById(div2)) hide_div(div2);
		}
	}
	if (document.getElementById(div).style.display == 'none')
	{
		show_div(div);
		document.getElementById(inputT).value = div;
	}
	else
	{
		hide_div(div);
		document.getElementById(inputT).value = '';
	}
}

//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;
}


//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('top'+divs_grandis[i]).value;
							div2Top = document.getElementById('top'+divs_pousse[j]).value;
							//divTop = document.getElementById(divs_grandis[i]).style.top;
							//div2Top = document.getElementById(divs_pousse[j]).style.top;
							
								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 move_div_depli_activite(activite, calendrier, ouvre)
{

	if( (ouvre == 1) && (document.getElementById('activiteDeplie').value != ''))
	{
		move_div_depli_activite(document.getElementById('activiteDeplie').value, document.getElementById('calendrierDeplie').value, 0);
		if(document.getElementById('HoldDeplie').value == activite)
		return;
	}
	
	oldHeight = document.getElementById(calendrier).offsetHeight;
	
	
	if(ouvre==1)
	{
		show_div(activite);	
		document.getElementById('HoldDeplie').value = activite;
	}
 else 
 	{
 		hide_div(activite);
 	}
 	
	
	

	divTop = document.getElementById(calendrier).offsetTop;
	divHeight = document.getElementById(calendrier).offsetHeight;
	divLeft = document.getElementById(calendrier).offsetLeft;
	divWidth = document.getElementById(calendrier).offsetWidth;

	tab = document.getElementById('div_pousse').value;

	divs = tab.split('|');

	for(var i=0; i<divs.length; i++)
	{
		if(divs[i] != '')
		{
			div2Top = document.getElementById(divs[i]).offsetTop;
			div2Height = document.getElementById(divs[i]).offsetHeight;
			div2Left = document.getElementById(divs[i]).offsetLeft;
			div2Width = document.getElementById(divs[i]).offsetWidth;

			if((div2Top >= (divTop + oldHeight)) && (div2Left<=(divLeft + divWidth)))
			{
				if(((divLeft >= div2Left) && (divLeft <= (div2Left + div2Width))) || ( (divLeft <= div2Left) && ((div2Left + div2Width) <= (divLeft + divWidth))) || ( (divLeft <= div2Left) && ((div2Left + div2Width) >= (divLeft + divWidth))))
				{
					if(ouvre == 1)
					{
						diff = divHeight - oldHeight;
						document.getElementById(divs[i]).style.top = (div2Top + diff)+'px';
					}
					else
					{
						diff = oldHeight - divHeight;
						document.getElementById(divs[i]).style.top = (div2Top - diff)+'px';
					}
					
					nomDiv = divs[i].split('_');
					if(islie(nomDiv[0]))
				 	{
			 			tableau = document.getElementById('liens_'+nomDiv[0]).value;
			 			tab = tableau.split(',');
			 			for(var j=0; j<tab.length; j++)
			 			{
			 				if(ouvre == 1)
			 					document.getElementById(tab[j]).style.top = document.getElementById(tab[j]).offsetTop + diff+'px';
			 				else
			 					document.getElementById(tab[j]).style.top = document.getElementById(tab[j]).offsetTop - diff+'px';
			 			}
					}
				}
			}
			if(ouvre == 1)
			{
				if((document.getElementById(divs[i]).offsetTop + document.getElementById(divs[i]).offsetHeight) >= document.getElementById('maxBottom').value)
					document.getElementById('maxBottom').value = document.getElementById(divs[i]).offsetTop + document.getElementById(divs[i]).offsetHeight;
			}
			else
				document.getElementById('maxBottom').value = document.getElementById('maxBottomBis').value;
		}
	}

	bodyHeight();

	if(ouvre == 1)
	{
		document.getElementById('activiteDeplie').value = activite;
		document.getElementById('calendrierDeplie').value = calendrier;
	}
	else
	{
		document.getElementById('activiteDeplie').value = '';
		document.getElementById('calendrierDeplie').value = '';
	}

	return true;
}

function height_div()
		{
			
			 var viewportheight;

			 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
			 if (typeof window.innerWidth != 'undefined')
			 {
			     
			      viewportheight = window.innerHeight
			 }
			 
			// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
			 else if (typeof document.documentElement != 'undefined'
			     && typeof document.documentElement.clientWidth !=
			     'undefined' && document.documentElement.clientWidth != 0)
					 {
			       viewportheight = document.documentElement.clientHeight
					 }
			 // older versions of IE
			 else
					 {
			       viewportheight = document.getElementsByTagName('body')[0].clientHeight
					 }
			
		  document.getElementById('div_cache').style.height = viewportheight;
		
		}

function disable_link(mode)
{
  var tempTab =  document.getElementsByTagName("a");
  if (tempTab.length != 0) 
  {
    if (mode =="puzzling")
    {
      for(var i =2; i<tempTab.length;i++)
      {
        tempTab[i].removeAttribute("href");
      }
    }
    else
    {
      for(var i =0; i<tempTab.length;i++)
      {
        tempTab[i].removeAttribute("href");
      }
    }
  }
}