<!--  to hide script contents from old browsers



// preloading of pictures

i1 = new Image
i1.src = "doc.gif"
i2 = new Image
i2.src = "blank.gif"
i3 = new Image
i3.src = "closedfolder.gif"
i4 = new Image
i4.src = "lastnode.gif"
i5 = new Image
i5.src = "minus.gif"
i6 = new Image
i6.src = "node.gif"
i7 = new Image
i7.src = "openfolder.gif"
i8 = new Image
i8.src = "vertline.gif"

//each node in the tree is an Array with 5+n positions 
//  node[0] is 0/1 when the node is closed/open
//  node[1] is 0/1 when the folder is closed/open
//  node[2] is 1 if the children of the node are documents 
//  node[3] is the name of the folder
//  node[4] is the name of the father
//  node[5]...node[5+n] are the n children nodes


// ***************
// generateTree() is provided by buildTree.js


// Auxiliary function to build the node
function fNo(name)
{
var arrayAux
	arrayAux = new Array
	arrayAux[0] = 0
	arrayAux[1] = 0
	arrayAux[2] = 0
	arrayAux[3] = name
	arrayAux[4] = "nil"
        
        return arrayAux
}

// Auxiliary function to build a leaf node
// The entries in arrayAux[5]..array[length-1] are strings built in generate doc entry
function lNo(docDescription, link)
{
var arrayAux
	arrayAux = new Array
	arrayAux[0] = 0
	arrayAux[1] = 0
	arrayAux[2] = 1
	
        
        //return arrayAux
        
	var retString =""
	linkdocDescription = URLEncode(docDescription)

	retString = "<A href=\""+templateLeafLink+linkdocDescription+"\" target=infoFrame><img name='"+docDescription+"' src='doc.gif' alt='Opens in right frame'"
	
	retString = retString + " border=0 width="+iconW+" height="+iconH+"></a><td nowrap><A href=\""+templateLeafLink+linkdocDescription+"\" target=infoFrame><font size="+fontSize+" face='Arial, Helvetica'>" + docDescription + "</font></a>"

    	arrayAux[3] = retString
		arrayAux[4] = "nil"
	
	return arrayAux
	
}

//appends child to parent
//this way the generate tree function becomes simpler and less error prone
function apCh(parent, child)
{
	parent[parent.length] = child
	child[4]=parent[3]
	return child
}




// **********************
// display functions

//redraws the left frame
function redrawTree()
{
	var doc = top.treeFrame.window.document

	doc.clear()
	doc.write("<html>\n<head>\n<title>UCD Browse</title>\n</head>\n<body bgcolor='white'>\n")
	//doc.write("<table border=0 cellspacing=0 cellpadding=0>\n")
	redrawNode(aux0, doc, 0, 1, "")
	//doc.write("</table>\n")
	doc.write("</body></html>");
	doc.close()
}

//recursive function over the tree structure called by redrawTree
function redrawNode(foldersNode, doc, level, lastNode, leftSide)
{
	var j=0
	var i=0

    	
    	if(foldersNode[3]==nodeToOpen) yToScroll = yCurrent
    	yCurrent+=iconH
    	
	doc.write("<table border=0 cellspacing=0 cellpadding=0>\n")
	doc.write("<tr><td valign = middle nowrap>\n")

	doc.write(leftSide)

	if (level>0)
		if (lastNode && foldersNode[2]) //the last 'brother' in the children array
		{
			doc.write("<img src='vertline.gif' width="+iconW+" height="+iconH+">") // test lastnode
			leftSide = leftSide + "<img src='blank.gif' width="+iconW+" height="+iconH+">" 
		}
		else
		{
			doc.write("<img src='vertline.gif' width="+iconW+" height="+iconH+">") //test node
			leftSide = leftSide + "<img src='vertline.gif' width="+iconW+" height="+iconH+">"
		}

	displayIconAndLabel(foldersNode, doc)
	doc.write("\n</table>\n\n")

	if (foldersNode.length > 5 && foldersNode[0]) //there are sub-nodes and the folder is open
	{
		//if (!foldersNode[2]) //for folders with folders
		//{
			level=level+1
			for (i=5; i<foldersNode.length;i++)
			        if(foldersNode[i][2]==0) {
				    	    if (i==foldersNode.length-1)
					    	    redrawNode(foldersNode[i], doc, level, 1, leftSide)
				    	    else
					    	    redrawNode(foldersNode[i], doc, level, 0, leftSide)
		    	    	}
		    	    	else {	    yCurrent+=iconH
		    	    	    	    doc.write("<table border=0 cellspacing=0 cellpadding=0 valign=center>\n")
				    	    doc.write("<tr>\n<td nowrap>")
				    	    doc.write(leftSide)
				    	    //if (i==foldersNode.length - 1)
					    	    doc.write("<img src='vertline.gif' width="+iconW+" height="+iconH+">") // test : lastnode
				    	    //else
					    	    //doc.write("<img src='vertline.gif' width="+iconW+" height="+iconH+">") // test node
				    	    if (i==foldersNode.length - 1)
				    	    	    doc.write("<img src='lastnode.gif' width="+iconW+" height="+iconH+">")
				    	    else
				    	    	    doc.write("<img src='node.gif' width="+iconW+" height="+iconH+">")
				    	    doc.write(foldersNode[i][3])
				    	    doc.write("\n</table>\n\n")
		    	    	}
		
	}
}

//builds the html code to display a folder and its label
function displayIconAndLabel(foldersNode, doc)
{
    	var color="#FFFFFF"
    	if(selectedItem==foldersNode[3]) color="#FFBBFF"
	doc.write("<A href='javascript:top.openBranch(\"" + foldersNode[3] + "\")'><img src=")
	if (foldersNode[1])
		doc.write("'minus.gif' width="+iconW+" height="+iconH+" border=0><img src='openfolder.gif' width="+iconW+" height="+iconH+" border=0></a>")
	else
		doc.write("'plus.gif' width="+iconW+" height="+iconH+" border=0><img src='closedfolder.gif' width="+iconW+" height="+iconH+" border=0></a>")
	doc.write("<td valign=middle align=left nowrap bgcolor='"+color+"'>")
	doc.write("<font size="+fontSize+" face='Arial, Helvetica'><a name='"+foldersNode[3]+"'>"+foldersNode[3]+"</a></font>")
}

//**********************+
// Recursive functions

//when a parent is closed all children also are
function closeFolders(foldersNode)
{
var i=0

        if (!foldersNode[2])
	{
        	for (i=5; i< foldersNode.length; i++)
	           	closeFolders(foldersNode[i])

	}
        foldersNode[0] = 0
        foldersNode[1] = 0
}



//recursive over the tree structure
//called by openbranch
function clickOnFolderRec(foldersNode, folderName)
{
var i=0

        if (foldersNode[3] == folderName)
	{detectedFolder[detectedFolder.length]=foldersNode[4]
		if (foldersNode[0])
			closeFolders(foldersNode)
		else
		{
			foldersNode[0] = 1
                	foldersNode[1] = 1
		}
	}
	else
	{
        	if (!foldersNode[2])
        		for (i=5; i< foldersNode.length; i++)
	           		clickOnFolderRec(foldersNode[i], folderName)
	}
}


function openFolderRec(foldersNode, folderName)
{
var i=0

        if (foldersNode[3] == folderName)
	{detectedFolder[detectedFolder.length]=foldersNode[4]
		
			foldersNode[0] = 1
                	foldersNode[1] = 1
		
	}
	else
	{
        	if (!foldersNode[2])
        		for (i=5; i< foldersNode.length; i++)
	           		openFolderRec(foldersNode[i], folderName)
	}
}


// retourne le decalage en y par rapport au haut du document
function getDecalY() {
// differents cas selon navigateur
var theTreeDoc = top.treeFrame.document
//alert("debug: "+theTreeDoc.documentElement.scrollTop)
if (top.treeFrame.window.pageYOffset)
{
  //alert("cas NS and co: "+top.treeFrame.window.pageYOffset)
  return top.treeFrame.window.pageYOffset
}
else if (theTreeDoc.documentElement && theTreeDoc.documentElement.scrollTop)
{
  //alert("cas IE6: "+theTreeDoc.documentElement.scrollTop)
  return theTreeDoc.documentElement.scrollTop
}
else if (theTreeDoc.body)
{
  //alert("cas IE other: "+theTreeDoc.body.scrollTop)
  return theTreeDoc.body.scrollTop
}
}


function skipToGoodY(ypos)
{

   //alert(ypos);       
   top.treeFrame.window.scrollTo(0,ypos)
   //top.treeFrame.window.scroll(0,ypos)
}

// recherche un noeud a partir de son nom
// retourne le tableau correspondant au noeud
function findNode(nodeName,currentNode) {
    if(currentNode[3]==nodeName) {
    	detectedFolder[detectedFolder.length]=currentNode
    	
    }
    else if (currentNode[2]) {
        for (i=5; i< currentNode.length; i++) {
            findNode(nodeName,currentNode[i])
        }
    }
}

// ********************
// Event handlers

// openBranch2 permet d'ouvrir une branche sans que l'arbre soit redessine
// openBranch2 ouvre egalement les peres du noeud a ouvrir afin qu'il soit visible
function openBranch2(branchName)
{
    	
	if(branchName!=aux0[3]) top.infoFrame.location = templateNodeLink+branchName
	
    	selectedItem=branchName
	
	detectedFolder = new Array
	
	while(branchName!=aux0[3]) {
	    openFolderRec(aux0, branchName)
	    branchName=detectedFolder[detectedFolder.length-1]
	}
	
	
	
	
}


//called when the user clicks on a folder
function openBranch(branchName)
{

	if(branchName!=aux0[3]) top.infoFrame.location = templateNodeLink+branchName
	//alert(templateNodeLink+branchName)
    	selectedItem=branchName
	clickOnFolderRec(aux0, branchName)
	
	timeOutId = setTimeout("redrawTree()",100)
	
	
	//alert(doc.anchors[branchName].y);
	
	//var startY = doc.anchors[branchName].y;
	var startY = getDecalY()
	if(typeof(startY)=="undefined") 
		startY=0	
    	setTimeout("skipToGoodY("+startY+")",500)
	
	
}

// Fonction permettant de connaître la position d'un objet 
// par rapport au bord haut de la page (pour IE et autre, pas NS)
function getTop(obj) { 
    if (obj.offsetParent) 
        return (obj.offsetTop + getTop(obj.offsetParent)); 
    else return (obj.offsetTop); 
} 

//called after this html file is loaded
function initializeTree()
{
	generateTree()
	aux0[0]=1;
	aux0[1]=1;
	var qs = location.search.substring(1,location.search.length)
	
	detectedFolder = new Array
	if(qs.length>0) {
    	    var branchToOpen = qs.split("+")
    	    for(var i=0;i<branchToOpen.length;i++) {
    	    	nodeToOpen = branchToOpen[i]
    	    	openBranch2(nodeToOpen)
    	    }
    	}
    	
    	//aux0[0]=1;
    	//aux0[1]=1;
	redrawTree()
	
	setTimeout("skipToGoodY("+yToScroll+")",500)
	
}

var fontSize=-1
var iconW=18	    // largeur des images
var iconH=18	    // hauteur des images
var selectedItem=""
//var nav
var templateLeafLink = "http://cdsweb.u-strasbg.fr/UCD/cgi-bin/WS_explain?ucd="
var templateNodeLink = "http://cdsweb.u-strasbg.fr/UCD/cgi-bin/WS_explain?ucd="
var aux0 = 0
var timeOutId = 0
var detectedFolder = new Array // contiendra la liste des noeuds a ouvrir
var yCurrent=0	// utilise pour savoir ou scroller quand on demande l'ouverture d'un noeud au demarrage
var yToScroll=0 // de combien va-t-on scroller
var nodeToOpen = ""

//var yDec = 0 // decalage en y
//var saveLocation=top.treeFrame.location.href
generateTree() //sometimes when the user reloads the document Netscape 3.01 does not trigger the onLoad event (!!)

// end hiding contents from old browsers  -->

