
var tLegendeNomGroup = new Array(200);
var tLegendeIdGroup = new Array(200);

var tLegendeGroupeDetailVisible = new Array(200);
var tLegendeGroupeOneChildVisible = new Array(200);

var tLegendeEntryGroup = new Array(200);
var tLegendeEntryGroupType = new Array(200);
var tLegendeGroupVisibility = new Array(200);
var tLegendExpanded = new Array(200);


var testV2 = ""; 

var currentGroupe = "";
var TYPE_COUCHE = 1;
var TYPE_GROUPE = 0;
var nbGroupes = 0;
var nbCouches = 0;


function CStateGroupe ( nbChild, count, disabled )
{
	this.nbChild = nbChild;
	this.count = count;
	this.disabled = disabled;
	
	CStateGroupe.prototype.Add = function ( objState )
	{
		this.nbChild += objState.nbChild;
		this.count += objState.count;
		this.disabled += objState.disabled;
	}
}

function GetCurPosGroupe()
{
	var i = 0;
	for (i=0; i<tLegendeNomGroup.length;i++)
	{
		if ( tLegendeNomGroup[i] != null && tLegendeNomGroup[i] == currentGroupe )
		{
			return i;
		}
	}
	return 0;
}

function test()
{
	var a = document.getElementById('tabletest');
	
	alert( a.childNodes[2].childNodes.length );
}



function InitLegende()
{
	for (i=0; i<tLegendeNomGroup.length; i++)
	{
		tLegendeGroupVisibility[i] = 0;
		tLegendeNomGroup[i] = null;
	}
}


/**
* Sauvegarde l'etat des groupes ouvert ou ferm? avant de redemander une carte.
*
*/
function SaveSateGroupe()
{
	var i=0;
	//objDebug.Clear();
			
	for (i=0; i<tLegendeNomGroup.length; i++)
	{
		if ( tLegendeNomGroup[i] != null )
		{
			var divGroup = document.getElementById ( 'element'+tLegendeNomGroup[i] );
			if ( divGroup.style.display == 'block' )
				tLegendExpanded [i] = 1;
			else if( divGroup.style.display == 'none' )
				tLegendExpanded [i] = 0;
				
				
			
			//objDebug.Push ( "######################");
			//objDebug.Push ( tLegendeNomGroup[i] + "  " + divGroup.style.display );
			//objDebug.Push ( "######################" );
		}
	}
}


/**
* Met ? jour l'etat des groupes tel qu'ils ont ete sauvegard?s avec SaveSateGroupe().
* C'est a dire on expand ou on collaspse le groupe concern?.
*/
function UpdateStateGroupe()
{
	var i=0;
	//objDebug.Clear();
	//objDebug.Push ('UpdateStateGroupe');
	for (i=0; i<tLegendeNomGroup.length; i++)
	{
		if ( tLegendeNomGroup[i] != null )
		{
			var divGroup = document.getElementById ( 'element'+tLegendeNomGroup[i] );
			var imgGroup = document.getElementById ( 'image'+tLegendeNomGroup[i] );
			
			//objDebug.Push (divGroup);
			if ( tLegendExpanded [i] == 1 )
			{
				divGroup.style.display = 'block';
				imgGroup.className = 'noeud expanded';
			
			}
			else if( tLegendExpanded [i] == 0 )
				divGroup.style.display = 'none';
			
			
			
				
				
			
			//objDebug.Push ( "######################");
			//objDebug.Push ( tLegendeNomGroup[i] + "  " + divGroup.style.display );
			//objDebug.Push ( "######################" );
		}
	}
}

function GroupeState( nomGroupe, objState )
{
	var j = 0;
	var count = 0;
	var disabled = 0;
	var nbChild = 0;
	
	//parcourt des couches du groupe
	for ( j=0; j<tLegendeEntryGroup.length; j++)
	{
		if ( tLegendeEntryGroup[j] != null  && tLegendeEntryGroup[j] != undefined )
		{
			//objDebug.Push( tLegendeEntryGroup[j] );
			var start = "GROUPE_" + nomGroupe + "___COUCHE_";
			var start2 = tLegendeEntryGroup[j].substring ( 0, start.length );
			
			if ( start == start2 )
			{
				if ( document.getElementById( tLegendeEntryGroup[j] ) != null)
				{
					nbChild ++;
					if ( document.getElementById( tLegendeEntryGroup[j] ).checked == true )						
						count ++;
					if ( document.getElementById( tLegendeEntryGroup[j] ).disabled == true)
						disabled ++;
				}

			}
		}
	}	
	objState.nbChild += nbChild
	objState.count += count
	objState.disabled += disabled
	
	//return objState
}

/**
*On definit si un groupe doit ?tre check? ou non.
*
*/
function setStateGroupes()
{
	var i=0;
	var j=0;
	//objDebug.Clear();
	//objDebug.Push ("DEBUT setStateGroupes");
	
	
	for (i=0; i<tLegendeNomGroup.length; i++)
	{
		if ( tLegendeNomGroup[i] != null )
		{
			var count = 0;
			var disabled = 0;
			var nbChild = 0;
			
			var objState = new CStateGroupe ( 0, 0, 0 );
			GroupeState ( tLegendeNomGroup[i], objState );
			
			//parcourt des couches du groupe
			/*
			for ( j=0; j<tLegendeEntryGroup.length; j++)
			{
				if ( tLegendeEntryGroup[j] != null  && tLegendeEntryGroup[j] != undefined )
				{
					objDebug.Push( tLegendeEntryGroup[j] );
					var start = "GROUPE_" + tLegendeNomGroup[i] + "___COUCHE_";
					var start2 = tLegendeEntryGroup[j].substring ( 0, start.length );
					
					if ( start == start2 )
					{
						if ( document.getElementById( tLegendeEntryGroup[j] ) != null)
						{
							nbChild ++;
							if ( document.getElementById( tLegendeEntryGroup[j] ).checked == true )						
								count ++;
							if ( document.getElementById( tLegendeEntryGroup[j] ).disabled == true)
								disabled ++;
						}

					}
				}
			}	*/
			
						
			//parcourt des groupes du groupe
			for ( j=0; j<tLegendeIdGroup.length; j++)
			{
				if ( tLegendeIdGroup[j] != null  && tLegendeIdGroup[j] != undefined && tLegendeIdGroup[j]!=tLegendeIdGroup[i])
				{
					var objState2 = new CStateGroupe ( 0, 0, 0 );
					var start = "GROUPE_" + tLegendeNomGroup[i] + "___GROUPE_";
					var start2 = tLegendeIdGroup[j].substring ( 0, start.length );
					
					if ( start == start2 )
					{
						//objDebug.Push("le groupe possede un groupe : " + tLegendeNomGroup[j]);
						GroupeState ( tLegendeNomGroup[j], objState2 );
						objState.Add ( objState2 );
						if ( objState2.checked == 0 )
						{
							var obj = document.getElementById( 'div'+tLegendeNomGroup[j] );
							if( obj != null )
								obj.style.display="none";
						}
						
					}
				}
			}
			
			nbChild = objState.nbChild;
			count = objState.count;
			disabled = objState.disabled;
			/*
			objDebug.Push ( "########################" );
			objDebug.Push ( "Groupe = " + tLegendeNomGroup[i] + " : " );
			objDebug.Push ( "nbChild = " + nbChild );
			objDebug.Push ( "nbChecked = " + count );
			objDebug.Push ( "nbDisabled" + disabled );
			*/
			 
			if  ( count > 0 )
			{
				//if (document.getElementById( tLegendeIdGroup[i] ).checked == false )
				if ( document.getElementById( tLegendeIdGroup[i] ) != null )
					document.getElementById( tLegendeIdGroup[i] ).checked = true;
			}
			else
			{
				if ( document.getElementById( tLegendeIdGroup[i] ) != null )
				{
					//objDebug.Push("ChildVisible = " +  tLegendeGroupeOneChildVisible[i]);
					if ( tLegendeGroupeOneChildVisible[i] == "1" )
						document.getElementById( tLegendeIdGroup[i] ).checked = true;
					else if ( tLegendeGroupeOneChildVisible[i] == "0" )
						document.getElementById( tLegendeIdGroup[i] ).checked = false;
					
					if ( tLegendeGroupeDetailVisible[i] == "0" )
					{
						var imgGroup = document.getElementById('image'+tLegendeNomGroup[i]);
						if ( imgGroup != null )
							imgGroup.className = 'noeud noNode collapsed';
							
						/*if ( nbChild == 0 )
						{
							objDebug.Push('div'+tLegendeNomGroup[i]);
							var obj = document.getElementById( 'div'+tLegendeIdGroup[i] );
							if( obj != null )
								obj.style.display="none";
						}*/
					
					}	

					if ( tLegendeGroupeDetailVisible[i] == "1" &&  nbChild == 0 )
					{
						//objDebug.Push('div'+tLegendeNomGroup[i]+ " " );
						var obj = document.getElementById( 'div'+tLegendeNomGroup[i] );
						if( obj != null )
							obj.style.display="none";
					}
				}
			}
			
			//objDebug.Push ( "nbChild = " + nbChild + " disabled = " + disabled );
			
			if ( nbChild == disabled && nbChild > 0 )
			{
				document.getElementById(tLegendeIdGroup[i]).disabled = true;
			}
			
		}
	}
	UpdateStateGroupe();
	//objDebug.Push ("FIN setStateGroupes");
	
	
	
	
	
}


function IncrementGroupe()
{
	nbGroupes = nbGroupes+1;	
}
function GetCurIndiceGroupe()
{
	return nbGroupes;
}
function IncrementCouche()
{
	nbCouches = nbCouches+1;	
}
function GetCurIndiceCouche()
{
	return nbCouches;
}


/**
*Action appell?e sur le click sur une checkbox de visibilit? de groupe.
*Permet de cacher/montrer un groupe de couche.
*/
function showHideGroupe ( groupe )
{
	
	for (i=0; i<tLegendeNomGroup.length; i++)
	{
		if ( tLegendeNomGroup[i] == groupe )
		{
			var objGroup = document.getElementById('element'+groupe);
			var imgGroup = document.getElementById('image'+groupe);
			if ( tLegendeGroupVisibility[i] == 0 )
			{
				tLegendeGroupVisibility[i] = 1;
				objGroup.style.display = 'block';
				imgGroup.className = 'noeud expanded';
				tLegendExpanded [i] = 1;
			}
			else
			{
				tLegendeGroupVisibility[i] = 0;
				objGroup.style.display = 'none';
				imgGroup.className = 'noeud collapsed';
				tLegendExpanded [i] = 0;
			}
			
			if ( tLegendeGroupeDetailVisible[i] == "0" )
			{
				imgGroup.className = 'noeud noNode';			
			}		
			
		}
	/*	else
		{
		 		if(tLegendeNomGroup[i]!=null)
		 		{
				
			    objGroup = document.getElementById('element'+tLegendeNomGroup[i]);
		        imgGroup = document.getElementById('image'+tLegendeNomGroup[i]);
	
		 		tLegendeGroupVisibility[i] = 0;
				objGroup.style.display = 'none';
				imgGroup.className = 'noeud collapsed';
				tLegendExpanded [i] = 0;
				}
		}*/
	}
	if(scroller!=null)
	scroller.updateScroller();
}

function showHideAnalyse ( analyse )
{
	var objGroup = document.getElementById('analyse'+analyse);
	var imgGroup = document.getElementById('image'+analyse);
	
	if ( objGroup.style.display == 'none' )
	{
		objGroup.style.display = 'block';
		imgGroup.className = 'noeud expanded';
	}
	else
	{
		objGroup.style.display = 'none';
		imgGroup.className = 'noeud collapsed';
	}
	
	//objDebug.Push (imgGroup.style);
	
	/*for (i=0; i<tLegendeNomGroup.length; i++)
	{
		if ( tLegendeNomGroup[i] == groupe )
		{
			if ( tLegendeGroupVisibility[i] == 0 )
			{
				tLegendeGroupVisibility[i] = 1;
				objGroup.style.display = 'block';
				imgGroup.className = 'noeud expanded';
				tLegendExpanded [i] = 1;
			}
			else
			{
				tLegendeGroupVisibility[i] = 0;
				objGroup.style.display = 'none';
				imgGroup.className = 'noeud collapsed';
				tLegendExpanded [i] = 0;
			}
			
			if ( tLegendeGroupeDetailVisible[i] == "0" )
			{
				imgGroup.className = 'noeud noNode';			
			}		
			
		}
	}*/
}



function ProcessGroupe ( nomGroupe, valueCheck )
{
	var i = 0;
	
	//objDebug.Push("Dans ProcessGroupe = " + nomGroupe );
	//objDebug.Push("Traitement des groupes du groupe = " + nomGroupe); 
	//objDebug.Push ("indice de i = " + i);
	for (i=0; i<tLegendeIdGroup.length; i++)
	{
		if ( tLegendeIdGroup[i] != null )
		{
			//Si le groupe courant est enfant du groupe pass? en parametre.
			if ( tLegendeIdGroup[i].substring(0,4) != "ROOT" )
			{
				var childGroupe = tLegendeIdGroup[i].split("___GROUPE_")[1];
				//objDebug.Push(tLegendeIdGroup[i] + " " + nomGroupe);
				if ( tLegendeIdGroup[i] == "GROUPE_"+nomGroupe+"___GROUPE_"+tLegendeNomGroup[i] )
				{
					//objDebug.Push( "GROUPe ENFANT = " +  childGroupe + "  " +  tLegendeIdGroup[i]);
					ProcessGroupe ( childGroupe, valueCheck );
					document.getElementById( tLegendeIdGroup[i] ).checked = valueCheck;
				}
			}
		}
	}
	
	//objDebug.Push("Traitement des couches du groupe = " + nomGroupe);
	//Les couches presentes dans le groupe
	for ( i=0; i<tLegendeEntryGroup.length; i++)
	{
	
		if ( tLegendeEntryGroup[i] != null  && tLegendeEntryGroup[i] != undefined )
		{
			var start = "GROUPE_" + nomGroupe + "___COUCHE_";
			var start2 = tLegendeEntryGroup[i].substring ( 0, start.length );
			
			if ( start == start2 )
			{
				//objDebug.Push ( "COUCHE TROUVEE : "+ tLegendeEntryGroup[i].substring ( start.length, tLegendeEntryGroup[i].length ) );
				document.getElementById( tLegendeEntryGroup[i] ).checked = valueCheck;
			}
		}
	}	
}

function showHideThematique( thema )
{
	//objDebug.Push (thema);
	var objGroup = document.getElementById('thema'+thema);
	var imgGroup = document.getElementById('image'+thema);
	
	if ( objGroup.style.display == 'none' )
	{
		objGroup.style.display = 'block';
		imgGroup.className = 'noeud expanded';
	}
	else
	{
		objGroup.style.display = 'none';
		imgGroup.className = 'noeud collapsed';
	}
}

function MAJGroupeCouche( objGroup )
{
	
	//objDebug.Push('MAJGroupeCouche');
	
	var nomGroupe = objGroup.id;
	nomGroupe = nomGroupe.split("___GROUPE_")[1];
	//objDebug.Push ( nomGroupe );
	
	ProcessGroupe ( nomGroupe, objGroup.checked );
	
	
}
