
var graphPath='./graphs/images';
function treeview(title,classe,graphpath){
	if (typeof graphpath!='undefined') graphPath=graphpath;
	this.pos=0;
	this.level=0;
	this.title=title;
	this.id='tree';
	this.nodes=new Array();
	this.classe=(typeof classe=='undefined')?'norm':classe;
	
	this.build= Build;
	this.expand=ExpandAll;
	this.collapse=CollapseAll;
}
function node(pere,contenu){
	pere.nodes[pere.nodes.length]=this;
	this.pos=pere.nodes.length;
	this.pere=pere;
	this.content=contenu;
	this.nodes=new Array();
	this.level=pere.level+1;
	if (this.level==1)
		this.id="node"+this.pos;
	else
		this.id=pere.id+"_"+this.pos;
	this.expand=Expand;
	this.collapse=Collapse;
}
function Build(){
	window.status='Chargement en cours...'
	document.write ("<div id=treeview class="+this.classe+"><img align=top src=\""+graphPath+"/root.gif\">"+this.title)
	buildNode(this);
	document.write ("</div>")
	cook=getCookie('position');
	if ((isDefined(cook))&&(cook!='null')) Expand(eval(cook))
	window.status='';
}

function isDefined(ckVar){
  var DEFINED_V=true;
  function handleError() {
    DEFINED_V=false;
    return true;
  }
  var oldOnError=window.onerror;
  window.onerror=handleError;
  try { 
    eval(ckVar);
  }catch (e) 
  { DEFINED_V=false;
  }
  window.onerror=oldOnError;
  return DEFINED_V;
}
function buildNode(obj){
	var i,image,onclic,n,ch,node,disp;
	for(i=0;i<obj.nodes.length;i++){
		node=obj.nodes[i];ch="";		
		ch=ch+showImg(node);
		if(obj.level==0) disp='block'; else disp='none';
		document.write ("<div style=\"border:'0px solid #000000';display:"+disp+";\" id=\"div_"+node.id+"\">"+ch+node.content);
		buildNode(node);
		document.write ("</div>")

	}
}
function showImg(node){
	var ch;
	var n=node.level
	if(node.nodes.length==0){
		image='item';onclic='';
	}
	else{
		image='node_closed';onclic='openClose('+node.id+');';
	}				
	if (node.pere.nodes.length==node.pos) image=image+'_last';
	ch="<img onclick=\""+onclic+"\" id=\"img_"+node.id+"\" height=16 align=top src=\""+graphPath+"/"+image+".gif\">";
	var noeud=node.pere;
	while (noeud.id!='tree'){
		if (noeud.pos==noeud.pere.nodes.length)
			{image='blank';onclic='';}
		else
			{image='line';onclic='';}
		ch="<img height=16 align=top src=\""+graphPath+"/"+image+".gif\">"+ch;
		noeud=noeud.pere;
	}
	return ch
}
function openClose(node){if(eval('div_'+node.id+'_1.style').display=='none')Expand(node);else Collapse(node);}
function ExpandAll(){var i;for (i=0;i<document.all.length;i++) if (document.all[i].id.substr(0,5)=='node_') document.all[i].style.display='block';}
function CollapseAll(){var i;for (i=0;i<document.all.length;i++) if (document.all[i].id.substr(0,5)=='node_') document.all[i].style.display='none';}
function Expand(obj){
	var i,image;
	if(obj.pere.id!='tree') Expand(obj.pere);
	if (obj.nodes.length>0){
		var strimg=document.images('img_'+obj.id).src;
		if(strimg.indexOf('_last.gif')!=-1) image='/node_open_last.gif'; else image='/node_open.gif';
		document.images('img_'+obj.id).src=graphPath+image;
		for (i=1;i<=obj.nodes.length;i++)
			eval("div_"+obj.id+"_"+i+".style").display='block';
		setCookie('position',obj.id,null)
	}
}
function Collapse(obj){
	var i,image;
	if (obj.nodes.length>0){
		var strimg=document.images('img_'+obj.id).src;
		if(strimg.indexOf('node_open_last.gif')!=-1) image='/node_closed_last.gif'; else image='/node_closed.gif';
		document.images('img_'+obj.id).src=graphPath+image;
		for (i=1;i<=obj.nodes.length;i++)
			eval("div_"+obj.id+"_"+i+".style").display='none';
		if (obj.pere.id!='tree')
			setCookie('position',obj.pere.id,null)
		else
			setCookie('position',null,null)
	}
}
function setCookie(nom, valeur, expiration) {document.cookie = nom + "=" + escape(valeur) + ((expiration == null) ? "" : ("; expires=" + expiration.toGMTString()))}
function getCookie(nom) {
	var recherche = nom+ "="
	if (document.cookie!='') { 
			offset = document.cookie.indexOf(recherche) 
			if (offset != -1) {
				offset += recherche.length 
				fin = document.cookie.indexOf(";", offset) 
				if (fin == -1) 
					fin= document.cookie.length
				return unescape(document.cookie.substring(offset, fin))
			} 
	}
	return 'null'
}