//**************************************************************** 
//Changes:

// Definition of class Folder
// *****************************************************************

function EndTree(folderDescription, hreference) { //constructor
 //constant data
 this.desc ='';

 this.hreference=""
 this.id=-1
 this.navObj=0
 this.iconImg=0
 this.nodeImg=0
 this.isLastNode=0

 //dynamic data
 this.isOpen=true
 this.iconSrc=""
 this.children=new Array
 this.nChildren=0

 //methods
 this.initialize = initializeEnd
 this.setState = setStateEnd
 this.addChild = addEndChild
 this.createIndex = createEntryIndex
 this.hide = hideEnd
 this.display = display
 this.renderOb = drawEnd
 this.totalHeight = endHeight
 this.subEntries = endSubEntries
 this.outputLink = outputEndLink
}
function initializeEnd(level, lastNode, leftSide) {
this.createIndex();
this.renderOb(this.desc);
}
function addEndChild(childNode) {
return true;
}
function setStateEnd(isOpen) {
return true;
}
function hideEnd() {
return true;
}
function endSubEntries() {
return true;
}
function outputEndLink() {
return true;
}
function Folder(folderDescription, hreference) { //constructor
 //constant data
 this.desc="<FONT FACE='Verdana, Arial, Helvetica' Size='-2'><B>" + folderDescription + "</B></FONT>"
 this.hreference=hreference
 this.id=-1	
 this.navObj=0
 this.iconImg=0
 this.nodeImg=0
 this.isLastNode=0
 this.rowHeight=18
 //dynamic data
 this.isOpen=true
 this.iconSrc="/images/spacer.gif"
 this.children=new Array
 this.nChildren=0

 //methods
 this.initialize = initializeFolder
 this.setState = setStateFolder
 this.addChild = addChild
 this.createIndex = createEntryIndex
 this.hide = hideFolder
 this.display = display
 this.renderOb = drawFolder
 this.totalHeight = totalHeight
 this.subEntries = folderSubEntries
 this.outputLink = outputFolderLink
}

function setStateFolder(isOpen) {
 var subEntries
 var totalHeight
 var fIt=0
 var i=0
 if (isOpen == this.isOpen) {
	return
 }
 if (browserVersion == 2) {
	totalHeight = 0
	for (i=0; i < this.nChildren; i++) {
	 totalHeight = totalHeight + this.children[i].navObj.clip.height
	}
	subEntries = this.subEntries()
	if (this.isOpen) {
	 totalHeight = 0 - totalHeight
	}
	for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) {
	 indexOfEntries[fIt].navObj.moveBy(0, totalHeight)
	}
 }
 this.isOpen = isOpen
 propagateChangesInState(this)
}

function propagateChangesInState(folder) {
 var i=0
 if (folder.isOpen) {
	if (folder.nodeImg) {
	 folder.nodeImg.src = "/images/arrow-open.gif"
	}
	folder.iconImg.src = "/images/spacer.gif"
	for (i=0; i<folder.nChildren; i++) {
	 folder.children[i].display()
	}
 } else {
	if (folder.nodeImg) {
	 folder.nodeImg.src = "/images/arrow-closed.gif"
	}
	folder.iconImg.src = "/images/spacer.gif"
	for (i=0; i<folder.nChildren; i++) {
	 folder.children[i].hide()
	}
 }
}
 
function hideFolder() {
 if (browserVersion == 1) {
	if (this.navObj.style.display == "none") {
	 return
	}
	this.navObj.style.display = "none"
 } else {
	if (this.navObj.visibility == "hiden") {
	 return
	}
	this.navObj.visibility = "hiden"
 }
 this.setState(0)
}
 
function initializeFolder(level, lastNode, leftSide) {
var j=0
var i=0
var numberOfFolders
var numberOfDocs
var nc
var auxEv = ""
 nc = this.nChildren
 this.createIndex()
 if (browserVersion > 0) {
	auxEv = "<a href='javascript:clickOnNode("+this.id+")'>"
 } else {
	auxEv = "<a>"
 }

 if (level>0) {
	this.renderOb( "<img src='/images/spacer.gif' width='5' height='" + this.rowHeight + "' border='0' alt=''>" + leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='/images/arrow-closed.gif' width='10' height='" + this.rowHeight + "' border=0 alt='Expand'></a>")
	leftSide = leftSide + "<img src='/images/spacer.gif' width='10' height='1' border='0' alt=''>"
	if (lastNode) { //the last 'brother' in the children array
	 this.isLastNode = 1
	} else {
	 this.isLastNode = 0
	}
 } else {
	this.renderOb( "<img src='/images/spacer.gif' width='5' height='" + this.rowHeight + "' border='0' alt=''>" + leftSide)
 }
 if (nc > 0) {
	level = level + 1
	for (i=0 ; i < nc; i++)	{
	 if (i == nc-1) {
		this.children[i].initialize(level, 1, leftSide)
	 } else {
		this.children[i].initialize(level, 0, leftSide)
	 }
	}
 }
}

function drawEnd(leftSide) {
 if (browserVersion == 2) {
	if (!doc.yPos) {
	 doc.yPos=0
	}
	this.desc = "<layer  id='end" + this.id +"' top=" + doc.yPos + " width='122' border='0'>";
 }
	this.desc = this.desc + "<TABLE width='122' border='0' cellpadding='0' cellspacing='0' ><TR>";
	this.desc = this.desc + "<TD height='40' width='100%' valign='bottom'><IMG src='/images/spacer.gif' WIDTH='1' HEIGHT='40' alt='' border='0'></TD>";
	this.desc = this.desc + "</TR>";
	this.desc = this.desc + "<TR VALIGN='TOP'><TD WIDTH='100%' HEIGHT='5' VALIGN='TOP' align='LEFT' ><img src='/images/spacer.gif' width='1' height='5' border='0' alt=''></TD>";
	this.desc = this.desc + "</TR></TABLE>";
 if (browserVersion == 2) {
	this.desc = this.desc + "<TABLE width='122' height='1500' border='0' cellpadding='0' cellspacing='0' ><TR><TD width='100%'>&nbsp;</TD></TR></TABLE>";
	this.desc = this.desc + "</layer>"
 }
doc.write(this.desc);
 if (browserVersion == 1) {
	this.navObj = doc.all[this.id]
 } else if (browserVersion == 2) {
	this.navObj = doc.layers[this.id]
	doc.yPos=doc.yPos+this.navObj.clip.height
 }
 if (browserVersion == 1) {
	this.navObj.style.display = "block"
 } else {
	this.navObj.visibility == "show"
 }
}
function drawFolder(leftSide) {
 if (browserVersion == 2) {
	if (!doc.yPos) {
		doc.yPos=0
	}
	doc.write("<layer  id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden width='122' border='0'>")
 }
 doc.write("<table  width='122'")
 if (browserVersion == 1) {
	doc.write(" id='folder" + this.id + "' style='position:block;' ")
 }
 doc.write(" border=0 cellspacing=0 cellpadding=0>")
 doc.write("<tr><td align='left' nowrap height='" + this.rowHeight + "'>")
 doc.write(leftSide)
 this.outputLink()
 doc.write("<img name='folderIcon" + this.id + "' ")
 doc.write("src='" + this.iconSrc+"' border=0 alt=''></a>")
 doc.write("</td><td valign=middle align='left'>")
 if (USETEXTLINKS) {
	this.outputLink()
	doc.write(this.desc + "</a>")
 } else {
	doc.write(this.desc)
 }
 doc.write("</td>")
 doc.write("<TD width='100%'><img src='/images/spacer.gif' width='1'></td>") 
 doc.write("</tr></table>")

 if (browserVersion == 2) {
	doc.write("</layer>")
 }
 if (browserVersion == 1) {
	this.navObj = doc.all["folder"+this.id]
	this.iconImg = doc.all["folderIcon"+this.id]
	this.nodeImg = doc.all["nodeIcon"+this.id]
 } else if (browserVersion == 2) {
	this.navObj = doc.layers["folder"+this.id]
	this.iconImg = this.navObj.document.images["folderIcon"+this.id]
	this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
	doc.yPos=doc.yPos+this.navObj.clip.height
 }
} 
 
function outputFolderLink() {
 if (this.hreference) {
	doc.write("<FONT FACE='Verdana, Arial, Helvetica' Size='-2'><B><a href='" + this.hreference + "' TARGET='main' ")
	if (browserVersion > 0) {
	 doc.write("onClick='javascript:clickOnFolder("+this.id+")'")
	}
	doc.write(">")
 } else {
	doc.write("<a>")
 }
}

function addChild(childNode) {
 this.children[this.nChildren] = childNode
 this.nChildren++
 return childNode
}

function folderSubEntries() {
 var i = 0
 var se = this.nChildren
 for (i=0; i < this.nChildren; i++){
	if (this.children[i].children) //is a folder
	 se = se + this.children[i].subEntries()
 }
 return se
}
 
// Definition of class Item (a document or link inside a Folder) 
// ************************************************************* 
 
function Category(itemDescription, itemLink) { // Constructor
 // constant data
 this.desc = itemDescription
 this.link = itemLink
 this.id = -1 //initialized in initalize()
 this.navObj = 0 //initialized in render()
 this.iconImg = 0 //initialized in render()
 this.iconSrc = "/images/spacer.gif"
 this.rowHeight = 18

 // methods
 this.initialize = initializeCategory
 this.createIndex = createEntryIndex
 this.hide = hideItem
 this.display = display
 this.renderOb = drawCategory
 this.totalHeight = totalHeight
} 
function Item(itemDescription, itemLink) { // Constructor
 // constant data
 this.desc = itemDescription
 this.link = itemLink
 this.id = -1 //initialized in initalize()
 this.navObj = 0 //initialized in render()
 this.iconImg = 0 //initialized in render()
 this.iconSrc = "/images/spacer.gif"
 this.rowHeight = 12

 // methods
 this.initialize = initializeItem
 this.createIndex = createEntryIndex
 this.hide = hideItem
 this.display = display
 this.renderOb = drawItem
 this.totalHeight = totalHeight
} 
 
function hideItem() {
 if (browserVersion == 1) {
	if (this.navObj.style.display == "none") {
	 return
	}
	this.navObj.style.display = "none"
 } else {
	if (this.navObj.visibility == "hiden") {
	 return
	}
	this.navObj.visibility = "hiden"
 }	
} 
 
function initializeItem(level, lastNode, leftSide) {
 this.createIndex() 
 if (level>0) 
	if (lastNode) { //the last 'brother' in the children array
		leftSide = leftSide + "<img src='/images/spacer.gif' width='1' height='2' border='0' alt=''>"
		this.renderOb(leftSide)
	} else {
		leftSide = leftSide + "<img src='/images/spacer.gif' width='1' height='2' border='0' alt=''>"
		this.renderOb(leftSide)
 } else {
	this.renderOb("")
 }
}
function initializeCategory(level, lastNode, leftSide) {
 this.createIndex() 
 if (level>0) {
	 leftSide = leftSide + "<img src='/images/spacer.gif' width='10' height='10' border='0' alt=''>" 
	 this.renderOb(leftSide) 
 } else {
	this.renderOb("")
 }
}
 
function drawItem(leftSide) {
 if (browserVersion == 2) {
	doc.write("<layer  id='item" + this.id + "' top='" + doc.yPos + "' visibility=hidden width='122' border='0'>")
 }
 doc.write("<table  width='122'")
 if (browserVersion == 1) {
	doc.write(" id='item" + this.id + "' style='position:block;' ")
 }
 doc.write(" border=0 cellspacing=0 cellpadding=0>")
 doc.write("<tr><td align='left' nowrap height='" + this.rowHeight + "'>")
 doc.write("<img src='/images/spacer.gif' width='5' height='" + this.rowHeight + "' border='0' alt=''>" + leftSide)
 doc.write("<a href=" + this.link + ">")
 doc.write("<img id='itemIcon"+this.id+"' ")
 doc.write("src='"+this.iconSrc+"' border='0' alt=''>")
 doc.write("</a>")
 doc.write("</td><td valign=middle align='left'>")
 if (USETEXTLINKS) {
	doc.write("<FONT FACE='Verdana, Arial, Helvetica' Size='-2'><B><a href=" + this.link + " CLASS='SUB'>" + this.desc + "</a></B><BR></FONT>")
 } else {
	doc.write(this.desc)
 }
 doc.write("</TD><TD width='100%'><img src='/images/spacer.gif' width='1'><BR></TD></TR></table>")
 if (browserVersion == 2) { 
	doc.write("</layer>")
 }
 if (browserVersion == 1) {
	this.navObj = doc.all["item"+this.id] 
	this.iconImg = doc.all["itemIcon"+this.id] 
 } else if (browserVersion == 2) {
	this.navObj = doc.layers["item"+this.id] 
	this.iconImg = this.navObj.document.images["itemIcon"+this.id] 
	doc.yPos=doc.yPos+this.navObj.clip.height 
 }
}

function drawCategory(leftSide) {
 if (browserVersion == 2) {
	doc.write("<layer  id='item" + this.id + "' top='" + doc.yPos + "' visibility=hidden width='122' border='0'>") 
 }
 doc.write("<table  width='122'") 
 if (browserVersion == 1) 
	doc.write(" id='item" + this.id + "' style='position:block;' ") 
 doc.write(" border=0 cellspacing=0 cellpadding=0>") 
 doc.write("<tr><td align='left' height='" + this.rowHeight + "' nowrap>") 
 doc.write("<img src='/images/spacer.gif' width='5' height='" + this.rowHeight + "' border='0' alt=''></TD>");
 doc.write("<td align='left' height='" + this.rowHeight + "' nowrap>" + leftSide + "<a href='" + this.link + "'><img id='itemIcon"+this.id+"' ") 
 doc.write("src='"+this.iconSrc+"' border=0 alt=''>") 
 doc.write("</a></td><td valign=middle align='left' nowrap>") 
 if (USETEXTLINKS) {
	doc.write("<FONT FACE='Verdana, Arial, Helvetica' Size='-2'><B><a href=" + this.link + ">" + this.desc + "</a></B></FONT>") 
 } else {
	doc.write(this.desc) 
 }
 doc.write("</TD><TD width='100%'></TD></TR></table>") 	
 if (browserVersion == 2) 
	doc.write("</layer>") 
 
 if (browserVersion == 1) {
	this.navObj = doc.all["item"+this.id] 
	this.iconImg = doc.all["itemIcon"+this.id] 
 } else if (browserVersion == 2) {
	this.navObj = doc.layers["item"+this.id] 
	this.iconImg = this.navObj.document.images["itemIcon"+this.id] 
	doc.yPos=doc.yPos+this.navObj.clip.height 
 }
}
 
 
// Methods common to both objects (pseudo-inheritance) 
// ******************************************************** 
 
function display() {
 if (browserVersion == 1) 
	this.navObj.style.display = "block" 
 else 
	this.navObj.visibility = "show" 
}
 
function createEntryIndex() {
 this.id = nEntries 
 indexOfEntries[nEntries] = this 
 nEntries++ 
}
 
function endHeight() { //used with browserVersion == 2
 var h = this.navObj.clip.height	
 return h 
}

// total height of subEntries open 
function totalHeight() { //used with browserVersion == 2
 var h = this.navObj.clip.height 
 var i = 0 
 if (this.isOpen) //is a folder and _is_ open 
	for (i=0 ; i < this.nChildren; i++) 
	 h = h + this.children[i].totalHeight() 
 return h 
}
 
// Events 
// ********************************************************* 
 
function clickOnFolder(folderId) {
 var clicked = indexOfEntries[folderId] 
 if (!clicked.isOpen) 
	clickOnNode(folderId) 
  return 
 if (clicked.isSelected) 
	return 
} 
 
function clickOnNode(folderId) {
 var clickedFolder = 0 
 var state = 0 
 var otherFolder = 0
 var i = 0
 clickedFolder = indexOfEntries[folderId] 
 for (i=1; i < (indexOfEntries.length); i++){
  otherFolder = indexOfEntries[i]
  if (i != folderId){
  if (otherFolder.nChildren){
  otherFolder.setState(0)
 }}}
 state = clickedFolder.isOpen 
 clickedFolder.setState(!state) //open<->close 
}
 
function initializeDocument() {
 if (doc.all) 
	browserVersion = 1 //IE4	
 else 
	if (doc.layers)
	 browserVersion = 2 //NS4 
	else 
	 browserVersion = 0 //other 

//check if JAVASCRIPT ENABLED HERE, IF NOT, MAKE BROWSER = 0

	foldersTree.initialize(0, 1, "");
	foldersTree.display()
 if (browserVersion > 0) {
	// close and open the tree 
	clickOnNode(0) 
	clickOnNode(0) 
 } 
} 
// Auxiliary Functions for Folder-Tree backward compatibility 
// ********************************************************* 
 
function gEnd(description, hreference) {
 folder = new EndTree 
 return folder 
}
 
function gFld(description, hreference) {
 folder = new Folder(description, hreference) 
 return folder 
}
 
function gLnk(target, description, linkData) {
 fullLink = "" 
 if (target==0) {
	fullLink = "'"+linkData+"' target='main'" 
 } else {
	if (target==1) 
	 fullLink = "'"+linkData+"' target='_parent'" 
	else 
	 fullLink = "'"+linkData+"' target='_blank'" 
 }
 linkItem = new Item(description, fullLink)	
 return linkItem 
}

function gCategory(target, description, linkData) {
 fullLink = "" 
 if (target==0) {
	fullLink = "'"+linkData+"' target='main'" 
 } else {
	if (target==1) 
	 fullLink = "'"+linkData+"' target='_parent'" 
	else 
	 fullLink = "'"+linkData+"' target='_blank'" 
 }
 linkItem = new Category(description, fullLink)	
 return linkItem 
} 

function insFld(parentFolder, childFolder) {
 return parentFolder.addChild(childFolder) 
} 
 
function insDoc(parentFolder, document) {
	parentFolder.addChild(document) 
}
 
// Global variables 
// **************** 
 
USETEXTLINKS = 0 
indexOfEntries = new Array 
nEntries = 0 
doc = document 
browserVersion = 0 
selectedFolder=0



