Commit c1c5356a authored by claes's avatar claes

*** empty log message ***

parent ef4aee91
...@@ -11,4 +11,5 @@ ...@@ -11,4 +11,5 @@
071001 cs bcomp Attribute DisableSup added to most Fo object to suppress alarm messages. 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. 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. 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. 080115 cs bcomp Bugfix in BaseMotorAggr. Backup on runningtime object didn't work.
\ No newline at end of file 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 ...@@ -1143,7 +1143,7 @@ Connection point <link>geref_conpoint
Bar <link>geref_bar Bar <link>geref_bar
Trend <link>geref_trend Trend <link>geref_trend
Axis <link>geref_axis Axis <link>geref_axis
Window <link>geref_window Window <link>geref_windowobject
TabbedWindow <link>geref_tabbedwind TabbedWindow <link>geref_tabbedwind
Table <link>geref_table Table <link>geref_table
...@@ -1466,7 +1466,7 @@ Format <t>Format in c syntax of written values. ...@@ -1466,7 +1466,7 @@ Format <t>Format in c syntax of written values.
Dynamic <t>Not implemented. Dynamic <t>Not implemented.
</topic> </topic>
<topic>geref_window <style>function <topic>geref_windowobject <style>function
Window Window
Window displays a separate graph in a specified area in another graph. The graph is displayed Window displays a separate graph in a specified area in another graph. The graph is displayed
...@@ -3462,7 +3462,7 @@ set <link>gecmd_set ...@@ -3462,7 +3462,7 @@ set <link>gecmd_set
<t>set currentobject colorshift <link>gecmd_set_current_colorshift <t>set currentobject colorshift <link>gecmd_set_current_colorshift
<t>set currentobject attributes <link>gecmd_set_current_attributes <t>set currentobject attributes <link>gecmd_set_current_attributes
<t>set currentobject type <link>gecmd_set_current_type <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 colortone <link>gecmd_set_current_colortone
<t>set currentobject access <link>gecmd_set_current_access <t>set currentobject access <link>gecmd_set_current_access
<t>set currentobject attr1 <link>gecmd_set_current_attr1 <t>set currentobject attr1 <link>gecmd_set_current_attr1
...@@ -3911,7 +3911,7 @@ PulldownMenu <t> 1 << 19 ...@@ -3911,7 +3911,7 @@ PulldownMenu <t> 1 << 19
OptionMenu <t> 1 << 20 OptionMenu <t> 1 << 20
</topic> </topic>
<topic>gecmd_set_current_color <topic>gecmd_set_current_color_
set currentobject color set currentobject color
Colors are usually called 'LowColor' or 'LowColor2'. Color is an index in the color palette. Colors are usually called 'LowColor' or 'LowColor2'. Color is an index in the color palette.
</topic> </topic>
......
...@@ -1150,7 +1150,7 @@ Kopplingspunkt <link>geref_conpoint ...@@ -1150,7 +1150,7 @@ Kopplingspunkt <link>geref_conpoint
Stapel <link>geref_bar Stapel <link>geref_bar
Trendkurva <link>geref_trend Trendkurva <link>geref_trend
Axis <link>geref_axis Axis <link>geref_axis
Window <link>geref_window Window <link>geref_windowobject
TabbedWindow <link>geref_tabbedwind TabbedWindow <link>geref_tabbedwind
Table <link>geref_table Table <link>geref_table
...@@ -1468,7 +1468,7 @@ Format <t>Format i c-syntax f ...@@ -1468,7 +1468,7 @@ Format <t>Format i c-syntax f
Dynamic <t>Ej implementerat. Dynamic <t>Ej implementerat.
</topic> </topic>
<topic>geref_window <style>function <topic>geref_windowobject <style>function
Window Window
Window visar en separat graf inom ett specificerat område i en annan graf. Grafen kan visas 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 ...@@ -3452,7 +3452,7 @@ set <link>gecmd_set
<t>set currentobject colorshift <link>gecmd_set_current_colorshift <t>set currentobject colorshift <link>gecmd_set_current_colorshift
<t>set currentobject attributes <link>gecmd_set_current_attributes <t>set currentobject attributes <link>gecmd_set_current_attributes
<t>set currentobject type <link>gecmd_set_current_type <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 colortone <link>gecmd_set_current_colortone
<t>set currentobject access <link>gecmd_set_current_access <t>set currentobject access <link>gecmd_set_current_access
<t>set currentobject attr1 <link>gecmd_set_current_attr1 <t>set currentobject attr1 <link>gecmd_set_current_attr1
...@@ -3898,7 +3898,7 @@ PulldownMenu <t> 1 << 19 ...@@ -3898,7 +3898,7 @@ PulldownMenu <t> 1 << 19
OptionMenu <t> 1 << 20 OptionMenu <t> 1 << 20
</topic> </topic>
<topic>gecmd_set_current_color <topic>gecmd_set_current_color_
set currentobject color set currentobject color
Färger benämns vanligvis 'LowColor' eller 'LowColor2'. För dess anges index i färgpaletten. Färger benämns vanligvis 'LowColor' eller 'LowColor2'. För dess anges index i färgpaletten.
</topic> </topic>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.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="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="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> <a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;</a>
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Object Reference Manual</p> <p id="pwrhead">Object 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="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="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> <a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;</a>
</div> </div>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Programmers Reference Manual</p> <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="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="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> <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 @@ ...@@ -19,8 +19,8 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.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; Svenska &nbsp;</a> <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="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> <a id="pwrabouthigh" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;&nbsp;</a>
</div> </div>
......
...@@ -7,8 +7,9 @@ ...@@ -7,8 +7,9 @@
<h2 id="mainmenu">Configurator</h2> <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>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"> <img src="../qguide_conf.gif" alt="Configurator">
</body> </body>
</html> </html>
......
...@@ -6,7 +6,15 @@ ...@@ -6,7 +6,15 @@
<body> <body>
<h2 id="mainmenu">Database</h2> <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> <p></p><br>
</body> </body>
</html> </html>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<body> <body>
<h2 id="mainmenu">Ge Editor</h2> <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> </p><br>
<img src="../qguide_ge.gif" alt="Ge Editor"> <img src="../qguide_ge.gif" alt="Ge Editor">
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Quick Tour</p> <p id="pwrhead">Quick Tour</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="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="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> <a id="pwrabout" href="pwr_about_f.html" target="_top">&nbsp; About Proview &nbsp;&nbsp;</a>
</div> </div>
......
...@@ -5,13 +5,45 @@ ...@@ -5,13 +5,45 @@
</head> </head>
<body> <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> <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> </body>
</html> </html>
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
<h2 id="mainmenu">Runtime</h2> <h2 id="mainmenu">Runtime</h2>
<table id="mainmenu" border="1" cellspacing="0" width="100%"> <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_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_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</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> <tr><td id="mainmenu"><a id="mainmenu" href="qguide_appl.html" target="right">Applications</a></td></tr>
</table> </table>
<h2 id="mainmenu">HMI</h2> <h2 id="mainmenu">HMI</h2>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<body> <body>
<h2 id="mainmenu">Plc Editor</h2> <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> </p><br>
<img src="../qguide_plcedit.gif" alt="Plc Editor"> <img src="../qguide_plcedit.gif" alt="Plc Editor">
......
//**************************************************************** //****************************************************************
// Keep this copyright notice: // Keep this copyright notice:
// This copy of the script is the property of the owner of the // This copy of the script is the property of the owner of the
// particular web site you were visiting. // particular web site you were visiting.
// Do not download the script's files from there. // Do not download the script's files from there.
// For a free download and full instructions go to: // For a free download and full instructions go to:
// http://www.treeview.net // http://www.treeview.net
//**************************************************************** //****************************************************************
// Log of changes: // Log of changes:
// //
// 08 Jun 04 - Very small change to one error message // 08 Jun 04 - Very small change to one error message
// 21 Mar 04 - Support for folder.addChildren allows for much bigger trees // 21 Mar 04 - Support for folder.addChildren allows for much bigger trees
// 12 May 03 - Support for Safari Beta 3 // 12 May 03 - Support for Safari Beta 3
// 01 Mar 03 - VERSION 4.3 - Support for checkboxes // 01 Mar 03 - VERSION 4.3 - Support for checkboxes
// 21 Feb 03 - Added support for Opera 7 // 21 Feb 03 - Added support for Opera 7
// 22 Sep 02 - Added maySelect member for node-by-node control // 22 Sep 02 - Added maySelect member for node-by-node control
// of selection and highlight // of selection and highlight
// 21 Sep 02 - Cookie values are now separated by cookieCutter // 21 Sep 02 - Cookie values are now separated by cookieCutter
// 12 Sep 02 - VERSION 4.2 - Can highlight Selected Nodes and // 12 Sep 02 - VERSION 4.2 - Can highlight Selected Nodes and
// can preserve state through external (DB) IDs // can preserve state through external (DB) IDs
// 29 Aug 02 - Fine tune 'supportDeferral' for IE4 and IE Mac // 29 Aug 02 - Fine tune 'supportDeferral' for IE4 and IE Mac
// 25 Aug 02 - Fixes: STARTALLOPEN, and multi-page frameless // 25 Aug 02 - Fixes: STARTALLOPEN, and multi-page frameless
// 09 Aug 02 - Fix repeated folder on Mozilla 1.x // 09 Aug 02 - Fix repeated folder on Mozilla 1.x
// 31 Jul 02 - VERSION 4.1 - Dramatic speed increase for trees // 31 Jul 02 - VERSION 4.1 - Dramatic speed increase for trees
// with hundreds or thousands of nodes; changes to the control // with hundreds or thousands of nodes; changes to the control
// flags of the gLnk function // flags of the gLnk function
// 18 Jul 02 - Changes in pre-load images function // 18 Jul 02 - Changes in pre-load images function
// 13 Jun 02 - Add ICONPATH var to allow for gif subdir // 13 Jun 02 - Add ICONPATH var to allow for gif subdir
// 20 Apr 02 - Improve support for frame-less layout // 20 Apr 02 - Improve support for frame-less layout
// 07 Apr 02 - Minor changes to support server-side dynamic feeding // 07 Apr 02 - Minor changes to support server-side dynamic feeding
// (example: FavoritesManagerASP) // (example: FavoritesManagerASP)
// Definition of class Folder // Definition of class Folder
// ***************************************************************** // *****************************************************************
function Folder(folderDescription, hreference) //constructor function Folder(folderDescription, hreference) //constructor
{ {
//constant data //constant data
this.desc = folderDescription; this.desc = folderDescription;
this.hreference = hreference; this.hreference = hreference;
this.id = -1; this.id = -1;
this.navObj = 0; this.navObj = 0;
this.iconImg = 0; this.iconImg = 0;
this.nodeImg = 0; this.nodeImg = 0;
this.isLastNode = 0; this.isLastNode = 0;
this.iconSrc = ICONPATH + "ftv2folderopen.gif"; this.iconSrc = ICONPATH + "ftv2folderopen.gif";
this.iconSrcClosed = ICONPATH + "ftv2folderclosed.gif"; this.iconSrcClosed = ICONPATH + "ftv2folderclosed.gif";
this.children = new Array; this.children = new Array;
this.nChildren = 0; this.nChildren = 0;
this.level = 0; this.level = 0;
this.leftSideCoded = ""; this.leftSideCoded = "";
this.isLastNode=false; this.isLastNode=false;
this.parentObj = null; this.parentObj = null;
this.maySelect=true; this.maySelect=true;
this.prependHTML = "" this.prependHTML = ""
//dynamic data //dynamic data
this.isOpen = false this.isOpen = false
this.isLastOpenedFolder = false this.isLastOpenedFolder = false
this.isRendered = 0 this.isRendered = 0
//methods //methods
this.initialize = initializeFolder this.initialize = initializeFolder
this.setState = setStateFolder this.setState = setStateFolder
this.addChild = addChild this.addChild = addChild
this.addChildren = addChildren this.addChildren = addChildren
this.createIndex = createEntryIndex this.createIndex = createEntryIndex
this.escondeBlock = escondeBlock this.escondeBlock = escondeBlock
this.esconde = escondeFolder this.esconde = escondeFolder
this.folderMstr = folderMstr this.folderMstr = folderMstr
this.renderOb = drawFolder this.renderOb = drawFolder
this.totalHeight = totalHeight this.totalHeight = totalHeight
this.subEntries = folderSubEntries this.subEntries = folderSubEntries
this.linkHTML = linkFolderHTML this.linkHTML = linkFolderHTML
this.blockStartHTML = blockStartHTML this.blockStartHTML = blockStartHTML
this.blockEndHTML = blockEndHTML this.blockEndHTML = blockEndHTML
this.nodeImageSrc = nodeImageSrc this.nodeImageSrc = nodeImageSrc
this.iconImageSrc = iconImageSrc this.iconImageSrc = iconImageSrc
this.getID = getID this.getID = getID
this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
} }
function initializeFolder(level, lastNode, leftSide) function initializeFolder(level, lastNode, leftSide)
{ {
var j=0 var j=0
var i=0 var i=0
nc = this.nChildren nc = this.nChildren
this.createIndex() this.createIndex()
this.level = level this.level = level
this.leftSideCoded = leftSide this.leftSideCoded = leftSide
if (browserVersion == 0 || STARTALLOPEN==1) if (browserVersion == 0 || STARTALLOPEN==1)
this.isOpen=true; this.isOpen=true;
if (level>0) if (level>0)
if (lastNode) //the last child in the children array if (lastNode) //the last child in the children array
leftSide = leftSide + "0" leftSide = leftSide + "0"
else else
leftSide = leftSide + "1" leftSide = leftSide + "1"
this.isLastNode = lastNode this.isLastNode = lastNode
if (nc > 0) if (nc > 0)
{ {
level = level + 1 level = level + 1
for (i=0 ; i < this.nChildren; i++) 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].initialize == 'undefined') //document node was specified using the addChildren function
{ {
if (typeof this.children[i][0] == 'undefined' || typeof this.children[i] == 'string') if (typeof this.children[i][0] == 'undefined' || typeof this.children[i] == 'string')
{ {
this.children[i] = ["item incorrectly defined", ""]; this.children[i] = ["item incorrectly defined", ""];
} }
//Basic initialization of the Item object //Basic initialization of the Item object
//These members or methods are needed even before the Item is rendered //These members or methods are needed even before the Item is rendered
this.children[i].initialize=initializeItem; this.children[i].initialize=initializeItem;
this.children[i].createIndex=createEntryIndex; this.children[i].createIndex=createEntryIndex;
if (typeof this.children[i].maySelect == 'undefined') if (typeof this.children[i].maySelect == 'undefined')
this.children[i].maySelect=true this.children[i].maySelect=true
this.children[i].forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders this.children[i].forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
} }
if (i == this.nChildren-1) if (i == this.nChildren-1)
this.children[i].initialize(level, 1, leftSide) this.children[i].initialize(level, 1, leftSide)
else else
this.children[i].initialize(level, 0, leftSide) this.children[i].initialize(level, 0, leftSide)
} }
} }
} }
function drawFolder(insertAtObj) function drawFolder(insertAtObj)
{ {
var nodeName = "" var nodeName = ""
var auxEv = "" var auxEv = ""
var docW = "" var docW = ""
var i=0 var i=0
finalizeCreationOfChildDocs(this) finalizeCreationOfChildDocs(this)
var leftSide = leftSideHTML(this.leftSideCoded) var leftSide = leftSideHTML(this.leftSideCoded)
if (browserVersion > 0) if (browserVersion > 0)
auxEv = "<a href='javascript:clickOnNode(\""+this.getID()+"\")'>" auxEv = "<a href='javascript:clickOnNode(\""+this.getID()+"\")'>"
else else
auxEv = "<a>" auxEv = "<a>"
nodeName = this.nodeImageSrc() nodeName = this.nodeImageSrc()
if (this.level>0) if (this.level>0)
if (this.isLastNode) //the last child in the children array 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>" 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 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>" 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 this.isRendered = 1
if (browserVersion == 2) { if (browserVersion == 2) {
if (!doc.yPos) if (!doc.yPos)
doc.yPos=20 doc.yPos=20
} }
docW = this.blockStartHTML("folder"); docW = this.blockStartHTML("folder");
docW = docW + "<tr>" + leftSide + "<td valign=top>"; docW = docW + "<tr>" + leftSide + "<td valign=top>";
if (USEICONS) if (USEICONS)
{ {
docW = docW + this.linkHTML(false) docW = docW + this.linkHTML(false)
docW = docW + "<img id='folderIcon" + this.id + "' name='folderIcon" + this.id + "' src='" + this.iconImageSrc() + "' border=0></a>" docW = docW + "<img id='folderIcon" + this.id + "' name='folderIcon" + this.id + "' src='" + this.iconImageSrc() + "' border=0></a>"
} }
else else
{ {
if (this.prependHTML == "") if (this.prependHTML == "")
docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=2>" docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=2>"
} }
if (WRAPTEXT) if (WRAPTEXT)
docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>" docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
else else
docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>" docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
if (USETEXTLINKS) if (USETEXTLINKS)
{ {
docW = docW + this.linkHTML(true) docW = docW + this.linkHTML(true)
docW = docW + this.desc + "</a>" docW = docW + this.desc + "</a>"
} }
else else
docW = docW + this.desc docW = docW + this.desc
docW = docW + "</td>" docW = docW + "</td>"
docW = docW + this.blockEndHTML() docW = docW + this.blockEndHTML()
if (insertAtObj == null) if (insertAtObj == null)
{ {
if (supportsDeferral) { if (supportsDeferral) {
doc.write("<div id=domRoot></div>") //transition between regular flow HTML, and node-insert DOM DHTML doc.write("<div id=domRoot></div>") //transition between regular flow HTML, and node-insert DOM DHTML
insertAtObj = getElById("domRoot") insertAtObj = getElById("domRoot")
insertAtObj.insertAdjacentHTML("beforeEnd", docW) insertAtObj.insertAdjacentHTML("beforeEnd", docW)
} }
else else
doc.write(docW) doc.write(docW)
} }
else else
{ {
insertAtObj.insertAdjacentHTML("afterEnd", docW) insertAtObj.insertAdjacentHTML("afterEnd", docW)
} }
if (browserVersion == 2) if (browserVersion == 2)
{ {
this.navObj = doc.layers["folder"+this.id] this.navObj = doc.layers["folder"+this.id]
if (USEICONS) if (USEICONS)
this.iconImg = this.navObj.document.images["folderIcon"+this.id] this.iconImg = this.navObj.document.images["folderIcon"+this.id]
this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height doc.yPos=doc.yPos+this.navObj.clip.height
} }
else if (browserVersion != 0) else if (browserVersion != 0)
{ {
this.navObj = getElById("folder"+this.id) this.navObj = getElById("folder"+this.id)
if (USEICONS) if (USEICONS)
this.iconImg = getElById("folderIcon"+this.id) this.iconImg = getElById("folderIcon"+this.id)
this.nodeImg = getElById("nodeIcon"+this.id) this.nodeImg = getElById("nodeIcon"+this.id)
} }
} }
function setStateFolder(isOpen) function setStateFolder(isOpen)
{ {
var subEntries var subEntries
var totalHeight var totalHeight
var fIt = 0 var fIt = 0
var i=0 var i=0
var currentOpen var currentOpen
if (isOpen == this.isOpen) if (isOpen == this.isOpen)
return return
if (browserVersion == 2) if (browserVersion == 2)
{ {
totalHeight = 0 totalHeight = 0
for (i=0; i < this.nChildren; i++) for (i=0; i < this.nChildren; i++)
totalHeight = totalHeight + this.children[i].navObj.clip.height totalHeight = totalHeight + this.children[i].navObj.clip.height
subEntries = this.subEntries() subEntries = this.subEntries()
if (this.isOpen) if (this.isOpen)
totalHeight = 0 - totalHeight totalHeight = 0 - totalHeight
for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++)
indexOfEntries[fIt].navObj.moveBy(0, totalHeight) indexOfEntries[fIt].navObj.moveBy(0, totalHeight)
} }
this.isOpen = isOpen; this.isOpen = isOpen;
if (this.getID()!=foldersTree.getID() && PRESERVESTATE && !this.isOpen) //closing if (this.getID()!=foldersTree.getID() && PRESERVESTATE && !this.isOpen) //closing
{ {
currentOpen = GetCookie("clickedFolder") currentOpen = GetCookie("clickedFolder")
if (currentOpen != null) { if (currentOpen != null) {
currentOpen = currentOpen.replace(this.getID()+cookieCutter, "") currentOpen = currentOpen.replace(this.getID()+cookieCutter, "")
SetCookie("clickedFolder", currentOpen) SetCookie("clickedFolder", currentOpen)
} }
} }
if (!this.isOpen && this.isLastOpenedfolder) if (!this.isOpen && this.isLastOpenedfolder)
{ {
lastOpenedFolder = null; lastOpenedFolder = null;
this.isLastOpenedfolder = false; this.isLastOpenedfolder = false;
} }
propagateChangesInState(this) propagateChangesInState(this)
} }
function propagateChangesInState(folder) function propagateChangesInState(folder)
{ {
var i=0 var i=0
//Change icon //Change icon
if (folder.nChildren > 0 && folder.level>0) //otherwise the one given at render stays if (folder.nChildren > 0 && folder.level>0) //otherwise the one given at render stays
folder.nodeImg.src = folder.nodeImageSrc() folder.nodeImg.src = folder.nodeImageSrc()
//Change node //Change node
if (USEICONS) if (USEICONS)
folder.iconImg.src = folder.iconImageSrc() folder.iconImg.src = folder.iconImageSrc()
//Propagate changes //Propagate changes
for (i=folder.nChildren-1; i>=0; i--) { for (i=folder.nChildren-1; i>=0; i--) {
if (folder.isOpen) if (folder.isOpen)
folder.children[i].folderMstr(folder.navObj) folder.children[i].folderMstr(folder.navObj)
else else
folder.children[i].esconde() folder.children[i].esconde()
} }
} }
function escondeFolder() function escondeFolder()
{ {
this.escondeBlock() this.escondeBlock()
this.setState(0) this.setState(0)
} }
function linkFolderHTML(isTextLink) function linkFolderHTML(isTextLink)
{ {
var docW = ""; var docW = "";
if (this.hreference) if (this.hreference)
{ {
if (USEFRAMES) if (USEFRAMES)
docW = docW + "<a href='" + this.hreference + "' TARGET=\"basefrm\" " docW = docW + "<a href='" + this.hreference + "' TARGET=\"basefrm\" "
else else
docW = docW + "<a href='" + this.hreference + "' TARGET=_top " docW = docW + "<a href='" + this.hreference + "' TARGET=_top "
if (isTextLink) { if (isTextLink) {
docW += "id=\"itemTextLink"+this.id+"\" "; docW += "id=\"itemTextLink"+this.id+"\" ";
} }
if (browserVersion > 0) if (browserVersion > 0)
docW = docW + "onClick='javascript:clickOnFolder(\""+this.getID()+"\")'" docW = docW + "onClick='javascript:clickOnFolder(\""+this.getID()+"\")'"
docW = docW + ">" docW = docW + ">"
} }
else else
docW = docW + "<a>" docW = docW + "<a>"
return docW; return docW;
} }
function addChild(childNode) function addChild(childNode)
{ {
this.children[this.nChildren] = childNode this.children[this.nChildren] = childNode
childNode.parentObj = this childNode.parentObj = this
this.nChildren++ this.nChildren++
return childNode return childNode
} }
//The list can contain either a Folder object or a sub list with the arguments for Item //The list can contain either a Folder object or a sub list with the arguments for Item
function addChildren(listOfChildren) function addChildren(listOfChildren)
{ {
this.children = listOfChildren this.children = listOfChildren
this.nChildren = listOfChildren.length this.nChildren = listOfChildren.length
for (i=0; i<this.nChildren; i++) for (i=0; i<this.nChildren; i++)
this.children[i].parentObj = this this.children[i].parentObj = this
} }
function folderSubEntries() function folderSubEntries()
{ {
var i = 0 var i = 0
var se = this.nChildren var se = this.nChildren
for (i=0; i < this.nChildren; i++){ for (i=0; i < this.nChildren; i++){
if (this.children[i].children) //is a folder if (this.children[i].children) //is a folder
se = se + this.children[i].subEntries() se = se + this.children[i].subEntries()
} }
return se return se
} }
function nodeImageSrc() { function nodeImageSrc() {
var srcStr = ""; var srcStr = "";
if (this.isLastNode) //the last child in the children array if (this.isLastNode) //the last child in the children array
{ {
if (this.nChildren == 0) if (this.nChildren == 0)
srcStr = ICONPATH + "ftv2lastnode.gif" srcStr = ICONPATH + "ftv2lastnode.gif"
else else
if (this.isOpen) if (this.isOpen)
srcStr = ICONPATH + "ftv2mlastnode.gif" srcStr = ICONPATH + "ftv2mlastnode.gif"
else else
srcStr = ICONPATH + "ftv2plastnode.gif" srcStr = ICONPATH + "ftv2plastnode.gif"
} }
else else
{ {
if (this.nChildren == 0) if (this.nChildren == 0)
srcStr = ICONPATH + "ftv2node.gif" srcStr = ICONPATH + "ftv2node.gif"
else else
if (this.isOpen) if (this.isOpen)
srcStr = ICONPATH + "ftv2mnode.gif" srcStr = ICONPATH + "ftv2mnode.gif"
else else
srcStr = ICONPATH + "ftv2pnode.gif" srcStr = ICONPATH + "ftv2pnode.gif"
} }
return srcStr; return srcStr;
} }
function iconImageSrc() { function iconImageSrc() {
if (this.isOpen) if (this.isOpen)
return(this.iconSrc) return(this.iconSrc)
else else
return(this.iconSrcClosed) return(this.iconSrcClosed)
} }
// Definition of class Item (a document or link inside a Folder) // Definition of class Item (a document or link inside a Folder)
// ************************************************************* // *************************************************************
function Item(itemDescription) // Constructor function Item(itemDescription) // Constructor
{ {
// constant data // constant data
this.desc = itemDescription this.desc = itemDescription
this.level = 0 this.level = 0
this.isLastNode = false this.isLastNode = false
this.leftSideCoded = "" this.leftSideCoded = ""
this.parentObj = null this.parentObj = null
this.maySelect=true this.maySelect=true
this.initialize = initializeItem; this.initialize = initializeItem;
this.createIndex = createEntryIndex; this.createIndex = createEntryIndex;
this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders; this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders;
finalizeCreationOfItem(this) finalizeCreationOfItem(this)
} }
//Assignments that can be delayed when the item is created with folder.addChildren //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 //The assignments that cannot be delayed are done in addChildren and in initializeFolder
//Additionaly, some assignments are also done in finalizeCreationOfChildDocs itself //Additionaly, some assignments are also done in finalizeCreationOfChildDocs itself
function finalizeCreationOfItem(itemArray) function finalizeCreationOfItem(itemArray)
{ {
itemArray.navObj = 0 //initialized in render() itemArray.navObj = 0 //initialized in render()
itemArray.iconImg = 0 //initialized in render() itemArray.iconImg = 0 //initialized in render()
itemArray.iconSrc = ICONPATH + "ftv2doc.gif" itemArray.iconSrc = ICONPATH + "ftv2doc.gif"
itemArray.isRendered = 0 itemArray.isRendered = 0
itemArray.nChildren = 0 itemArray.nChildren = 0
itemArray.prependHTML = "" itemArray.prependHTML = ""
// methods // methods
itemArray.escondeBlock = escondeBlock itemArray.escondeBlock = escondeBlock
itemArray.esconde = escondeBlock itemArray.esconde = escondeBlock
itemArray.folderMstr = folderMstr itemArray.folderMstr = folderMstr
itemArray.renderOb = drawItem itemArray.renderOb = drawItem
itemArray.totalHeight = totalHeight itemArray.totalHeight = totalHeight
itemArray.blockStartHTML = blockStartHTML itemArray.blockStartHTML = blockStartHTML
itemArray.blockEndHTML = blockEndHTML itemArray.blockEndHTML = blockEndHTML
itemArray.getID = getID itemArray.getID = getID
} }
function initializeItem(level, lastNode, leftSide) function initializeItem(level, lastNode, leftSide)
{ {
this.createIndex() this.createIndex()
this.level = level this.level = level
this.leftSideCoded = leftSide this.leftSideCoded = leftSide
this.isLastNode = lastNode this.isLastNode = lastNode
} }
function drawItem(insertAtObj) function drawItem(insertAtObj)
{ {
var leftSide = leftSideHTML(this.leftSideCoded) var leftSide = leftSideHTML(this.leftSideCoded)
var docW = "" var docW = ""
var fullLink = "href=\""+this.link+"\" target=\""+this.target+"\" onClick=\"clickOnLink('"+this.getID()+"\', '"+this.link+"','"+this.target+"');return false;\""; var fullLink = "href=\""+this.link+"\" target=\""+this.target+"\" onClick=\"clickOnLink('"+this.getID()+"\', '"+this.link+"','"+this.target+"');return false;\"";
this.isRendered = 1 this.isRendered = 1
if (this.level>0) if (this.level>0)
if (this.isLastNode) //the last 'brother' in the children array 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>" leftSide = leftSide + "<td valign=top><img src='" + ICONPATH + "ftv2lastnode.gif' width=16 height=22></td>"
} }
else else
{ {
leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2node.gif' width=16 height=22></td>" 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 + this.blockStartHTML("item")
docW = docW + "<tr>" + leftSide + "<td valign=top>" docW = docW + "<tr>" + leftSide + "<td valign=top>"
if (USEICONS) if (USEICONS)
docW = docW + "<a " + fullLink + " id=\"itemIconLink"+this.id+"\">" + "<img id='itemIcon"+this.id+"' " + "src='"+this.iconSrc+"' border=0>" + "</a>" docW = docW + "<a " + fullLink + " id=\"itemIconLink"+this.id+"\">" + "<img id='itemIcon"+this.id+"' " + "src='"+this.iconSrc+"' border=0>" + "</a>"
else else
if (this.prependHTML == "") if (this.prependHTML == "")
docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=3>" docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=3>"
if (WRAPTEXT) if (WRAPTEXT)
docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>" docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
else else
docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>" docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
if (USETEXTLINKS) if (USETEXTLINKS)
docW = docW + "<a " + fullLink + " id=\"itemTextLink"+this.id+"\">" + this.desc + "</a>" docW = docW + "<a " + fullLink + " id=\"itemTextLink"+this.id+"\">" + this.desc + "</a>"
else else
docW = docW + this.desc docW = docW + this.desc
docW = docW + "</td>" docW = docW + "</td>"
docW = docW + this.blockEndHTML() docW = docW + this.blockEndHTML()
if (insertAtObj == null) if (insertAtObj == null)
{ {
doc.write(docW) doc.write(docW)
} }
else else
{ {
insertAtObj.insertAdjacentHTML("afterEnd", docW) insertAtObj.insertAdjacentHTML("afterEnd", docW)
} }
if (browserVersion == 2) { if (browserVersion == 2) {
this.navObj = doc.layers["item"+this.id] this.navObj = doc.layers["item"+this.id]
if (USEICONS) if (USEICONS)
this.iconImg = this.navObj.document.images["itemIcon"+this.id] this.iconImg = this.navObj.document.images["itemIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height doc.yPos=doc.yPos+this.navObj.clip.height
} else if (browserVersion != 0) { } else if (browserVersion != 0) {
this.navObj = getElById("item"+this.id) this.navObj = getElById("item"+this.id)
if (USEICONS) if (USEICONS)
this.iconImg = getElById("itemIcon"+this.id) this.iconImg = getElById("itemIcon"+this.id)
} }
} }
// Methods common to both objects (pseudo-inheritance) // Methods common to both objects (pseudo-inheritance)
// ******************************************************** // ********************************************************
function forceOpeningOfAncestorFolders() { function forceOpeningOfAncestorFolders() {
if (this.parentObj == null || this.parentObj.isOpen) if (this.parentObj == null || this.parentObj.isOpen)
return return
else { else {
this.parentObj.forceOpeningOfAncestorFolders() this.parentObj.forceOpeningOfAncestorFolders()
clickOnNodeObj(this.parentObj) clickOnNodeObj(this.parentObj)
} }
} }
function escondeBlock() function escondeBlock()
{ {
if (browserVersion == 1 || browserVersion == 3) { if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none") if (this.navObj.style.display == "none")
return return
this.navObj.style.display = "none" this.navObj.style.display = "none"
} else { } else {
if (this.navObj.visibility == "hidden") if (this.navObj.visibility == "hidden")
return return
this.navObj.visibility = "hidden" this.navObj.visibility = "hidden"
} }
} }
function folderMstr(domObj) function folderMstr(domObj)
{ {
if (browserVersion == 1 || browserVersion == 3) { if (browserVersion == 1 || browserVersion == 3) {
if (t==-1) if (t==-1)
return return
var str = new String(doc.links[t]) var str = new String(doc.links[t])
if (str.slice(14,16) != "em") if (str.slice(14,16) != "em")
return return
} }
if (!this.isRendered) if (!this.isRendered)
this.renderOb(domObj) this.renderOb(domObj)
else else
if (browserVersion == 1 || browserVersion == 3) if (browserVersion == 1 || browserVersion == 3)
this.navObj.style.display = "block" this.navObj.style.display = "block"
else else
this.navObj.visibility = "show" this.navObj.visibility = "show"
} }
function blockStartHTML(idprefix) { function blockStartHTML(idprefix) {
var idParam = "id='" + idprefix + this.id + "'" var idParam = "id='" + idprefix + this.id + "'"
var docW = "" var docW = ""
if (browserVersion == 2) if (browserVersion == 2)
docW = "<layer "+ idParam + " top=" + doc.yPos + " visibility=show>" docW = "<layer "+ idParam + " top=" + doc.yPos + " visibility=show>"
else if (browserVersion != 0) else if (browserVersion != 0)
docW = "<div " + idParam + " style='display:block; position:block;'>" docW = "<div " + idParam + " style='display:block; position:block;'>"
docW = docW + "<table border=0 cellspacing=0 cellpadding=0 width=100% >" docW = docW + "<table border=0 cellspacing=0 cellpadding=0 width=100% >"
return docW return docW
} }
function blockEndHTML() { function blockEndHTML() {
var docW = "" var docW = ""
docW = "</table>" docW = "</table>"
if (browserVersion == 2) if (browserVersion == 2)
docW = docW + "</layer>" docW = docW + "</layer>"
else if (browserVersion != 0) else if (browserVersion != 0)
docW = docW + "</div>" docW = docW + "</div>"
return docW return docW
} }
function createEntryIndex() function createEntryIndex()
{ {
this.id = nEntries this.id = nEntries
indexOfEntries[nEntries] = this indexOfEntries[nEntries] = this
nEntries++ nEntries++
} }
// total height of subEntries open // total height of subEntries open
function totalHeight() //used with browserVersion == 2 function totalHeight() //used with browserVersion == 2
{ {
var h = this.navObj.clip.height var h = this.navObj.clip.height
var i = 0 var i = 0
if (this.isOpen) //is a folder and _is_ open if (this.isOpen) //is a folder and _is_ open
for (i=0 ; i < this.nChildren; i++) for (i=0 ; i < this.nChildren; i++)
h = h + this.children[i].totalHeight() h = h + this.children[i].totalHeight()
return h return h
} }
function leftSideHTML(leftSideCoded) { function leftSideHTML(leftSideCoded) {
var i; var i;
var retStr = ""; var retStr = "";
for (i=0; i<leftSideCoded.length; i++) for (i=0; i<leftSideCoded.length; i++)
{ {
if (leftSideCoded.charAt(i) == "1") if (leftSideCoded.charAt(i) == "1")
{ {
retStr = retStr + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2vertline.gif' width=16 height=22></td>" retStr = retStr + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2vertline.gif' width=16 height=22></td>"
} }
if (leftSideCoded.charAt(i) == "0") if (leftSideCoded.charAt(i) == "0")
{ {
retStr = retStr + "<td valign=top><img src='" + ICONPATH + "ftv2blank.gif' width=16 height=22></td>" retStr = retStr + "<td valign=top><img src='" + ICONPATH + "ftv2blank.gif' width=16 height=22></td>"
} }
} }
return retStr return retStr
} }
function getID() function getID()
{ {
//define a .xID in all nodes (folders and items) if you want to PERVESTATE that //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 //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 //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 //The value may be numeric or string, but cannot have the same char used in cookieCutter
if (typeof this.xID != "undefined") if (typeof this.xID != "undefined")
return this.xID return this.xID
else else
return this.id return this.id
} }
// Events // Events
// ********************************************************* // *********************************************************
function clickOnFolder(folderId) function clickOnFolder(folderId)
{ {
var clicked = findObj(folderId) var clicked = findObj(folderId)
if (typeof clicked=='undefined' || clicked==null) 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.") 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; return;
} }
if (!clicked.isOpen) { if (!clicked.isOpen) {
clickOnNodeObj(clicked) clickOnNodeObj(clicked)
} }
if (lastOpenedFolder != null && lastOpenedFolder != folderId) if (lastOpenedFolder != null && lastOpenedFolder != folderId)
clickOnNode(lastOpenedFolder); //sets lastOpenedFolder to null clickOnNode(lastOpenedFolder); //sets lastOpenedFolder to null
if (clicked.nChildren==0) { if (clicked.nChildren==0) {
lastOpenedFolder = folderId; lastOpenedFolder = folderId;
clicked.isLastOpenedfolder = true clicked.isLastOpenedfolder = true
} }
if (isLinked(clicked.hreference)) { if (isLinked(clicked.hreference)) {
highlightObjLink(clicked); highlightObjLink(clicked);
} }
} }
function clickOnNode(folderId) function clickOnNode(folderId)
{ {
fOb = findObj(folderId); fOb = findObj(folderId);
if (typeof fOb=='undefined' || fOb==null) 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.") 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; return;
} }
clickOnNodeObj(fOb); clickOnNodeObj(fOb);
} }
function clickOnNodeObj(folderObj) function clickOnNodeObj(folderObj)
{ {
var state = 0 var state = 0
var currentOpen var currentOpen
state = folderObj.isOpen state = folderObj.isOpen
folderObj.setState(!state) //open<->close folderObj.setState(!state) //open<->close
if (folderObj.id!=foldersTree.id && PRESERVESTATE) if (folderObj.id!=foldersTree.id && PRESERVESTATE)
{ {
currentOpen = GetCookie("clickedFolder") currentOpen = GetCookie("clickedFolder")
if (currentOpen == null) if (currentOpen == null)
currentOpen = "" currentOpen = ""
if (!folderObj.isOpen) //closing if (!folderObj.isOpen) //closing
{ {
currentOpen = currentOpen.replace(folderObj.getID()+cookieCutter, "") currentOpen = currentOpen.replace(folderObj.getID()+cookieCutter, "")
SetCookie("clickedFolder", currentOpen) SetCookie("clickedFolder", currentOpen)
} }
else else
SetCookie("clickedFolder", currentOpen+folderObj.getID()+cookieCutter) SetCookie("clickedFolder", currentOpen+folderObj.getID()+cookieCutter)
} }
} }
function clickOnLink(clickedId, target, windowName) { function clickOnLink(clickedId, target, windowName) {
highlightObjLink(findObj(clickedId)); highlightObjLink(findObj(clickedId));
if (isLinked(target)) { if (isLinked(target)) {
window.open(target,windowName); window.open(target,windowName);
} }
} }
function ld () function ld ()
{ {
return document.links.length-1 return document.links.length-1
} }
// Auxiliary Functions // Auxiliary Functions
// ******************* // *******************
function finalizeCreationOfChildDocs(folderObj) { function finalizeCreationOfChildDocs(folderObj) {
for(i=0; i < folderObj.nChildren; i++) { for(i=0; i < folderObj.nChildren; i++) {
child = folderObj.children[i] child = folderObj.children[i]
if (typeof child[0] != 'undefined') if (typeof child[0] != 'undefined')
{ {
// Amazingly, arrays can have members, so a = ["a", "b"]; a.desc="asdas" works // 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 // If a doc was inserted as an array, we can transform it into an itemObj by adding
// the missing members and functions // the missing members and functions
child.desc = child[0] child.desc = child[0]
setItemLink(child, GLOBALTARGET, child[1]) setItemLink(child, GLOBALTARGET, child[1])
finalizeCreationOfItem(child) finalizeCreationOfItem(child)
} }
} }
} }
function findObj(id) function findObj(id)
{ {
var i=0; var i=0;
var nodeObj; var nodeObj;
if (typeof foldersTree.xID != "undefined") { if (typeof foldersTree.xID != "undefined") {
nodeObj = indexOfEntries[i]; nodeObj = indexOfEntries[i];
for(i=0;i<nEntries&&indexOfEntries[i].xID!=id;i++) //may need optimization for(i=0;i<nEntries&&indexOfEntries[i].xID!=id;i++) //may need optimization
; ;
id = i id = i
} }
if (id >= nEntries) if (id >= nEntries)
return null; //example: node removed in DB return null; //example: node removed in DB
else else
return indexOfEntries[id]; return indexOfEntries[id];
} }
function isLinked(hrefText) { function isLinked(hrefText) {
var result = true; var result = true;
result = (result && hrefText !=null); result = (result && hrefText !=null);
result = (result && hrefText != ''); result = (result && hrefText != '');
result = (result && hrefText.indexOf('undefined') < 0); result = (result && hrefText.indexOf('undefined') < 0);
result = (result && hrefText.indexOf('parent.op') < 0); result = (result && hrefText.indexOf('parent.op') < 0);
return result; return result;
} }
// Do highlighting by changing background and foreg. colors of folder or doc text // Do highlighting by changing background and foreg. colors of folder or doc text
function highlightObjLink(nodeObj) { function highlightObjLink(nodeObj) {
if (!HIGHLIGHT || nodeObj==null || nodeObj.maySelect==false) {//node deleted in DB if (!HIGHLIGHT || nodeObj==null || nodeObj.maySelect==false) {//node deleted in DB
return; return;
} }
if (browserVersion == 1 || browserVersion == 3) { if (browserVersion == 1 || browserVersion == 3) {
var clickedDOMObj = getElById('itemTextLink'+nodeObj.id); var clickedDOMObj = getElById('itemTextLink'+nodeObj.id);
if (clickedDOMObj != null) { if (clickedDOMObj != null) {
if (lastClicked != null) { if (lastClicked != null) {
var prevClickedDOMObj = getElById('itemTextLink'+lastClicked.id); var prevClickedDOMObj = getElById('itemTextLink'+lastClicked.id);
prevClickedDOMObj.style.color=lastClickedColor; prevClickedDOMObj.style.color=lastClickedColor;
prevClickedDOMObj.style.backgroundColor=lastClickedBgColor; prevClickedDOMObj.style.backgroundColor=lastClickedBgColor;
} }
lastClickedColor = clickedDOMObj.style.color; lastClickedColor = clickedDOMObj.style.color;
lastClickedBgColor = clickedDOMObj.style.backgroundColor; lastClickedBgColor = clickedDOMObj.style.backgroundColor;
clickedDOMObj.style.color=HIGHLIGHT_COLOR; clickedDOMObj.style.color=HIGHLIGHT_COLOR;
clickedDOMObj.style.backgroundColor=HIGHLIGHT_BG; clickedDOMObj.style.backgroundColor=HIGHLIGHT_BG;
} }
} }
lastClicked = nodeObj; lastClicked = nodeObj;
if (PRESERVESTATE) if (PRESERVESTATE)
SetCookie('highlightedTreeviewLink', nodeObj.getID()); SetCookie('highlightedTreeviewLink', nodeObj.getID());
} }
function insFld(parentFolder, childFolder) function insFld(parentFolder, childFolder)
{ {
return parentFolder.addChild(childFolder) return parentFolder.addChild(childFolder)
} }
function insDoc(parentFolder, document) function insDoc(parentFolder, document)
{ {
return parentFolder.addChild(document) return parentFolder.addChild(document)
} }
function gFld(description, hreference) function gFld(description, hreference)
{ {
folder = new Folder(description, hreference); folder = new Folder(description, hreference);
return folder; return folder;
} }
function gLnk(optionFlags, description, linkData) function gLnk(optionFlags, description, linkData)
{ {
if (optionFlags>=0) { //is numeric (old style) or empty (error) 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 //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"); alert("Change your Treeview configuration file to use the new style of target argument in gLnk");
return; return;
} }
newItem = new Item(description); newItem = new Item(description);
setItemLink(newItem, optionFlags, linkData); setItemLink(newItem, optionFlags, linkData);
return newItem; return newItem;
} }
function setItemLink(item, optionFlags, linkData) { function setItemLink(item, optionFlags, linkData) {
var targetFlag = ""; var targetFlag = "";
var target = ""; var target = "";
var protocolFlag = ""; var protocolFlag = "";
var protocol = ""; var protocol = "";
targetFlag = optionFlags.charAt(0) targetFlag = optionFlags.charAt(0)
if (targetFlag=="B") if (targetFlag=="B")
target = "_blank" target = "_blank"
if (targetFlag=="P") if (targetFlag=="P")
target = "_parent" target = "_parent"
if (targetFlag=="R") if (targetFlag=="R")
target = "basefrm" target = "basefrm"
if (targetFlag=="S") if (targetFlag=="S")
target = "_self" target = "_self"
if (targetFlag=="T") if (targetFlag=="T")
target = "_top" target = "_top"
if (optionFlags.length > 1) { if (optionFlags.length > 1) {
protocolFlag = optionFlags.charAt(1) protocolFlag = optionFlags.charAt(1)
if (protocolFlag=="h") if (protocolFlag=="h")
protocol = "http://" protocol = "http://"
if (protocolFlag=="s") if (protocolFlag=="s")
protocol = "https://" protocol = "https://"
if (protocolFlag=="f") if (protocolFlag=="f")
protocol = "ftp://" protocol = "ftp://"
if (protocolFlag=="m") if (protocolFlag=="m")
protocol = "mailto:" protocol = "mailto:"
} }
item.link = protocol+linkData; item.link = protocol+linkData;
item.target = target item.target = target
} }
//Function created for backwards compatibility purposes //Function created for backwards compatibility purposes
//Function contents voided in March 2004 //Function contents voided in March 2004
function oldGLnk(target, description, linkData) function oldGLnk(target, description, linkData)
{ {
} }
function preLoadIcons() { function preLoadIcons() {
var auxImg var auxImg
auxImg = new Image(); auxImg = new Image();
auxImg.src = ICONPATH + "ftv2vertline.gif"; auxImg.src = ICONPATH + "ftv2vertline.gif";
auxImg.src = ICONPATH + "ftv2mlastnode.gif"; auxImg.src = ICONPATH + "ftv2mlastnode.gif";
auxImg.src = ICONPATH + "ftv2mnode.gif"; auxImg.src = ICONPATH + "ftv2mnode.gif";
auxImg.src = ICONPATH + "ftv2plastnode.gif"; auxImg.src = ICONPATH + "ftv2plastnode.gif";
auxImg.src = ICONPATH + "ftv2pnode.gif"; auxImg.src = ICONPATH + "ftv2pnode.gif";
auxImg.src = ICONPATH + "ftv2blank.gif"; auxImg.src = ICONPATH + "ftv2blank.gif";
auxImg.src = ICONPATH + "ftv2lastnode.gif"; auxImg.src = ICONPATH + "ftv2lastnode.gif";
auxImg.src = ICONPATH + "ftv2node.gif"; auxImg.src = ICONPATH + "ftv2node.gif";
auxImg.src = ICONPATH + "ftv2folderclosed.gif"; auxImg.src = ICONPATH + "ftv2folderclosed.gif";
auxImg.src = ICONPATH + "ftv2folderopen.gif"; auxImg.src = ICONPATH + "ftv2folderopen.gif";
auxImg.src = ICONPATH + "ftv2doc.gif"; auxImg.src = ICONPATH + "ftv2doc.gif";
} }
//Open some folders for initial layout, if necessary //Open some folders for initial layout, if necessary
function setInitialLayout() { function setInitialLayout() {
if (browserVersion > 0 && !STARTALLOPEN) if (browserVersion > 0 && !STARTALLOPEN)
clickOnNodeObj(foldersTree); clickOnNodeObj(foldersTree);
if (!STARTALLOPEN && (browserVersion > 0) && PRESERVESTATE) if (!STARTALLOPEN && (browserVersion > 0) && PRESERVESTATE)
PersistentFolderOpening(); PersistentFolderOpening();
} }
//Used with NS4 and STARTALLOPEN //Used with NS4 and STARTALLOPEN
function renderAllTree(nodeObj, parent) { function renderAllTree(nodeObj, parent) {
var i=0; var i=0;
nodeObj.renderOb(parent) nodeObj.renderOb(parent)
if (supportsDeferral) if (supportsDeferral)
for (i=nodeObj.nChildren-1; i>=0; i--) for (i=nodeObj.nChildren-1; i>=0; i--)
renderAllTree(nodeObj.children[i], nodeObj.navObj) renderAllTree(nodeObj.children[i], nodeObj.navObj)
else else
for (i=0 ; i < nodeObj.nChildren; i++) for (i=0 ; i < nodeObj.nChildren; i++)
renderAllTree(nodeObj.children[i], null) renderAllTree(nodeObj.children[i], null)
} }
function hideWholeTree(nodeObj, hideThisOne, nodeObjMove) { function hideWholeTree(nodeObj, hideThisOne, nodeObjMove) {
var i=0; var i=0;
var heightContained=0; var heightContained=0;
var childrenMove=nodeObjMove; var childrenMove=nodeObjMove;
if (hideThisOne) if (hideThisOne)
nodeObj.escondeBlock() nodeObj.escondeBlock()
if (browserVersion == 2) if (browserVersion == 2)
nodeObj.navObj.moveBy(0, 0-nodeObjMove) nodeObj.navObj.moveBy(0, 0-nodeObjMove)
for (i=0 ; i < nodeObj.nChildren; i++) { for (i=0 ; i < nodeObj.nChildren; i++) {
heightContainedInChild = hideWholeTree(nodeObj.children[i], true, childrenMove) heightContainedInChild = hideWholeTree(nodeObj.children[i], true, childrenMove)
if (browserVersion == 2) { if (browserVersion == 2) {
heightContained = heightContained + heightContainedInChild + nodeObj.children[i].navObj.clip.height heightContained = heightContained + heightContainedInChild + nodeObj.children[i].navObj.clip.height
childrenMove = childrenMove + heightContainedInChild childrenMove = childrenMove + heightContainedInChild
} }
} }
return heightContained; return heightContained;
} }
// Simulating inserAdjacentHTML on NS6 // Simulating inserAdjacentHTML on NS6
// Code by thor@jscript.dk // Code by thor@jscript.dk
// ****************************************** // ******************************************
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){ if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode) HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode)
{ {
switch (where){ switch (where){
case 'beforeBegin': case 'beforeBegin':
this.parentNode.insertBefore(parsedNode,this) this.parentNode.insertBefore(parsedNode,this)
break; break;
case 'afterBegin': case 'afterBegin':
this.insertBefore(parsedNode,this.firstChild); this.insertBefore(parsedNode,this.firstChild);
break; break;
case 'beforeEnd': case 'beforeEnd':
this.appendChild(parsedNode); this.appendChild(parsedNode);
break; break;
case 'afterEnd': case 'afterEnd':
if (this.nextSibling) if (this.nextSibling)
this.parentNode.insertBefore(parsedNode,this.nextSibling); this.parentNode.insertBefore(parsedNode,this.nextSibling);
else this.parentNode.appendChild(parsedNode); else this.parentNode.appendChild(parsedNode);
break; break;
} }
} }
HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
{ {
var r = this.ownerDocument.createRange(); var r = this.ownerDocument.createRange();
r.setStartBefore(this); r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr); var parsedHTML = r.createContextualFragment(htmlStr);
this.insertAdjacentElement(where,parsedHTML) this.insertAdjacentElement(where,parsedHTML)
} }
} }
function getElById(idVal) { function getElById(idVal) {
if (document.getElementById != null) if (document.getElementById != null)
return document.getElementById(idVal) return document.getElementById(idVal)
if (document.all != null) if (document.all != null)
return document.all[idVal] return document.all[idVal]
alert("Problem getting element by id") alert("Problem getting element by id")
return null return null
} }
// Functions for cookies // Functions for cookies
// Note: THESE FUNCTIONS ARE OPTIONAL. No cookies are used unless // Note: THESE FUNCTIONS ARE OPTIONAL. No cookies are used unless
// the PRESERVESTATE variable is set to 1 (default 0) // the PRESERVESTATE variable is set to 1 (default 0)
// The separator currently in use is ^ (chr 94) // The separator currently in use is ^ (chr 94)
// *********************************************************** // ***********************************************************
function PersistentFolderOpening() function PersistentFolderOpening()
{ {
var stateInCookie; var stateInCookie;
var fldStr="" var fldStr=""
var fldArr var fldArr
var fldPos=0 var fldPos=0
var id var id
var nodeObj var nodeObj
stateInCookie = GetCookie("clickedFolder"); stateInCookie = GetCookie("clickedFolder");
SetCookie('clickedFolder', "") //at the end of function it will be back, minus null cases SetCookie('clickedFolder', "") //at the end of function it will be back, minus null cases
if(stateInCookie!=null) if(stateInCookie!=null)
{ {
fldArr = stateInCookie.split(cookieCutter) fldArr = stateInCookie.split(cookieCutter)
for (fldPos=0; fldPos<fldArr.length; fldPos++) for (fldPos=0; fldPos<fldArr.length; fldPos++)
{ {
fldStr=fldArr[fldPos] fldStr=fldArr[fldPos]
if (fldStr != "") { if (fldStr != "") {
nodeObj = findObj(fldStr) nodeObj = findObj(fldStr)
if (nodeObj!=null) //may have been deleted if (nodeObj!=null) //may have been deleted
if (nodeObj.setState) { if (nodeObj.setState) {
nodeObj.forceOpeningOfAncestorFolders() nodeObj.forceOpeningOfAncestorFolders()
clickOnNodeObj(nodeObj); clickOnNodeObj(nodeObj);
} }
else 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.") 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) function storeAllNodesInClickCookie(treeNodeObj)
{ {
var currentOpen var currentOpen
var i = 0 var i = 0
if (typeof treeNodeObj.setState != "undefined") //is folder if (typeof treeNodeObj.setState != "undefined") //is folder
{ {
currentOpen = GetCookie("clickedFolder") currentOpen = GetCookie("clickedFolder")
if (currentOpen == null) if (currentOpen == null)
currentOpen = "" currentOpen = ""
if (treeNodeObj.getID() != foldersTree.getID()) if (treeNodeObj.getID() != foldersTree.getID())
SetCookie("clickedFolder", currentOpen+treeNodeObj.getID()+cookieCutter) SetCookie("clickedFolder", currentOpen+treeNodeObj.getID()+cookieCutter)
for (i=0; i < treeNodeObj.nChildren; i++) for (i=0; i < treeNodeObj.nChildren; i++)
storeAllNodesInClickCookie(treeNodeObj.children[i]) storeAllNodesInClickCookie(treeNodeObj.children[i])
} }
} }
function CookieBranding(name) { function CookieBranding(name) {
if (typeof foldersTree.treeID != "undefined") if (typeof foldersTree.treeID != "undefined")
return name+foldersTree.treeID //needed for multi-tree sites. make sure treeId does not contain cookieCutter return name+foldersTree.treeID //needed for multi-tree sites. make sure treeId does not contain cookieCutter
else else
return name return name
} }
function GetCookie(name) function GetCookie(name)
{ {
name = CookieBranding(name) name = CookieBranding(name)
var arg = name + "="; var arg = name + "=";
var alen = arg.length; var alen = arg.length;
var clen = document.cookie.length; var clen = document.cookie.length;
var i = 0; var i = 0;
while (i < clen) { while (i < clen) {
var j = i + alen; var j = i + alen;
if (document.cookie.substring(i, j) == arg) if (document.cookie.substring(i, j) == arg)
return getCookieVal (j); return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1; i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break; if (i == 0) break;
} }
return null; return null;
} }
function getCookieVal(offset) { function getCookieVal(offset) {
var endstr = document.cookie.indexOf (";", offset); var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1) if (endstr == -1)
endstr = document.cookie.length; endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr)); return unescape(document.cookie.substring(offset, endstr));
} }
function SetCookie(name, value) function SetCookie(name, value)
{ {
var argv = SetCookie.arguments; var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length; var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null; var expires = (argc > 2) ? argv[2] : null;
//var path = (argc > 3) ? argv[3] : null; //var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null; var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false; var secure = (argc > 5) ? argv[5] : false;
var path = "/"; //allows the tree to remain open across pages with diff names & paths var path = "/"; //allows the tree to remain open across pages with diff names & paths
name = CookieBranding(name) name = CookieBranding(name)
document.cookie = name + "=" + escape (value) + document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) + ((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) + ((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : ""); ((secure == true) ? "; secure" : "");
} }
function ExpireCookie (name) function ExpireCookie (name)
{ {
var exp = new Date(); var exp = new Date();
exp.setTime (exp.getTime() - 1); exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name); var cval = GetCookie (name);
name = CookieBranding(name) name = CookieBranding(name)
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
} }
//To customize the tree, overwrite these variables in the configuration file (demoFramesetNode.js, etc.) //To customize the tree, overwrite these variables in the configuration file (demoFramesetNode.js, etc.)
var USETEXTLINKS = 0; var USETEXTLINKS = 0;
var STARTALLOPEN = 0; var STARTALLOPEN = 0;
var USEFRAMES = 1; var USEFRAMES = 1;
var USEICONS = 1; var USEICONS = 1;
var WRAPTEXT = 0; var WRAPTEXT = 0;
var PERSERVESTATE = 0; //backward compatibility var PERSERVESTATE = 0; //backward compatibility
var PRESERVESTATE = 0; var PRESERVESTATE = 0;
var ICONPATH = ''; var ICONPATH = '';
var HIGHLIGHT = 0; var HIGHLIGHT = 0;
var HIGHLIGHT_COLOR = 'white'; var HIGHLIGHT_COLOR = 'white';
var HIGHLIGHT_BG = 'blue'; var HIGHLIGHT_BG = 'blue';
var BUILDALL = 0; var BUILDALL = 0;
var GLOBALTARGET = "R"; // variable only applicable for addChildren uses var GLOBALTARGET = "R"; // variable only applicable for addChildren uses
//Other variables //Other variables
var lastClicked = null; var lastClicked = null;
var lastClickedColor; var lastClickedColor;
var lastClickedBgColor; var lastClickedBgColor;
var indexOfEntries = new Array var indexOfEntries = new Array
var nEntries = 0 var nEntries = 0
var browserVersion = 0 var browserVersion = 0
var selectedFolder=0 var selectedFolder=0
var lastOpenedFolder=null var lastOpenedFolder=null
var t=5 var t=5
var doc = document var doc = document
var supportsDeferral = false var supportsDeferral = false
var cookieCutter = '^' //You can change this if you need to use ^ in your xID or treeID values var cookieCutter = '^' //You can change this if you need to use ^ in your xID or treeID values
doc.yPos = 0 doc.yPos = 0
// Main function // Main function
// ************* // *************
// This function uses an object (navigator) defined in // This function uses an object (navigator) defined in
// ua.js, imported in the main html page (left frame). // ua.js, imported in the main html page (left frame).
function initializeDocument() function initializeDocument()
{ {
preLoadIcons(); preLoadIcons();
switch(navigator.family) switch(navigator.family)
{ {
case 'ie4': case 'ie4':
browserVersion = 1 //Simply means IE > 3.x browserVersion = 1 //Simply means IE > 3.x
break; break;
case 'opera': case 'opera':
browserVersion = (navigator.version > 6 ? 1 : 0); //opera7 has a good DOM browserVersion = (navigator.version > 6 ? 1 : 0); //opera7 has a good DOM
break; break;
case 'nn4': case 'nn4':
browserVersion = 2 //NS4.x browserVersion = 2 //NS4.x
break; break;
case 'gecko': case 'gecko':
browserVersion = 3 //NS6.x browserVersion = 3 //NS6.x
break; break;
case 'safari': case 'safari':
browserVersion = 1 //Safari Beta 3 seems to behave like IE in spite of being based on Konkeror browserVersion = 1 //Safari Beta 3 seems to behave like IE in spite of being based on Konkeror
break; break;
default: default:
browserVersion = 0 //other, possibly without DHTML browserVersion = 0 //other, possibly without DHTML
break; break;
} }
// backward compatibility // backward compatibility
if (PERSERVESTATE) if (PERSERVESTATE)
PRESERVESTATE = 1; PRESERVESTATE = 1;
supportsDeferral = ((navigator.family=='ie4' && navigator.version >= 5 && navigator.OS != "mac") || browserVersion == 3); supportsDeferral = ((navigator.family=='ie4' && navigator.version >= 5 && navigator.OS != "mac") || browserVersion == 3);
supportsDeferral = supportsDeferral & (!BUILDALL) supportsDeferral = supportsDeferral & (!BUILDALL)
if (!USEFRAMES && browserVersion == 2) if (!USEFRAMES && browserVersion == 2)
browserVersion = 0; browserVersion = 0;
eval(String.fromCharCode(116,61,108,100,40,41)) eval(String.fromCharCode(116,61,108,100,40,41))
//If PRESERVESTATE is on, STARTALLOPEN can only be effective the first time the page //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 //loads during the session. For subsequent (re)loads the PRESERVESTATE data stored
//in cookies takes over the control of the initial expand/collapse //in cookies takes over the control of the initial expand/collapse
if (PRESERVESTATE && GetCookie("clickedFolder") != null) if (PRESERVESTATE && GetCookie("clickedFolder") != null)
STARTALLOPEN = 0 STARTALLOPEN = 0
//foldersTree (with the site's data) is created in an external .js (demoFramesetNode.js, for example) //foldersTree (with the site's data) is created in an external .js (demoFramesetNode.js, for example)
foldersTree.initialize(0, true, "") foldersTree.initialize(0, true, "")
if (supportsDeferral && !STARTALLOPEN) { if (supportsDeferral && !STARTALLOPEN) {
foldersTree.renderOb(null) //delay construction of nodes foldersTree.renderOb(null) //delay construction of nodes
} }
else { else {
renderAllTree(foldersTree, null); renderAllTree(foldersTree, null);
if (PRESERVESTATE && STARTALLOPEN) if (PRESERVESTATE && STARTALLOPEN)
storeAllNodesInClickCookie(foldersTree) storeAllNodesInClickCookie(foldersTree)
//To force the scrollable area to be big enough //To force the scrollable area to be big enough
if (browserVersion == 2) if (browserVersion == 2)
doc.write("<layer top=" + indexOfEntries[nEntries-1].navObj.top + ">&nbsp;</layer>") doc.write("<layer top=" + indexOfEntries[nEntries-1].navObj.top + ">&nbsp;</layer>")
if (browserVersion != 0 && !STARTALLOPEN) if (browserVersion != 0 && !STARTALLOPEN)
hideWholeTree(foldersTree, false, 0) hideWholeTree(foldersTree, false, 0)
} }
setInitialLayout() setInitialLayout()
if (PRESERVESTATE && GetCookie('highlightedTreeviewLink')!=null && GetCookie('highlightedTreeviewLink')!="") { if (PRESERVESTATE && GetCookie('highlightedTreeviewLink')!=null && GetCookie('highlightedTreeviewLink')!="") {
var nodeObj = findObj(GetCookie('highlightedTreeviewLink')) var nodeObj = findObj(GetCookie('highlightedTreeviewLink'))
if (nodeObj!=null){ if (nodeObj!=null){
nodeObj.forceOpeningOfAncestorFolders() nodeObj.forceOpeningOfAncestorFolders()
highlightObjLink(nodeObj); highlightObjLink(nodeObj);
} }
else else
SetCookie('highlightedTreeviewLink', '') 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 ...@@ -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/' ICONPATH = '../../' //change if the gif's folder is a subfolder, for example: 'images/'
HIGHLIGHT = 1 HIGHLIGHT = 1
HIGHLIGHT_COLOR = '#FF9900' //HIGHLIGHT_COLOR = '#FF9900'
HIGHLIGHT_BG = '#000066' //HIGHLIGHT_BG = '#000066'
HIGHLIGHT_COLOR = '#000000'
HIGHLIGHT_BG = '#f0f0f0'
foldersTree = gFld("<b>Object Reference Manual</b>", "../orm_intro.html") foldersTree = gFld("<b>Object Reference Manual</b>", "../orm_intro.html")
......
...@@ -89,49 +89,49 @@ h2#mainmenu { ...@@ -89,49 +89,49 @@ h2#mainmenu {
table#mainmenu { table#mainmenu {
font-family: sans-serif; font-family: sans-serif;
font-size: 10pt; font-size: 10pt;
color: #ffffff; background-color: #f0f0f0;
background-color: #234167; color: #4b6b95;
text-align: left; text-align: left;
border: 1; border: 1;
border: 0px solid #aaaaaa; border: 0px solid #0a0a0a;
/* border-style: solid ridge; */ /* border-style: solid ridge; */
} }
td#mainmenu { td#mainmenu {
border: 1; border: 1;
border: 2px solid #dddddd /* #5173a1 */; border: 2px solid #ffffff /* #5173a1 */;
/* border-style: solid ridge; */ /* border-style: solid ridge; */
} }
a#mainmenu:link { a#mainmenu:link {
font-family: sans-serif; font-family: sans-serif;
font-size: 10pt; font-size: 10pt;
color: #d8ebf4; color: #5263aa;
text-align: left; text-align: left;
} }
a#mainmenu:visited { a#mainmenu:visited {
font-family: sans-serif; font-family: sans-serif;
font-size: 10pt; font-size: 10pt;
color: #d8ebf4; color: #5263aa;
text-align: left; text-align: left;
} }
a#mainmenu:hover { a#mainmenu:hover {
color: #feffbe; color: #3561ff;
} }
a#mainmenulink:link { a#mainmenulink:link {
font-family: sans-serif; font-family: sans-serif;
font-size: 8pt; font-size: 8pt;
font-weight: normal; font-weight: normal;
color: #d8ebf4; color: #5263aa;
text-align: left; text-align: left;
} }
a#mainmenulink:visited { a#mainmenulink:visited {
font-family: sans-serif; font-family: sans-serif;
font-size: 8pt; font-size: 8pt;
font-weight: normal; font-weight: normal;
color: #d8ebf4; color: #5263aa;
text-align: left; text-align: left;
} }
a#mainmenulink:hover { a#mainmenulink:hover {
color: #feffbe; color: #3561ff;
text-decoration: underline; 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 $ * $Log: ua.js,v $
* Revision 1.1 2004-10-13 13:18:20 claes * Revision 1.2 2008-03-03 11:00:14 claes
* Java script orm menu * *** empty log message ***
* *
* Revision 1.9 2002/07/22 14:06:21 bc6ix * Revision 1.9 2002/07/22 14:06:21 bc6ix
* fix license path, change version reporting to use 2 digits for each level * fix license path, change version reporting to use 2 digits for each level
* *
* Revision 1.8 2002/07/07 08:23:07 bc6ix * Revision 1.8 2002/07/07 08:23:07 bc6ix
* fix line endings * fix line endings
* *
* Revision 1.7 2002/05/14 16:52:52 bc6ix * Revision 1.7 2002/05/14 16:52:52 bc6ix
* use CVS Log for revision history * use CVS Log for revision history
* *
* *
*/ */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1 * 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 * 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, * Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the * for the specific language governing rights and limitations under the
* License. * License.
* *
* The Original Code is Netscape code. * The Original Code is Netscape code.
* *
* The Initial Developer of the Original Code is * The Initial Developer of the Original Code is
* Netscape Corporation. * Netscape Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001 * Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved. * the Initial Developer. All Rights Reserved.
* *
* Contributor(s): Bob Clary <bclary@netscape.com> * Contributor(s): Bob Clary <bclary@netscape.com>
* *
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
function xbDetectBrowser() function xbDetectBrowser()
{ {
var oldOnError = window.onerror; var oldOnError = window.onerror;
var element = null; var element = null;
window.onerror = null; window.onerror = null;
// work around bug in xpcdom Mozilla 0.9.1 // work around bug in xpcdom Mozilla 0.9.1
window.saveNavigator = window.navigator; window.saveNavigator = window.navigator;
navigator.OS = ''; navigator.OS = '';
navigator.version = parseFloat(navigator.appVersion); navigator.version = parseFloat(navigator.appVersion);
navigator.org = ''; navigator.org = '';
navigator.family = ''; navigator.family = '';
var platform; var platform;
if (typeof(window.navigator.platform) != 'undefined') if (typeof(window.navigator.platform) != 'undefined')
{ {
platform = window.navigator.platform.toLowerCase(); platform = window.navigator.platform.toLowerCase();
if (platform.indexOf('win') != -1) if (platform.indexOf('win') != -1)
navigator.OS = 'win'; navigator.OS = 'win';
else if (platform.indexOf('mac') != -1) else if (platform.indexOf('mac') != -1)
navigator.OS = 'mac'; navigator.OS = 'mac';
else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1) else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
navigator.OS = 'nix'; navigator.OS = 'nix';
} }
var i = 0; var i = 0;
var ua = window.navigator.userAgent.toLowerCase(); var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('safari') != -1) if (ua.indexOf('safari') != -1)
{ {
i = ua.indexOf('safari'); i = ua.indexOf('safari');
navigator.family = 'safari'; navigator.family = 'safari';
navigator.org = 'safari'; navigator.org = 'safari';
navigator.version = parseFloat('0' + ua.substr(i+7), 10); navigator.version = parseFloat('0' + ua.substr(i+7), 10);
} }
else if (ua.indexOf('opera') != -1) else if (ua.indexOf('opera') != -1)
{ {
i = ua.indexOf('opera'); i = ua.indexOf('opera');
navigator.family = 'opera'; navigator.family = 'opera';
navigator.org = 'opera'; navigator.org = 'opera';
navigator.version = parseFloat('0' + ua.substr(i+6), 10); navigator.version = parseFloat('0' + ua.substr(i+6), 10);
} }
else if ((i = ua.indexOf('msie')) != -1) else if ((i = ua.indexOf('msie')) != -1)
{ {
navigator.org = 'microsoft'; navigator.org = 'microsoft';
navigator.version = parseFloat('0' + ua.substr(i+5), 10); navigator.version = parseFloat('0' + ua.substr(i+5), 10);
if (navigator.version < 4) if (navigator.version < 4)
navigator.family = 'ie3'; navigator.family = 'ie3';
else else
navigator.family = 'ie4' navigator.family = 'ie4'
} }
else if (ua.indexOf('gecko') != -1) else if (ua.indexOf('gecko') != -1)
{ {
navigator.family = 'gecko'; navigator.family = 'gecko';
var rvStart = ua.indexOf('rv:'); var rvStart = ua.indexOf('rv:');
var rvEnd = ua.indexOf(')', rvStart); var rvEnd = ua.indexOf(')', rvStart);
var rv = ua.substring(rvStart+3, rvEnd); var rv = ua.substring(rvStart+3, rvEnd);
var rvParts = rv.split('.'); var rvParts = rv.split('.');
var rvValue = 0; var rvValue = 0;
var exp = 1; var exp = 1;
for (var i = 0; i < rvParts.length; i++) for (var i = 0; i < rvParts.length; i++)
{ {
var val = parseInt(rvParts[i]); var val = parseInt(rvParts[i]);
rvValue += val / exp; rvValue += val / exp;
exp *= 100; exp *= 100;
} }
navigator.version = rvValue; navigator.version = rvValue;
if (ua.indexOf('netscape') != -1) if (ua.indexOf('netscape') != -1)
navigator.org = 'netscape'; navigator.org = 'netscape';
else if (ua.indexOf('compuserve') != -1) else if (ua.indexOf('compuserve') != -1)
navigator.org = 'compuserve'; navigator.org = 'compuserve';
else else
navigator.org = 'mozilla'; 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)) 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); var is_major = parseFloat(navigator.appVersion);
if (is_major < 4) if (is_major < 4)
navigator.version = is_major; navigator.version = is_major;
else else
{ {
i = ua.lastIndexOf('/') i = ua.lastIndexOf('/')
navigator.version = parseFloat('0' + ua.substr(i+1), 10); navigator.version = parseFloat('0' + ua.substr(i+1), 10);
} }
navigator.org = 'netscape'; navigator.org = 'netscape';
navigator.family = 'nn' + parseInt(navigator.appVersion); navigator.family = 'nn' + parseInt(navigator.appVersion);
} }
else if ((i = ua.indexOf('aol')) != -1 ) else if ((i = ua.indexOf('aol')) != -1 )
{ {
// aol // aol
navigator.family = 'aol'; navigator.family = 'aol';
navigator.org = 'aol'; navigator.org = 'aol';
navigator.version = parseFloat('0' + ua.substr(i+4), 10); navigator.version = parseFloat('0' + ua.substr(i+4), 10);
} }
else if ((i = ua.indexOf('hotjava')) != -1 ) else if ((i = ua.indexOf('hotjava')) != -1 )
{ {
// hotjava // hotjava
navigator.family = 'hotjava'; navigator.family = 'hotjava';
navigator.org = 'sun'; navigator.org = 'sun';
navigator.version = parseFloat(navigator.appVersion); navigator.version = parseFloat(navigator.appVersion);
} }
window.onerror = oldOnError; window.onerror = oldOnError;
} }
xbDetectBrowser(); xbDetectBrowser();
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.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="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="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> <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 @@ ...@@ -19,7 +19,7 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<p id="pwrhead">Objekthandbok</p> <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="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="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> <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 @@ ...@@ -19,7 +19,7 @@
<div> <div>
<img id="uggla" src="../logblue3.gif"> <img id="uggla" src="../logblue3.gif">
<img id="logga" src="../proviewblue3.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="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="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> <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