Commit c1c5356a authored by claes's avatar claes

*** empty log message ***

parent ef4aee91
......@@ -11,4 +11,5 @@
071001 cs bcomp Attribute DisableSup added to most Fo object to suppress alarm messages.
071030 cs bcomp ConfigureComponent method also viewed for pointed but not selected object.
071031 cs bcomp Bugfix in object graphs for CompPID and CompModePID. Linkage to user and local removed.
080115 cs bcomp Bugfix in BaseMotorAggr. Backup on runningtime object didn't work.
\ No newline at end of file
080115 cs bcomp Bugfix in BaseMotorAggr. Backup on runningtime object didn't work.
080222 cs bcomp CompModePid: Input limit for setvalue in object graph fetched from MinSet and MaxSet.
\ No newline at end of file
......@@ -1143,7 +1143,7 @@ Connection point <link>geref_conpoint
Bar <link>geref_bar
Trend <link>geref_trend
Axis <link>geref_axis
Window <link>geref_window
Window <link>geref_windowobject
TabbedWindow <link>geref_tabbedwind
Table <link>geref_table
......@@ -1466,7 +1466,7 @@ Format <t>Format in c syntax of written values.
Dynamic <t>Not implemented.
</topic>
<topic>geref_window <style>function
<topic>geref_windowobject <style>function
Window
Window displays a separate graph in a specified area in another graph. The graph is displayed
......@@ -3462,7 +3462,7 @@ set <link>gecmd_set
<t>set currentobject colorshift <link>gecmd_set_current_colorshift
<t>set currentobject attributes <link>gecmd_set_current_attributes
<t>set currentobject type <link>gecmd_set_current_type
<t>set currentobject color <link>gecmd_set_current_color
<t>set currentobject color <link>gecmd_set_current_color_
<t>set currentobject colortone <link>gecmd_set_current_colortone
<t>set currentobject access <link>gecmd_set_current_access
<t>set currentobject attr1 <link>gecmd_set_current_attr1
......@@ -3911,7 +3911,7 @@ PulldownMenu <t> 1 << 19
OptionMenu <t> 1 << 20
</topic>
<topic>gecmd_set_current_color
<topic>gecmd_set_current_color_
set currentobject color
Colors are usually called 'LowColor' or 'LowColor2'. Color is an index in the color palette.
</topic>
......
......@@ -1150,7 +1150,7 @@ Kopplingspunkt <link>geref_conpoint
Stapel <link>geref_bar
Trendkurva <link>geref_trend
Axis <link>geref_axis
Window <link>geref_window
Window <link>geref_windowobject
TabbedWindow <link>geref_tabbedwind
Table <link>geref_table
......@@ -1468,7 +1468,7 @@ Format <t>Format i c-syntax f
Dynamic <t>Ej implementerat.
</topic>
<topic>geref_window <style>function
<topic>geref_windowobject <style>function
Window
Window visar en separat graf inom ett specificerat område i en annan graf. Grafen kan visas
......@@ -3452,7 +3452,7 @@ set <link>gecmd_set
<t>set currentobject colorshift <link>gecmd_set_current_colorshift
<t>set currentobject attributes <link>gecmd_set_current_attributes
<t>set currentobject type <link>gecmd_set_current_type
<t>set currentobject color <link>gecmd_set_current_color
<t>set currentobject color <link>gecmd_set_current_color_
<t>set currentobject colortone <link>gecmd_set_current_colortone
<t>set currentobject access <link>gecmd_set_current_access
<t>set currentobject attr1 <link>gecmd_set_current_attr1
......@@ -3898,7 +3898,7 @@ PulldownMenu <t> 1 << 19
OptionMenu <t> 1 << 20
</topic>
<topic>gecmd_set_current_color
<topic>gecmd_set_current_color_
set currentobject color
Färger benämns vanligvis 'LowColor' eller 'LowColor2'. För dess anges index i färgpaletten.
</topic>
......
......@@ -19,7 +19,7 @@
<div>
<img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.gif">
<p id="pwrversion">v4.4</p>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Swedish &nbsp;</a>
<a id="pwrdochigh" href="doc_f.html" target="main">&nbsp;&nbsp;&nbsp;Documentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;</a>
......
......@@ -19,8 +19,8 @@
<div>
<img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Object Reference Manual</p>
<p id="pwrversion">v4.4</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Svenska &nbsp;</a>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Swedish &nbsp;</a>
<a id="pwrdochigh" href="index.html" target="_top">&nbsp;&nbsp;&nbsp;Documentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;</a>
</div>
......
......@@ -19,7 +19,7 @@
<div>
<img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Programmers Reference Manual</p>
<p id="pwrversion">v4.4</p>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Svenska &nbsp;</a>
<a id="pwrdochigh" href="index.html" target="_top">&nbsp;&nbsp;&nbsp;Documentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp;&nbsp;&nbsp;&nbsp; About Proview &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
......
......@@ -19,8 +19,8 @@
<div>
<img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.gif">
<p id="pwrversion">v4.4</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Svenska &nbsp;</a>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Swedish &nbsp;</a>
<a id="pwrdoc" href="index.html" target="_top">&nbsp;&nbsp;&nbsp;Documentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabouthigh" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;&nbsp;</a>
</div>
......
......@@ -7,8 +7,9 @@
<h2 id="mainmenu">Configurator</h2>
<p>The system is configured by building a tree structure of objects in the configurator. The view is divided in the plant configuration, and the node configuration.
</p><br>
</p>
<p>The plant configuration, in the middle in the figure below, is a view of the plant, with objects for pumps, fans, motors, valves, sensors and switches. There are also Plc programs that contains code to control the plant. </p>
<p>The node configuration, to the right, is a view of the hardware and software configuration of the process or operator station, with objects for I/O devices and system programs.</p><br>
<img src="../qguide_conf.gif" alt="Configurator">
</body>
</html>
......
......@@ -6,7 +6,15 @@
<body>
<h2 id="mainmenu">Database</h2>
<p></p><br>
<p>The configuration objects, and also the function objects of the plc code, reside in
a realtime database. The objects are stored in containers, volumes, and when a Proview
node is started, the root volume is loaded into the database. Other volumes, local or
on remote nodes, can be mounted into the object tree, and thus be visible and
reachable from the current node.
For example, operator stations mount the volumes of the process stations they are to
supervise.<p>
</p><br>
<p></p><br>
</body>
</html>
......@@ -6,7 +6,7 @@
<body>
<h2 id="mainmenu">Ge Editor</h2>
<p>Process graphids is drawn in the Ge Editor.
<p>Process graphics is drawn in the Ge Editor.
</p><br>
<img src="../qguide_ge.gif" alt="Ge Editor">
......
......@@ -19,8 +19,8 @@
<div>
<img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Quick Tour</p>
<p id="pwrversion">v4.4</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Svenska &nbsp;</a>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../sv_se/index.html" target="_top">&nbsp; Swedish &nbsp;</a>
<a id="pwrdochigh" href="index.html" target="_top">&nbsp;&nbsp;&nbsp;Documentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;&nbsp;</a>
</div>
......
......@@ -5,13 +5,45 @@
</head>
<body>
<hr>
<h2 id="mainmenu">Profibus</h2>
<br>
<img src="../qguide_io_profibus.gif" alt="Profibus">
<br><br>
<p> Proview with Profibus I/O. The profibus slaves are connected by the
the purple profibus cable.
</p><br>
<hr>
<h2 id="mainmenu">Modbus TCP</h2>
<br>
<img src="../qguide_io_modbustcp.gif" alt="Modbus/TCP">
<br><br>
<p> An example of Modbus TCP I/O connected to Proview via Ethernet.
</p><br>
<hr>
<h2 id="mainmenu">MotionControl USB I/O</h2>
<br>
<img src="../qguide_io_usbio.gif" alt="MotionControl USBIO">
<br><br>
<p> MotionControl USB I/O is a simple I/O connected to the
USB port. The I/O has 21 channels that can be configured as in various
combinations as analog/digital inputs or outputs. </p><br>
<hr>
<h2 id="mainmenu">PSS9000</h2>
<p></p><br>
<br>
<img src="../pss9000.gif" alt="PSS9000">
<img src="../qguide_io_pss9000.gif" alt="PSS9000">
<br><br>
<p> An installation of a Proview system with PSS9000 I/O.</p>
<h2 id="mainmenu">Profibus</h2>
<p></p><br>
</body>
</html>
......@@ -27,8 +27,8 @@
<h2 id="mainmenu">Runtime</h2>
<table id="mainmenu" border="1" cellspacing="0" width="100%">
<tr><td id="mainmenu"><a id="mainmenu" href="qguide_database.html" target="right">Database</a></td></tr>
<tr><td id="mainmenu"><a id="mainmenu" href="qguide_plc.html" target="right">Plc</a></td></tr>
<tr><td id="mainmenu"><a id="mainmenu" href="qguide_io.html" target="right">I/O</a></td></tr>
<tr><td id="mainmenu"><a id="mainmenu" href="qguide_plc.html" target="right">Plc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td></tr>
<tr><td id="mainmenu"><a id="mainmenu" href="qguide_io.html" target="right">I/O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td></tr>
<tr><td id="mainmenu"><a id="mainmenu" href="qguide_appl.html" target="right">Applications</a></td></tr>
</table>
<h2 id="mainmenu">HMI</h2>
......
......@@ -6,7 +6,7 @@
<body>
<h2 id="mainmenu">Plc Editor</h2>
<p>The plc code is done by graphic programming in the plc editor.
<p>The plc code is programmed with function objects in the plc editor.
</p><br>
<img src="../qguide_plcedit.gif" alt="Plc Editor">
......
//****************************************************************
// Keep this copyright notice:
// This copy of the script is the property of the owner of the
// particular web site you were visiting.
// Do not download the script's files from there.
// For a free download and full instructions go to:
// http://www.treeview.net
//****************************************************************
// Log of changes:
//
// 08 Jun 04 - Very small change to one error message
// 21 Mar 04 - Support for folder.addChildren allows for much bigger trees
// 12 May 03 - Support for Safari Beta 3
// 01 Mar 03 - VERSION 4.3 - Support for checkboxes
// 21 Feb 03 - Added support for Opera 7
// 22 Sep 02 - Added maySelect member for node-by-node control
// of selection and highlight
// 21 Sep 02 - Cookie values are now separated by cookieCutter
// 12 Sep 02 - VERSION 4.2 - Can highlight Selected Nodes and
// can preserve state through external (DB) IDs
// 29 Aug 02 - Fine tune 'supportDeferral' for IE4 and IE Mac
// 25 Aug 02 - Fixes: STARTALLOPEN, and multi-page frameless
// 09 Aug 02 - Fix repeated folder on Mozilla 1.x
// 31 Jul 02 - VERSION 4.1 - Dramatic speed increase for trees
// with hundreds or thousands of nodes; changes to the control
// flags of the gLnk function
// 18 Jul 02 - Changes in pre-load images function
// 13 Jun 02 - Add ICONPATH var to allow for gif subdir
// 20 Apr 02 - Improve support for frame-less layout
// 07 Apr 02 - Minor changes to support server-side dynamic feeding
// (example: FavoritesManagerASP)
// Definition of class Folder
// *****************************************************************
function Folder(folderDescription, hreference) //constructor
{
//constant data
this.desc = folderDescription;
this.hreference = hreference;
this.id = -1;
this.navObj = 0;
this.iconImg = 0;
this.nodeImg = 0;
this.isLastNode = 0;
this.iconSrc = ICONPATH + "ftv2folderopen.gif";
this.iconSrcClosed = ICONPATH + "ftv2folderclosed.gif";
this.children = new Array;
this.nChildren = 0;
this.level = 0;
this.leftSideCoded = "";
this.isLastNode=false;
this.parentObj = null;
this.maySelect=true;
this.prependHTML = ""
//dynamic data
this.isOpen = false
this.isLastOpenedFolder = false
this.isRendered = 0
//methods
this.initialize = initializeFolder
this.setState = setStateFolder
this.addChild = addChild
this.addChildren = addChildren
this.createIndex = createEntryIndex
this.escondeBlock = escondeBlock
this.esconde = escondeFolder
this.folderMstr = folderMstr
this.renderOb = drawFolder
this.totalHeight = totalHeight
this.subEntries = folderSubEntries
this.linkHTML = linkFolderHTML
this.blockStartHTML = blockStartHTML
this.blockEndHTML = blockEndHTML
this.nodeImageSrc = nodeImageSrc
this.iconImageSrc = iconImageSrc
this.getID = getID
this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
}
function initializeFolder(level, lastNode, leftSide)
{
var j=0
var i=0
nc = this.nChildren
this.createIndex()
this.level = level
this.leftSideCoded = leftSide
if (browserVersion == 0 || STARTALLOPEN==1)
this.isOpen=true;
if (level>0)
if (lastNode) //the last child in the children array
leftSide = leftSide + "0"
else
leftSide = leftSide + "1"
this.isLastNode = lastNode
if (nc > 0)
{
level = level + 1
for (i=0 ; i < this.nChildren; i++)
{
if (typeof this.children[i].initialize == 'undefined') //document node was specified using the addChildren function
{
if (typeof this.children[i][0] == 'undefined' || typeof this.children[i] == 'string')
{
this.children[i] = ["item incorrectly defined", ""];
}
//Basic initialization of the Item object
//These members or methods are needed even before the Item is rendered
this.children[i].initialize=initializeItem;
this.children[i].createIndex=createEntryIndex;
if (typeof this.children[i].maySelect == 'undefined')
this.children[i].maySelect=true
this.children[i].forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
}
if (i == this.nChildren-1)
this.children[i].initialize(level, 1, leftSide)
else
this.children[i].initialize(level, 0, leftSide)
}
}
}
function drawFolder(insertAtObj)
{
var nodeName = ""
var auxEv = ""
var docW = ""
var i=0
finalizeCreationOfChildDocs(this)
var leftSide = leftSideHTML(this.leftSideCoded)
if (browserVersion > 0)
auxEv = "<a href='javascript:clickOnNode(\""+this.getID()+"\")'>"
else
auxEv = "<a>"
nodeName = this.nodeImageSrc()
if (this.level>0)
if (this.isLastNode) //the last child in the children array
leftSide = leftSide + "<td valign=top>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=16 height=22 border=0></a></td>"
else
leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=16 height=22 border=0></a></td>"
this.isRendered = 1
if (browserVersion == 2) {
if (!doc.yPos)
doc.yPos=20
}
docW = this.blockStartHTML("folder");
docW = docW + "<tr>" + leftSide + "<td valign=top>";
if (USEICONS)
{
docW = docW + this.linkHTML(false)
docW = docW + "<img id='folderIcon" + this.id + "' name='folderIcon" + this.id + "' src='" + this.iconImageSrc() + "' border=0></a>"
}
else
{
if (this.prependHTML == "")
docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=2>"
}
if (WRAPTEXT)
docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
else
docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
if (USETEXTLINKS)
{
docW = docW + this.linkHTML(true)
docW = docW + this.desc + "</a>"
}
else
docW = docW + this.desc
docW = docW + "</td>"
docW = docW + this.blockEndHTML()
if (insertAtObj == null)
{
if (supportsDeferral) {
doc.write("<div id=domRoot></div>") //transition between regular flow HTML, and node-insert DOM DHTML
insertAtObj = getElById("domRoot")
insertAtObj.insertAdjacentHTML("beforeEnd", docW)
}
else
doc.write(docW)
}
else
{
insertAtObj.insertAdjacentHTML("afterEnd", docW)
}
if (browserVersion == 2)
{
this.navObj = doc.layers["folder"+this.id]
if (USEICONS)
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
}
else if (browserVersion != 0)
{
this.navObj = getElById("folder"+this.id)
if (USEICONS)
this.iconImg = getElById("folderIcon"+this.id)
this.nodeImg = getElById("nodeIcon"+this.id)
}
}
function setStateFolder(isOpen)
{
var subEntries
var totalHeight
var fIt = 0
var i=0
var currentOpen
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;
if (this.getID()!=foldersTree.getID() && PRESERVESTATE && !this.isOpen) //closing
{
currentOpen = GetCookie("clickedFolder")
if (currentOpen != null) {
currentOpen = currentOpen.replace(this.getID()+cookieCutter, "")
SetCookie("clickedFolder", currentOpen)
}
}
if (!this.isOpen && this.isLastOpenedfolder)
{
lastOpenedFolder = null;
this.isLastOpenedfolder = false;
}
propagateChangesInState(this)
}
function propagateChangesInState(folder)
{
var i=0
//Change icon
if (folder.nChildren > 0 && folder.level>0) //otherwise the one given at render stays
folder.nodeImg.src = folder.nodeImageSrc()
//Change node
if (USEICONS)
folder.iconImg.src = folder.iconImageSrc()
//Propagate changes
for (i=folder.nChildren-1; i>=0; i--) {
if (folder.isOpen)
folder.children[i].folderMstr(folder.navObj)
else
folder.children[i].esconde()
}
}
function escondeFolder()
{
this.escondeBlock()
this.setState(0)
}
function linkFolderHTML(isTextLink)
{
var docW = "";
if (this.hreference)
{
if (USEFRAMES)
docW = docW + "<a href='" + this.hreference + "' TARGET=\"basefrm\" "
else
docW = docW + "<a href='" + this.hreference + "' TARGET=_top "
if (isTextLink) {
docW += "id=\"itemTextLink"+this.id+"\" ";
}
if (browserVersion > 0)
docW = docW + "onClick='javascript:clickOnFolder(\""+this.getID()+"\")'"
docW = docW + ">"
}
else
docW = docW + "<a>"
return docW;
}
function addChild(childNode)
{
this.children[this.nChildren] = childNode
childNode.parentObj = this
this.nChildren++
return childNode
}
//The list can contain either a Folder object or a sub list with the arguments for Item
function addChildren(listOfChildren)
{
this.children = listOfChildren
this.nChildren = listOfChildren.length
for (i=0; i<this.nChildren; i++)
this.children[i].parentObj = this
}
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
}
function nodeImageSrc() {
var srcStr = "";
if (this.isLastNode) //the last child in the children array
{
if (this.nChildren == 0)
srcStr = ICONPATH + "ftv2lastnode.gif"
else
if (this.isOpen)
srcStr = ICONPATH + "ftv2mlastnode.gif"
else
srcStr = ICONPATH + "ftv2plastnode.gif"
}
else
{
if (this.nChildren == 0)
srcStr = ICONPATH + "ftv2node.gif"
else
if (this.isOpen)
srcStr = ICONPATH + "ftv2mnode.gif"
else
srcStr = ICONPATH + "ftv2pnode.gif"
}
return srcStr;
}
function iconImageSrc() {
if (this.isOpen)
return(this.iconSrc)
else
return(this.iconSrcClosed)
}
// Definition of class Item (a document or link inside a Folder)
// *************************************************************
function Item(itemDescription) // Constructor
{
// constant data
this.desc = itemDescription
this.level = 0
this.isLastNode = false
this.leftSideCoded = ""
this.parentObj = null
this.maySelect=true
this.initialize = initializeItem;
this.createIndex = createEntryIndex;
this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders;
finalizeCreationOfItem(this)
}
//Assignments that can be delayed when the item is created with folder.addChildren
//The assignments that cannot be delayed are done in addChildren and in initializeFolder
//Additionaly, some assignments are also done in finalizeCreationOfChildDocs itself
function finalizeCreationOfItem(itemArray)
{
itemArray.navObj = 0 //initialized in render()
itemArray.iconImg = 0 //initialized in render()
itemArray.iconSrc = ICONPATH + "ftv2doc.gif"
itemArray.isRendered = 0
itemArray.nChildren = 0
itemArray.prependHTML = ""
// methods
itemArray.escondeBlock = escondeBlock
itemArray.esconde = escondeBlock
itemArray.folderMstr = folderMstr
itemArray.renderOb = drawItem
itemArray.totalHeight = totalHeight
itemArray.blockStartHTML = blockStartHTML
itemArray.blockEndHTML = blockEndHTML
itemArray.getID = getID
}
function initializeItem(level, lastNode, leftSide)
{
this.createIndex()
this.level = level
this.leftSideCoded = leftSide
this.isLastNode = lastNode
}
function drawItem(insertAtObj)
{
var leftSide = leftSideHTML(this.leftSideCoded)
var docW = ""
var fullLink = "href=\""+this.link+"\" target=\""+this.target+"\" onClick=\"clickOnLink('"+this.getID()+"\', '"+this.link+"','"+this.target+"');return false;\"";
this.isRendered = 1
if (this.level>0)
if (this.isLastNode) //the last 'brother' in the children array
{
leftSide = leftSide + "<td valign=top><img src='" + ICONPATH + "ftv2lastnode.gif' width=16 height=22></td>"
}
else
{
leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2node.gif' width=16 height=22></td>"
}
docW = docW + this.blockStartHTML("item")
docW = docW + "<tr>" + leftSide + "<td valign=top>"
if (USEICONS)
docW = docW + "<a " + fullLink + " id=\"itemIconLink"+this.id+"\">" + "<img id='itemIcon"+this.id+"' " + "src='"+this.iconSrc+"' border=0>" + "</a>"
else
if (this.prependHTML == "")
docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=3>"
if (WRAPTEXT)
docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
else
docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
if (USETEXTLINKS)
docW = docW + "<a " + fullLink + " id=\"itemTextLink"+this.id+"\">" + this.desc + "</a>"
else
docW = docW + this.desc
docW = docW + "</td>"
docW = docW + this.blockEndHTML()
if (insertAtObj == null)
{
doc.write(docW)
}
else
{
insertAtObj.insertAdjacentHTML("afterEnd", docW)
}
if (browserVersion == 2) {
this.navObj = doc.layers["item"+this.id]
if (USEICONS)
this.iconImg = this.navObj.document.images["itemIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height
} else if (browserVersion != 0) {
this.navObj = getElById("item"+this.id)
if (USEICONS)
this.iconImg = getElById("itemIcon"+this.id)
}
}
// Methods common to both objects (pseudo-inheritance)
// ********************************************************
function forceOpeningOfAncestorFolders() {
if (this.parentObj == null || this.parentObj.isOpen)
return
else {
this.parentObj.forceOpeningOfAncestorFolders()
clickOnNodeObj(this.parentObj)
}
}
function escondeBlock()
{
if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none")
return
this.navObj.style.display = "none"
} else {
if (this.navObj.visibility == "hidden")
return
this.navObj.visibility = "hidden"
}
}
function folderMstr(domObj)
{
if (browserVersion == 1 || browserVersion == 3) {
if (t==-1)
return
var str = new String(doc.links[t])
if (str.slice(14,16) != "em")
return
}
if (!this.isRendered)
this.renderOb(domObj)
else
if (browserVersion == 1 || browserVersion == 3)
this.navObj.style.display = "block"
else
this.navObj.visibility = "show"
}
function blockStartHTML(idprefix) {
var idParam = "id='" + idprefix + this.id + "'"
var docW = ""
if (browserVersion == 2)
docW = "<layer "+ idParam + " top=" + doc.yPos + " visibility=show>"
else if (browserVersion != 0)
docW = "<div " + idParam + " style='display:block; position:block;'>"
docW = docW + "<table border=0 cellspacing=0 cellpadding=0 width=100% >"
return docW
}
function blockEndHTML() {
var docW = ""
docW = "</table>"
if (browserVersion == 2)
docW = docW + "</layer>"
else if (browserVersion != 0)
docW = docW + "</div>"
return docW
}
function createEntryIndex()
{
this.id = nEntries
indexOfEntries[nEntries] = this
nEntries++
}
// 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
}
function leftSideHTML(leftSideCoded) {
var i;
var retStr = "";
for (i=0; i<leftSideCoded.length; i++)
{
if (leftSideCoded.charAt(i) == "1")
{
retStr = retStr + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2vertline.gif' width=16 height=22></td>"
}
if (leftSideCoded.charAt(i) == "0")
{
retStr = retStr + "<td valign=top><img src='" + ICONPATH + "ftv2blank.gif' width=16 height=22></td>"
}
}
return retStr
}
function getID()
{
//define a .xID in all nodes (folders and items) if you want to PERVESTATE that
//work when the tree changes. The value eXternal value must be unique for each
//node and must node change when other nodes are added or removed
//The value may be numeric or string, but cannot have the same char used in cookieCutter
if (typeof this.xID != "undefined")
return this.xID
else
return this.id
}
// Events
// *********************************************************
function clickOnFolder(folderId)
{
var clicked = findObj(folderId)
if (typeof clicked=='undefined' || clicked==null)
{
alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID values, it must set them for ALL nodes, including the foldersTree root.")
return;
}
if (!clicked.isOpen) {
clickOnNodeObj(clicked)
}
if (lastOpenedFolder != null && lastOpenedFolder != folderId)
clickOnNode(lastOpenedFolder); //sets lastOpenedFolder to null
if (clicked.nChildren==0) {
lastOpenedFolder = folderId;
clicked.isLastOpenedfolder = true
}
if (isLinked(clicked.hreference)) {
highlightObjLink(clicked);
}
}
function clickOnNode(folderId)
{
fOb = findObj(folderId);
if (typeof fOb=='undefined' || fOb==null)
{
alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID, it must set foldersTree.xID as well.")
return;
}
clickOnNodeObj(fOb);
}
function clickOnNodeObj(folderObj)
{
var state = 0
var currentOpen
state = folderObj.isOpen
folderObj.setState(!state) //open<->close
if (folderObj.id!=foldersTree.id && PRESERVESTATE)
{
currentOpen = GetCookie("clickedFolder")
if (currentOpen == null)
currentOpen = ""
if (!folderObj.isOpen) //closing
{
currentOpen = currentOpen.replace(folderObj.getID()+cookieCutter, "")
SetCookie("clickedFolder", currentOpen)
}
else
SetCookie("clickedFolder", currentOpen+folderObj.getID()+cookieCutter)
}
}
function clickOnLink(clickedId, target, windowName) {
highlightObjLink(findObj(clickedId));
if (isLinked(target)) {
window.open(target,windowName);
}
}
function ld ()
{
return document.links.length-1
}
// Auxiliary Functions
// *******************
function finalizeCreationOfChildDocs(folderObj) {
for(i=0; i < folderObj.nChildren; i++) {
child = folderObj.children[i]
if (typeof child[0] != 'undefined')
{
// Amazingly, arrays can have members, so a = ["a", "b"]; a.desc="asdas" works
// If a doc was inserted as an array, we can transform it into an itemObj by adding
// the missing members and functions
child.desc = child[0]
setItemLink(child, GLOBALTARGET, child[1])
finalizeCreationOfItem(child)
}
}
}
function findObj(id)
{
var i=0;
var nodeObj;
if (typeof foldersTree.xID != "undefined") {
nodeObj = indexOfEntries[i];
for(i=0;i<nEntries&&indexOfEntries[i].xID!=id;i++) //may need optimization
;
id = i
}
if (id >= nEntries)
return null; //example: node removed in DB
else
return indexOfEntries[id];
}
function isLinked(hrefText) {
var result = true;
result = (result && hrefText !=null);
result = (result && hrefText != '');
result = (result && hrefText.indexOf('undefined') < 0);
result = (result && hrefText.indexOf('parent.op') < 0);
return result;
}
// Do highlighting by changing background and foreg. colors of folder or doc text
function highlightObjLink(nodeObj) {
if (!HIGHLIGHT || nodeObj==null || nodeObj.maySelect==false) {//node deleted in DB
return;
}
if (browserVersion == 1 || browserVersion == 3) {
var clickedDOMObj = getElById('itemTextLink'+nodeObj.id);
if (clickedDOMObj != null) {
if (lastClicked != null) {
var prevClickedDOMObj = getElById('itemTextLink'+lastClicked.id);
prevClickedDOMObj.style.color=lastClickedColor;
prevClickedDOMObj.style.backgroundColor=lastClickedBgColor;
}
lastClickedColor = clickedDOMObj.style.color;
lastClickedBgColor = clickedDOMObj.style.backgroundColor;
clickedDOMObj.style.color=HIGHLIGHT_COLOR;
clickedDOMObj.style.backgroundColor=HIGHLIGHT_BG;
}
}
lastClicked = nodeObj;
if (PRESERVESTATE)
SetCookie('highlightedTreeviewLink', nodeObj.getID());
}
function insFld(parentFolder, childFolder)
{
return parentFolder.addChild(childFolder)
}
function insDoc(parentFolder, document)
{
return parentFolder.addChild(document)
}
function gFld(description, hreference)
{
folder = new Folder(description, hreference);
return folder;
}
function gLnk(optionFlags, description, linkData)
{
if (optionFlags>=0) { //is numeric (old style) or empty (error)
//Target changed from numeric to string in Aug 2002, and support for numeric style was entirely dropped in Mar 2004
alert("Change your Treeview configuration file to use the new style of target argument in gLnk");
return;
}
newItem = new Item(description);
setItemLink(newItem, optionFlags, linkData);
return newItem;
}
function setItemLink(item, optionFlags, linkData) {
var targetFlag = "";
var target = "";
var protocolFlag = "";
var protocol = "";
targetFlag = optionFlags.charAt(0)
if (targetFlag=="B")
target = "_blank"
if (targetFlag=="P")
target = "_parent"
if (targetFlag=="R")
target = "basefrm"
if (targetFlag=="S")
target = "_self"
if (targetFlag=="T")
target = "_top"
if (optionFlags.length > 1) {
protocolFlag = optionFlags.charAt(1)
if (protocolFlag=="h")
protocol = "http://"
if (protocolFlag=="s")
protocol = "https://"
if (protocolFlag=="f")
protocol = "ftp://"
if (protocolFlag=="m")
protocol = "mailto:"
}
item.link = protocol+linkData;
item.target = target
}
//Function created for backwards compatibility purposes
//Function contents voided in March 2004
function oldGLnk(target, description, linkData)
{
}
function preLoadIcons() {
var auxImg
auxImg = new Image();
auxImg.src = ICONPATH + "ftv2vertline.gif";
auxImg.src = ICONPATH + "ftv2mlastnode.gif";
auxImg.src = ICONPATH + "ftv2mnode.gif";
auxImg.src = ICONPATH + "ftv2plastnode.gif";
auxImg.src = ICONPATH + "ftv2pnode.gif";
auxImg.src = ICONPATH + "ftv2blank.gif";
auxImg.src = ICONPATH + "ftv2lastnode.gif";
auxImg.src = ICONPATH + "ftv2node.gif";
auxImg.src = ICONPATH + "ftv2folderclosed.gif";
auxImg.src = ICONPATH + "ftv2folderopen.gif";
auxImg.src = ICONPATH + "ftv2doc.gif";
}
//Open some folders for initial layout, if necessary
function setInitialLayout() {
if (browserVersion > 0 && !STARTALLOPEN)
clickOnNodeObj(foldersTree);
if (!STARTALLOPEN && (browserVersion > 0) && PRESERVESTATE)
PersistentFolderOpening();
}
//Used with NS4 and STARTALLOPEN
function renderAllTree(nodeObj, parent) {
var i=0;
nodeObj.renderOb(parent)
if (supportsDeferral)
for (i=nodeObj.nChildren-1; i>=0; i--)
renderAllTree(nodeObj.children[i], nodeObj.navObj)
else
for (i=0 ; i < nodeObj.nChildren; i++)
renderAllTree(nodeObj.children[i], null)
}
function hideWholeTree(nodeObj, hideThisOne, nodeObjMove) {
var i=0;
var heightContained=0;
var childrenMove=nodeObjMove;
if (hideThisOne)
nodeObj.escondeBlock()
if (browserVersion == 2)
nodeObj.navObj.moveBy(0, 0-nodeObjMove)
for (i=0 ; i < nodeObj.nChildren; i++) {
heightContainedInChild = hideWholeTree(nodeObj.children[i], true, childrenMove)
if (browserVersion == 2) {
heightContained = heightContained + heightContainedInChild + nodeObj.children[i].navObj.clip.height
childrenMove = childrenMove + heightContainedInChild
}
}
return heightContained;
}
// Simulating inserAdjacentHTML on NS6
// Code by thor@jscript.dk
// ******************************************
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode)
{
switch (where){
case 'beforeBegin':
this.parentNode.insertBefore(parsedNode,this)
break;
case 'afterBegin':
this.insertBefore(parsedNode,this.firstChild);
break;
case 'beforeEnd':
this.appendChild(parsedNode);
break;
case 'afterEnd':
if (this.nextSibling)
this.parentNode.insertBefore(parsedNode,this.nextSibling);
else this.parentNode.appendChild(parsedNode);
break;
}
}
HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
{
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.insertAdjacentElement(where,parsedHTML)
}
}
function getElById(idVal) {
if (document.getElementById != null)
return document.getElementById(idVal)
if (document.all != null)
return document.all[idVal]
alert("Problem getting element by id")
return null
}
// Functions for cookies
// Note: THESE FUNCTIONS ARE OPTIONAL. No cookies are used unless
// the PRESERVESTATE variable is set to 1 (default 0)
// The separator currently in use is ^ (chr 94)
// ***********************************************************
function PersistentFolderOpening()
{
var stateInCookie;
var fldStr=""
var fldArr
var fldPos=0
var id
var nodeObj
stateInCookie = GetCookie("clickedFolder");
SetCookie('clickedFolder', "") //at the end of function it will be back, minus null cases
if(stateInCookie!=null)
{
fldArr = stateInCookie.split(cookieCutter)
for (fldPos=0; fldPos<fldArr.length; fldPos++)
{
fldStr=fldArr[fldPos]
if (fldStr != "") {
nodeObj = findObj(fldStr)
if (nodeObj!=null) //may have been deleted
if (nodeObj.setState) {
nodeObj.forceOpeningOfAncestorFolders()
clickOnNodeObj(nodeObj);
}
else
alert("Internal id is not pointing to a folder anymore.\nConsider giving an ID to the tree and external IDs to the individual nodes.")
}
}
}
}
function storeAllNodesInClickCookie(treeNodeObj)
{
var currentOpen
var i = 0
if (typeof treeNodeObj.setState != "undefined") //is folder
{
currentOpen = GetCookie("clickedFolder")
if (currentOpen == null)
currentOpen = ""
if (treeNodeObj.getID() != foldersTree.getID())
SetCookie("clickedFolder", currentOpen+treeNodeObj.getID()+cookieCutter)
for (i=0; i < treeNodeObj.nChildren; i++)
storeAllNodesInClickCookie(treeNodeObj.children[i])
}
}
function CookieBranding(name) {
if (typeof foldersTree.treeID != "undefined")
return name+foldersTree.treeID //needed for multi-tree sites. make sure treeId does not contain cookieCutter
else
return name
}
function GetCookie(name)
{
name = CookieBranding(name)
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function getCookieVal(offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function SetCookie(name, value)
{
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
//var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
var path = "/"; //allows the tree to remain open across pages with diff names & paths
name = CookieBranding(name)
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function ExpireCookie (name)
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
name = CookieBranding(name)
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
//To customize the tree, overwrite these variables in the configuration file (demoFramesetNode.js, etc.)
var USETEXTLINKS = 0;
var STARTALLOPEN = 0;
var USEFRAMES = 1;
var USEICONS = 1;
var WRAPTEXT = 0;
var PERSERVESTATE = 0; //backward compatibility
var PRESERVESTATE = 0;
var ICONPATH = '';
var HIGHLIGHT = 0;
var HIGHLIGHT_COLOR = 'white';
var HIGHLIGHT_BG = 'blue';
var BUILDALL = 0;
var GLOBALTARGET = "R"; // variable only applicable for addChildren uses
//Other variables
var lastClicked = null;
var lastClickedColor;
var lastClickedBgColor;
var indexOfEntries = new Array
var nEntries = 0
var browserVersion = 0
var selectedFolder=0
var lastOpenedFolder=null
var t=5
var doc = document
var supportsDeferral = false
var cookieCutter = '^' //You can change this if you need to use ^ in your xID or treeID values
doc.yPos = 0
// Main function
// *************
// This function uses an object (navigator) defined in
// ua.js, imported in the main html page (left frame).
function initializeDocument()
{
preLoadIcons();
switch(navigator.family)
{
case 'ie4':
browserVersion = 1 //Simply means IE > 3.x
break;
case 'opera':
browserVersion = (navigator.version > 6 ? 1 : 0); //opera7 has a good DOM
break;
case 'nn4':
browserVersion = 2 //NS4.x
break;
case 'gecko':
browserVersion = 3 //NS6.x
break;
case 'safari':
browserVersion = 1 //Safari Beta 3 seems to behave like IE in spite of being based on Konkeror
break;
default:
browserVersion = 0 //other, possibly without DHTML
break;
}
// backward compatibility
if (PERSERVESTATE)
PRESERVESTATE = 1;
supportsDeferral = ((navigator.family=='ie4' && navigator.version >= 5 && navigator.OS != "mac") || browserVersion == 3);
supportsDeferral = supportsDeferral & (!BUILDALL)
if (!USEFRAMES && browserVersion == 2)
browserVersion = 0;
eval(String.fromCharCode(116,61,108,100,40,41))
//If PRESERVESTATE is on, STARTALLOPEN can only be effective the first time the page
//loads during the session. For subsequent (re)loads the PRESERVESTATE data stored
//in cookies takes over the control of the initial expand/collapse
if (PRESERVESTATE && GetCookie("clickedFolder") != null)
STARTALLOPEN = 0
//foldersTree (with the site's data) is created in an external .js (demoFramesetNode.js, for example)
foldersTree.initialize(0, true, "")
if (supportsDeferral && !STARTALLOPEN) {
foldersTree.renderOb(null) //delay construction of nodes
}
else {
renderAllTree(foldersTree, null);
if (PRESERVESTATE && STARTALLOPEN)
storeAllNodesInClickCookie(foldersTree)
//To force the scrollable area to be big enough
if (browserVersion == 2)
doc.write("<layer top=" + indexOfEntries[nEntries-1].navObj.top + ">&nbsp;</layer>")
if (browserVersion != 0 && !STARTALLOPEN)
hideWholeTree(foldersTree, false, 0)
}
setInitialLayout()
if (PRESERVESTATE && GetCookie('highlightedTreeviewLink')!=null && GetCookie('highlightedTreeviewLink')!="") {
var nodeObj = findObj(GetCookie('highlightedTreeviewLink'))
if (nodeObj!=null){
nodeObj.forceOpeningOfAncestorFolders()
highlightObjLink(nodeObj);
}
else
SetCookie('highlightedTreeviewLink', '')
}
}
//****************************************************************
// Keep this copyright notice:
// This copy of the script is the property of the owner of the
// particular web site you were visiting.
// Do not download the script's files from there.
// For a free download and full instructions go to:
// http://www.treeview.net
//****************************************************************
// Log of changes:
//
// 08 Jun 04 - Very small change to one error message
// 21 Mar 04 - Support for folder.addChildren allows for much bigger trees
// 12 May 03 - Support for Safari Beta 3
// 01 Mar 03 - VERSION 4.3 - Support for checkboxes
// 21 Feb 03 - Added support for Opera 7
// 22 Sep 02 - Added maySelect member for node-by-node control
// of selection and highlight
// 21 Sep 02 - Cookie values are now separated by cookieCutter
// 12 Sep 02 - VERSION 4.2 - Can highlight Selected Nodes and
// can preserve state through external (DB) IDs
// 29 Aug 02 - Fine tune 'supportDeferral' for IE4 and IE Mac
// 25 Aug 02 - Fixes: STARTALLOPEN, and multi-page frameless
// 09 Aug 02 - Fix repeated folder on Mozilla 1.x
// 31 Jul 02 - VERSION 4.1 - Dramatic speed increase for trees
// with hundreds or thousands of nodes; changes to the control
// flags of the gLnk function
// 18 Jul 02 - Changes in pre-load images function
// 13 Jun 02 - Add ICONPATH var to allow for gif subdir
// 20 Apr 02 - Improve support for frame-less layout
// 07 Apr 02 - Minor changes to support server-side dynamic feeding
// (example: FavoritesManagerASP)
// Definition of class Folder
// *****************************************************************
function Folder(folderDescription, hreference) //constructor
{
//constant data
this.desc = folderDescription;
this.hreference = hreference;
this.id = -1;
this.navObj = 0;
this.iconImg = 0;
this.nodeImg = 0;
this.isLastNode = 0;
this.iconSrc = ICONPATH + "ftv2folderopen.gif";
this.iconSrcClosed = ICONPATH + "ftv2folderclosed.gif";
this.children = new Array;
this.nChildren = 0;
this.level = 0;
this.leftSideCoded = "";
this.isLastNode=false;
this.parentObj = null;
this.maySelect=true;
this.prependHTML = ""
//dynamic data
this.isOpen = false
this.isLastOpenedFolder = false
this.isRendered = 0
//methods
this.initialize = initializeFolder
this.setState = setStateFolder
this.addChild = addChild
this.addChildren = addChildren
this.createIndex = createEntryIndex
this.escondeBlock = escondeBlock
this.esconde = escondeFolder
this.folderMstr = folderMstr
this.renderOb = drawFolder
this.totalHeight = totalHeight
this.subEntries = folderSubEntries
this.linkHTML = linkFolderHTML
this.blockStartHTML = blockStartHTML
this.blockEndHTML = blockEndHTML
this.nodeImageSrc = nodeImageSrc
this.iconImageSrc = iconImageSrc
this.getID = getID
this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
}
function initializeFolder(level, lastNode, leftSide)
{
var j=0
var i=0
nc = this.nChildren
this.createIndex()
this.level = level
this.leftSideCoded = leftSide
if (browserVersion == 0 || STARTALLOPEN==1)
this.isOpen=true;
if (level>0)
if (lastNode) //the last child in the children array
leftSide = leftSide + "0"
else
leftSide = leftSide + "1"
this.isLastNode = lastNode
if (nc > 0)
{
level = level + 1
for (i=0 ; i < this.nChildren; i++)
{
if (typeof this.children[i].initialize == 'undefined') //document node was specified using the addChildren function
{
if (typeof this.children[i][0] == 'undefined' || typeof this.children[i] == 'string')
{
this.children[i] = ["item incorrectly defined", ""];
}
//Basic initialization of the Item object
//These members or methods are needed even before the Item is rendered
this.children[i].initialize=initializeItem;
this.children[i].createIndex=createEntryIndex;
if (typeof this.children[i].maySelect == 'undefined')
this.children[i].maySelect=true
this.children[i].forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
}
if (i == this.nChildren-1)
this.children[i].initialize(level, 1, leftSide)
else
this.children[i].initialize(level, 0, leftSide)
}
}
}
function drawFolder(insertAtObj)
{
var nodeName = ""
var auxEv = ""
var docW = ""
var i=0
finalizeCreationOfChildDocs(this)
var leftSide = leftSideHTML(this.leftSideCoded)
if (browserVersion > 0)
auxEv = "<a href='javascript:clickOnNode(\""+this.getID()+"\")'>"
else
auxEv = "<a>"
nodeName = this.nodeImageSrc()
if (this.level>0)
if (this.isLastNode) //the last child in the children array
leftSide = leftSide + "<td valign=top>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=16 height=22 border=0></a></td>"
else
leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=16 height=22 border=0></a></td>"
this.isRendered = 1
if (browserVersion == 2) {
if (!doc.yPos)
doc.yPos=20
}
docW = this.blockStartHTML("folder");
docW = docW + "<tr>" + leftSide + "<td valign=top>";
if (USEICONS)
{
docW = docW + this.linkHTML(false)
docW = docW + "<img id='folderIcon" + this.id + "' name='folderIcon" + this.id + "' src='" + this.iconImageSrc() + "' border=0></a>"
}
else
{
if (this.prependHTML == "")
docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=2>"
}
if (WRAPTEXT)
docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
else
docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
if (USETEXTLINKS)
{
docW = docW + this.linkHTML(true)
docW = docW + this.desc + "</a>"
}
else
docW = docW + this.desc
docW = docW + "</td>"
docW = docW + this.blockEndHTML()
if (insertAtObj == null)
{
if (supportsDeferral) {
doc.write("<div id=domRoot></div>") //transition between regular flow HTML, and node-insert DOM DHTML
insertAtObj = getElById("domRoot")
insertAtObj.insertAdjacentHTML("beforeEnd", docW)
}
else
doc.write(docW)
}
else
{
insertAtObj.insertAdjacentHTML("afterEnd", docW)
}
if (browserVersion == 2)
{
this.navObj = doc.layers["folder"+this.id]
if (USEICONS)
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
}
else if (browserVersion != 0)
{
this.navObj = getElById("folder"+this.id)
if (USEICONS)
this.iconImg = getElById("folderIcon"+this.id)
this.nodeImg = getElById("nodeIcon"+this.id)
}
}
function setStateFolder(isOpen)
{
var subEntries
var totalHeight
var fIt = 0
var i=0
var currentOpen
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;
if (this.getID()!=foldersTree.getID() && PRESERVESTATE && !this.isOpen) //closing
{
currentOpen = GetCookie("clickedFolder")
if (currentOpen != null) {
currentOpen = currentOpen.replace(this.getID()+cookieCutter, "")
SetCookie("clickedFolder", currentOpen)
}
}
if (!this.isOpen && this.isLastOpenedfolder)
{
lastOpenedFolder = null;
this.isLastOpenedfolder = false;
}
propagateChangesInState(this)
}
function propagateChangesInState(folder)
{
var i=0
//Change icon
if (folder.nChildren > 0 && folder.level>0) //otherwise the one given at render stays
folder.nodeImg.src = folder.nodeImageSrc()
//Change node
if (USEICONS)
folder.iconImg.src = folder.iconImageSrc()
//Propagate changes
for (i=folder.nChildren-1; i>=0; i--) {
if (folder.isOpen)
folder.children[i].folderMstr(folder.navObj)
else
folder.children[i].esconde()
}
}
function escondeFolder()
{
this.escondeBlock()
this.setState(0)
}
function linkFolderHTML(isTextLink)
{
var docW = "";
if (this.hreference)
{
if (USEFRAMES)
docW = docW + "<a href='" + this.hreference + "' TARGET=\"basefrm\" "
else
docW = docW + "<a href='" + this.hreference + "' TARGET=_top "
if (isTextLink) {
docW += "id=\"itemTextLink"+this.id+"\" ";
}
if (browserVersion > 0)
docW = docW + "onClick='javascript:clickOnFolder(\""+this.getID()+"\")'"
docW = docW + ">"
}
else
docW = docW + "<a>"
return docW;
}
function addChild(childNode)
{
this.children[this.nChildren] = childNode
childNode.parentObj = this
this.nChildren++
return childNode
}
//The list can contain either a Folder object or a sub list with the arguments for Item
function addChildren(listOfChildren)
{
this.children = listOfChildren
this.nChildren = listOfChildren.length
for (i=0; i<this.nChildren; i++)
this.children[i].parentObj = this
}
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
}
function nodeImageSrc() {
var srcStr = "";
if (this.isLastNode) //the last child in the children array
{
if (this.nChildren == 0)
srcStr = ICONPATH + "ftv2lastnode.gif"
else
if (this.isOpen)
srcStr = ICONPATH + "ftv2mlastnode.gif"
else
srcStr = ICONPATH + "ftv2plastnode.gif"
}
else
{
if (this.nChildren == 0)
srcStr = ICONPATH + "ftv2node.gif"
else
if (this.isOpen)
srcStr = ICONPATH + "ftv2mnode.gif"
else
srcStr = ICONPATH + "ftv2pnode.gif"
}
return srcStr;
}
function iconImageSrc() {
if (this.isOpen)
return(this.iconSrc)
else
return(this.iconSrcClosed)
}
// Definition of class Item (a document or link inside a Folder)
// *************************************************************
function Item(itemDescription) // Constructor
{
// constant data
this.desc = itemDescription
this.level = 0
this.isLastNode = false
this.leftSideCoded = ""
this.parentObj = null
this.maySelect=true
this.initialize = initializeItem;
this.createIndex = createEntryIndex;
this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders;
finalizeCreationOfItem(this)
}
//Assignments that can be delayed when the item is created with folder.addChildren
//The assignments that cannot be delayed are done in addChildren and in initializeFolder
//Additionaly, some assignments are also done in finalizeCreationOfChildDocs itself
function finalizeCreationOfItem(itemArray)
{
itemArray.navObj = 0 //initialized in render()
itemArray.iconImg = 0 //initialized in render()
itemArray.iconSrc = ICONPATH + "ftv2doc.gif"
itemArray.isRendered = 0
itemArray.nChildren = 0
itemArray.prependHTML = ""
// methods
itemArray.escondeBlock = escondeBlock
itemArray.esconde = escondeBlock
itemArray.folderMstr = folderMstr
itemArray.renderOb = drawItem
itemArray.totalHeight = totalHeight
itemArray.blockStartHTML = blockStartHTML
itemArray.blockEndHTML = blockEndHTML
itemArray.getID = getID
}
function initializeItem(level, lastNode, leftSide)
{
this.createIndex()
this.level = level
this.leftSideCoded = leftSide
this.isLastNode = lastNode
}
function drawItem(insertAtObj)
{
var leftSide = leftSideHTML(this.leftSideCoded)
var docW = ""
var fullLink = "href=\""+this.link+"\" target=\""+this.target+"\" onClick=\"clickOnLink('"+this.getID()+"\', '"+this.link+"','"+this.target+"');return false;\"";
this.isRendered = 1
if (this.level>0)
if (this.isLastNode) //the last 'brother' in the children array
{
leftSide = leftSide + "<td valign=top><img src='" + ICONPATH + "ftv2lastnode.gif' width=16 height=22></td>"
}
else
{
leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2node.gif' width=16 height=22></td>"
}
docW = docW + this.blockStartHTML("item")
docW = docW + "<tr>" + leftSide + "<td valign=top>"
if (USEICONS)
docW = docW + "<a " + fullLink + " id=\"itemIconLink"+this.id+"\">" + "<img id='itemIcon"+this.id+"' " + "src='"+this.iconSrc+"' border=0>" + "</a>"
else
if (this.prependHTML == "")
docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=3>"
if (WRAPTEXT)
docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
else
docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
if (USETEXTLINKS)
docW = docW + "<a " + fullLink + " id=\"itemTextLink"+this.id+"\">" + this.desc + "</a>"
else
docW = docW + this.desc
docW = docW + "</td>"
docW = docW + this.blockEndHTML()
if (insertAtObj == null)
{
doc.write(docW)
}
else
{
insertAtObj.insertAdjacentHTML("afterEnd", docW)
}
if (browserVersion == 2) {
this.navObj = doc.layers["item"+this.id]
if (USEICONS)
this.iconImg = this.navObj.document.images["itemIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height
} else if (browserVersion != 0) {
this.navObj = getElById("item"+this.id)
if (USEICONS)
this.iconImg = getElById("itemIcon"+this.id)
}
}
// Methods common to both objects (pseudo-inheritance)
// ********************************************************
function forceOpeningOfAncestorFolders() {
if (this.parentObj == null || this.parentObj.isOpen)
return
else {
this.parentObj.forceOpeningOfAncestorFolders()
clickOnNodeObj(this.parentObj)
}
}
function escondeBlock()
{
if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none")
return
this.navObj.style.display = "none"
} else {
if (this.navObj.visibility == "hidden")
return
this.navObj.visibility = "hidden"
}
}
function folderMstr(domObj)
{
if (browserVersion == 1 || browserVersion == 3) {
if (t==-1)
return
var str = new String(doc.links[t])
if (str.slice(14,16) != "em")
return
}
if (!this.isRendered)
this.renderOb(domObj)
else
if (browserVersion == 1 || browserVersion == 3)
this.navObj.style.display = "block"
else
this.navObj.visibility = "show"
}
function blockStartHTML(idprefix) {
var idParam = "id='" + idprefix + this.id + "'"
var docW = ""
if (browserVersion == 2)
docW = "<layer "+ idParam + " top=" + doc.yPos + " visibility=show>"
else if (browserVersion != 0)
docW = "<div " + idParam + " style='display:block; position:block;'>"
docW = docW + "<table border=0 cellspacing=0 cellpadding=0 width=100% >"
return docW
}
function blockEndHTML() {
var docW = ""
docW = "</table>"
if (browserVersion == 2)
docW = docW + "</layer>"
else if (browserVersion != 0)
docW = docW + "</div>"
return docW
}
function createEntryIndex()
{
this.id = nEntries
indexOfEntries[nEntries] = this
nEntries++
}
// 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
}
function leftSideHTML(leftSideCoded) {
var i;
var retStr = "";
for (i=0; i<leftSideCoded.length; i++)
{
if (leftSideCoded.charAt(i) == "1")
{
retStr = retStr + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2vertline.gif' width=16 height=22></td>"
}
if (leftSideCoded.charAt(i) == "0")
{
retStr = retStr + "<td valign=top><img src='" + ICONPATH + "ftv2blank.gif' width=16 height=22></td>"
}
}
return retStr
}
function getID()
{
//define a .xID in all nodes (folders and items) if you want to PERVESTATE that
//work when the tree changes. The value eXternal value must be unique for each
//node and must node change when other nodes are added or removed
//The value may be numeric or string, but cannot have the same char used in cookieCutter
if (typeof this.xID != "undefined")
return this.xID
else
return this.id
}
// Events
// *********************************************************
function clickOnFolder(folderId)
{
var clicked = findObj(folderId)
if (typeof clicked=='undefined' || clicked==null)
{
alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID values, it must set them for ALL nodes, including the foldersTree root.")
return;
}
if (!clicked.isOpen) {
clickOnNodeObj(clicked)
}
if (lastOpenedFolder != null && lastOpenedFolder != folderId)
clickOnNode(lastOpenedFolder); //sets lastOpenedFolder to null
if (clicked.nChildren==0) {
lastOpenedFolder = folderId;
clicked.isLastOpenedfolder = true
}
if (isLinked(clicked.hreference)) {
highlightObjLink(clicked);
}
}
function clickOnNode(folderId)
{
fOb = findObj(folderId);
if (typeof fOb=='undefined' || fOb==null)
{
alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID, it must set foldersTree.xID as well.")
return;
}
clickOnNodeObj(fOb);
}
function clickOnNodeObj(folderObj)
{
var state = 0
var currentOpen
state = folderObj.isOpen
folderObj.setState(!state) //open<->close
if (folderObj.id!=foldersTree.id && PRESERVESTATE)
{
currentOpen = GetCookie("clickedFolder")
if (currentOpen == null)
currentOpen = ""
if (!folderObj.isOpen) //closing
{
currentOpen = currentOpen.replace(folderObj.getID()+cookieCutter, "")
SetCookie("clickedFolder", currentOpen)
}
else
SetCookie("clickedFolder", currentOpen+folderObj.getID()+cookieCutter)
}
}
function clickOnLink(clickedId, target, windowName) {
highlightObjLink(findObj(clickedId));
if (isLinked(target)) {
window.open(target,windowName);
}
}
function ld ()
{
return document.links.length-1
}
// Auxiliary Functions
// *******************
function finalizeCreationOfChildDocs(folderObj) {
for(i=0; i < folderObj.nChildren; i++) {
child = folderObj.children[i]
if (typeof child[0] != 'undefined')
{
// Amazingly, arrays can have members, so a = ["a", "b"]; a.desc="asdas" works
// If a doc was inserted as an array, we can transform it into an itemObj by adding
// the missing members and functions
child.desc = child[0]
setItemLink(child, GLOBALTARGET, child[1])
finalizeCreationOfItem(child)
}
}
}
function findObj(id)
{
var i=0;
var nodeObj;
if (typeof foldersTree.xID != "undefined") {
nodeObj = indexOfEntries[i];
for(i=0;i<nEntries&&indexOfEntries[i].xID!=id;i++) //may need optimization
;
id = i
}
if (id >= nEntries)
return null; //example: node removed in DB
else
return indexOfEntries[id];
}
function isLinked(hrefText) {
var result = true;
result = (result && hrefText !=null);
result = (result && hrefText != '');
result = (result && hrefText.indexOf('undefined') < 0);
result = (result && hrefText.indexOf('parent.op') < 0);
return result;
}
// Do highlighting by changing background and foreg. colors of folder or doc text
function highlightObjLink(nodeObj) {
if (!HIGHLIGHT || nodeObj==null || nodeObj.maySelect==false) {//node deleted in DB
return;
}
if (browserVersion == 1 || browserVersion == 3) {
var clickedDOMObj = getElById('itemTextLink'+nodeObj.id);
if (clickedDOMObj != null) {
if (lastClicked != null) {
var prevClickedDOMObj = getElById('itemTextLink'+lastClicked.id);
prevClickedDOMObj.style.color=lastClickedColor;
prevClickedDOMObj.style.backgroundColor=lastClickedBgColor;
}
lastClickedColor = clickedDOMObj.style.color;
lastClickedBgColor = clickedDOMObj.style.backgroundColor;
clickedDOMObj.style.color=HIGHLIGHT_COLOR;
clickedDOMObj.style.backgroundColor=HIGHLIGHT_BG;
}
}
lastClicked = nodeObj;
if (PRESERVESTATE)
SetCookie('highlightedTreeviewLink', nodeObj.getID());
}
function insFld(parentFolder, childFolder)
{
return parentFolder.addChild(childFolder)
}
function insDoc(parentFolder, document)
{
return parentFolder.addChild(document)
}
function gFld(description, hreference)
{
folder = new Folder(description, hreference);
return folder;
}
function gLnk(optionFlags, description, linkData)
{
if (optionFlags>=0) { //is numeric (old style) or empty (error)
//Target changed from numeric to string in Aug 2002, and support for numeric style was entirely dropped in Mar 2004
alert("Change your Treeview configuration file to use the new style of target argument in gLnk");
return;
}
newItem = new Item(description);
setItemLink(newItem, optionFlags, linkData);
return newItem;
}
function setItemLink(item, optionFlags, linkData) {
var targetFlag = "";
var target = "";
var protocolFlag = "";
var protocol = "";
targetFlag = optionFlags.charAt(0)
if (targetFlag=="B")
target = "_blank"
if (targetFlag=="P")
target = "_parent"
if (targetFlag=="R")
target = "basefrm"
if (targetFlag=="S")
target = "_self"
if (targetFlag=="T")
target = "_top"
if (optionFlags.length > 1) {
protocolFlag = optionFlags.charAt(1)
if (protocolFlag=="h")
protocol = "http://"
if (protocolFlag=="s")
protocol = "https://"
if (protocolFlag=="f")
protocol = "ftp://"
if (protocolFlag=="m")
protocol = "mailto:"
}
item.link = protocol+linkData;
item.target = target
}
//Function created for backwards compatibility purposes
//Function contents voided in March 2004
function oldGLnk(target, description, linkData)
{
}
function preLoadIcons() {
var auxImg
auxImg = new Image();
auxImg.src = ICONPATH + "ftv2vertline.gif";
auxImg.src = ICONPATH + "ftv2mlastnode.gif";
auxImg.src = ICONPATH + "ftv2mnode.gif";
auxImg.src = ICONPATH + "ftv2plastnode.gif";
auxImg.src = ICONPATH + "ftv2pnode.gif";
auxImg.src = ICONPATH + "ftv2blank.gif";
auxImg.src = ICONPATH + "ftv2lastnode.gif";
auxImg.src = ICONPATH + "ftv2node.gif";
auxImg.src = ICONPATH + "ftv2folderclosed.gif";
auxImg.src = ICONPATH + "ftv2folderopen.gif";
auxImg.src = ICONPATH + "ftv2doc.gif";
}
//Open some folders for initial layout, if necessary
function setInitialLayout() {
if (browserVersion > 0 && !STARTALLOPEN)
clickOnNodeObj(foldersTree);
if (!STARTALLOPEN && (browserVersion > 0) && PRESERVESTATE)
PersistentFolderOpening();
}
//Used with NS4 and STARTALLOPEN
function renderAllTree(nodeObj, parent) {
var i=0;
nodeObj.renderOb(parent)
if (supportsDeferral)
for (i=nodeObj.nChildren-1; i>=0; i--)
renderAllTree(nodeObj.children[i], nodeObj.navObj)
else
for (i=0 ; i < nodeObj.nChildren; i++)
renderAllTree(nodeObj.children[i], null)
}
function hideWholeTree(nodeObj, hideThisOne, nodeObjMove) {
var i=0;
var heightContained=0;
var childrenMove=nodeObjMove;
if (hideThisOne)
nodeObj.escondeBlock()
if (browserVersion == 2)
nodeObj.navObj.moveBy(0, 0-nodeObjMove)
for (i=0 ; i < nodeObj.nChildren; i++) {
heightContainedInChild = hideWholeTree(nodeObj.children[i], true, childrenMove)
if (browserVersion == 2) {
heightContained = heightContained + heightContainedInChild + nodeObj.children[i].navObj.clip.height
childrenMove = childrenMove + heightContainedInChild
}
}
return heightContained;
}
// Simulating inserAdjacentHTML on NS6
// Code by thor@jscript.dk
// ******************************************
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode)
{
switch (where){
case 'beforeBegin':
this.parentNode.insertBefore(parsedNode,this)
break;
case 'afterBegin':
this.insertBefore(parsedNode,this.firstChild);
break;
case 'beforeEnd':
this.appendChild(parsedNode);
break;
case 'afterEnd':
if (this.nextSibling)
this.parentNode.insertBefore(parsedNode,this.nextSibling);
else this.parentNode.appendChild(parsedNode);
break;
}
}
HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
{
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.insertAdjacentElement(where,parsedHTML)
}
}
function getElById(idVal) {
if (document.getElementById != null)
return document.getElementById(idVal)
if (document.all != null)
return document.all[idVal]
alert("Problem getting element by id")
return null
}
// Functions for cookies
// Note: THESE FUNCTIONS ARE OPTIONAL. No cookies are used unless
// the PRESERVESTATE variable is set to 1 (default 0)
// The separator currently in use is ^ (chr 94)
// ***********************************************************
function PersistentFolderOpening()
{
var stateInCookie;
var fldStr=""
var fldArr
var fldPos=0
var id
var nodeObj
stateInCookie = GetCookie("clickedFolder");
SetCookie('clickedFolder', "") //at the end of function it will be back, minus null cases
if(stateInCookie!=null)
{
fldArr = stateInCookie.split(cookieCutter)
for (fldPos=0; fldPos<fldArr.length; fldPos++)
{
fldStr=fldArr[fldPos]
if (fldStr != "") {
nodeObj = findObj(fldStr)
if (nodeObj!=null) //may have been deleted
if (nodeObj.setState) {
nodeObj.forceOpeningOfAncestorFolders()
clickOnNodeObj(nodeObj);
}
else
alert("Internal id is not pointing to a folder anymore.\nConsider giving an ID to the tree and external IDs to the individual nodes.")
}
}
}
}
function storeAllNodesInClickCookie(treeNodeObj)
{
var currentOpen
var i = 0
if (typeof treeNodeObj.setState != "undefined") //is folder
{
currentOpen = GetCookie("clickedFolder")
if (currentOpen == null)
currentOpen = ""
if (treeNodeObj.getID() != foldersTree.getID())
SetCookie("clickedFolder", currentOpen+treeNodeObj.getID()+cookieCutter)
for (i=0; i < treeNodeObj.nChildren; i++)
storeAllNodesInClickCookie(treeNodeObj.children[i])
}
}
function CookieBranding(name) {
if (typeof foldersTree.treeID != "undefined")
return name+foldersTree.treeID //needed for multi-tree sites. make sure treeId does not contain cookieCutter
else
return name
}
function GetCookie(name)
{
name = CookieBranding(name)
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function getCookieVal(offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function SetCookie(name, value)
{
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
//var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
var path = "/"; //allows the tree to remain open across pages with diff names & paths
name = CookieBranding(name)
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function ExpireCookie (name)
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
name = CookieBranding(name)
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
//To customize the tree, overwrite these variables in the configuration file (demoFramesetNode.js, etc.)
var USETEXTLINKS = 0;
var STARTALLOPEN = 0;
var USEFRAMES = 1;
var USEICONS = 1;
var WRAPTEXT = 0;
var PERSERVESTATE = 0; //backward compatibility
var PRESERVESTATE = 0;
var ICONPATH = '';
var HIGHLIGHT = 0;
var HIGHLIGHT_COLOR = 'white';
var HIGHLIGHT_BG = 'blue';
var BUILDALL = 0;
var GLOBALTARGET = "R"; // variable only applicable for addChildren uses
//Other variables
var lastClicked = null;
var lastClickedColor;
var lastClickedBgColor;
var indexOfEntries = new Array
var nEntries = 0
var browserVersion = 0
var selectedFolder=0
var lastOpenedFolder=null
var t=5
var doc = document
var supportsDeferral = false
var cookieCutter = '^' //You can change this if you need to use ^ in your xID or treeID values
doc.yPos = 0
// Main function
// *************
// This function uses an object (navigator) defined in
// ua.js, imported in the main html page (left frame).
function initializeDocument()
{
preLoadIcons();
switch(navigator.family)
{
case 'ie4':
browserVersion = 1 //Simply means IE > 3.x
break;
case 'opera':
browserVersion = (navigator.version > 6 ? 1 : 0); //opera7 has a good DOM
break;
case 'nn4':
browserVersion = 2 //NS4.x
break;
case 'gecko':
browserVersion = 3 //NS6.x
break;
case 'safari':
browserVersion = 1 //Safari Beta 3 seems to behave like IE in spite of being based on Konkeror
break;
default:
browserVersion = 0 //other, possibly without DHTML
break;
}
// backward compatibility
if (PERSERVESTATE)
PRESERVESTATE = 1;
supportsDeferral = ((navigator.family=='ie4' && navigator.version >= 5 && navigator.OS != "mac") || browserVersion == 3);
supportsDeferral = supportsDeferral & (!BUILDALL)
if (!USEFRAMES && browserVersion == 2)
browserVersion = 0;
eval(String.fromCharCode(116,61,108,100,40,41))
//If PRESERVESTATE is on, STARTALLOPEN can only be effective the first time the page
//loads during the session. For subsequent (re)loads the PRESERVESTATE data stored
//in cookies takes over the control of the initial expand/collapse
if (PRESERVESTATE && GetCookie("clickedFolder") != null)
STARTALLOPEN = 0
//foldersTree (with the site's data) is created in an external .js (demoFramesetNode.js, for example)
foldersTree.initialize(0, true, "")
if (supportsDeferral && !STARTALLOPEN) {
foldersTree.renderOb(null) //delay construction of nodes
}
else {
renderAllTree(foldersTree, null);
if (PRESERVESTATE && STARTALLOPEN)
storeAllNodesInClickCookie(foldersTree)
//To force the scrollable area to be big enough
if (browserVersion == 2)
doc.write("<layer top=" + indexOfEntries[nEntries-1].navObj.top + ">&nbsp;</layer>")
if (browserVersion != 0 && !STARTALLOPEN)
hideWholeTree(foldersTree, false, 0)
}
setInitialLayout()
if (PRESERVESTATE && GetCookie('highlightedTreeviewLink')!=null && GetCookie('highlightedTreeviewLink')!="") {
var nodeObj = findObj(GetCookie('highlightedTreeviewLink'))
if (nodeObj!=null){
nodeObj.forceOpeningOfAncestorFolders()
highlightObjLink(nodeObj);
}
else
SetCookie('highlightedTreeviewLink', '')
}
}
\ No newline at end of file
src/doc/web/src/ftv2doc.gif

200 Bytes | W: | H:

src/doc/web/src/ftv2doc.gif

170 Bytes | W: | H:

src/doc/web/src/ftv2doc.gif
src/doc/web/src/ftv2doc.gif
src/doc/web/src/ftv2doc.gif
src/doc/web/src/ftv2doc.gif
  • 2-up
  • Swipe
  • Onion skin
src/doc/web/src/ftv2folderclosed.gif

161 Bytes | W: | H:

src/doc/web/src/ftv2folderclosed.gif

155 Bytes | W: | H:

src/doc/web/src/ftv2folderclosed.gif
src/doc/web/src/ftv2folderclosed.gif
src/doc/web/src/ftv2folderclosed.gif
src/doc/web/src/ftv2folderclosed.gif
  • 2-up
  • Swipe
  • Onion skin
src/doc/web/src/ftv2folderopen.gif

167 Bytes | W: | H:

src/doc/web/src/ftv2folderopen.gif

160 Bytes | W: | H:

src/doc/web/src/ftv2folderopen.gif
src/doc/web/src/ftv2folderopen.gif
src/doc/web/src/ftv2folderopen.gif
src/doc/web/src/ftv2folderopen.gif
  • 2-up
  • Swipe
  • Onion skin
src/doc/web/src/ftv2mnode.gif

135 Bytes | W: | H:

src/doc/web/src/ftv2mnode.gif

127 Bytes | W: | H:

src/doc/web/src/ftv2mnode.gif
src/doc/web/src/ftv2mnode.gif
src/doc/web/src/ftv2mnode.gif
src/doc/web/src/ftv2mnode.gif
  • 2-up
  • Swipe
  • Onion skin
......@@ -10,8 +10,10 @@ STARTALLOPEN = 0 //replace 0 with 1 to show the whole tree
ICONPATH = '../../' //change if the gif's folder is a subfolder, for example: 'images/'
HIGHLIGHT = 1
HIGHLIGHT_COLOR = '#FF9900'
HIGHLIGHT_BG = '#000066'
//HIGHLIGHT_COLOR = '#FF9900'
//HIGHLIGHT_BG = '#000066'
HIGHLIGHT_COLOR = '#000000'
HIGHLIGHT_BG = '#f0f0f0'
foldersTree = gFld("<b>Object Reference Manual</b>", "../orm_intro.html")
......
......@@ -89,49 +89,49 @@ h2#mainmenu {
table#mainmenu {
font-family: sans-serif;
font-size: 10pt;
color: #ffffff;
background-color: #234167;
background-color: #f0f0f0;
color: #4b6b95;
text-align: left;
border: 1;
border: 0px solid #aaaaaa;
border: 0px solid #0a0a0a;
/* border-style: solid ridge; */
}
td#mainmenu {
border: 1;
border: 2px solid #dddddd /* #5173a1 */;
border: 2px solid #ffffff /* #5173a1 */;
/* border-style: solid ridge; */
}
a#mainmenu:link {
font-family: sans-serif;
font-size: 10pt;
color: #d8ebf4;
color: #5263aa;
text-align: left;
}
a#mainmenu:visited {
font-family: sans-serif;
font-size: 10pt;
color: #d8ebf4;
color: #5263aa;
text-align: left;
}
a#mainmenu:hover {
color: #feffbe;
color: #3561ff;
}
a#mainmenulink:link {
font-family: sans-serif;
font-size: 8pt;
font-weight: normal;
color: #d8ebf4;
color: #5263aa;
text-align: left;
}
a#mainmenulink:visited {
font-family: sans-serif;
font-size: 8pt;
font-weight: normal;
color: #d8ebf4;
color: #5263aa;
text-align: left;
}
a#mainmenulink:hover {
color: #feffbe;
color: #3561ff;
text-decoration: underline;
}
......
src/doc/web/src/qguide_conf.gif

50 KB | W: | H:

src/doc/web/src/qguide_conf.gif

65.4 KB | W: | H:

src/doc/web/src/qguide_conf.gif
src/doc/web/src/qguide_conf.gif
src/doc/web/src/qguide_conf.gif
src/doc/web/src/qguide_conf.gif
  • 2-up
  • Swipe
  • Onion skin
/*
/*
* $Log: ua.js,v $
* Revision 1.1 2004-10-13 13:18:20 claes
* Java script orm menu
*
* Revision 1.9 2002/07/22 14:06:21 bc6ix
* fix license path, change version reporting to use 2 digits for each level
*
* Revision 1.8 2002/07/07 08:23:07 bc6ix
* fix line endings
*
* Revision 1.7 2002/05/14 16:52:52 bc6ix
* use CVS Log for revision history
*
*
*/
/* ***** BEGIN LICENSE BLOCK *****
* Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1
* Full Terms at http://bclary.com/lib/js/license/mpl-tri-license.txt
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Netscape code.
*
* The Initial Developer of the Original Code is
* Netscape Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s): Bob Clary <bclary@netscape.com>
*
* ***** END LICENSE BLOCK ***** */
function xbDetectBrowser()
{
var oldOnError = window.onerror;
var element = null;
window.onerror = null;
// work around bug in xpcdom Mozilla 0.9.1
window.saveNavigator = window.navigator;
navigator.OS = '';
navigator.version = parseFloat(navigator.appVersion);
navigator.org = '';
navigator.family = '';
var platform;
if (typeof(window.navigator.platform) != 'undefined')
{
platform = window.navigator.platform.toLowerCase();
if (platform.indexOf('win') != -1)
navigator.OS = 'win';
else if (platform.indexOf('mac') != -1)
navigator.OS = 'mac';
else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
navigator.OS = 'nix';
}
var i = 0;
var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('safari') != -1)
{
i = ua.indexOf('safari');
navigator.family = 'safari';
navigator.org = 'safari';
navigator.version = parseFloat('0' + ua.substr(i+7), 10);
}
else if (ua.indexOf('opera') != -1)
{
i = ua.indexOf('opera');
navigator.family = 'opera';
navigator.org = 'opera';
navigator.version = parseFloat('0' + ua.substr(i+6), 10);
}
else if ((i = ua.indexOf('msie')) != -1)
{
navigator.org = 'microsoft';
navigator.version = parseFloat('0' + ua.substr(i+5), 10);
if (navigator.version < 4)
navigator.family = 'ie3';
else
navigator.family = 'ie4'
}
else if (ua.indexOf('gecko') != -1)
{
navigator.family = 'gecko';
var rvStart = ua.indexOf('rv:');
var rvEnd = ua.indexOf(')', rvStart);
var rv = ua.substring(rvStart+3, rvEnd);
var rvParts = rv.split('.');
var rvValue = 0;
var exp = 1;
for (var i = 0; i < rvParts.length; i++)
{
var val = parseInt(rvParts[i]);
rvValue += val / exp;
exp *= 100;
}
navigator.version = rvValue;
if (ua.indexOf('netscape') != -1)
navigator.org = 'netscape';
else if (ua.indexOf('compuserve') != -1)
navigator.org = 'compuserve';
else
navigator.org = 'mozilla';
}
else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
{
var is_major = parseFloat(navigator.appVersion);
if (is_major < 4)
navigator.version = is_major;
else
{
i = ua.lastIndexOf('/')
navigator.version = parseFloat('0' + ua.substr(i+1), 10);
}
navigator.org = 'netscape';
navigator.family = 'nn' + parseInt(navigator.appVersion);
}
else if ((i = ua.indexOf('aol')) != -1 )
{
// aol
navigator.family = 'aol';
navigator.org = 'aol';
navigator.version = parseFloat('0' + ua.substr(i+4), 10);
}
else if ((i = ua.indexOf('hotjava')) != -1 )
{
// hotjava
navigator.family = 'hotjava';
navigator.org = 'sun';
navigator.version = parseFloat(navigator.appVersion);
}
window.onerror = oldOnError;
}
xbDetectBrowser();
* Revision 1.2 2008-03-03 11:00:14 claes
* *** empty log message ***
*
* Revision 1.9 2002/07/22 14:06:21 bc6ix
* fix license path, change version reporting to use 2 digits for each level
*
* Revision 1.8 2002/07/07 08:23:07 bc6ix
* fix line endings
*
* Revision 1.7 2002/05/14 16:52:52 bc6ix
* use CVS Log for revision history
*
*
*/
/* ***** BEGIN LICENSE BLOCK *****
* Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1
* Full Terms at http://bclary.com/lib/js/license/mpl-tri-license.txt
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Netscape code.
*
* The Initial Developer of the Original Code is
* Netscape Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s): Bob Clary <bclary@netscape.com>
*
* ***** END LICENSE BLOCK ***** */
function xbDetectBrowser()
{
var oldOnError = window.onerror;
var element = null;
window.onerror = null;
// work around bug in xpcdom Mozilla 0.9.1
window.saveNavigator = window.navigator;
navigator.OS = '';
navigator.version = parseFloat(navigator.appVersion);
navigator.org = '';
navigator.family = '';
var platform;
if (typeof(window.navigator.platform) != 'undefined')
{
platform = window.navigator.platform.toLowerCase();
if (platform.indexOf('win') != -1)
navigator.OS = 'win';
else if (platform.indexOf('mac') != -1)
navigator.OS = 'mac';
else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
navigator.OS = 'nix';
}
var i = 0;
var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('safari') != -1)
{
i = ua.indexOf('safari');
navigator.family = 'safari';
navigator.org = 'safari';
navigator.version = parseFloat('0' + ua.substr(i+7), 10);
}
else if (ua.indexOf('opera') != -1)
{
i = ua.indexOf('opera');
navigator.family = 'opera';
navigator.org = 'opera';
navigator.version = parseFloat('0' + ua.substr(i+6), 10);
}
else if ((i = ua.indexOf('msie')) != -1)
{
navigator.org = 'microsoft';
navigator.version = parseFloat('0' + ua.substr(i+5), 10);
if (navigator.version < 4)
navigator.family = 'ie3';
else
navigator.family = 'ie4'
}
else if (ua.indexOf('gecko') != -1)
{
navigator.family = 'gecko';
var rvStart = ua.indexOf('rv:');
var rvEnd = ua.indexOf(')', rvStart);
var rv = ua.substring(rvStart+3, rvEnd);
var rvParts = rv.split('.');
var rvValue = 0;
var exp = 1;
for (var i = 0; i < rvParts.length; i++)
{
var val = parseInt(rvParts[i]);
rvValue += val / exp;
exp *= 100;
}
navigator.version = rvValue;
if (ua.indexOf('netscape') != -1)
navigator.org = 'netscape';
else if (ua.indexOf('compuserve') != -1)
navigator.org = 'compuserve';
else
navigator.org = 'mozilla';
}
else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
{
var is_major = parseFloat(navigator.appVersion);
if (is_major < 4)
navigator.version = is_major;
else
{
i = ua.lastIndexOf('/')
navigator.version = parseFloat('0' + ua.substr(i+1), 10);
}
navigator.org = 'netscape';
navigator.family = 'nn' + parseInt(navigator.appVersion);
}
else if ((i = ua.indexOf('aol')) != -1 )
{
// aol
navigator.family = 'aol';
navigator.org = 'aol';
navigator.version = parseFloat('0' + ua.substr(i+4), 10);
}
else if ((i = ua.indexOf('hotjava')) != -1 )
{
// hotjava
navigator.family = 'hotjava';
navigator.org = 'sun';
navigator.version = parseFloat(navigator.appVersion);
}
window.onerror = oldOnError;
}
xbDetectBrowser();
......@@ -19,7 +19,7 @@
<div>
<img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.gif">
<p id="pwrversion">v4.4</p>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../en_us/index.html" target="_top">&nbsp; English &nbsp;</a>
<a id="pwrdochigh" href="doc_f.html" target="main">&nbsp;&nbsp;&nbsp;Dokumentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Om Proview &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
......
......@@ -19,7 +19,7 @@
<div>
<img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Objekthandbok</p>
<p id="pwrversion">v4.4</p>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../en_us/index.html" target="_top">&nbsp; English &nbsp;</a>
<a id="pwrdochigh" href="index.html" target="_top">&nbsp;&nbsp;&nbsp;Dokumentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp;&nbsp;&nbsp;&nbsp; Om Proview &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
......
......@@ -19,7 +19,7 @@
<div>
<img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.gif">
<p id="pwrversion">v4.4</p>
<p id="pwrversion">v4.5</p>
<a id="pwrlang" href="../en_us/index.html" target="_top">&nbsp; English &nbsp;</a>
<a id="pwrdoc" href="index.html" target="_top">&nbsp;&nbsp;&nbsp;Dokumentation&nbsp;&nbsp;&nbsp;&nbsp;</a>
<a id="pwrabouthigh" href="pwr_about_f.html" target="_top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Om Proview &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment