[Blends-commit] [SCM] website branch, master, updated. 1e1bb7c62c9d867b6289682671ea72b2c62ba88b
Iain R. Learmonth
irl at fsfe.org
Fri May 29 10:25:06 UTC 2015
The following commit has been merged in the master branch:
commit a8b3d4acb4cf8c0f66904b1687568a12c03c1f77
Author: Iain R. Learmonth <irl at fsfe.org>
Date: Thu May 14 19:00:46 2015 +0100
new-website: Lets see what this breaks
diff --git a/www/3dprinter/img b/www-src/3dprinter/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/3dprinter/img
diff --git a/www/hamradio/inc/style.css b/www-src/3dprinter/inc/style.css
similarity index 100%
rename from www/hamradio/inc/style.css
rename to www-src/3dprinter/inc/style.css
diff --git a/www/hamradio/inc/wz_tooltip.js b/www-src/3dprinter/inc/wz_tooltip.js
similarity index 100%
rename from www/hamradio/inc/wz_tooltip.js
rename to www-src/3dprinter/inc/wz_tooltip.js
diff --git a/www/3dprinter/index.html b/www-src/3dprinter/index.html
similarity index 100%
copy from www/3dprinter/index.html
copy to www-src/3dprinter/index.html
diff --git a/www/3dprinter/img b/www-src/accessibility/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/accessibility/img
diff --git a/www/3dprinter/inc/style.css b/www-src/accessibility/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/accessibility/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/accessibility/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/accessibility/inc/wz_tooltip.js
diff --git a/www/accessibility/index.html b/www-src/accessibility/index.html
similarity index 100%
copy from www/accessibility/index.html
copy to www-src/accessibility/index.html
diff --git a/www/hamradio/css/hamradio.css b/www-src/css/blends.css
similarity index 88%
rename from www/hamradio/css/hamradio.css
rename to www-src/css/blends.css
index 0ae426d..c6fc06e 100644
--- a/www/hamradio/css/hamradio.css
+++ b/www-src/css/blends.css
@@ -1,6 +1,8 @@
+
+
/* from the debian.org homepage */
#splash {
- background-image: url('../img/lines_web_bg.png');
+ background-image: url('/img/splash_bg.png');
background-position:top center;
background-repeat: repeat;
margin-top: 0;
@@ -10,7 +12,6 @@
height: 120px;
}
#splash h1 {
- background-image: url('../img/homepage-logo.png');
background-position:top center;
padding-top:130px;
overflow:hidden;
@@ -35,7 +36,7 @@ span.download a {
text-decoration: none;
border: 0.15em solid #339900;
display: block;
- background: transparent url('../img/downloads.png') no-repeat 5px 12px;
+ background: transparent url('/img/downloads.png') no-repeat 5px 12px;
padding-top: 7px;
padding-left: 30px;
padding-right: 1em;
@@ -93,3 +94,9 @@ span.sep {
content: "» ";
}
+/***** Blend specific *****/
+
+h1#hamradio {
+ background-image: url('/img/splash_hamradio.png');
+}
+
diff --git a/www/hamradio/css/debian.css b/www-src/css/debian.css
similarity index 99%
rename from www/hamradio/css/debian.css
rename to www-src/css/debian.css
index 3ebe62c..12af6fc 100644
--- a/www/hamradio/css/debian.css
+++ b/www-src/css/debian.css
@@ -73,7 +73,7 @@ body {
line-height: 1.5;
color: #222;
background-color: white;
- background-image:url('../img/gradient.png');
+ background-image:url('/img/gradient.png');
background-position: 0 0;
background-repeat: repeat-x;
/* Uncomment to show baseline grid
diff --git a/www/3dprinter/img b/www-src/debichem/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/debichem/img
diff --git a/www/3dprinter/inc/style.css b/www-src/debichem/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/debichem/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/debichem/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/debichem/inc/wz_tooltip.js
diff --git a/www/debichem/index.html b/www-src/debichem/index.html
similarity index 100%
copy from www/debichem/index.html
copy to www-src/debichem/index.html
diff --git a/www/3dprinter/img b/www-src/edu/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/edu/img
diff --git a/www/3dprinter/inc/style.css b/www-src/edu/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/edu/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/edu/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/edu/inc/wz_tooltip.js
diff --git a/www/edu/index.html b/www-src/edu/index.html
similarity index 100%
copy from www/edu/index.html
copy to www-src/edu/index.html
diff --git a/www/3dprinter/img b/www-src/ezgo/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/ezgo/img
diff --git a/www/3dprinter/inc/style.css b/www-src/ezgo/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/ezgo/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/ezgo/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/ezgo/inc/wz_tooltip.js
diff --git a/www/ezgo/index.html b/www-src/ezgo/index.html
similarity index 100%
copy from www/ezgo/index.html
copy to www-src/ezgo/index.html
diff --git a/www/3dprinter/img b/www-src/fun/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/fun/img
diff --git a/www/3dprinter/inc/style.css b/www-src/fun/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/fun/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/fun/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/fun/inc/wz_tooltip.js
diff --git a/www/fun/index.html b/www-src/fun/index.html
similarity index 100%
copy from www/fun/index.html
copy to www-src/fun/index.html
diff --git a/www/3dprinter/img b/www-src/games/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/games/img
diff --git a/www/3dprinter/inc/style.css b/www-src/games/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/games/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/games/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/games/inc/wz_tooltip.js
diff --git a/www/games/index.html b/www-src/games/index.html
similarity index 100%
copy from www/games/index.html
copy to www-src/games/index.html
diff --git a/www/3dprinter/img b/www-src/gis/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/gis/img
diff --git a/www/3dprinter/inc/style.css b/www-src/gis/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/gis/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/gis/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/gis/inc/wz_tooltip.js
diff --git a/www/gis/index.html b/www-src/gis/index.html
similarity index 100%
copy from www/gis/index.html
copy to www-src/gis/index.html
diff --git a/www-src/hamradio/dev.html b/www-src/hamradio/dev.html
new file mode 100644
index 0000000..5587598
--- /dev/null
+++ b/www-src/hamradio/dev.html
@@ -0,0 +1,60 @@
+---
+layout: hamradio
+title: Developer Information
+---
+
+<h1>Debian Hamradio Pure Blend Developer Information</h1>
+
+<h2>Packaging</h2>
+
+<p>While packaging of hamradio software in Debian is the responsibility
+of the <a href="http://pkg-hamradio.alioth.debian.org">Debian Hamradio Maintainers</a>,
+the pure blend project does provide the following tools that may be useful
+to packagers:</p>
+
+<ul>
+ <li><a href="/hamradio/tasks/">Blend Tasks Index</a></li>
+ <li><a href="/hamradio/bugs/">Blend Bugs Overview</a></li>
+ <li><a href="/hamradio/thermometer/">Blend Thermometer</a></li>
+</ul>
+
+<h2>Metapackages Source Code</h2>
+
+<ul>
+ <li><a href="https://anonscm.debian.org/cgit/blends/projects/hamradio.git">Web-based git browser</a></li>
+ <li><a href="https://anonscm.debian.org/git/blends/projects/hamradio.git">Anonymous git clone</a></li>
+</ul>
+
+<pre>git clone https://anonscm.debian.org/git/blends/projects/hamradio.git
+cd hamradio ; make dist
+gbp buildpackage</pre>
+
+<p><i>Note: you will need <a
+href="https://packages.debian.org/unstable/git-buildpackage">git-buildpackage</a>
+and <a href="https://packages.debian.org/unstable/blends-dev">blends-dev</a>
+installed to build the source.</i></p>
+
+<p>To learn more about how to work with blends metapackages, see <a href="http://blends.debian.org/blends/ch06.html#metapackages">§6.1</a> of the <a href="http://blends.debian.org/blends/">Debian Pure Blends Manual</a>.</p>
+
+<h2>Live DVD Source Code</h2>
+
+<ul>
+ <li><a href="http://anonscm.debian.org/cgit/blends/blends-images.git">Web-based git browser</a></li>
+ <li><a href="http://anonscm.debian.org/git/blends/blends-images.git/">Anonymouse git clone</a></li>
+</ul>
+
+<pre>git clone http://anonscm.debian.org/git/blends/blends-images.git/
+cd blends-images/images/hamradio-amd64
+lb config
+sudo lb build</pre>
+
+<p><i>Note: you will need <a
+ href="https://packages.debian.org/unstable/git-buildpackage">git-buildpackage</a>
+ and <a href="https://packages.debian.org/unstable/live-build">live build</a>
+ installed to build the source.</a></i></p>
+
+<p>To learn more about how to work with live-build sources, see the <a
+ href="http://live.debian.net/manual/unstable/html/live-manual/toc.en.html">Live
+ Systems Manual</a>.</p>
+</div>
+
diff --git a/www-src/hamradio/index.html b/www-src/hamradio/index.html
new file mode 100644
index 0000000..3d7a048
--- /dev/null
+++ b/www-src/hamradio/index.html
@@ -0,0 +1,29 @@
+---
+layout: hamradio
+title: Home
+---
+
+<span class="download"><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso">Download Debian Hamradio<br>Pure Blend Jessie Preview<em>(64-bit Live DVD)</em></a> </span>
+ <div id="splash">
+ <h1 id="hamradio">Debian Hamradio Pure Blend</h1>
+ </div>
+
+ <p>The <b>Debian Hamradio Pure Blend</b> is a project of the <a
+ href="https://wiki.debian.org/DebianHams/">Debian Hamradio Maintainers
+ Team</a> who collaborate on maintenance of amateur-radio related packages
+ for Debian. Every <a href="http://blends.debian.org/">Pure Blend</a> is a
+ subset of Debian that is configured to support a particular target group
+ out-of-the-box. This blend aims to support the needs of radio amateurs.</p>
+
+ <ul class="homepagenav">
+ <li><a href="/hamradio/packages/">Packages</a></li>
+ <li><a href="/hamradio/live/">Live DVDs</a></li>
+ <li><a href="/hamradio/dev/">Development</a></li>
+ </ul>
+
+ <h2>News</h2>
+ <tt>[13 May 2015]</tt> <strong><a href="https://lists.debian.org/debian-devel/2015/05/msg00348.html">Bits from the Debian Hamradio Maintainers</a></strong><br>
+ <tt>[12 May 2015]</tt> <strong><a href="https://lists.debian.org/debian-hams/2015/05/msg00140.html">ITP: debian-hamradio -- Debian Hamradio Pure Blend Metapackages</a></strong><br>
+ <tt>[02 Dec 2014]</tt> <strong><a href="https://lists.debian.org/debian-devel/2014/12/msg00063.html">Announcing a Debian Hamradio Blend</a></strong><br>
+ <br>
+
diff --git a/www-src/hamradio/live.html b/www-src/hamradio/live.html
new file mode 100644
index 0000000..1ab16f8
--- /dev/null
+++ b/www-src/hamradio/live.html
@@ -0,0 +1,53 @@
+---
+layout: hamradio
+title: Live DVDs
+---
+
+<h1>Debian Hamradio Pure Blend Live DVDs</h1>
+
+<p>The Debian Hamradio Pure Blend produces <b>Live DVD images</b> that can
+be used to try out the Debian Hamradio Pure Blend on a computer without
+having to install it first. The images also contain an installer which can
+be used to install Debian along with the packages from the blend.</p>
+
+<h2>Download</h2>
+
+<h3>Debian Hamradio Blend Jessie Preview</h3>
+
+<p>A preview release of the Debian Hamradio Blend Live DVD is available
+for download. This is an unofficial release as the blend metapackages are
+not included in Debian Jessie.</p>
+
+<ul>
+ <li><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso">amd64 Live DVD image (ISO)</a> (<a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso.asc">GPG signature</a>)</li>
+ <li><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-i386.iso">i386 Live DVD image (ISO)</a> (<a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-i386.iso.asc">GPG signature</a>)</li>
+</ul>
+
+<p><small>Hosting for these unofficial live images is provided by the <a
+ href="http://www.sdf.org/">SDF Public Access UNIX system</a>.</small></p>
+
+<h3>Debian Hamradio Blend Stretch</h3>
+
+<p>In the near future, live DVDs will be built for stretch (the current
+Debian testing distribution) although these are not currently
+available.</p>
+
+<h2>Getting Started</h2>
+
+<h3>Using a DVD</h3>
+
+<p>Most modern operating systems will have provisions for burning ISO images
+to DVD media. There are too many options to describe here. If you are having
+difficulty, using a web search engine should provide the answers you need.</p>
+
+<h3>Using a USB stick</h3>
+
+<p>The ISO images are built as hybrid images, so you can copy them directly to
+a USB stick without using any special software like unetbootin. On a Linux
+system, you can do this like so:</p>
+
+<pre>sudo dd if=/path/to/debian-hamradio-live-image.iso of=/dev/sd<b>X</b></pre>
+
+<p>The output of the dmesg command should let you know the device name of the
+USB stick where you will need to change the X to the letter given.</p>
+
diff --git a/www-src/hamradio/packages.html b/www-src/hamradio/packages.html
new file mode 100644
index 0000000..43b12b4
--- /dev/null
+++ b/www-src/hamradio/packages.html
@@ -0,0 +1,108 @@
+---
+layout: hamradio
+title: Packages and Tasks
+---
+
+<h1>Debian Hamradio Pure Blend Packages</h1>
+<p><b>Packages in the Debian Hamradio Pure Blend</b> are split into
+tasks, like "Rig Control" and "Packet Modes", and you can see the full
+list of these below. Each task contains software that is useful for a
+particular activity. Some software may be in two tasks where it is
+useful for both.</p>
+
+<table>
+ <tr><th>Task name</th><th>Metapackage</th><th>Description</th><th>Catalogue</th></tr>
+ <tr>
+ <td>Antennas</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-antenna"><code>hamradio-antenna</code></a></td>
+ <td>This task contains packages that are useful for antenna modelling.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/antenna">Link</a></td>
+ </tr>
+ <tr>
+ <td>Data Modes</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-datamodes"><code>hamradio-datamodes</code></a></td>
+ <td>This task contains packages that are useful for using data modes, such as
+ RTTY and SSTV, including weak signal modes, such as JT65.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/datamodes">Link</a></td>
+ </tr>
+ <tr>
+ <td>Digital Voice</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-digitalvoice"><code>hamradio-digitalvoice</code></a></td>
+ <td>This task contains packages that are useful for using
+ digital voice modes on RF and for Internet linking.
+ <td><a href="http://blends.debian.org/hamradio/tasks/digitalvoice">Link</a></td>
+ </tr>
+ <tr>
+ <td>Logging</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-logging"><code>hamradio-logging</code></a></td>
+ <td>This task contains packages that are useful for logging (including for
+ contests).</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/logging">Link</a></td>
+ </tr>
+ <tr>
+ <td>Morse</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-morse"><code>hamradio-morse</code></a></td>
+ <td>This task contains packages that are useful for CW operation and
+ for learning morse.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/morse">Link</a></td>
+ </tr>
+ <tr>
+ <td>Non-Amateur Modes</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-nonamateur"><code>hamradio-nonamateur</code></a></td>
+ <td>This task contains packages that are useful for listening to non-amateur
+ modes such as AIS and ADS-B.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/nonamateur">Link</a></td>
+ </tr>
+ <tr>
+ <td>Packet Modes</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-packetmodes"><code>hamradio-packetmodes</code></a></td>
+ <td>This task contains packages that are useful for using AX.25, including IPv4
+ over AX.25 and APRS.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/packetmodes">Link</a></td>
+ </tr>
+ <tr>
+ <td>Rig Control</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-rigcontrol"><code>hamradio-rigcontrol</code></a></td>
+ <td>This task contains packages that are useful for rig control and
+ programming.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/rigcontrol">Link</a></td>
+ </tr>
+ <tr>
+ <td>Satellite operation</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-satellite"><code>hamradio-satellite</code></a></td>
+ <td>This task contains packages that are useful for amateur satellite operation.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/satellite">Link</a></td>
+ </tr>
+ <tr>
+ <td>Software-Defined Radio</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-sdr"><code>hamradio-sdr</code></a></td>
+ <td>This task contains packages that are useful for working with software-defined radio.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/sdr">Link</a></td>
+ </tr>
+ <tr>
+ <td>Tools</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-tools"><code>hamradio-tools</code></a></td>
+ <td>This task contains packages that provide useful hamradio related tools.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/tools">Link</a></td>
+ </tr>
+ <tr>
+ <td>Training</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-training"><code>hamradio-training</code></a></td>
+ <td>This task contains packages that are useful when training
+ for hamradio exams.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/training">Link</a></td>
+ </tr>
+</table>
+
+<h3>Installing Metapackages</h3>
+
+<p><i>Note: The metapackages have only recently been submitted to the Debian archives and may not be available yet. These will only be available in Debian stretch (testing), and are not available in Debian jessie (stable).</i></p>
+
+<p>To install any of the task metapackages, use your favourite package management tool as you would with any other Debian package. For <code>apt-get</code>:</p>
+
+<pre>apt-get install hamradio-<task></pre>
+
+<p>If you want to install the entire blend:</p>
+
+<pre>apt-get install hamradio-antenna hamradio-datamodes hamradio-digitalvoice hamradio-logging hamradio-morse hamradio-nonamateur hamradio-packetmodes hamradio-rigcontrol hamradio-satellite hamradio-sdr hamradio-tasks hamradio-tools hamradio-training</pre>
+
diff --git a/www/3dprinter/img b/www-src/imaging/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/imaging/img
diff --git a/www/3dprinter/inc/style.css b/www-src/imaging/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/imaging/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/imaging/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/imaging/inc/wz_tooltip.js
diff --git a/www/imaging/index.html b/www-src/imaging/index.html
similarity index 100%
copy from www/imaging/index.html
copy to www-src/imaging/index.html
diff --git a/www/hamradio/img/bullet.png b/www-src/img/bullet.png
similarity index 100%
rename from www/hamradio/img/bullet.png
rename to www-src/img/bullet.png
diff --git a/www/hamradio/img/deb-icon.png b/www-src/img/deb-icon.png
similarity index 100%
rename from www/hamradio/img/deb-icon.png
rename to www-src/img/deb-icon.png
diff --git a/www/hamradio/img/debian-med.png b/www-src/img/debian-med.png
similarity index 100%
rename from www/hamradio/img/debian-med.png
rename to www-src/img/debian-med.png
diff --git a/www/hamradio/img/debian-med_package_chart.png b/www-src/img/debian-med_package_chart.png
similarity index 100%
rename from www/hamradio/img/debian-med_package_chart.png
rename to www-src/img/debian-med_package_chart.png
diff --git a/www/hamradio/img/debiangis_mollweide.png b/www-src/img/debiangis_mollweide.png
similarity index 100%
rename from www/hamradio/img/debiangis_mollweide.png
rename to www-src/img/debiangis_mollweide.png
diff --git a/www/hamradio/img/downloads.png b/www-src/img/downloads.png
similarity index 100%
copy from www/hamradio/img/downloads.png
copy to www-src/img/downloads.png
diff --git a/www/favicon.ico b/www-src/img/favicon.ico
similarity index 100%
rename from www/favicon.ico
rename to www-src/img/favicon.ico
diff --git a/www/hamradio/img/features-missing.png b/www-src/img/features-missing.png
similarity index 100%
rename from www/hamradio/img/features-missing.png
rename to www-src/img/features-missing.png
diff --git a/www/hamradio/img/features.png b/www-src/img/features.png
similarity index 100%
rename from www/hamradio/img/features.png
rename to www-src/img/features.png
diff --git a/www/hamradio/img/folder.png b/www-src/img/folder.png
similarity index 100%
rename from www/hamradio/img/folder.png
rename to www-src/img/folder.png
diff --git a/www/hamradio/img/go.png b/www-src/img/go.png
similarity index 100%
rename from www/hamradio/img/go.png
rename to www-src/img/go.png
diff --git a/www/hamradio/img/go.svg b/www-src/img/go.svg
similarity index 100%
rename from www/hamradio/img/go.svg
rename to www-src/img/go.svg
diff --git a/www/hamradio/img/gradient.png b/www-src/img/gradient.png
similarity index 100%
rename from www/hamradio/img/gradient.png
rename to www-src/img/gradient.png
diff --git a/www/hamradio/img/information.png b/www-src/img/information.png
similarity index 100%
rename from www/hamradio/img/information.png
rename to www-src/img/information.png
diff --git a/www/hamradio/img/logo.png b/www-src/img/logo.png
similarity index 100%
rename from www/hamradio/img/logo.png
rename to www-src/img/logo.png
diff --git a/www/hamradio/img/minus.png b/www-src/img/minus.png
similarity index 100%
rename from www/hamradio/img/minus.png
rename to www-src/img/minus.png
diff --git a/www/hamradio/img/no.png b/www-src/img/no.png
similarity index 100%
rename from www/hamradio/img/no.png
rename to www-src/img/no.png
diff --git a/www/hamradio/img/no.svg b/www-src/img/no.svg
similarity index 100%
rename from www/hamradio/img/no.svg
rename to www-src/img/no.svg
diff --git a/www/hamradio/img/ok.png b/www-src/img/ok.png
similarity index 100%
rename from www/hamradio/img/ok.png
rename to www-src/img/ok.png
diff --git a/www/hamradio/img/ok.svg b/www-src/img/ok.svg
similarity index 100%
rename from www/hamradio/img/ok.svg
rename to www-src/img/ok.svg
diff --git a/www/hamradio/img/openlogo-50.png b/www-src/img/openlogo-50.png
similarity index 100%
rename from www/hamradio/img/openlogo-50.png
rename to www-src/img/openlogo-50.png
diff --git a/www/hamradio/img/plus.png b/www-src/img/plus.png
similarity index 100%
rename from www/hamradio/img/plus.png
rename to www-src/img/plus.png
diff --git a/www/hamradio/img/rightarrow.png b/www-src/img/rightarrow.png
similarity index 100%
rename from www/hamradio/img/rightarrow.png
rename to www-src/img/rightarrow.png
diff --git a/www/hamradio/img/slx-tux.png b/www-src/img/slx-tux.png
similarity index 100%
rename from www/hamradio/img/slx-tux.png
rename to www-src/img/slx-tux.png
diff --git a/www/hamradio/img/lines_web_bg.png b/www-src/img/splash_bg.png
similarity index 100%
copy from www/hamradio/img/lines_web_bg.png
copy to www-src/img/splash_bg.png
diff --git a/www/hamradio/img/homepage-logo.png b/www-src/img/splash_hamradio.png
similarity index 100%
copy from www/hamradio/img/homepage-logo.png
copy to www-src/img/splash_hamradio.png
diff --git a/www/hamradio/img/homepage-logo.xcf b/www-src/img/splash_hamradio.xcf
similarity index 100%
copy from www/hamradio/img/homepage-logo.xcf
copy to www-src/img/splash_hamradio.xcf
diff --git a/www/hamradio/img/warning.png b/www-src/img/warning.png
similarity index 100%
rename from www/hamradio/img/warning.png
rename to www-src/img/warning.png
diff --git a/www/hamradio/img/warning.svgz b/www-src/img/warning.svgz
similarity index 100%
rename from www/hamradio/img/warning.svgz
rename to www-src/img/warning.svgz
diff --git a/www/hamradio/img/wh_green.png b/www-src/img/wh_green.png
similarity index 100%
rename from www/hamradio/img/wh_green.png
rename to www-src/img/wh_green.png
diff --git a/www/hamradio/img/wh_grey.png b/www-src/img/wh_grey.png
similarity index 100%
rename from www/hamradio/img/wh_grey.png
rename to www-src/img/wh_grey.png
diff --git a/www/hamradio/img/yellow.png b/www-src/img/yellow.png
similarity index 100%
rename from www/hamradio/img/yellow.png
rename to www-src/img/yellow.png
diff --git a/www/inc/style.css b/www-src/inc/style.css
similarity index 100%
copy from www/inc/style.css
copy to www-src/inc/style.css
diff --git a/www/inc/wz_tooltip.js b/www-src/inc/wz_tooltip.js
similarity index 100%
copy from www/inc/wz_tooltip.js
copy to www-src/inc/wz_tooltip.js
diff --git a/www/index.html b/www-src/index.html
similarity index 65%
copy from www/index.html
copy to www-src/index.html
index c8ea11e..335fdb0 100644
--- a/www/index.html
+++ b/www-src/index.html
@@ -1,33 +1,9 @@
-<html>
-<head>
- <title>Debian Pure Blends</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta name="robots" content="noindex" />
-<link href="css/debian.css" rel="stylesheet" type="text/css">
-<link href="css/blends.css" rel="stylesheet" type="text/css">
-<link rel="shortcut icon" href="img/favicon.ico">
-</head>
-<body>
-<div id="header">
- <div id="wikisection">
- <p class="section"><a href="/" title="Debian Pure Blends">Pure Blends</a></p>
- </div>
- <div id="upperheader">
- <div id="logo">
- <a href="http://www.debian.org" title="Debian Home"><img src="img/openlogo-50.png" alt="Debian" width="50" height="61"></a>
- </div>
- </div> <!-- end upperheader -->
- <div id="navbar">
- <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
- <ul>
- <li><a href="/">Home</a></li>
- </ul>
- </div> <!-- end navbar -->
- <p id="breadcrumbs"> debian pure blends</p>
-</div>
+---
+title: Home
+layout: blends
+---
-<div id="content">
- <h1>Debian Pure Blends</h1>
+<h1>Debian Pure Blends</h1>
<p>
A Debian Pure Blend (in short Blend if used in clearly Debian internal context)
is a subset of Debian that is configured to
@@ -120,19 +96,3 @@ href="http://alioth.debian.org/projects/blends/">project page on Alioth</a>.
<br><br>
-</div>
-
-<div id="footer">
-<div id="fineprint">
- <p>
- The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
- <br />
- Contact: <a href="mailto:debian-blends at lists.debian.org">Debian Pure Blends Team</a> (<a href="https://lists.debian.org/debian-blends/">archives</a>) or <a href="irc://irc.debian.org/debian-blends">#debian-blends</a> on irc.debian.org.
- <br />
- Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
- </p>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/www/3dprinter/img b/www-src/junior/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/junior/img
diff --git a/www/3dprinter/inc/style.css b/www-src/junior/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/junior/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/junior/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/junior/inc/wz_tooltip.js
diff --git a/www/junior/index.html b/www-src/junior/index.html
similarity index 100%
copy from www/junior/index.html
copy to www-src/junior/index.html
diff --git a/www/3dprinter/img b/www-src/lex/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/lex/img
diff --git a/www/3dprinter/inc/style.css b/www-src/lex/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/lex/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/lex/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/lex/inc/wz_tooltip.js
diff --git a/www/lex/index.html b/www-src/lex/index.html
similarity index 100%
copy from www/lex/index.html
copy to www-src/lex/index.html
diff --git a/www/3dprinter/img b/www-src/med/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/med/img
diff --git a/www/3dprinter/inc/style.css b/www-src/med/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/med/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/med/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/med/inc/wz_tooltip.js
diff --git a/www/med/index.html b/www-src/med/index.html
similarity index 100%
copy from www/med/index.html
copy to www-src/med/index.html
diff --git a/www/3dprinter/img b/www-src/meta-blends/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/meta-blends/img
diff --git a/www/3dprinter/inc/style.css b/www-src/meta-blends/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/meta-blends/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/meta-blends/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/meta-blends/inc/wz_tooltip.js
diff --git a/www/meta-blends/index.html b/www-src/meta-blends/index.html
similarity index 100%
copy from www/meta-blends/index.html
copy to www-src/meta-blends/index.html
diff --git a/www/3dprinter/img b/www-src/multimedia/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/multimedia/img
diff --git a/www/3dprinter/inc/style.css b/www-src/multimedia/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/multimedia/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/multimedia/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/multimedia/inc/wz_tooltip.js
diff --git a/www/multimedia/index.html b/www-src/multimedia/index.html
similarity index 100%
copy from www/multimedia/index.html
copy to www-src/multimedia/index.html
diff --git a/www/3dprinter/img b/www-src/pan/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/pan/img
diff --git a/www/3dprinter/inc/style.css b/www-src/pan/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/pan/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/pan/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/pan/inc/wz_tooltip.js
diff --git a/www/pan/index.html b/www-src/pan/index.html
similarity index 100%
copy from www/pan/index.html
copy to www-src/pan/index.html
diff --git a/www/3dprinter/img b/www-src/rest-test/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/rest-test/img
diff --git a/www/3dprinter/inc/style.css b/www-src/rest-test/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/rest-test/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/rest-test/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/rest-test/inc/wz_tooltip.js
diff --git a/www/rest-test/index.html b/www-src/rest-test/index.html
similarity index 100%
copy from www/rest-test/index.html
copy to www-src/rest-test/index.html
diff --git a/www/3dprinter/img b/www-src/sanctuary/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/sanctuary/img
diff --git a/www/3dprinter/inc/style.css b/www-src/sanctuary/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/sanctuary/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/sanctuary/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/sanctuary/inc/wz_tooltip.js
diff --git a/www/sanctuary/index.html b/www-src/sanctuary/index.html
similarity index 100%
copy from www/sanctuary/index.html
copy to www-src/sanctuary/index.html
diff --git a/www/3dprinter/img b/www-src/science/img
similarity index 100%
copy from www/3dprinter/img
copy to www-src/science/img
diff --git a/www/3dprinter/inc/style.css b/www-src/science/inc/style.css
similarity index 100%
copy from www/3dprinter/inc/style.css
copy to www-src/science/inc/style.css
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www-src/science/inc/wz_tooltip.js
similarity index 100%
copy from www/3dprinter/inc/wz_tooltip.js
copy to www-src/science/inc/wz_tooltip.js
diff --git a/www/science/index.html b/www-src/science/index.html
similarity index 100%
copy from www/science/index.html
copy to www-src/science/index.html
diff --git a/www/3dprinter/inc/style.css b/www/3dprinter/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/3dprinter/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/3dprinter/inc/style.css b/www/3dprinter/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/3dprinter/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www/3dprinter/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/3dprinter/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/3dprinter/inc/wz_tooltip.js b/www/3dprinter/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/3dprinter/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/accessibility/inc/style.css b/www/accessibility/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/accessibility/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/accessibility/inc/style.css b/www/accessibility/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/accessibility/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/accessibility/inc/wz_tooltip.js b/www/accessibility/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/accessibility/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/accessibility/inc/wz_tooltip.js b/www/accessibility/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/accessibility/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/blends.css b/www/blends.css
deleted file mode 100644
index 44ff45b..0000000
--- a/www/blends.css
+++ /dev/null
@@ -1,228 +0,0 @@
-body {
- font-family: Verdana, Helvetica, sans-serif;
- margin-left:2px;
- margin-right:2px;
-}
-
-p {
- text-align: justify;
-}
-
-h1 {
- font-weight: bold;
-}
-
-h2 {
- font-weight: bold;
-}
-
-h3 {
- font-weight: bold;
-}
-
-h4 {
- font-weight: bold;
-}
-
-a:hover {
- text-decoration: underline;
- color: #333333;
-}
-
-a:link {
- text-decoration: none;
- color: #000099;
-}
-
-a {
- text-decoration: none;
- color: #000099;
-}
-
-a.strong-link {
- text-decoration: underline;
- color: #000099;
-}
-
-a.slide {
- text-decoration: none;
- font-weight: bold;
- color: #FF00FF;
-}
-
-a.slide:hover {
- text-decoration: none;
- font-weight: italic;
- color: #00FF00;
-}
-
-a.slideheading {
- font-size: 130%;
- text-decoration: none;
- color: #8080FF;
-}
-
-a.slideheading:hover {
- font-size: 130%;
- text-decoration: none;
- color: #00FF00;
-}
-
-a.slideheading3 {
- font-size: 110%;
- text-decoration: none;
- color: #8080FF;
-}
-
-a.slideheading3:hover {
- font-size: 110%;
- text-decoration: none;
- color: #00FF00;
-}
-
-ul {
- color: #111111;
-}
-
-ul.sub {
- font-size: 90%;
- color: #222222;
-}
-
-.conclusion {
- text-align: center;
- font-weight: bold;
-}
-
-.hint {
- text-align: center;
- font-weight: italic;
- font-size: 90%;
-}
-
-.mark {
- text-indent: 25px;
- font-weight: bold;
- font-size: 90%;
- color: #111111;
-}
-
-.description {
- text-indent: 25px;
-}
-
-.typewriter {
- font-family: Courier_New, Courier, serif;
- font-weight: bold;
- color: #111111;
-}
-
-.tt {
- font-family: Courier New, Courier, serif;
- font-weight: bold;
- color: #A0FFA0;
-}
-
-pre {
- font-family: Courier New, Courier, serif;
- font-weight: bold;
- color: #A0FFA0;
-}
-
-.pageno {
- text-align: right;
- font-weight: italic;
- font-size: 70%;
- color: #444444;
-}
-
-.title {
- text-align: center;
- font-size: 200%;
- font-weight: bold;
-}
-
-.subtitle {
- text-align: center;
- font-size: 120%;
- font-weight: bold;
-}
-
-.slide {
- padding-top:3px;
- padding-bottom:3px;
- font-size: 80%;
- color: #FFFFFF;
- background-color: #000070;
-}
-
-.code {
- border-width:6px;
- border-color:#9999FF;
- border-style:groove;
- padding:5px;
- text-align: justify;
- color: #E0E000;
- background-color: #0000B0;
-}
-
-.sub1 {
- color: #AAAAFF;
-}
-
-.center {
- text-align: center;
-}
-
-table.center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.small {
- font-size: 50%;
-}
-
-.bold {
- font-weight: bold;
- color: #FFFF00;
-}
-
-.boldcenter {
- font-weight: bold;
- text-align: center;
- font-size: 180%;
- line-height: 42px;
-}
-
-.defh {
- font-weight: bold;
-}
-
-.deft {
- text-align: justify;
- margin-left:17px;
- margin-right:17px;
-}
-
-.verybig {
- font-size: 250%;
- font-weight: bold;
- text-align: center;
- padding-top:42px;
- padding-bottom:42px;
- line-height: 78px;
- color: #FFFFFF;
- background-color: #000070;
-}
-
-.arrow a:before
-{
- content: url(img/rightarrow.png);
- margin-right: 5px;
-}
-
-.intro dt {
- font-weight: bold;
- margin-top: 2ex;
-}
diff --git a/www/css/blends.css b/www/css/blends.css
index e69de29..c6fc06e 100644
--- a/www/css/blends.css
+++ b/www/css/blends.css
@@ -0,0 +1,102 @@
+
+
+/* from the debian.org homepage */
+#splash {
+ background-image: url('/img/splash_bg.png');
+ background-position:top center;
+ background-repeat: repeat;
+ margin-top: 0;
+ margin-bottom: 1.5em;
+ text-align: center;
+ overflow: hidden;
+ height: 120px;
+}
+#splash h1 {
+ background-position:top center;
+ padding-top:130px;
+ overflow:hidden;
+ text-align:center;
+ background-repeat:no-repeat;
+ display:block;
+ margin:0;
+ height:0;
+}
+span.download {
+ display: block;
+ position: absolute;
+ right: 13px;
+ font-size: 0.75em;
+ line-height: 1.1;
+ background-color: white;
+ margin-top: 10px;
+}
+span.download a {
+ color: white;
+ font-weight: bold;
+ text-decoration: none;
+ border: 0.15em solid #339900;
+ display: block;
+ background: transparent url('/img/downloads.png') no-repeat 5px 12px;
+ padding-top: 7px;
+ padding-left: 30px;
+ padding-right: 1em;
+ color:#339900;
+}
+span.download a:hover {
+ text-decoration: none;
+ color: white;
+ background-color: #339900;
+}
+span.download a em {
+ font-size: 0.75em;
+ font-weight: normal;
+ clear: right;
+ color: #339900;
+ line-height: 1;
+ font-style: normal;
+ display: block;
+ margin-bottom: 1em;
+}
+span.download a:hover em {
+ color: white;
+ background-color: #339900;
+}
+/*********************************************/
+
+/* from the wiki */
+pre, div.codearea {
+ padding: 1em;
+ margin: 2em 1.5em 2em 1.5em;
+ line-height: 1.5em;
+ background-color: #f5f6f7;
+ border: 1px solid #d2d3d7 ;
+ font-family: monospace;
+ font-size: 100%;
+ line-height: 2em;
+}
+
+span.sep {
+ margin-right: 0.25em;
+ margin-left: 0.25em;
+}
+/*********************************************/
+
+.homepagenav {
+ width: 100%;
+}
+
+.homepagenav li {
+ display: inline-block;
+ width: 33%;
+}
+
+.homepagenav li:before {
+ content: "» ";
+}
+
+/***** Blend specific *****/
+
+h1#hamradio {
+ background-image: url('/img/splash_hamradio.png');
+}
+
diff --git a/www/css/debian.css b/www/css/debian.css
index 3ebe62c..12af6fc 100644
--- a/www/css/debian.css
+++ b/www/css/debian.css
@@ -73,7 +73,7 @@ body {
line-height: 1.5;
color: #222;
background-color: white;
- background-image:url('../img/gradient.png');
+ background-image:url('/img/gradient.png');
background-position: 0 0;
background-repeat: repeat-x;
/* Uncomment to show baseline grid
diff --git a/www/debichem/inc/style.css b/www/debichem/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/debichem/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/debichem/inc/style.css b/www/debichem/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/debichem/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/debichem/inc/wz_tooltip.js b/www/debichem/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/debichem/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/debichem/inc/wz_tooltip.js b/www/debichem/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/debichem/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/edu/inc/style.css b/www/edu/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/edu/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/edu/inc/style.css b/www/edu/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/edu/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/edu/inc/wz_tooltip.js b/www/edu/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/edu/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/edu/inc/wz_tooltip.js b/www/edu/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/edu/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/ezgo/inc/style.css b/www/ezgo/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/ezgo/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/ezgo/inc/style.css b/www/ezgo/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/ezgo/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/ezgo/inc/wz_tooltip.js b/www/ezgo/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/ezgo/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/ezgo/inc/wz_tooltip.js b/www/ezgo/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/ezgo/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/fun/inc/style.css b/www/fun/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/fun/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/fun/inc/style.css b/www/fun/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/fun/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/fun/inc/wz_tooltip.js b/www/fun/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/fun/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/fun/inc/wz_tooltip.js b/www/fun/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/fun/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/games/inc/style.css b/www/games/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/games/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/games/inc/style.css b/www/games/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/games/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/games/inc/wz_tooltip.js b/www/games/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/games/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/games/inc/wz_tooltip.js b/www/games/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/games/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/gis/inc/style.css b/www/gis/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/gis/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/gis/inc/style.css b/www/gis/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/gis/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/gis/inc/wz_tooltip.js b/www/gis/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/gis/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/gis/inc/wz_tooltip.js b/www/gis/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/gis/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/hamradio/dev.html b/www/hamradio/dev.html
deleted file mode 100644
index 22b0d3d..0000000
--- a/www/hamradio/dev.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<html>
-<head>
- <title>Developer Information · Debian Hamradio Pure Blend</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta name="robots" content="noindex" />
-<link href="css/debian.css" rel="stylesheet" type="text/css">
-<link href="css/hamradio.css" rel="stylesheet" type="text/css">
-<link rel="shortcut icon" href="img/favicon.ico">
-</head>
-<body>
-<div id="header">
- <div id="wikisection">
- <p class="section"><a href="/hamradio/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
- </div>
- <div id="upperheader">
- <div id="logo">
- <a href="http://www.debian.org" title="Debian Home"><img src="img/openlogo-50.png" alt="Debian" width="50" height="61"></a>
- </div>
- </div> <!-- end upperheader -->
- <div id="navbar">
- <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
- <ul>
- <li><a href="/hamradio">Home</a></li>
- <li><a href="/hamradio/tasks.html">Packages</a></li>
- <li><a href="/hamradio/live.html">Live DVDs</a></li>
- <li><a href="/hamradio/dev.html">Development</a></li>
- </ul>
- </div> <!-- end navbar -->
- <p id="breadcrumbs"> hamradio pure blend <span class="sep">/</span> developer information</p>
-</div>
-
-<div id="content">
- <h1>Debian Hamradio Pure Blend Developer Information</h1>
-
- <h2>Packaging</h2>
-
- <p>While packaging of hamradio software in Debian is the responsibility
- of the <a href="http://pkg-hamradio.alioth.debian.org">Debian Hamradio Maintainers</a>,
- the pure blend project does provide the following tools that may be useful
- to packagers:</p>
-
- <ul>
- <li><a href="/hamradio/tasks/">Blend Tasks Index</a></li>
- <li><a href="/hamradio/bugs/">Blend Bugs Overview</a></li>
- <li><a href="/hamradio/thermometer/">Blend Thermometer</a></li>
- </ul>
-
- <h2>Metapackages Source Code</h2>
-
- <ul>
- <li><a href="https://anonscm.debian.org/cgit/blends/projects/hamradio.git">Web-based git browser</a></li>
- <li><a href="https://anonscm.debian.org/git/blends/projects/hamradio.git">Anonymous git clone</a></li>
- </ul>
-
- <pre>git clone https://anonscm.debian.org/git/blends/projects/hamradio.git
-cd hamradio ; make dist
-gbp buildpackage</pre>
-
- <p><i>Note: you will need <a
- href="https://packages.debian.org/unstable/git-buildpackage">git-buildpackage</a>
- and <a href="https://packages.debian.org/unstable/blends-dev">blends-dev</a>
- installed to build the source.</i></p>
-
- <p>To learn more about how to work with blends metapackages, see <a href="http://blends.debian.org/blends/ch06.html#metapackages">§6.1</a> of the <a href="http://blends.debian.org/blends/">Debian Pure Blends Manual</a>.</p>
-
- <h2>Live DVD Source Code</h2>
-
- <ul>
- <li><a href="http://anonscm.debian.org/cgit/blends/blends-images.git">Web-based git browser</a></li>
- <li><a href="http://anonscm.debian.org/git/blends/blends-images.git/">Anonymouse git clone</a></li>
- </ul>
-
- <pre>git clone http://anonscm.debian.org/git/blends/blends-images.git/
-cd blends-images/images/hamradio-amd64
-lb config
-sudo lb build</pre>
-
- <p><i>Note: you will need <a
- href="https://packages.debian.org/unstable/git-buildpackage">git-buildpackage</a>
- and <a href="https://packages.debian.org/unstable/live-build">live build</a>
- installed to build the source.</a></i></p>
-
- <p>To learn more about how to work with live-build sources, see the <a
- href="http://live.debian.net/manual/unstable/html/live-manual/toc.en.html">Live
- Systems Manual</a>.</p>
-</div>
-
-<div id="footer">
-<div id="fineprint">
- <p>
- The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
- <br />
- Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> or <a href="irc://irc.debian.org/#debian-hams">#debian-hams</a> on irc.debian.org.
- <br />
- Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
- </p>
-</div>
-</div>
-
-</body>
-</html>
-
diff --git a/www/hamradio/dev/index.html b/www/hamradio/dev/index.html
new file mode 100644
index 0000000..e12bce2
--- /dev/null
+++ b/www/hamradio/dev/index.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Developer Information · Debian Hamradio Pure Blend</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="robots" content="noindex" />
+ <link href="/css/debian.css" rel="stylesheet" type="text/css">
+ <link href="/css/blends.css" rel="stylesheet" type="text/css">
+ <link rel="shortcut icon" href="/img/favicon.ico">
+
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="wikisection">
+ <p class="section"><a href="/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
+ </div>
+
+ <div id="upperheader">
+ <div id="logo">
+ <a href="http://www.debian.org" title="Debian Home">
+ <img src="/img/openlogo-50.png" alt="Debian" width="50" height="61">
+ </a>
+ </div>
+ </div> <!-- end upperheader -->
+
+ <div id="navbar">
+ <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
+ <ul>
+ <li><a href="/hamradio">Home</a></li>
+<li><a href="/hamradio/packages/">Packages</a></li>
+<li><a href="/hamradio/live/">Live DVDs</a></li>
+<li><a href="/hamradio/dev/">Development</a></li>
+
+ </ul>
+ </div> <!-- end navbar -->
+
+ <p id="breadcrumbs"> Debian Hamradio Pure Blend<span class="sep">/</span>Developer Information</p>
+ </div>
+
+
+
+ <div id="content">
+ <h1>Debian Hamradio Pure Blend Developer Information</h1>
+
+<h2>Packaging</h2>
+
+<p>While packaging of hamradio software in Debian is the responsibility
+of the <a href="http://pkg-hamradio.alioth.debian.org">Debian Hamradio Maintainers</a>,
+the pure blend project does provide the following tools that may be useful
+to packagers:</p>
+
+<ul>
+ <li><a href="/hamradio/tasks/">Blend Tasks Index</a></li>
+ <li><a href="/hamradio/bugs/">Blend Bugs Overview</a></li>
+ <li><a href="/hamradio/thermometer/">Blend Thermometer</a></li>
+</ul>
+
+<h2>Metapackages Source Code</h2>
+
+<ul>
+ <li><a href="https://anonscm.debian.org/cgit/blends/projects/hamradio.git">Web-based git browser</a></li>
+ <li><a href="https://anonscm.debian.org/git/blends/projects/hamradio.git">Anonymous git clone</a></li>
+</ul>
+
+<pre>git clone https://anonscm.debian.org/git/blends/projects/hamradio.git
+cd hamradio ; make dist
+gbp buildpackage</pre>
+
+<p><i>Note: you will need <a
+href="https://packages.debian.org/unstable/git-buildpackage">git-buildpackage</a>
+and <a href="https://packages.debian.org/unstable/blends-dev">blends-dev</a>
+installed to build the source.</i></p>
+
+<p>To learn more about how to work with blends metapackages, see <a href="http://blends.debian.org/blends/ch06.html#metapackages">§6.1</a> of the <a href="http://blends.debian.org/blends/">Debian Pure Blends Manual</a>.</p>
+
+<h2>Live DVD Source Code</h2>
+
+<ul>
+ <li><a href="http://anonscm.debian.org/cgit/blends/blends-images.git">Web-based git browser</a></li>
+ <li><a href="http://anonscm.debian.org/git/blends/blends-images.git/">Anonymouse git clone</a></li>
+</ul>
+
+<pre>git clone http://anonscm.debian.org/git/blends/blends-images.git/
+cd blends-images/images/hamradio-amd64
+lb config
+sudo lb build</pre>
+
+<p><i>Note: you will need <a
+ href="https://packages.debian.org/unstable/git-buildpackage">git-buildpackage</a>
+ and <a href="https://packages.debian.org/unstable/live-build">live build</a>
+ installed to build the source.</a></i></p>
+
+<p>To learn more about how to work with live-build sources, see the <a
+ href="http://live.debian.net/manual/unstable/html/live-manual/toc.en.html">Live
+ Systems Manual</a>.</p>
+</div>
+
+
+ </div>
+
+ <div id="footer">
+<div id="fineprint">
+ <p>
+ The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
+ <br />
+ Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> (<a href="https://lists.debian.org/debian-hams/">archives</a>)
+ or <a href="irc://irc.debian.org/debian-hams">#debian-hams</a> on irc.debian.org.
+ <br />
+ Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
+ </p>
+</div>
+</div>
+
+
+ </body>
+</html>
diff --git a/www/hamradio/img/debian.png b/www/hamradio/img/debian.png
deleted file mode 100644
index d1321d8..0000000
Binary files a/www/hamradio/img/debian.png and /dev/null differ
diff --git a/www/hamradio/img/rdf_w3c_icon.128.gif b/www/hamradio/img/rdf_w3c_icon.128.gif
deleted file mode 100644
index ca5d98e..0000000
Binary files a/www/hamradio/img/rdf_w3c_icon.128.gif and /dev/null differ
diff --git a/www/hamradio/img/schema.dot b/www/hamradio/img/schema.dot
deleted file mode 100644
index 1bf5832..0000000
--- a/www/hamradio/img/schema.dot
+++ /dev/null
@@ -1,20 +0,0 @@
-graph schema {
-
- ranksep=1
- nodesep=1
- node [shape=record];
-
- debian [label="{The Debian Project|admssw:SoftwareProject|http://rdf.debian.net/debian}"];
- project [label="{Debian Packaging Project|admssw:SoftwareProject|http://rdf.debian.net/project/\<source-name\>}"];
- package [label="{Debian Source Package Release|admssw:SoftwareRelease|http://rdf.debian.net/maintainer/\<source-name\>_\<debversion\>}"];
- maintainer [label="{Debian Contributor or Team|foaf:Agent|http://rdf.debian.net/maintainer/\<url-encoded-email-address\>}"];
- repository [label="{Debian Packaging VCS Repository|doap:Repository|http://rdf.debian.net/repository/\<source-name\>}"];
- release [label="{Debian Release|admssw:SoftwareRelease|http://rdf.debian.net/release/\<source-name\>_\<debversion\>}"];
-
- debian -- release [taillabel="admssw:project" headlabel="doap:release"];
- project -- package [taillabel="admssw:project" headlabel="doap:release"];
- project -- maintainer [headlabel="doap:maintainer\ndoap:developer"];
- project -- repository [headlabel="doap:repository"];
- package -- release [headlabel="dcterms:isPartOf" taillabel="admssw:includedAsset"];
-}
-
diff --git a/www/hamradio/img/schema.png b/www/hamradio/img/schema.png
deleted file mode 100644
index 845356f..0000000
Binary files a/www/hamradio/img/schema.png and /dev/null differ
diff --git a/www/hamradio/index.html b/www/hamradio/index.html
index 308bf7a..30cd5b5 100644
--- a/www/hamradio/index.html
+++ b/www/hamradio/index.html
@@ -1,38 +1,49 @@
+<!DOCTYPE html>
<html>
-<head>
- <title>Debian Hamradio Pure Blend</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta name="robots" content="noindex" />
-<link href="css/debian.css" rel="stylesheet" type="text/css">
-<link href="css/hamradio.css" rel="stylesheet" type="text/css">
-<link rel="shortcut icon" href="img/favicon.ico">
-</head>
-<body>
-<div id="header">
- <div id="wikisection">
- <p class="section"><a href="/hamradio/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
- </div>
- <div id="upperheader">
- <div id="logo">
- <a href="http://www.debian.org" title="Debian Home"><img src="img/openlogo-50.png" alt="Debian" width="50" height="61"></a>
- </div>
- </div> <!-- end upperheader -->
- <div id="navbar">
- <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
- <ul>
- <li><a href="/hamradio">Home</a></li>
- <li><a href="/hamradio/tasks.html">Packages</a></li>
- <li><a href="/hamradio/live.html">Live DVDs</a></li>
- <li><a href="/hamradio/dev.html">Development</a></li>
- </ul>
- </div> <!-- end navbar -->
- <p id="breadcrumbs"> hamradio pure blend</p>
-</div>
+ <head>
+ <title>Debian Hamradio Pure Blend</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="robots" content="noindex" />
+ <link href="/css/debian.css" rel="stylesheet" type="text/css">
+ <link href="/css/blends.css" rel="stylesheet" type="text/css">
+ <link rel="shortcut icon" href="/img/favicon.ico">
+
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="wikisection">
+ <p class="section"><a href="/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
+ </div>
+
+ <div id="upperheader">
+ <div id="logo">
+ <a href="http://www.debian.org" title="Debian Home">
+ <img src="/img/openlogo-50.png" alt="Debian" width="50" height="61">
+ </a>
+ </div>
+ </div> <!-- end upperheader -->
+
+ <div id="navbar">
+ <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
+ <ul>
+ <li><a href="/hamradio">Home</a></li>
+<li><a href="/hamradio/packages/">Packages</a></li>
+<li><a href="/hamradio/live/">Live DVDs</a></li>
+<li><a href="/hamradio/dev/">Development</a></li>
+
+ </ul>
+ </div> <!-- end navbar -->
+
+ <p id="breadcrumbs"> Debian Hamradio Pure Blend</p>
+ </div>
-<div id="content">
- <span class="download"><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso">Download Debian Hamradio<br>Pure Blend Jessie Preview<em>(64-bit Live DVD)</em></a> </span>
+
+
+ <div id="content">
+ <span class="download"><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso">Download Debian Hamradio<br>Pure Blend Jessie Preview<em>(64-bit Live DVD)</em></a> </span>
<div id="splash">
- <h1>Debian Hamradio Pure Blend</h1>
+ <h1 id="hamradio">Debian Hamradio Pure Blend</h1>
</div>
<p>The <b>Debian Hamradio Pure Blend</b> is a project of the <a
@@ -43,9 +54,9 @@
out-of-the-box. This blend aims to support the needs of radio amateurs.</p>
<ul class="homepagenav">
- <li><a href="/hamradio/tasks.html">Packages</a></li>
- <li><a href="/hamradio/live.html">Live DVDs</a></li>
- <li><a href="/hamradio/dev.html">Development</a></li>
+ <li><a href="/hamradio/packages/">Packages</a></li>
+ <li><a href="/hamradio/live/">Live DVDs</a></li>
+ <li><a href="/hamradio/dev/">Development</a></li>
</ul>
<h2>News</h2>
@@ -53,20 +64,23 @@
<tt>[12 May 2015]</tt> <strong><a href="https://lists.debian.org/debian-hams/2015/05/msg00140.html">ITP: debian-hamradio -- Debian Hamradio Pure Blend Metapackages</a></strong><br>
<tt>[02 Dec 2014]</tt> <strong><a href="https://lists.debian.org/debian-devel/2014/12/msg00063.html">Announcing a Debian Hamradio Blend</a></strong><br>
<br>
-</div>
-<div id="footer">
+
+ </div>
+
+ <div id="footer">
<div id="fineprint">
<p>
The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
<br />
- Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> or <a href="irc://irc.debian.org/#debian-hams">#debian-hams</a> on irc.debian.org.
+ Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> (<a href="https://lists.debian.org/debian-hams/">archives</a>)
+ or <a href="irc://irc.debian.org/debian-hams">#debian-hams</a> on irc.debian.org.
<br />
Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
</p>
</div>
</div>
-</body>
-</html>
+ </body>
+</html>
diff --git a/www/hamradio/index.old.html b/www/hamradio/index.old.html
deleted file mode 100644
index 84db640..0000000
--- a/www/hamradio/index.old.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<title>Debian Hamradio Pure Blend</title>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-<link href="../inc/style.css" type="text/css" rel="stylesheet" />
-</head>
-<body>
-<div style="text-align: center;">
-<a href="http://pkg-hamradio.alioth.debian.org/"><span>
- <span><img src="http://pkg-hamradio.alioth.debian.org/logo.png" alt="Debian Hamradio Project" height="93" /></span>
- </span>
-</a>
-</div>
-<table class="columns">
-<tr>
- <td class="left">
-
-<span class="section">Summary</span>
- <div class="section">
- <div class="sectionTop"></div>
- <div class="row">
-<p>A <a href="http://blends.alioth.debian.org/blends/">Debian Pure Blend</a> is a Debian internal project which assembles
- a set of packages that might help users to solve certain tasks of their work.</p>
- </div></div>
-
- <span class="section">Tasks</span>
- <div class="section">
- <div class="sectionTop"></div>
- <div class="row">
-<div><span class="link"><a href="tasks/antenna">Antennas</a></span></div>
-<div><span class="link"><a href="tasks/datamodes">Data Modes</a></span></div>
-<div><span class="link"><a href="tasks/digitalvoice">Digital Voice</a></span></div>
-<div><span class="link"><a href="tasks/logging">Logging</a></span></div>
-<div><span class="link"><a href="tasks/morse">Morse</a></span></div>
-<div><span class="link"><a href="tasks/nonamateur">Non-amateur Modes</a></span></div>
-<div><span class="link"><a href="tasks/packetmodes">Packet Modes</a></span></div>
-<div><span class="link"><a href="tasks/rigcontrol">Rig Control</a></span></div>
-<div><span class="link"><a href="tasks/satellite">Satellite Operation</a></span></div>
-<div><span class="link"><a href="tasks/sdr">Software Defined Radio</a></span></div>
-<div><span class="link"><a href="tasks/tools">Tools</a></span></div>
-<div><span class="link"><a href="tasks/training">Training</a></span></div>
-<hr>
-<div><span class="link"><a href="tasks/packagelist">All on one page</a></span></div>
- </div>
- </div>
-
- <span class="section">Development Tools</span>
- <div class="section">
- <div class="sectionTop"></div>
-<div class="row">
-<div><span class="link"><a href="bugs_udd/">Bugs Listing</a></span></div>
-<div><span class="link"><a href="thermometer/">Thermometer</a></span></div>
-<div><span class="link"><a href="http://qa.debian.org/developer.php?login=debian-hams%40lists.debian.org&comaint=yes">QA Overview</a></span></div>
-<div><span class="link"><a href="https://udd.debian.org/dmd/?email1=debian-hams@lists.debian.org#todo">Maintainer Dashboard</a></span></div>
-<div><span class="link"><a href="http://pet.debian.net/pkg-hamradio/pet.cgi">Package Entropy Tracker</a></span></div>
- </div>
- </div>
-
-
- </td>
- <td class="main">
- <div class="pageBody">
- <h1>Debian Hamradio Pure Blend</h1>
- <p>The Debian Hamradio Pure Blend is a project of the <a href="http://pkg-hamradio.alioth.debian.org/">Debian Hamradio Maintainers Team</a> who collaborate on maintenance of amateur-radio related packages for Debian. Every Pure Blend is a subset of Debian that is configured to support a particular target group out-of-the-box, which in our case is radio amateurs.</p>
-<h2>Tasks</h2>
-<p>Packages in the Debian Hamradio Pure Blend are split into tasks, like "Rig Control" and "Packet Modes", and you can see the full list of these on the menu to the left. Each task contains software that is useful for a particular activity. Some software may be in two tasks where it is useful for both.</p>
-<h2>Live System</h2>
-<p>An experimental live system based on Debian testing and using the MATE Desktop Environment is available for download. This can either be burnt to a DVD, used directly in VirtualBox or written to a USB stick.</p>
-<br>
-<ul>
-<li><a href="torrents/hamradio-live-20141221-amd64.torrent">Debian Hamradio Pure Blend Live ISO (64-bit)</a> (<a href="http://irl.sdf.org/hamradio-images/hamradio-live-20141221-amd64/hamradio-live-20141221-amd64.iso">Direct Download</a>, <a href="http://irl.sdf.org/hamradio-images/hamradio-live-20141221-amd64/hamradio-live-20141221-amd64.iso.sig">GPG Signature</a>, <a href="http://irl.sdf.org/hamradio-images/hamradio-live-20141221-amd64/hamradio-live-20141221-amd64.nfo">Readme</a>)</li>
-<li><a href="torrents/hamradio-live-20141221-i386.torrent">Debian Hamradio Pure Blend Live ISO (32-bit)</a> (<a href="http://irl.sdf.org/hamradio-images/hamradio-live-20141221-i386/hamradio-live-20141221-i386.iso">Direct Download</a>, <a href="http://irl.sdf.org/hamradio-images/hamradio-live-20141221-i386/hamradio-live-20141221-i386.iso.sig">GPG Signature</a>, <a href="http://irl.sdf.org/hamradio-images/hamradio-live-20141221-i386/hamradio-live-20141221-i386.nfo">Readme</a>)</li>
-<li><a href="http://anonscm.debian.org/cgit/blends/blends-images.git/">Debian Pure Blend Live Images Source Code</a></li>
-</ul>
-<br>
-<p>The ISO images are built as hybrid images, so you can copy them directly to a USB stick without using any special software like unetbootin. On a Linux system, you can do this like so:</p>
-<pre style="background-color: #ccc; padding: 3px; margin-top: 5px; margin-bottom: 5px;">
-sudo dd if=/path/to/debian-shack-live-latest.iso of=/dev/sdX
-</pre>
-<p><i>Note: You will need to change the filename if you've downloaded the 32-bit version to match. The output of the <tt>dmesg</tt> command should let you know the device name of the USB stick where you will need to change the X to the letter given.</i></p>
-<h2>Source Code</h2>
-<p>Currently this Pure Blend is still in development and no release has been made yet, but it is possible to fetch and build the current source from git:</p>
-<pre style="background-color: #ccc; padding: 3px; margin-top: 5px; margin-bottom: 5px;">
-git clone https://anonscm.debian.org/git/blends/projects/hamradio.git
-cd hamradio ; make dist
-git-buildpackage
-</pre>
-<p><i>Note that you will need <a href="https://packages.qa.debian.org/g/git-buildpackage.html">git-buildpackage</a> and <a href="https://packages.qa.debian.org/b/blends.html">blends-dev</a> installed to build the source.</i></p>
-<h2>Contact</h2>
-<p>The primary point of contact for the Debian Hamradio Pure Blend is the Debian Hamradio Maintainers Team. You can contact the team by:</p>
-<br>
-<ul>
-<li>E-Mail: <a href="mailto:debian-hams at lists.debian.org">debian-hams at lists.debian.org</a> (<a href="https://lists.debian.org/debian-hams/">archives</a>)</li>
-<li>IRC: <a href="irc://irc.debian.org/#debian-hams">#debian-hams</a> on irc.debian.org</a></li>
-</ul>
- </div>
- </td>
-</tr>
-</table>
-
-<div id="footer">
- <address>Last update: Fri, 21 Nov 2014 15:36:00 -0000</address>
-</div>
-</body>
-</html>
diff --git a/www/hamradio/live.html b/www/hamradio/live.html
deleted file mode 100644
index 9c9fd9d..0000000
--- a/www/hamradio/live.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<html>
-<head>
- <title>Live DVDs · Debian Hamradio Pure Blend</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta name="robots" content="noindex" />
-<link href="css/debian.css" rel="stylesheet" type="text/css">
-<link href="css/hamradio.css" rel="stylesheet" type="text/css">
-<link rel="shortcut icon" href="img/favicon.ico">
-</head>
-<body>
-<div id="header">
- <div id="wikisection">
- <p class="section"><a href="/hamradio/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
- </div>
- <div id="upperheader">
- <div id="logo">
- <a href="http://www.debian.org" title="Debian Home"><img src="img/openlogo-50.png" alt="Debian" width="50" height="61"></a>
- </div>
- </div> <!-- end upperheader -->
- <div id="navbar">
- <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
- <ul>
- <li><a href="/hamradio">Home</a></li>
- <li><a href="/hamradio/tasks.html">Packages</a></li>
- <li><a href="/hamradio/live.html">Live DVDs</a></li>
- <li><a href="/hamradio/dev.html">Development</a></li>
- </ul>
- </div> <!-- end navbar -->
- <p id="breadcrumbs"> hamradio pure blend <span class="sep">/</span> live dvds</p>
-</div>
-
-<div id="content">
- <h1>Debian Hamradio Pure Blend Live DVDs</h1>
-
- <p>The Debian Hamradio Pure Blend produces <b>Live DVD images</b> that can
- be used to try out the Debian Hamradio Pure Blend on a computer without
- having to install it first. The images also contain an installer which can
- be used to install Debian along with the packages from the blend.</p>
-
- <h2>Download</h2>
-
- <h3>Debian Hamradio Blend Jessie Preview</h3>
-
- <p>A preview release of the Debian Hamradio Blend Live DVD is available
- for download. This is an unofficial release as the blend metapackages are
- not included in Debian Jessie.</p>
-
- <ul>
- <li><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso">amd64 Live DVD image (ISO)</a> (<a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso.asc">GPG signature</a>)</li>
- <li><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-i386.iso">i386 Live DVD image (ISO)</a> (<a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-i386.iso.asc">GPG signature</a>)</li>
- </ul>
-
- <p><small>Hosting for these unofficial live images is provided by the <a
- href="http://www.sdf.org/">SDF Public Access UNIX system</a>.</small></p>
-
- <h3>Debian Hamradio Blend Stretch</h3>
-
- <p>In the near future, live DVDs will be built for stretch (the current
- Debian testing distribution) although these are not currently
- available.</p>
-
- <h2>Getting Started</h2>
-
- <h3>Using a DVD</h3>
-
- <p>Most modern operating systems will have provisions for burning ISO images
- to DVD media. There are too many options to describe here. If you are having
- difficulty, using a web search engine should provide the answers you need.</p>
-
- <h3>Using a USB stick</h3>
-
- <p>The ISO images are built as hybrid images, so you can copy them directly to
- a USB stick without using any special software like unetbootin. On a Linux
- system, you can do this like so:</p>
-
- <pre>sudo dd if=/path/to/debian-hamradio-live-image.iso of=/dev/sd<b>X</b></pre>
-
- <p>The output of the dmesg command should let you know the device name of the
- USB stick where you will need to change the X to the letter given.</p>
-
-
-</div>
-
-<div id="footer">
-<div id="fineprint">
- <p>
- The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
- <br />
- Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> or <a href="irc://irc.debian.org/#debian-hams">#debian-hams</a> on irc.debian.org.
- <br />
- Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
- </p>
-</div>
-</div>
-
-</body>
-</html>
-
diff --git a/www/hamradio/live/index.html b/www/hamradio/live/index.html
new file mode 100644
index 0000000..47d5027
--- /dev/null
+++ b/www/hamradio/live/index.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Live DVDs · Debian Hamradio Pure Blend</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="robots" content="noindex" />
+ <link href="/css/debian.css" rel="stylesheet" type="text/css">
+ <link href="/css/blends.css" rel="stylesheet" type="text/css">
+ <link rel="shortcut icon" href="/img/favicon.ico">
+
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="wikisection">
+ <p class="section"><a href="/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
+ </div>
+
+ <div id="upperheader">
+ <div id="logo">
+ <a href="http://www.debian.org" title="Debian Home">
+ <img src="/img/openlogo-50.png" alt="Debian" width="50" height="61">
+ </a>
+ </div>
+ </div> <!-- end upperheader -->
+
+ <div id="navbar">
+ <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
+ <ul>
+ <li><a href="/hamradio">Home</a></li>
+<li><a href="/hamradio/packages/">Packages</a></li>
+<li><a href="/hamradio/live/">Live DVDs</a></li>
+<li><a href="/hamradio/dev/">Development</a></li>
+
+ </ul>
+ </div> <!-- end navbar -->
+
+ <p id="breadcrumbs"> Debian Hamradio Pure Blend<span class="sep">/</span>Live DVDs</p>
+ </div>
+
+
+
+ <div id="content">
+ <h1>Debian Hamradio Pure Blend Live DVDs</h1>
+
+<p>The Debian Hamradio Pure Blend produces <b>Live DVD images</b> that can
+be used to try out the Debian Hamradio Pure Blend on a computer without
+having to install it first. The images also contain an installer which can
+be used to install Debian along with the packages from the blend.</p>
+
+<h2>Download</h2>
+
+<h3>Debian Hamradio Blend Jessie Preview</h3>
+
+<p>A preview release of the Debian Hamradio Blend Live DVD is available
+for download. This is an unofficial release as the blend metapackages are
+not included in Debian Jessie.</p>
+
+<ul>
+ <li><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso">amd64 Live DVD image (ISO)</a> (<a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-amd64.iso.asc">GPG signature</a>)</li>
+ <li><a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-i386.iso">i386 Live DVD image (ISO)</a> (<a href="http://irl.sdf.org/hamradio-images/debian-hamradio-jessie-preview-i386.iso.asc">GPG signature</a>)</li>
+</ul>
+
+<p><small>Hosting for these unofficial live images is provided by the <a
+ href="http://www.sdf.org/">SDF Public Access UNIX system</a>.</small></p>
+
+<h3>Debian Hamradio Blend Stretch</h3>
+
+<p>In the near future, live DVDs will be built for stretch (the current
+Debian testing distribution) although these are not currently
+available.</p>
+
+<h2>Getting Started</h2>
+
+<h3>Using a DVD</h3>
+
+<p>Most modern operating systems will have provisions for burning ISO images
+to DVD media. There are too many options to describe here. If you are having
+difficulty, using a web search engine should provide the answers you need.</p>
+
+<h3>Using a USB stick</h3>
+
+<p>The ISO images are built as hybrid images, so you can copy them directly to
+a USB stick without using any special software like unetbootin. On a Linux
+system, you can do this like so:</p>
+
+<pre>sudo dd if=/path/to/debian-hamradio-live-image.iso of=/dev/sd<b>X</b></pre>
+
+<p>The output of the dmesg command should let you know the device name of the
+USB stick where you will need to change the X to the letter given.</p>
+
+
+ </div>
+
+ <div id="footer">
+<div id="fineprint">
+ <p>
+ The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
+ <br />
+ Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> (<a href="https://lists.debian.org/debian-hams/">archives</a>)
+ or <a href="irc://irc.debian.org/debian-hams">#debian-hams</a> on irc.debian.org.
+ <br />
+ Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
+ </p>
+</div>
+</div>
+
+
+ </body>
+</html>
diff --git a/www/hamradio/packages/index.html b/www/hamradio/packages/index.html
new file mode 100644
index 0000000..51ababd
--- /dev/null
+++ b/www/hamradio/packages/index.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Packages and Tasks · Debian Hamradio Pure Blend</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="robots" content="noindex" />
+ <link href="/css/debian.css" rel="stylesheet" type="text/css">
+ <link href="/css/blends.css" rel="stylesheet" type="text/css">
+ <link rel="shortcut icon" href="/img/favicon.ico">
+
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="wikisection">
+ <p class="section"><a href="/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
+ </div>
+
+ <div id="upperheader">
+ <div id="logo">
+ <a href="http://www.debian.org" title="Debian Home">
+ <img src="/img/openlogo-50.png" alt="Debian" width="50" height="61">
+ </a>
+ </div>
+ </div> <!-- end upperheader -->
+
+ <div id="navbar">
+ <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
+ <ul>
+ <li><a href="/hamradio">Home</a></li>
+<li><a href="/hamradio/packages/">Packages</a></li>
+<li><a href="/hamradio/live/">Live DVDs</a></li>
+<li><a href="/hamradio/dev/">Development</a></li>
+
+ </ul>
+ </div> <!-- end navbar -->
+
+ <p id="breadcrumbs"> Debian Hamradio Pure Blend<span class="sep">/</span>Packages and Tasks</p>
+ </div>
+
+
+
+ <div id="content">
+ <h1>Debian Hamradio Pure Blend Packages</h1>
+<p><b>Packages in the Debian Hamradio Pure Blend</b> are split into
+tasks, like "Rig Control" and "Packet Modes", and you can see the full
+list of these below. Each task contains software that is useful for a
+particular activity. Some software may be in two tasks where it is
+useful for both.</p>
+
+<table>
+ <tr><th>Task name</th><th>Metapackage</th><th>Description</th><th>Catalogue</th></tr>
+ <tr>
+ <td>Antennas</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-antenna"><code>hamradio-antenna</code></a></td>
+ <td>This task contains packages that are useful for antenna modelling.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/antenna">Link</a></td>
+ </tr>
+ <tr>
+ <td>Data Modes</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-datamodes"><code>hamradio-datamodes</code></a></td>
+ <td>This task contains packages that are useful for using data modes, such as
+ RTTY and SSTV, including weak signal modes, such as JT65.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/datamodes">Link</a></td>
+ </tr>
+ <tr>
+ <td>Digital Voice</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-digitalvoice"><code>hamradio-digitalvoice</code></a></td>
+ <td>This task contains packages that are useful for using
+ digital voice modes on RF and for Internet linking.
+ <td><a href="http://blends.debian.org/hamradio/tasks/digitalvoice">Link</a></td>
+ </tr>
+ <tr>
+ <td>Logging</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-logging"><code>hamradio-logging</code></a></td>
+ <td>This task contains packages that are useful for logging (including for
+ contests).</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/logging">Link</a></td>
+ </tr>
+ <tr>
+ <td>Morse</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-morse"><code>hamradio-morse</code></a></td>
+ <td>This task contains packages that are useful for CW operation and
+ for learning morse.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/morse">Link</a></td>
+ </tr>
+ <tr>
+ <td>Non-Amateur Modes</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-nonamateur"><code>hamradio-nonamateur</code></a></td>
+ <td>This task contains packages that are useful for listening to non-amateur
+ modes such as AIS and ADS-B.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/nonamateur">Link</a></td>
+ </tr>
+ <tr>
+ <td>Packet Modes</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-packetmodes"><code>hamradio-packetmodes</code></a></td>
+ <td>This task contains packages that are useful for using AX.25, including IPv4
+ over AX.25 and APRS.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/packetmodes">Link</a></td>
+ </tr>
+ <tr>
+ <td>Rig Control</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-rigcontrol"><code>hamradio-rigcontrol</code></a></td>
+ <td>This task contains packages that are useful for rig control and
+ programming.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/rigcontrol">Link</a></td>
+ </tr>
+ <tr>
+ <td>Satellite operation</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-satellite"><code>hamradio-satellite</code></a></td>
+ <td>This task contains packages that are useful for amateur satellite operation.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/satellite">Link</a></td>
+ </tr>
+ <tr>
+ <td>Software-Defined Radio</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-sdr"><code>hamradio-sdr</code></a></td>
+ <td>This task contains packages that are useful for working with software-defined radio.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/sdr">Link</a></td>
+ </tr>
+ <tr>
+ <td>Tools</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-tools"><code>hamradio-tools</code></a></td>
+ <td>This task contains packages that provide useful hamradio related tools.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/tools">Link</a></td>
+ </tr>
+ <tr>
+ <td>Training</td>
+ <td><a href="https://packages.debian.org/unstable/hamradio-training"><code>hamradio-training</code></a></td>
+ <td>This task contains packages that are useful when training
+ for hamradio exams.</td>
+ <td><a href="http://blends.debian.org/hamradio/tasks/training">Link</a></td>
+ </tr>
+</table>
+
+<h3>Installing Metapackages</h3>
+
+<p><i>Note: The metapackages have only recently been submitted to the Debian archives and may not be available yet. These will only be available in Debian stretch (testing), and are not available in Debian jessie (stable).</i></p>
+
+<p>To install any of the task metapackages, use your favourite package management tool as you would with any other Debian package. For <code>apt-get</code>:</p>
+
+<pre>apt-get install hamradio-<task></pre>
+
+<p>If you want to install the entire blend:</p>
+
+<pre>apt-get install hamradio-antenna hamradio-datamodes hamradio-digitalvoice hamradio-logging hamradio-morse hamradio-nonamateur hamradio-packetmodes hamradio-rigcontrol hamradio-satellite hamradio-sdr hamradio-tasks hamradio-tools hamradio-training</pre>
+
+
+ </div>
+
+ <div id="footer">
+<div id="fineprint">
+ <p>
+ The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
+ <br />
+ Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> (<a href="https://lists.debian.org/debian-hams/">archives</a>)
+ or <a href="irc://irc.debian.org/debian-hams">#debian-hams</a> on irc.debian.org.
+ <br />
+ Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
+ </p>
+</div>
+</div>
+
+
+ </body>
+</html>
diff --git a/www/hamradio/tasks.html b/www/hamradio/tasks.html
deleted file mode 100644
index 379b9d2..0000000
--- a/www/hamradio/tasks.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<html>
-<head>
- <title>Packages and Tasks · Debian Hamradio Pure Blend</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta name="robots" content="noindex" />
-<link href="css/debian.css" rel="stylesheet" type="text/css">
-<link href="css/hamradio.css" rel="stylesheet" type="text/css">
-<link rel="shortcut icon" href="img/favicon.ico">
-</head>
-<body>
-<div id="header">
- <div id="wikisection">
- <p class="section"><a href="/hamradio/" title="Debian Hamradio Pure Blend">Hamradio Pure Blend</a></p>
- </div>
- <div id="upperheader">
- <div id="logo">
- <a href="http://www.debian.org" title="Debian Home"><img src="img/openlogo-50.png" alt="Debian" width="50" height="61"></a>
- </div>
- </div> <!-- end upperheader -->
- <div id="navbar">
- <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
- <ul>
- <li><a href="/hamradio">Home</a></li>
- <li><a href="/hamradio/tasks.html">Packages</a></li>
- <li><a href="/hamradio/live.html">Live DVDs</a></li>
- <li><a href="/hamradio/dev.html">Development</a></li>
- </ul>
- </div> <!-- end navbar -->
- <p id="breadcrumbs"> hamradio pure blend <span class="sep">/</span> packages</p>
-</div>
-
-<div id="content">
- <h1>Debian Hamradio Pure Blend Packages</h1>
- <p><b>Packages in the Debian Hamradio Pure Blend</b> are split into
- tasks, like "Rig Control" and "Packet Modes", and you can see the full
- list of these below. Each task contains software that is useful for a
- particular activity. Some software may be in two tasks where it is
- useful for both.</p>
-
- <table>
- <tr><th>Task name</th><th>Metapackage</th><th>Description</th><th>Catalogue</th></tr>
- <tr>
- <td>Antennas</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-antenna"><code>hamradio-antenna</code></a></td>
- <td>This task contains packages that are useful for antenna modelling.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/antenna">Link</a></td>
- </tr>
- <tr>
- <td>Data Modes</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-datamodes"><code>hamradio-datamodes</code></a></td>
- <td>This task contains packages that are useful for using data modes, such as
- RTTY and SSTV, including weak signal modes, such as JT65.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/datamodes">Link</a></td>
- </tr>
- <tr>
- <td>Digital Voice</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-digitalvoice"><code>hamradio-digitalvoice</code></a></td>
- <td>This task contains packages that are useful for using
- digital voice modes on RF and for Internet linking.
- <td><a href="http://blends.debian.org/hamradio/tasks/digitalvoice">Link</a></td>
- </tr>
- <tr>
- <td>Logging</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-logging"><code>hamradio-logging</code></a></td>
- <td>This task contains packages that are useful for logging (including for
- contests).</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/logging">Link</a></td>
- </tr>
- <tr>
- <td>Morse</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-morse"><code>hamradio-morse</code></a></td>
- <td>This task contains packages that are useful for CW operation and
- for learning morse.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/morse">Link</a></td>
- </tr>
- <tr>
- <td>Non-Amateur Modes</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-nonamateur"><code>hamradio-nonamateur</code></a></td>
- <td>This task contains packages that are useful for listening to non-amateur
- modes such as AIS and ADS-B.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/nonamateur">Link</a></td>
- </tr>
- <tr>
- <td>Packet Modes</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-packetmodes"><code>hamradio-packetmodes</code></a></td>
- <td>This task contains packages that are useful for using AX.25, including IPv4
- over AX.25 and APRS.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/packetmodes">Link</a></td>
- </tr>
- <tr>
- <td>Rig Control</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-rigcontrol"><code>hamradio-rigcontrol</code></a></td>
- <td>This task contains packages that are useful for rig control and
- programming.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/rigcontrol">Link</a></td>
- </tr>
- <tr>
- <td>Satellite operation</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-satellite"><code>hamradio-satellite</code></a></td>
- <td>This task contains packages that are useful for amateur satellite operation.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/satellite">Link</a></td>
- </tr>
- <tr>
- <td>Software-Defined Radio</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-sdr"><code>hamradio-sdr</code></a></td>
- <td>This task contains packages that are useful for working with software-defined radio.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/sdr">Link</a></td>
- </tr>
- <tr>
- <td>Tools</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-tools"><code>hamradio-tools</code></a></td>
- <td>This task contains packages that provide useful hamradio related tools.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/tools">Link</a></td>
- </tr>
- <tr>
- <td>Training</td>
- <td><a href="https://packages.debian.org/unstable/hamradio-training"><code>hamradio-training</code></a></td>
- <td>This task contains packages that are useful when training
- for hamradio exams.</td>
- <td><a href="http://blends.debian.org/hamradio/tasks/training">Link</a></td>
- </tr>
- </table>
-
- <h3>Installing Metapackages</h3>
-
- <p><i>Note: The metapackages have only recently been submitted to the Debian archives and may not be available yet. These will only be available in Debian stretch (testing), and are not available in Debian jessie (stable).</i></p>
-
- <p>To install any of the task metapackages, use your favourite package management tool as you would with any other Debian package. For <code>apt-get</code>:</p>
-
- <pre>apt-get install hamradio-<task></pre>
-
- <p>If you want to install the entire blend:</p>
-
- <pre>apt-get install hamradio-antenna hamradio-datamodes hamradio-digitalvoice hamradio-logging hamradio-morse hamradio-nonamateur hamradio-packetmodes hamradio-rigcontrol hamradio-satellite hamradio-sdr hamradio-tasks hamradio-tools hamradio-training</pre>
-
-</div>
-
-<div id="footer">
-<div id="fineprint">
- <p>
- The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
- <br />
- Contact: <a href="mailto:debian-hams at lists.debian.org">Debian Hamradio Maintainers</a> or <a href="irc://irc.debian.org/#debian-hams">#debian-hams</a> on irc.debian.org.
- <br />
- Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
- </p>
-</div>
-</div>
-
-</body>
-</html>
-
diff --git a/www/imaging/inc/style.css b/www/imaging/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/imaging/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/imaging/inc/style.css b/www/imaging/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/imaging/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/imaging/inc/wz_tooltip.js b/www/imaging/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/imaging/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/imaging/inc/wz_tooltip.js b/www/imaging/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/imaging/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/img/debian-med_package_chart.pdf b/www/img/debian-med_package_chart.pdf
deleted file mode 120000
index 33640f2..0000000
--- a/www/img/debian-med_package_chart.pdf
+++ /dev/null
@@ -1 +0,0 @@
-debian-med_1.99.pdf
\ No newline at end of file
diff --git a/www/img/debian-med_package_chart.pdf b/www/img/debian-med_package_chart.pdf
new file mode 100644
index 0000000..0fcb53b
Binary files /dev/null and b/www/img/debian-med_package_chart.pdf differ
diff --git a/www/hamradio/img/downloads.png b/www/img/downloads.png
similarity index 100%
rename from www/hamradio/img/downloads.png
rename to www/img/downloads.png
diff --git a/www/hamradio/img/favicon.ico b/www/img/favicon.ico
similarity index 100%
rename from www/hamradio/img/favicon.ico
rename to www/img/favicon.ico
diff --git a/www/hamradio/img/lines_web_bg.png b/www/img/splash_bg.png
similarity index 100%
rename from www/hamradio/img/lines_web_bg.png
rename to www/img/splash_bg.png
diff --git a/www/hamradio/img/homepage-logo.png b/www/img/splash_hamradio.png
similarity index 100%
rename from www/hamradio/img/homepage-logo.png
rename to www/img/splash_hamradio.png
diff --git a/www/hamradio/img/homepage-logo.xcf b/www/img/splash_hamradio.xcf
similarity index 100%
rename from www/hamradio/img/homepage-logo.xcf
rename to www/img/splash_hamradio.xcf
diff --git a/www/index.html b/www/index.html
index c8ea11e..9589d15 100644
--- a/www/index.html
+++ b/www/index.html
@@ -1,33 +1,44 @@
+<!DOCTYPE html>
<html>
-<head>
- <title>Debian Pure Blends</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta name="robots" content="noindex" />
-<link href="css/debian.css" rel="stylesheet" type="text/css">
-<link href="css/blends.css" rel="stylesheet" type="text/css">
-<link rel="shortcut icon" href="img/favicon.ico">
-</head>
-<body>
-<div id="header">
- <div id="wikisection">
- <p class="section"><a href="/" title="Debian Pure Blends">Pure Blends</a></p>
- </div>
- <div id="upperheader">
- <div id="logo">
- <a href="http://www.debian.org" title="Debian Home"><img src="img/openlogo-50.png" alt="Debian" width="50" height="61"></a>
- </div>
- </div> <!-- end upperheader -->
- <div id="navbar">
- <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
- <ul>
- <li><a href="/">Home</a></li>
- </ul>
- </div> <!-- end navbar -->
- <p id="breadcrumbs"> debian pure blends</p>
-</div>
+ <head>
+ <title>Debian Pure Blends</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="robots" content="noindex" />
+ <link href="/css/debian.css" rel="stylesheet" type="text/css">
+ <link href="/css/blends.css" rel="stylesheet" type="text/css">
+ <link rel="shortcut icon" href="/img/favicon.ico">
+
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="wikisection">
+ <p class="section"><a href="/" title="Debian Pure Blends">Pure Blends</a></p>
+ </div>
+
+ <div id="upperheader">
+ <div id="logo">
+ <a href="http://www.debian.org" title="Debian Home">
+ <img src="/img/openlogo-50.png" alt="Debian" width="50" height="61">
+ </a>
+ </div>
+ </div> <!-- end upperheader -->
+
+ <div id="navbar">
+ <p class="hidecss"><a href="#content">Skip Quicknav</a></p>
+ <ul>
+ <li><a href="/">Home</a></li>
+
+ </ul>
+ </div> <!-- end navbar -->
+
+ <p id="breadcrumbs"> Debian Pure Blends</p>
+ </div>
-<div id="content">
- <h1>Debian Pure Blends</h1>
+
+
+ <div id="content">
+ <h1>Debian Pure Blends</h1>
<p>
A Debian Pure Blend (in short Blend if used in clearly Debian internal context)
is a subset of Debian that is configured to
@@ -120,19 +131,23 @@ href="http://alioth.debian.org/projects/blends/">project page on Alioth</a>.
<br><br>
-</div>
-<div id="footer">
+ </div>
+
+ <div id="footer">
<div id="fineprint">
<p>
The source code powering these pages is available <a href="http://anonscm.debian.org/cgit/blends/website.git">here</a>.
<br />
- Contact: <a href="mailto:debian-blends at lists.debian.org">Debian Pure Blends Team</a> (<a href="https://lists.debian.org/debian-blends/">archives</a>) or <a href="irc://irc.debian.org/debian-blends">#debian-blends</a> on irc.debian.org.
+ Contact: <a href="mailto:debian-blends at lists.debian.org">Debian Pure Blends Team</a> (<a href="https://lists.debian.org/debian-blends/">archives</a>)
+ or <a href="irc://irc.debian.org/debian-blends">#debian-blends</a> on irc.debian.org.
<br />
Debian is a registered trademark of <a href="http://www.spi-inc.org/">Software in the Public Interest</a>.
</p>
</div>
</div>
-</body>
+
+ </body>
+
</html>
diff --git a/www/index.old.html b/www/index.old.html
deleted file mode 100644
index 4becc47..0000000
--- a/www/index.old.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en"><head>
- <meta http-equiv="Content-Type" content="text/html;
- charset=iso-8859-1"><title>Debian GNU/Linux -- Debian Pure Blends</title>
-
-<link rel="stylesheet" href="blends.css" type="text/css"></head>
-
-<body text="#000000" bgcolor="#ffffff" link="#0000ff" vlink="#800080" alink="#ff0000">
-<h1>Debian Pure Blends</h1>
-
-<p>
-A Debian Pure Blend (in short Blend if used in clearly Debian internal context)
-is a subset of Debian that is configured to
-support a particular target group out-of-the-box. The goal is to provide
-solutions for Special Interest Groups inside Debian.
-The concept was formerly known as Custom Debian Distributions.
-</p>
-<p>
-For a very short introduction see the <a
-href="http://wiki.debian.org/DebianPureBlends">Wiki page</a>.
-</p>
-<p>
-A comprehensive overview is given in the <a href="http://blends.alioth.debian.org/blends/">article covering
-Debian Pure Blends.</a>
-</p>
-<p>
-People who are interested in development of Debian Pure Blends
-should visit the <a
-href="http://alioth.debian.org/projects/blends/">project page on Alioth</a>.
-</p>
-
-<h2>Links to the tasks pages or homepages of currently existing Blends</h2>
-
-<dl class="intro">
- <dt><a href="accessibility">Debian Accessibility</a><dt>
- <dd class="arrow"><a href="accessibility/tasks">see all packages meeting requirements of people with disabilities</a></dd>
- <dt><a href="debichem">DebiChem</a></dt>
- <dd class="arrow"><a href="debichem/tasks">see all packages which might be used in chemists daily work</a></dd>
- <dt><a href="https://wiki.debian.org/Design">Debian Design</a></dt>
- <dd class="arrow"><a href="https://wiki.debian.org/Design">see homepage of this blend for use by visual designers</a></dd>
- <dt><a href="edu">Debian Edu</a></dt>
- <dd class="arrow"><a href="edu/tasks">see what packages are successfully used in schools</a></dd>
- <dt><a href="ezgo">Debian EzGo</a></dt>
- <dd class="arrow"><a href="ezgo/tasks">see all packages focussed on Asian localised desktops</a></dd>
- <dt><a href="games">Debian Games</a></dt>
- <dd class="arrow"><a href="games/tasks">see all packaged games in Debian</a></dd>
- <dt><a href="gis">Debian GIS</a></dt>
- <dd class="arrow"><a href="gis/tasks">see all packages useful for Geographic Information Systems and OpenStreetMap</a></dd>
- <dt><a href="junior">Debian Junior</a></dt>
- <dd class="arrow"><a href="junior/tasks">see all packages for children from 1 to 99</a></dd>
- <dt><a href="med">Debian Med</a></dt>
- <dd class="arrow"><a href="med/tasks">see all packages for medical practice and bio-medical research</a></dd>
- <dt><a href="multimedia">Debian Multimedia</a></dt>
- <dd class="arrow"><a href="multimedia/tasks">see all packages for audio and multimedia artists</a></dd>
- <dt><a href="https://wiki.debian.org/DebianParl">DebianParl</a></dt>
- <dd class="arrow"><a href="https://wiki.debian.org/DebianParl">see homepage of this blend for use by parliamentarians</a></dd>
- <dt><a href="science">Debian Science</a></dt>
- <dd class="arrow"><a href="science/tasks">see a lot of packages for different sciences and engineering</a></dd>
-</dl>
-
-</body>
-</html>
diff --git a/www/junior/inc/style.css b/www/junior/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/junior/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/junior/inc/style.css b/www/junior/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/junior/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/junior/inc/wz_tooltip.js b/www/junior/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/junior/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/junior/inc/wz_tooltip.js b/www/junior/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/junior/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/lex/inc/style.css b/www/lex/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/lex/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/lex/inc/style.css b/www/lex/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/lex/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/lex/inc/wz_tooltip.js b/www/lex/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/lex/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/lex/inc/wz_tooltip.js b/www/lex/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/lex/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/med/inc/style.css b/www/med/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/med/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/med/inc/style.css b/www/med/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/med/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/med/inc/wz_tooltip.js b/www/med/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/med/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/med/inc/wz_tooltip.js b/www/med/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/med/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/meta-blends/inc/style.css b/www/meta-blends/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/meta-blends/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/meta-blends/inc/style.css b/www/meta-blends/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/meta-blends/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/meta-blends/inc/wz_tooltip.js b/www/meta-blends/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/meta-blends/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/meta-blends/inc/wz_tooltip.js b/www/meta-blends/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/meta-blends/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/multimedia/inc/style.css b/www/multimedia/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/multimedia/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/multimedia/inc/style.css b/www/multimedia/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/multimedia/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/multimedia/inc/wz_tooltip.js b/www/multimedia/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/multimedia/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/multimedia/inc/wz_tooltip.js b/www/multimedia/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/multimedia/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/pan/inc/style.css b/www/pan/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/pan/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/pan/inc/style.css b/www/pan/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/pan/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/pan/inc/wz_tooltip.js b/www/pan/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/pan/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/pan/inc/wz_tooltip.js b/www/pan/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/pan/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/rest-test/inc/style.css b/www/rest-test/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/rest-test/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/rest-test/inc/style.css b/www/rest-test/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/rest-test/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/rest-test/inc/wz_tooltip.js b/www/rest-test/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/rest-test/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/rest-test/inc/wz_tooltip.js b/www/rest-test/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/rest-test/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/sanctuary/inc/style.css b/www/sanctuary/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/sanctuary/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/sanctuary/inc/style.css b/www/sanctuary/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/sanctuary/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/sanctuary/inc/wz_tooltip.js b/www/sanctuary/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/sanctuary/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/sanctuary/inc/wz_tooltip.js b/www/sanctuary/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/sanctuary/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
diff --git a/www/science/inc/style.css b/www/science/inc/style.css
deleted file mode 120000
index 783e39e..0000000
--- a/www/science/inc/style.css
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/style.css
\ No newline at end of file
diff --git a/www/science/inc/style.css b/www/science/inc/style.css
new file mode 100644
index 0000000..a97632d
--- /dev/null
+++ b/www/science/inc/style.css
@@ -0,0 +1,1131 @@
+/* old-site.css */
+body{
+ font:9pt sans-serif;
+ color:Black;
+ margin:0;
+ padding:0;
+ background:#eef4eb;
+}
+.centered{
+ text-align:center;
+ margin:1.5em;
+}
+
+a{
+ color:#008;
+ text-decoration:none;
+}
+
+a:hover{
+ text-decoration:underline;
+}
+
+p{
+ margin:0em;
+ padding:0.5em;
+}
+
+blockquote{
+ margin:0em 2em;
+ padding:0em;
+}
+
+pre.literal-block{
+ margin:0em 2em;
+ padding:0.5em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+pre{
+ margin: 0em;
+}
+
+ul{
+ list-style-image:url(../img/bullet.png);
+ padding:0em 0em 0em 3em;
+ margin:0em;
+}
+
+li.directory{
+ list-style-image:url(../img/folder.png);
+}
+
+li{
+ padding:0.25em;
+ margin:0em;
+}
+
+div.relatedHeading{
+ font-weight:bold;
+ border-bottom:1px solid #8CACBB;
+ margin:0em 0em 0.5em 0em;
+}
+
+div.relatedFooter{
+ color:#444;
+ font-style:italic;
+ text-align:right;
+}
+
+table.related{
+ padding:0em;
+ margin:0em;
+}
+
+table.related td{
+ padding:0.2em 0em 0.2em 1em;
+}
+
+table.related td:first-child{
+ padding:0.2em 0em 0em 0em;
+}
+
+p{
+ padding:0em;
+}
+
+div.heading{
+ padding:0em;
+ margin:0em;
+ background-color:white;
+}
+
+div.topRight{
+ float:right;
+ padding:0em;
+ margin:1em 1em 0 0;
+}
+
+a.sitename{
+ padding:0.25em;
+ margin:0 0 0 1em;
+}
+
+div.mainTitle{
+ font:250% sans-serif;
+ padding:0.1em 0 0 0.25em;
+ margin:0;
+}
+
+div.subTitle{
+ font:100% sans-serif;
+ font-style:italic;
+ padding:0 0 0.75em 2.5em;
+ margin:0;
+}
+
+div.footer{
+ margin:0em 0em 2em 0em;
+ text-align:center;
+}
+
+.pkgname{
+ font-weight:bolder;
+ font-stretch:expanded;
+}
+
+.pkgdesc{
+ font-style:italic;
+}
+
+.wnpp{
+ font-style:normal;
+ font-weight:normal;
+ font-stretch:expanded;
+}
+
+.transmpkg {
+ font:6pt sans-serif;
+ font-style:italic;
+ text-align: right;
+}
+
+.trans {
+ text-align: right;
+ padding-top: 8px;
+}
+
+.trans-missing {
+ text-align: center;
+ margin-top: 8px ;
+ padding-bottom: 8px ;
+ background: url(../img/features-missing.png) no-repeat;
+}
+
+p.smallprint{
+ color:#666;
+}
+
+span.section{
+ background:#dee7ec;
+ border:1px solid #8CACBB;
+ border-bottom:#dee7ec 1px solid;
+ color:#436976;
+ font:110% Bold;
+ margin:0px 0.5em 0em 0.8em;
+ padding:0em 2em;
+ white-space:nowrap;
+}
+
+div.sectionTop{
+ background:#dee7ec;
+ padding:0.4em;
+ margin:0em;
+}
+
+div.section{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ background-color:white;
+ background-repeat:repeat-y;
+ background-position:right;
+}
+
+div.pageBody{
+ border:1px solid #8CACBB;
+ margin:0em 0em 2em 0em;
+ padding:1em;
+ background-color:white;
+}
+
+h1{
+ font:200% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+ border-bottom:1px solid #CCC;
+}
+
+h1:first-child{
+ margin:0em 0em 0.75em 0em;
+}
+
+div.tabs{
+ margin:0em;
+ padding:0em 3em;
+ text-align:center;
+}
+
+ul.heading{
+ font:12px sans-serif;
+ display:inline;
+ padding:0;
+ margin:0;
+}
+
+ul.heading li{
+ display:inline;
+ padding:0;
+ margin:4px 0.5em 0 0.5em;
+}
+
+div.tabBar{
+ color:#436976;
+ background:#dee7ec;
+ padding:0em 1.5em;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px solid #8CACBB;
+ border-bottom:1px solid #8CACBB;
+}
+
+/*
+div.tabError{
+ padding:0em 1.5em;
+ background:#FCC;
+ margin:0.5em 0em 1.5em 0em;
+ border-top:1px dashed #8CACBB;
+ border-bottom:1px dashed #(CACBB;
+}
+*/
+
+div.row{
+ padding:0.5em;
+}
+
+span.link{
+ padding:0.5em;
+}
+
+span.curlink{
+ padding-left:0.5em;
+ padding-right:0.5em;
+ background:#dee7ec;
+}
+
+table{
+ margin:0em 0em 1em 0em;
+ font:9pt sans-serif;
+}
+
+table th{
+ border-bottom:1px solid #8CACBB;
+ font-weight:normal;
+ padding:0.2em 1em;
+ text-transform:lowercase;
+ white-space:nowrap;
+}
+
+table td{
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+}
+
+td.remark {
+ padding:0.8em 0.8em 1px 0.8em;
+ text-align:left;
+ font:7pt sans-serif;
+ color:Gray;
+ background:#eef4eb;
+}
+
+.registration {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ffebeb;
+}
+
+.enhanced-by {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebffeb;
+}
+
+.registrationlink {
+ font-weight:bold;
+}
+
+.published {
+ padding: 2px 0px 2px 0px;
+ margin-top: 7px;
+ text-align:left;
+ border-top:1px dotted #8CACBB;
+ background:#ebebff;
+}
+
+.title {
+ font-style:italic;
+}
+
+table.columns{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.sectionGrid{
+ width:100%;
+ padding:0em;
+ margin:0em;
+}
+
+table.columns td.left{
+ vertical-align:top;
+ width:18em;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+table.columns td.main{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 1.5em;
+}
+
+tr.sectionGrid{
+ margin:0em;
+ padding:0em;
+}
+
+td.sectionGrid{
+ vertical-align:top;
+ margin:0em;
+ padding:1px 0em 0em 1.5em;
+}
+
+td.sectionGrid:first-child{
+ padding:1px 0em 0em 0em;
+}
+
+table.columns td.right{
+ vertical-align:top;
+ width:20em;
+ margin:0em;
+ padding:1px 1.5em 0em 0em;
+}
+
+span.bargraph{
+ background:#DEECE7;
+ border:1px solid #8CBBAC;
+}
+
+div.photo{
+ text-align:center;
+}
+
+img{
+ border:none;
+ vertical-align:middle;
+}
+
+img.photo{
+ border:1px dashed #8CACBB;
+ padding:0.5em;
+}
+
+.heading .banner{
+ padding:1em;
+}
+
+a.sitename img{
+ vertical-align:top;
+}
+
+span.error span.info{
+ padding:0em 0.3em;
+ border:1px dashed #F00;
+}
+
+p.error{
+ background:#FCC;
+}
+
+p.info{
+ background:#DEECE7;
+}
+
+img.footer{
+ padding:0em 1em;
+}
+
+img.sortIndicator{
+ padding:0em 0.5em;
+}
+
+img.actionIcon{
+ padding:0em 0.5em;
+ vertical-align:baseline;
+}
+
+img.left-icon{
+ padding:0em 0.5em 0em 0em;
+}
+
+div.formChoice{
+ padding:0.25em;
+ margin:1em 2em;
+ border:1px dotted #666;
+}
+
+span.xml-element-name{
+ font-weight:bold;
+ color:purple;
+}
+
+span.xml-attribute-name{
+ font-weight:bold;
+}
+
+span.xml-attribute-value{
+ color:blue;
+}
+
+p.xml-text{
+ padding:0.1em;
+ margin:0em;
+}
+
+div.xml-element{
+ padding:0.1em;
+ margin:0em;
+}
+
+table.messageHeaders{
+ border:1px solid #888;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.messageHeaders tr{
+ margin:0em;
+ padding:0em;
+}
+
+table.messageHeaders td.name{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:right;
+ white-space:nowrap;
+}
+
+table.messageHeaders td.value{
+ margin:0em;
+ padding:0em;
+ width:100%;
+}
+
+.bugsheadertable {
+ display:table;
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+.bugsheadertr {
+ display:table-row;
+}
+
+.bugsheaderpackagetd {
+ font-weight:bold;
+ text-align:left;
+ display:table-cell;
+ padding:0px;
+}
+
+#bugsheaderpackagetd {
+ width:18%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugsheaderhomepagetd {
+ display:table-cell;
+ padding:0px;
+ text-align:left;
+}
+
+#bugsheaderhomepagetd {
+ width:42%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+ left:0px;
+}
+
+.bugvcsbrowser{
+ display:table-cell;
+ text-align:left;
+}
+
+#bugvcsbrowser{
+ width:15%;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+.bugsmaintainer{
+ display:table-cell;
+ text-align:right;
+}
+
+#bugsmaintainer{
+ width:25%;
+ right:0px;
+ position:relative;
+ padding-top:1.5ex;
+ padding-bottom:0.5ex;
+}
+
+div.bugsheadervcstd {
+ display:table-cell;
+ text-align:right;
+ padding:0px;
+ width:40%;
+}
+
+table.bugsheader td.bugsheader{
+ border:0px;
+ padding:0px;
+ margin:0px;
+ width:100%;
+ border-spacing:0px;
+}
+
+table.bugsdependent{
+ border:2px solid #F88;
+ background-color:#EEE;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugssuggested{
+ border:2px solid #FF8;
+ background-color:#DDD;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdone{
+ border:1px solid #888;
+ background-color:#CCC;
+ padding:0.25em 0.5em;
+ margin:0em;
+ width:100%;
+}
+
+table.bugsdependent table.bugssuggested table.bugsdone tr{
+ margin:0em;
+ padding:0em;
+}
+
+td.bughomepage{
+ text-align:center;
+}
+
+table.bugsdependent td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugssuggested td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+table.bugsdone td.package{
+ margin:0em;
+ padding:0.1em 0.25em;
+ font-weight:bold;
+ text-align:left;
+ white-space:nowrap;
+}
+
+td.bugid{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.summary{
+ margin:0em;
+ padding:0em;
+ text-align:left;
+ width:100%;
+}
+
+td.severity{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.fixed{
+ margin:0em;
+ padding:0em;
+ text-align:center;
+}
+
+td.wishlist{
+ background-color:#80efeb;
+}
+
+td.minor{
+ background-color:#80efeb;
+}
+
+td.normal{
+ background-color:#cf9;
+}
+
+td.does-not-build{
+ background-color:#ff9;
+}
+
+td.important{
+ background-color:#ff9;
+}
+
+td.serious{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.grave{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+td.critical{
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+dt.bad {
+ background-color:#fc9;
+ font-weight:bold;
+}
+
+span.bad, td.bad {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.pass {
+ background-color:#fe9;
+ font-weight:bold;
+}
+
+span.pass, td.pass {
+ background-color:#fc9;
+ font-weight:bold;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.satisfactory, td.satisfactory{
+ background-color:#ff9;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.good{
+ background-color:#cf9;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.good, td.good{
+ background-color:#cf9;
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+dt.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+}
+
+span.verygood, td.verygood{
+ background-color:#80efeb;
+ font-weight:normal;
+ font-style:italic;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+td.excellent{
+ font-weight:normal;
+ padding-left:0.5em;
+ padding-top:0pt;
+ padding-bottom:0pt;
+}
+
+table.project {
+ border-spacing: 0px;
+ margin-bottom: 2em;
+ border: 1px solid blue;
+ width: 100%;
+}
+
+tr.deb-official_high, tr.deb-official_low, tr.deb-non-free, tr.deb-official,
+li.deb-official_high, li.deb-official_low, li.deb-non-free, li.deb-official {
+ background-color: #ccff99;
+}
+
+tr.deb-experimental, tr.deb-new, tr.deb-pkgvcs, tr.deb-unofficial,
+li.deb-experimental, li.deb-new, li.deb-pkgvcs, li.deb-unofficial {
+ background-color: #ffff99;
+}
+
+tr.deb-wnpp, tr.deb-prospective,
+li.deb-wnpp, li.deb-prospective {
+ background-color: #ffcf99;
+}
+
+/* right column of header table of a package containing licensing info and DDTP link */
+td.project-license {
+ text-align: right;
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+ width: 190px;
+}
+
+td.project-icon{
+ text-align: center;
+ border-left: 1px dotted blue;
+ padding: 3px;
+ width:10ex;
+}
+
+img.icon{
+ width:10ex;
+ height:10ex;
+ border:2px solid #8CACBB;
+}
+
+/* middle column of header table of a package containing more detailed info about packages */
+td.project-info {
+ text-align: center;
+ border-bottom: 1px dotted blue;
+ padding-top: 8px ;
+ /* padding-bottom: 8px ; */
+ padding-left: 0px ;
+ padding-right: 0px ;
+ width: 190px;
+}
+
+/* hide tooltips */
+.tooltip {
+ display:none;
+}
+
+div.project-info {
+ text-align: center;
+ background: url(../img/features.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.project-infomissing {
+ text-align: center;
+ background: url(../img/features-missing.png) no-repeat;
+ padding-bottom: 8px ;
+}
+
+div.popcon {
+ font:8pt sans-serif;
+ text-align: left;
+ padding-bottom: 8px ;
+}
+
+td.project-name {
+ border-bottom: 1px dotted blue;
+ padding: 3px;
+}
+
+td.project-description {
+ text-align: justify;
+ padding: 3px;
+}
+
+.messageBody{
+ margin:1.5em 0em;
+ padding:0.25em 0em;
+}
+
+form{
+ margin:0em;
+ padding:0em;
+}
+
+div.floatLeft{
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+
+div.floatLeft p{
+ font-style: italic;
+}
+
+div.floatRight{
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+
+div.floatRight p{
+ font-style: italic;
+}
+
+#search{
+ display:none;
+ background:#f0f0f0;
+ border:1px solid white;
+ padding:0.3em;
+ width:20em;
+ margin:4px 0 0 0;
+}
+
+/* search-results.css */
+#search.default-text{
+ color:#888;
+}
+
+#search-results{
+ border-right:1px solid #ccc;
+ border-bottom:1px solid #ccc;
+}
+
+#search-results .bd{
+ border:1px solid #88f;
+ background:#eef;
+ padding:2px;
+ font-size:12px;
+ overflow:hidden;
+ white-space:nowrap;
+}
+
+#search-results div.search-heading{
+ background:#ccc;
+ color:white;
+ font-size:0.8em;
+ font-weight:bold;
+ margin:1px 0;
+ padding:1px;
+}
+
+#search-results a{
+ display:block;
+ color:#004;
+ height:16px;
+ margin:1px 0;
+}
+
+#search-results a.search-exact-match{
+ font-weight:bold;
+}
+
+#search-results a.search-selected{
+ background:#888;
+ color:white;
+}
+
+#search-results div.search-icon{
+ width:16px;
+ height:16px;
+ margin:0 2px 0 0;
+ position:relative;
+ float:left;
+}
+
+#search-results div.search-icon img{
+ position:absolute;
+ border:none;
+}
+
+/*
+ * QA report styles
+ */
+#qa_table table {
+ border: 1px #eef4eb;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#qa_table th.clickable, th.clickable a, th.clickable a:visited {
+ background: #eef4eb;
+ color: #436976;
+}
+
+.todo {
+ background: #dee7ec;
+}
+
+.section-non-free { color: red; }
+.section-contrib { color: maroon; }
+.bts-wishlist { color: green; }
+.bts-minor { color: #004000; /* darkgreen */ }
+.bts-normal, .bts-important {}
+.bts-grave, .bts-serious { color: red; }
+.bts-critical { color: red; text-decoration: blink; }
+
+.popup { border-bottom: 1px dotted; }
+
+.popup .balloon,
+.popup .paren,
+.popup .expand { display: none; }
+
+/*
+#for_upgrade span.popup { vertical-align: middle; text-align: center; }
+#for_upload span.popup { vertical-align: middle; text-align: center; }
+#waiting span.popup { vertical-align: middle; text-align: center; }
+#weird span.popup { vertical-align: middle; text-align: center; }
+#wip span.popup { vertical-align: middle; text-align: center; }
+#with_bugs span.popup { vertical-align: middle; text-align: center; }
+*/
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ position: absolute;
+ display: block;
+ min-width: 15em;
+ max-width: 40em;
+ max-height: 75%;
+ overflow: auto;
+ margin: 0em 0 0 -15em;
+ padding: 0.5em;
+ border: 2px outset #f5f5b5;
+ background: #f5f5b5;
+ text-align: left;
+ color: black;
+ opacity: 0.95;
+ -moz-opacity: 0.95;
+ filter: alpha(opacity=95);
+}
+
+table.bts-info-details td:first-child { text-align: center; }
+
+div.bts-info div.popup { text-align: center; }
+
+.bts-info-details p {
+ text-indent: -3em;
+ margin: 0 0 0 3em;
+}
+
+table.bts-info-details td {
+ border: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+div.severitysummary {
+ font:130% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.severitylist {
+ font:110% sans-serif;
+ padding:0em;
+ margin:0.75em 0em;
+}
+
+div.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+ text-align: left;
+ text-indent: -1em;
+ padding:0em;
+ margin-top: 3ex;
+ margin-left: 1em;
+ border-top:1px solid #CCC;
+}
+
+table.footnotecontent {
+ font:75% sans-serif;
+ font-style:italic;
+}
+
+td.footnotecontent {
+ padding:0pt;
+}
+
+td.outdated {
+ font-weight:bold;
+ border-top:1px solid #8C0000;
+}
+
+table.pkg {
+ border-collapse: collapse;
+}
+.pkg th, .pkg td {
+ text-align: left;
+ border: 1px solid black;
+ padding: 0.2em;
+}
+.pkg thead {
+ background-color: silver;
+ color: #000000;
+}
+
+/* begin copy from GIS package thermometer */
+
+table.pkg tr.title {
+ color: #ffffff;
+ background-color: #df0451;
+}
+
+/* orange */
+table.pkg tr.ubuntuOutOfDate {
+ color: #000000;
+ background-color: #f09005;
+}
+
+/* purple */
+table.pkg tr.new {
+ color: #000000;
+ background-color: #9370db;
+}
+
+/* white */
+table.pkg tr.unpackaged {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* white for no upstream status available */
+table.pkg td.none {
+ color: #000000;
+ background-color: #ffffff;
+}
+
+/* yellow */
+table.pkg tr.debianOutOfDate {
+ color: #000000;
+ background-color: #f0f005;
+}
+
+/* dark yellow */
+table.pkg td.outdated {
+ color: #ffffff;
+ background-color: #880000;
+}
+
+/* green */
+table.pkg tr.upToDate {
+ color: #000000;
+ background-color: #a0f005;
+}
+
+/* dark green */
+table.pkg td.uptodate {
+ color: #ffffff;
+ background-color: #004400;
+}
+
+/* blue */
+table.pkg td.newer-in-debian {
+ color: #ffffff;
+ background-color: #0000ee;
+}
+
+/* red */
+table.pkg tr.obsolete {
+ color: #000000;
+ background-color: #f03000;
+}
+table.pkg tr.othered {
+ color: #000000;
+ background-color: #dc5858;
+}
+/* end copy from GIS package thermometer */
diff --git a/www/science/inc/wz_tooltip.js b/www/science/inc/wz_tooltip.js
deleted file mode 120000
index 939b615..0000000
--- a/www/science/inc/wz_tooltip.js
+++ /dev/null
@@ -1 +0,0 @@
-../../inc/wz_tooltip.js
\ No newline at end of file
diff --git a/www/science/inc/wz_tooltip.js b/www/science/inc/wz_tooltip.js
new file mode 100644
index 0000000..2556287
--- /dev/null
+++ b/www/science/inc/wz_tooltip.js
@@ -0,0 +1,1304 @@
+/* This notice must be untouched at all times.
+Copyright (c) 2002-2008 Walter Zorn. All rights reserved.
+
+wz_tooltip.js v. 5.31
+
+The latest version is available at
+http://www.walterzorn.com
+or http://www.devira.com
+or http://www.walterzorn.de
+
+Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )
+Last modified: 7.11.2008
+
+Easy-to-use cross-browser tooltips.
+Just include the script at the beginning of the <body> section, and invoke
+Tip('Tooltip text') to show and UnTip() to hide the tooltip, from the desired
+HTML eventhandlers. Example:
+<a onmouseover="Tip('Some text')" onmouseout="UnTip()" href="index.htm">My home page</a>
+No container DIV required.
+By default, width and height of tooltips are automatically adapted to content.
+Is even capable of dynamically converting arbitrary HTML elements to tooltips
+by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),
+which means you can put important, search-engine-relevant stuff into tooltips.
+Appearance & behaviour of tooltips can be individually configured
+via commands passed to Tip() or TagToTip().
+
+Tab Width: 4
+LICENSE: LGPL
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License (LGPL) as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+For more details on the GNU Lesser General Public License,
+see http://www.gnu.org/copyleft/lesser.html
+*/
+
+var config = new Object();
+
+
+//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
+var tt_Debug = true // false or true - recommended: false once you release your page to the public
+var tt_Enabled = true // Allows to (temporarily) suppress tooltips, e.g. by providing the user with a button that sets this global variable to false
+var TagsToTip = false // false or true - if true, HTML elements to be converted to tooltips via TagToTip() are automatically hidden;
+ // if false, you should hide those HTML elements yourself
+
+// For each of the following config variables there exists a command, which is
+// just the variablename in uppercase, to be passed to Tip() or TagToTip() to
+// configure tooltips individually. Individual commands override global
+// configuration. Order of commands is arbitrary.
+// Example: onmouseover="Tip('Tooltip text', LEFT, true, BGCOLOR, '#FF9900', FADEIN, 400)"
+
+config. Above = false // false or true - tooltip above mousepointer
+config. BgColor = '#E2E7FF' // Background colour (HTML colour value, in quotes)
+config. BgImg = '' // Path to background image, none if empty string ''
+config. BorderColor = '#003099'
+config. BorderStyle = 'solid' // Any permitted CSS value, but I recommend 'solid', 'dotted' or 'dashed'
+config. BorderWidth = 1
+config. CenterMouse = false // false or true - center the tip horizontally below (or above) the mousepointer
+config. ClickClose = false // false or true - close tooltip if the user clicks somewhere
+config. ClickSticky = false // false or true - make tooltip sticky if user left-clicks on the hovered element while the tooltip is active
+config. CloseBtn = false // false or true - closebutton in titlebar
+config. CloseBtnColors = ['#990000', '#FFFFFF', '#DD3333', '#FFFFFF'] // [Background, text, hovered background, hovered text] - use empty strings '' to inherit title colours
+config. CloseBtnText = ' X ' // Close button text (may also be an image tag)
+config. CopyContent = true // When converting a HTML element to a tooltip, copy only the element's content, rather than converting the element by its own
+config. Delay = 400 // Time span in ms until tooltip shows up
+config. Duration = 0 // Time span in ms after which the tooltip disappears; 0 for infinite duration, < 0 for delay in ms _after_ the onmouseout until the tooltip disappears
+config. Exclusive = false // false or true - no other tooltip can appear until the current one has actively been closed
+config. FadeIn = 100 // Fade-in duration in ms, e.g. 400; 0 for no animation
+config. FadeOut = 100
+config. FadeInterval = 30 // Duration of each fade step in ms (recommended: 30) - shorter is smoother but causes more CPU-load
+config. Fix = null // Fixated position, two modes. Mode 1: x- an y-coordinates in brackets, e.g. [210, 480]. Mode 2: Show tooltip at a position related to an HTML element: [ID of HTML element, x-offset, y-offset from HTML element], e.g. ['SomeID', 10, 30]. Value null (default) for no fixated positioning.
+config. FollowMouse = false // false or true - tooltip follows the mouse
+config. FontColor = '#000044'
+config. FontFace = 'Verdana,Geneva,sans-serif'
+config. FontSize = '8pt' // E.g. '9pt' or '12px' - unit is mandatory
+config. FontWeight = 'normal' // 'normal' or 'bold';
+config. Height = 0 // Tooltip height; 0 for automatic adaption to tooltip content, < 0 (e.g. -100) for a maximum for automatic adaption
+config. JumpHorz = false // false or true - jump horizontally to other side of mouse if tooltip would extend past clientarea boundary
+config. JumpVert = true // false or true - jump vertically "
+config. Left = false // false or true - tooltip on the left of the mouse
+config. OffsetX = 14 // Horizontal offset of left-top corner from mousepointer
+config. OffsetY = 8 // Vertical offset
+config. Opacity = 100 // Integer between 0 and 100 - opacity of tooltip in percent
+config. Padding = 3 // Spacing between border and content
+config. Shadow = false // false or true
+config. ShadowColor = '#C0C0C0'
+config. ShadowWidth = 5
+config. Sticky = false // false or true - fixate tip, ie. don't follow the mouse and don't hide on mouseout
+config. TextAlign = 'left' // 'left', 'right' or 'justify'
+config. Title = '' // Default title text applied to all tips (no default title: empty string '')
+config. TitleAlign = 'left' // 'left' or 'right' - text alignment inside the title bar
+config. TitleBgColor = '' // If empty string '', BorderColor will be used
+config. TitleFontColor = '#FFFFFF' // Color of title text - if '', BgColor (of tooltip body) will be used
+config. TitleFontFace = '' // If '' use FontFace (boldified)
+config. TitleFontSize = '' // If '' use FontSize
+config. TitlePadding = 2
+config. Width = 0 // Tooltip width; 0 for automatic adaption to tooltip content; < -1 (e.g. -240) for a maximum width for that automatic adaption;
+ // -1: tooltip width confined to the width required for the titlebar
+//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
+
+
+
+
+//===================== PUBLIC =============================================//
+function Tip()
+{
+ tt_Tip(arguments, null);
+}
+function TagToTip()
+{
+ var t2t = tt_GetElt(arguments[0]);
+ if(t2t)
+ tt_Tip(arguments, t2t);
+}
+function UnTip()
+{
+ tt_OpReHref();
+ if(tt_aV[DURATION] < 0 && (tt_iState & 0x2))
+ tt_tDurt.Timer("tt_HideInit()", -tt_aV[DURATION], true);
+ else if(!(tt_aV[STICKY] && (tt_iState & 0x2)))
+ tt_HideInit();
+}
+
+//================== PUBLIC PLUGIN API =====================================//
+// Extension eventhandlers currently supported:
+// OnLoadConfig, OnCreateContentString, OnSubDivsCreated, OnShow, OnMoveBefore,
+// OnMoveAfter, OnHideInit, OnHide, OnKill
+
+var tt_aElt = new Array(10), // Container DIV, outer title & body DIVs, inner title & body TDs, closebutton SPAN, shadow DIVs, and IFRAME to cover windowed elements in IE
+tt_aV = new Array(), // Caches and enumerates config data for currently active tooltip
+tt_sContent, // Inner tooltip text or HTML
+tt_t2t, tt_t2tDad, // Tag converted to tip, and its DOM parent element
+tt_musX, tt_musY,
+tt_over,
+tt_x, tt_y, tt_w, tt_h; // Position, width and height of currently displayed tooltip
+
+function tt_Extension()
+{
+ tt_ExtCmdEnum();
+ tt_aExt[tt_aExt.length] = this;
+ return this;
+}
+function tt_SetTipPos(x, y)
+{
+ var css = tt_aElt[0].style;
+
+ tt_x = x;
+ tt_y = y;
+ css.left = x + "px";
+ css.top = y + "px";
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ ifrm.style.left = css.left;
+ ifrm.style.top = css.top;
+ }
+ }
+}
+function tt_HideInit()
+{
+ if(tt_iState)
+ {
+ tt_ExtCallFncs(0, "HideInit");
+ tt_iState &= ~(0x4 | 0x8);
+ if(tt_flagOpa && tt_aV[FADEOUT])
+ {
+ tt_tFade.EndTimer();
+ if(tt_opa)
+ {
+ var n = Math.round(tt_aV[FADEOUT] / (tt_aV[FADEINTERVAL] * (tt_aV[OPACITY] / tt_opa)));
+ tt_Fade(tt_opa, tt_opa, 0, n);
+ return;
+ }
+ }
+ tt_tHide.Timer("tt_Hide();", 1, false);
+ }
+}
+function tt_Hide()
+{
+ if(tt_db && tt_iState)
+ {
+ tt_OpReHref();
+ if(tt_iState & 0x2)
+ {
+ tt_aElt[0].style.visibility = "hidden";
+ tt_ExtCallFncs(0, "Hide");
+ }
+ tt_tShow.EndTimer();
+ tt_tHide.EndTimer();
+ tt_tDurt.EndTimer();
+ tt_tFade.EndTimer();
+ if(!tt_op && !tt_ie)
+ {
+ tt_tWaitMov.EndTimer();
+ tt_bWait = false;
+ }
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_RemEvtFnc(document, "mouseup", tt_OnLClick);
+ tt_ExtCallFncs(0, "Kill");
+ // In case of a TagToTip tip, hide converted DOM node and
+ // re-insert it into DOM
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_UnEl2Tip();
+ tt_iState = 0;
+ tt_over = null;
+ tt_ResetMainDiv();
+ if(tt_aElt[tt_aElt.length - 1])
+ tt_aElt[tt_aElt.length - 1].style.display = "none";
+ }
+}
+function tt_GetElt(id)
+{
+ return(document.getElementById ? document.getElementById(id)
+ : document.all ? document.all[id]
+ : null);
+}
+function tt_GetDivW(el)
+{
+ return(el ? (el.offsetWidth || el.style.pixelWidth || 0) : 0);
+}
+function tt_GetDivH(el)
+{
+ return(el ? (el.offsetHeight || el.style.pixelHeight || 0) : 0);
+}
+function tt_GetScrollX()
+{
+ return(window.pageXOffset || (tt_db ? (tt_db.scrollLeft || 0) : 0));
+}
+function tt_GetScrollY()
+{
+ return(window.pageYOffset || (tt_db ? (tt_db.scrollTop || 0) : 0));
+}
+function tt_GetClientW()
+{
+ return tt_GetWndCliSiz("Width");
+}
+function tt_GetClientH()
+{
+ return tt_GetWndCliSiz("Height");
+}
+function tt_GetEvtX(e)
+{
+ return (e ? ((typeof(e.pageX) != tt_u) ? e.pageX : (e.clientX + tt_GetScrollX())) : 0);
+}
+function tt_GetEvtY(e)
+{
+ return (e ? ((typeof(e.pageY) != tt_u) ? e.pageY : (e.clientY + tt_GetScrollY())) : 0);
+}
+function tt_AddEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.addEventListener)
+ el.addEventListener(sEvt, PFnc, false);
+ else
+ el.attachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_RemEvtFnc(el, sEvt, PFnc)
+{
+ if(el)
+ {
+ if(el.removeEventListener)
+ el.removeEventListener(sEvt, PFnc, false);
+ else
+ el.detachEvent("on" + sEvt, PFnc);
+ }
+}
+function tt_GetDad(el)
+{
+ return(el.parentNode || el.parentElement || el.offsetParent);
+}
+function tt_MovDomNode(el, dadFrom, dadTo)
+{
+ if(dadFrom)
+ dadFrom.removeChild(el);
+ if(dadTo)
+ dadTo.appendChild(el);
+}
+
+//====================== PRIVATE ===========================================//
+var tt_aExt = new Array(), // Array of extension objects
+
+tt_db, tt_op, tt_ie, tt_ie56, tt_bBoxOld, // Browser flags
+tt_body,
+tt_ovr_, // HTML element the mouse is currently over
+tt_flagOpa, // Opacity support: 1=IE, 2=Khtml, 3=KHTML, 4=Moz, 5=W3C
+tt_maxPosX, tt_maxPosY,
+tt_iState = 0, // Tooltip active |= 1, shown |= 2, move with mouse |= 4, exclusive |= 8
+tt_opa, // Currently applied opacity
+tt_bJmpVert, tt_bJmpHorz,// Tip temporarily on other side of mouse
+tt_elDeHref, // The tag from which we've removed the href attribute
+// Timer
+tt_tShow = new Number(0), tt_tHide = new Number(0), tt_tDurt = new Number(0),
+tt_tFade = new Number(0), tt_tWaitMov = new Number(0),
+tt_bWait = false,
+tt_u = "undefined";
+
+
+function tt_Init()
+{
+ tt_MkCmdEnum();
+ // Send old browsers instantly to hell
+ if(!tt_Browser() || !tt_MkMainDiv())
+ return;
+ tt_IsW3cBox();
+ tt_OpaSupport();
+ tt_AddEvtFnc(document, "mousemove", tt_Move);
+ // In Debug mode we search for TagToTip() calls in order to notify
+ // the user if they've forgotten to set the TagsToTip config flag
+ if(TagsToTip || tt_Debug)
+ tt_SetOnloadFnc();
+ // Ensure the tip be hidden when the page unloads
+ tt_AddEvtFnc(window, "unload", tt_Hide);
+}
+// Creates command names by translating config variable names to upper case
+function tt_MkCmdEnum()
+{
+ var n = 0;
+ for(var i in config)
+ eval("window." + i.toString().toUpperCase() + " = " + n++);
+ tt_aV.length = n;
+}
+function tt_Browser()
+{
+ var n, nv, n6, w3c;
+
+ n = navigator.userAgent.toLowerCase(),
+ nv = navigator.appVersion;
+ tt_op = (document.defaultView && typeof(eval("w" + "indow" + "." + "o" + "p" + "er" + "a")) != tt_u);
+ tt_ie = n.indexOf("msie") != -1 && document.all && !tt_op;
+ if(tt_ie)
+ {
+ var ieOld = (!document.compatMode || document.compatMode == "BackCompat");
+ tt_db = !ieOld ? document.documentElement : (document.body || null);
+ if(tt_db)
+ tt_ie56 = parseFloat(nv.substring(nv.indexOf("MSIE") + 5)) >= 5.5
+ && typeof document.body.style.maxHeight == tt_u;
+ }
+ else
+ {
+ tt_db = document.documentElement || document.body ||
+ (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : null);
+ if(!tt_op)
+ {
+ n6 = document.defaultView && typeof document.defaultView.getComputedStyle != tt_u;
+ w3c = !n6 && document.getElementById;
+ }
+ }
+ tt_body = (document.getElementsByTagName ? document.getElementsByTagName("body")[0]
+ : (document.body || null));
+ if(tt_ie || n6 || tt_op || w3c)
+ {
+ if(tt_body && tt_db)
+ {
+ if(document.attachEvent || document.addEventListener)
+ return true;
+ }
+ else
+ tt_Err("wz_tooltip.js must be included INSIDE the body section,"
+ + " immediately after the opening <body> tag.", false);
+ }
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDiv()
+{
+ // Create the tooltip DIV
+ if(tt_body.insertAdjacentHTML)
+ tt_body.insertAdjacentHTML("afterBegin", tt_MkMainDivHtm());
+ else if(typeof tt_body.innerHTML != tt_u && document.createElement && tt_body.appendChild)
+ tt_body.appendChild(tt_MkMainDivDom());
+ if(window.tt_GetMainDivRefs /* FireFox Alzheimer */ && tt_GetMainDivRefs())
+ return true;
+ tt_db = null;
+ return false;
+}
+function tt_MkMainDivHtm()
+{
+ return(
+ '<div id="WzTtDiV"></div>' +
+ (tt_ie56 ? ('<iframe id="WzTtIfRm" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"></iframe>')
+ : '')
+ );
+}
+function tt_MkMainDivDom()
+{
+ var el = document.createElement("div");
+ if(el)
+ el.id = "WzTtDiV";
+ return el;
+}
+function tt_GetMainDivRefs()
+{
+ tt_aElt[0] = tt_GetElt("WzTtDiV");
+ if(tt_ie56 && tt_aElt[0])
+ {
+ tt_aElt[tt_aElt.length - 1] = tt_GetElt("WzTtIfRm");
+ if(!tt_aElt[tt_aElt.length - 1])
+ tt_aElt[0] = null;
+ }
+ if(tt_aElt[0])
+ {
+ var css = tt_aElt[0].style;
+
+ css.visibility = "hidden";
+ css.position = "absolute";
+ css.overflow = "hidden";
+ return true;
+ }
+ return false;
+}
+function tt_ResetMainDiv()
+{
+ tt_SetTipPos(0, 0);
+ tt_aElt[0].innerHTML = "";
+ tt_aElt[0].style.width = "0px";
+ tt_h = 0;
+}
+function tt_IsW3cBox()
+{
+ var css = tt_aElt[0].style;
+
+ css.padding = "10px";
+ css.width = "40px";
+ tt_bBoxOld = (tt_GetDivW(tt_aElt[0]) == 40);
+ css.padding = "0px";
+ tt_ResetMainDiv();
+}
+function tt_OpaSupport()
+{
+ var css = tt_body.style;
+
+ tt_flagOpa = (typeof(css.KhtmlOpacity) != tt_u) ? 2
+ : (typeof(css.KHTMLOpacity) != tt_u) ? 3
+ : (typeof(css.MozOpacity) != tt_u) ? 4
+ : (typeof(css.opacity) != tt_u) ? 5
+ : (typeof(css.filter) != tt_u) ? 1
+ : 0;
+}
+// Ported from http://dean.edwards.name/weblog/2006/06/again/
+// (Dean Edwards et al.)
+function tt_SetOnloadFnc()
+{
+ tt_AddEvtFnc(document, "DOMContentLoaded", tt_HideSrcTags);
+ tt_AddEvtFnc(window, "load", tt_HideSrcTags);
+ if(tt_body.attachEvent)
+ tt_body.attachEvent("onreadystatechange",
+ function() {
+ if(tt_body.readyState == "complete")
+ tt_HideSrcTags();
+ } );
+ if(/WebKit|KHTML/i.test(navigator.userAgent))
+ {
+ var t = setInterval(function() {
+ if(/loaded|complete/.test(document.readyState))
+ {
+ clearInterval(t);
+ tt_HideSrcTags();
+ }
+ }, 10);
+ }
+}
+function tt_HideSrcTags()
+{
+ if(!window.tt_HideSrcTags || window.tt_HideSrcTags.done)
+ return;
+ window.tt_HideSrcTags.done = true;
+/*
+ if(!tt_HideSrcTagsRecurs(tt_body))
+ tt_Err("There are HTML elements to be converted to tooltips.\nIf you"
+ + " want these HTML elements to be automatically hidden, you"
+ + " must edit wz_tooltip.js, and set TagsToTip in the global"
+ + " tooltip configuration to true.", true);
+ */
+}
+function tt_HideSrcTagsRecurs(dad)
+{
+ var ovr, asT2t;
+ // Walk the DOM tree for tags that have an onmouseover or onclick attribute
+ // containing a TagToTip('...') call.
+ // (.childNodes first since .children is bugous in Safari)
+ var a = dad.childNodes || dad.children || null;
+
+ for(var i = a ? a.length : 0; i;)
+ {--i;
+ if(!tt_HideSrcTagsRecurs(a[i]))
+ return false;
+ ovr = a[i].getAttribute ? (a[i].getAttribute("onmouseover") || a[i].getAttribute("onclick"))
+ : (typeof a[i].onmouseover == "function") ? (a[i].onmouseover || a[i].onclick)
+ : null;
+ if(ovr)
+ {
+ asT2t = ovr.toString().match(/TagToTip\s*\(\s*'[^'.]+'\s*[\),]/);
+ if(asT2t && asT2t.length)
+ {
+ if(!tt_HideSrcTag(asT2t[0]))
+ return false;
+ }
+ }
+ }
+ return true;
+}
+function tt_HideSrcTag(sT2t)
+{
+ var id, el;
+
+ // The ID passed to the found TagToTip() call identifies an HTML element
+ // to be converted to a tooltip, so hide that element
+ id = sT2t.replace(/.+'([^'.]+)'.+/, "$1");
+ el = tt_GetElt(id);
+ if(el)
+ {
+ if(tt_Debug && !TagsToTip)
+ return false;
+ else
+ el.style.display = "none";
+ }
+ else
+ tt_Err("Invalid ID\n'" + id + "'\npassed to TagToTip()."
+ + " There exists no HTML element with that ID.", true);
+ return true;
+}
+function tt_Tip(arg, t2t)
+{
+ if(!tt_db || (tt_iState & 0x8))
+ return;
+ if(tt_iState)
+ tt_Hide();
+ if(!tt_Enabled)
+ return;
+ tt_t2t = t2t;
+ if(!tt_ReadCmds(arg))
+ return;
+ tt_iState = 0x1 | 0x4;
+ tt_AdaptConfig1();
+ tt_MkTipContent(arg);
+ tt_MkTipSubDivs();
+ tt_FormatTip();
+ tt_bJmpVert = false;
+ tt_bJmpHorz = false;
+ tt_maxPosX = tt_GetClientW() + tt_GetScrollX() - tt_w - 1;
+ tt_maxPosY = tt_GetClientH() + tt_GetScrollY() - tt_h - 1;
+ tt_AdaptConfig2();
+ // Ensure the tip be shown and positioned before the first onmousemove
+ tt_OverInit();
+ tt_ShowInit();
+ tt_Move();
+}
+function tt_ReadCmds(a)
+{
+ var i;
+
+ // First load the global config values, to initialize also values
+ // for which no command is passed
+ i = 0;
+ for(var j in config)
+ tt_aV[i++] = config[j];
+ // Then replace each cached config value for which a command is
+ // passed (ensure the # of command args plus value args be even)
+ if(a.length & 1)
+ {
+ for(i = a.length - 1; i > 0; i -= 2)
+ tt_aV[a[i - 1]] = a[i];
+ return true;
+ }
+ tt_Err("Incorrect call of Tip() or TagToTip().\n"
+ + "Each command must be followed by a value.", true);
+ return false;
+}
+function tt_AdaptConfig1()
+{
+ tt_ExtCallFncs(0, "LoadConfig");
+ // Inherit unspecified title formattings from body
+ if(!tt_aV[TITLEBGCOLOR].length)
+ tt_aV[TITLEBGCOLOR] = tt_aV[BORDERCOLOR];
+ if(!tt_aV[TITLEFONTCOLOR].length)
+ tt_aV[TITLEFONTCOLOR] = tt_aV[BGCOLOR];
+ if(!tt_aV[TITLEFONTFACE].length)
+ tt_aV[TITLEFONTFACE] = tt_aV[FONTFACE];
+ if(!tt_aV[TITLEFONTSIZE].length)
+ tt_aV[TITLEFONTSIZE] = tt_aV[FONTSIZE];
+ if(tt_aV[CLOSEBTN])
+ {
+ // Use title colours for non-specified closebutton colours
+ if(!tt_aV[CLOSEBTNCOLORS])
+ tt_aV[CLOSEBTNCOLORS] = new Array("", "", "", "");
+ for(var i = 4; i;)
+ {--i;
+ if(!tt_aV[CLOSEBTNCOLORS][i].length)
+ tt_aV[CLOSEBTNCOLORS][i] = (i & 1) ? tt_aV[TITLEFONTCOLOR] : tt_aV[TITLEBGCOLOR];
+ }
+ // Enforce titlebar be shown
+ if(!tt_aV[TITLE].length)
+ tt_aV[TITLE] = " ";
+ }
+ // Circumvents broken display of images and fade-in flicker in Geckos < 1.8
+ if(tt_aV[OPACITY] == 100 && typeof tt_aElt[0].style.MozOpacity != tt_u && !Array.every)
+ tt_aV[OPACITY] = 99;
+ // Smartly shorten the delay for fade-in tooltips
+ if(tt_aV[FADEIN] && tt_flagOpa && tt_aV[DELAY] > 100)
+ tt_aV[DELAY] = Math.max(tt_aV[DELAY] - tt_aV[FADEIN], 100);
+}
+function tt_AdaptConfig2()
+{
+ if(tt_aV[CENTERMOUSE])
+ {
+ tt_aV[OFFSETX] -= ((tt_w - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0)) >> 1);
+ tt_aV[JUMPHORZ] = false;
+ }
+}
+// Expose content globally so extensions can modify it
+function tt_MkTipContent(a)
+{
+ if(tt_t2t)
+ {
+ if(tt_aV[COPYCONTENT])
+ tt_sContent = tt_t2t.innerHTML;
+ else
+ tt_sContent = "";
+ }
+ else
+ tt_sContent = a[0];
+ tt_ExtCallFncs(0, "CreateContentString");
+}
+function tt_MkTipSubDivs()
+{
+ var sCss = 'position:relative;margin:0px;padding:0px;border-width:0px;left:0px;top:0px;line-height:normal;width:auto;',
+ sTbTrTd = ' cellspacing="0" cellpadding="0" border="0" style="' + sCss + '"><tbody style="' + sCss + '"><tr><td ';
+
+ tt_aElt[0].style.width = tt_GetClientW() + "px";
+ tt_aElt[0].innerHTML =
+ (''
+ + (tt_aV[TITLE].length ?
+ ('<div id="WzTiTl" style="position:relative;z-index:1;">'
+ + '<table id="WzTiTlTb"' + sTbTrTd + 'id="WzTiTlI" style="' + sCss + '">'
+ + tt_aV[TITLE]
+ + '</td>'
+ + (tt_aV[CLOSEBTN] ?
+ ('<td align="right" style="' + sCss
+ + 'text-align:right;">'
+ + '<span id="WzClOsE" style="position:relative;left:2px;padding-left:2px;padding-right:2px;'
+ + 'cursor:' + (tt_ie ? 'hand' : 'pointer')
+ + ';" onmouseover="tt_OnCloseBtnOver(1)" onmouseout="tt_OnCloseBtnOver(0)" onclick="tt_HideInit()">'
+ + tt_aV[CLOSEBTNTEXT]
+ + '</span></td>')
+ : '')
+ + '</tr></tbody></table></div>')
+ : '')
+ + '<div id="WzBoDy" style="position:relative;z-index:0;">'
+ + '<table' + sTbTrTd + 'id="WzBoDyI" style="' + sCss + '">'
+ + tt_sContent
+ + '</td></tr></tbody></table></div>'
+ + (tt_aV[SHADOW]
+ ? ('<div id="WzTtShDwR" style="position:absolute;overflow:hidden;"></div>'
+ + '<div id="WzTtShDwB" style="position:relative;overflow:hidden;"></div>')
+ : '')
+ );
+ tt_GetSubDivRefs();
+ // Convert DOM node to tip
+ if(tt_t2t && !tt_aV[COPYCONTENT])
+ tt_El2Tip();
+ tt_ExtCallFncs(0, "SubDivsCreated");
+}
+function tt_GetSubDivRefs()
+{
+ var aId = new Array("WzTiTl", "WzTiTlTb", "WzTiTlI", "WzClOsE", "WzBoDy", "WzBoDyI", "WzTtShDwB", "WzTtShDwR");
+
+ for(var i = aId.length; i; --i)
+ tt_aElt[i] = tt_GetElt(aId[i - 1]);
+}
+function tt_FormatTip()
+{
+ var css, w, h, pad = tt_aV[PADDING], padT, wBrd = tt_aV[BORDERWIDTH],
+ iOffY, iOffSh, iAdd = (pad + wBrd) << 1;
+
+ //--------- Title DIV ----------
+ if(tt_aV[TITLE].length)
+ {
+ padT = tt_aV[TITLEPADDING];
+ css = tt_aElt[1].style;
+ css.background = tt_aV[TITLEBGCOLOR];
+ css.paddingTop = css.paddingBottom = padT + "px";
+ css.paddingLeft = css.paddingRight = (padT + 2) + "px";
+ css = tt_aElt[3].style;
+ css.color = tt_aV[TITLEFONTCOLOR];
+ if(tt_aV[WIDTH] == -1)
+ css.whiteSpace = "nowrap";
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ css.textAlign = tt_aV[TITLEALIGN];
+ // Close button DIV
+ if(tt_aElt[4])
+ {
+ css = tt_aElt[4].style;
+ css.background = tt_aV[CLOSEBTNCOLORS][0];
+ css.color = tt_aV[CLOSEBTNCOLORS][1];
+ css.fontFamily = tt_aV[TITLEFONTFACE];
+ css.fontSize = tt_aV[TITLEFONTSIZE];
+ css.fontWeight = "bold";
+ }
+ if(tt_aV[WIDTH] > 0)
+ tt_w = tt_aV[WIDTH];
+ else
+ {
+ tt_w = tt_GetDivW(tt_aElt[3]) + tt_GetDivW(tt_aElt[4]);
+ // Some spacing between title DIV and closebutton
+ if(tt_aElt[4])
+ tt_w += pad;
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && tt_w > -tt_aV[WIDTH])
+ tt_w = -tt_aV[WIDTH];
+ }
+ // Ensure the top border of the body DIV be covered by the title DIV
+ iOffY = -wBrd;
+ }
+ else
+ {
+ tt_w = 0;
+ iOffY = 0;
+ }
+
+ //-------- Body DIV ------------
+ css = tt_aElt[5].style;
+ css.top = iOffY + "px";
+ if(wBrd)
+ {
+ css.borderColor = tt_aV[BORDERCOLOR];
+ css.borderStyle = tt_aV[BORDERSTYLE];
+ css.borderWidth = wBrd + "px";
+ }
+ if(tt_aV[BGCOLOR].length)
+ css.background = tt_aV[BGCOLOR];
+ if(tt_aV[BGIMG].length)
+ css.backgroundImage = "url(" + tt_aV[BGIMG] + ")";
+ css.padding = pad + "px";
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[HEIGHT])
+ {
+ css.overflow = "auto";
+ if(tt_aV[HEIGHT] > 0)
+ css.height = (tt_aV[HEIGHT] + iAdd) + "px";
+ else
+ tt_h = iAdd - tt_aV[HEIGHT];
+ }
+ // TD inside body DIV
+ css = tt_aElt[6].style;
+ css.color = tt_aV[FONTCOLOR];
+ css.fontFamily = tt_aV[FONTFACE];
+ css.fontSize = tt_aV[FONTSIZE];
+ css.fontWeight = tt_aV[FONTWEIGHT];
+ css.textAlign = tt_aV[TEXTALIGN];
+ if(tt_aV[WIDTH] > 0)
+ w = tt_aV[WIDTH];
+ // Width like title (if existent)
+ else if(tt_aV[WIDTH] == -1 && tt_w)
+ w = tt_w;
+ else
+ {
+ // Measure width of the body's inner TD, as some browsers would expand
+ // the container and outer body DIV to 100%
+ w = tt_GetDivW(tt_aElt[6]);
+ // Restrict auto width to max width
+ if(tt_aV[WIDTH] < -1 && w > -tt_aV[WIDTH])
+ w = -tt_aV[WIDTH];
+ }
+ if(w > tt_w)
+ tt_w = w;
+ tt_w += iAdd;
+
+ //--------- Shadow DIVs ------------
+ if(tt_aV[SHADOW])
+ {
+ tt_w += tt_aV[SHADOWWIDTH];
+ iOffSh = Math.floor((tt_aV[SHADOWWIDTH] * 4) / 3);
+ // Bottom shadow
+ css = tt_aElt[7].style;
+ css.top = iOffY + "px";
+ css.left = iOffSh + "px";
+ css.width = (tt_w - iOffSh - tt_aV[SHADOWWIDTH]) + "px";
+ css.height = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ // Right shadow
+ css = tt_aElt[8].style;
+ css.top = iOffSh + "px";
+ css.left = (tt_w - tt_aV[SHADOWWIDTH]) + "px";
+ css.width = tt_aV[SHADOWWIDTH] + "px";
+ css.background = tt_aV[SHADOWCOLOR];
+ }
+ else
+ iOffSh = 0;
+
+ //-------- Container DIV -------
+ tt_SetTipOpa(tt_aV[FADEIN] ? 0 : tt_aV[OPACITY]);
+ tt_FixSize(iOffY, iOffSh);
+}
+// Fixate the size so it can't dynamically change while the tooltip is moving.
+function tt_FixSize(iOffY, iOffSh)
+{
+ var wIn, wOut, h, add, pad = tt_aV[PADDING], wBrd = tt_aV[BORDERWIDTH], i;
+
+ tt_aElt[0].style.width = tt_w + "px";
+ tt_aElt[0].style.pixelWidth = tt_w;
+ wOut = tt_w - ((tt_aV[SHADOW]) ? tt_aV[SHADOWWIDTH] : 0);
+ // Body
+ wIn = wOut;
+ if(!tt_bBoxOld)
+ wIn -= (pad + wBrd) << 1;
+ tt_aElt[5].style.width = wIn + "px";
+ // Title
+ if(tt_aElt[1])
+ {
+ wIn = wOut - ((tt_aV[TITLEPADDING] + 2) << 1);
+ if(!tt_bBoxOld)
+ wOut = wIn;
+ tt_aElt[1].style.width = wOut + "px";
+ tt_aElt[2].style.width = wIn + "px";
+ }
+ // Max height specified
+ if(tt_h)
+ {
+ h = tt_GetDivH(tt_aElt[5]);
+ if(h > tt_h)
+ {
+ if(!tt_bBoxOld)
+ tt_h -= (pad + wBrd) << 1;
+ tt_aElt[5].style.height = tt_h + "px";
+ }
+ }
+ tt_h = tt_GetDivH(tt_aElt[0]) + iOffY;
+ // Right shadow
+ if(tt_aElt[8])
+ tt_aElt[8].style.height = (tt_h - iOffSh) + "px";
+ i = tt_aElt.length - 1;
+ if(tt_aElt[i])
+ {
+ tt_aElt[i].style.width = tt_w + "px";
+ tt_aElt[i].style.height = tt_h + "px";
+ }
+}
+function tt_DeAlt(el)
+{
+ var aKid;
+
+ if(el)
+ {
+ if(el.alt)
+ el.alt = "";
+ if(el.title)
+ el.title = "";
+ aKid = el.childNodes || el.children || null;
+ if(aKid)
+ {
+ for(var i = aKid.length; i;)
+ tt_DeAlt(aKid[--i]);
+ }
+ }
+}
+// This hack removes the native tooltips over links in Opera
+function tt_OpDeHref(el)
+{
+ if(!tt_op)
+ return;
+ if(tt_elDeHref)
+ tt_OpReHref();
+ while(el)
+ {
+ if(el.hasAttribute && el.hasAttribute("href"))
+ {
+ el.t_href = el.getAttribute("href");
+ el.t_stats = window.status;
+ el.removeAttribute("href");
+ el.style.cursor = "hand";
+ tt_AddEvtFnc(el, "mousedown", tt_OpReHref);
+ window.status = el.t_href;
+ tt_elDeHref = el;
+ break;
+ }
+ el = tt_GetDad(el);
+ }
+}
+function tt_OpReHref()
+{
+ if(tt_elDeHref)
+ {
+ tt_elDeHref.setAttribute("href", tt_elDeHref.t_href);
+ tt_RemEvtFnc(tt_elDeHref, "mousedown", tt_OpReHref);
+ window.status = tt_elDeHref.t_stats;
+ tt_elDeHref = null;
+ }
+}
+function tt_El2Tip()
+{
+ var css = tt_t2t.style;
+
+ // Store previous positioning
+ tt_t2t.t_cp = css.position;
+ tt_t2t.t_cl = css.left;
+ tt_t2t.t_ct = css.top;
+ tt_t2t.t_cd = css.display;
+ // Store the tag's parent element so we can restore that DOM branch
+ // when the tooltip is being hidden
+ tt_t2tDad = tt_GetDad(tt_t2t);
+ tt_MovDomNode(tt_t2t, tt_t2tDad, tt_aElt[6]);
+ css.display = "block";
+ css.position = "static";
+ css.left = css.top = css.marginLeft = css.marginTop = "0px";
+}
+function tt_UnEl2Tip()
+{
+ // Restore positioning and display
+ var css = tt_t2t.style;
+
+ css.display = tt_t2t.t_cd;
+ tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), tt_t2tDad);
+ css.position = tt_t2t.t_cp;
+ css.left = tt_t2t.t_cl;
+ css.top = tt_t2t.t_ct;
+ tt_t2tDad = null;
+}
+function tt_OverInit()
+{
+ if(window.event)
+ tt_over = window.event.target || window.event.srcElement;
+ else
+ tt_over = tt_ovr_;
+ tt_DeAlt(tt_over);
+ tt_OpDeHref(tt_over);
+}
+function tt_ShowInit()
+{
+ tt_tShow.Timer("tt_Show()", tt_aV[DELAY], true);
+ if(tt_aV[CLICKCLOSE] || tt_aV[CLICKSTICKY])
+ tt_AddEvtFnc(document, "mouseup", tt_OnLClick);
+}
+function tt_Show()
+{
+ var css = tt_aElt[0].style;
+
+ // Override the z-index of the topmost wz_dragdrop.js D&D item
+ css.zIndex = Math.max((window.dd && dd.z) ? (dd.z + 2) : 0, 1010);
+ if(tt_aV[STICKY] || !tt_aV[FOLLOWMOUSE])
+ tt_iState &= ~0x4;
+ if(tt_aV[EXCLUSIVE])
+ tt_iState |= 0x8;
+ if(tt_aV[DURATION] > 0)
+ tt_tDurt.Timer("tt_HideInit()", tt_aV[DURATION], true);
+ tt_ExtCallFncs(0, "Show")
+ css.visibility = "visible";
+ tt_iState |= 0x2;
+ if(tt_aV[FADEIN])
+ tt_Fade(0, 0, tt_aV[OPACITY], Math.round(tt_aV[FADEIN] / tt_aV[FADEINTERVAL]));
+ tt_ShowIfrm();
+}
+function tt_ShowIfrm()
+{
+ if(tt_ie56)
+ {
+ var ifrm = tt_aElt[tt_aElt.length - 1];
+ if(ifrm)
+ {
+ var css = ifrm.style;
+ css.zIndex = tt_aElt[0].style.zIndex - 1;
+ css.display = "block";
+ }
+ }
+}
+function tt_Move(e)
+{
+ if(e)
+ tt_ovr_ = e.target || e.srcElement;
+ e = e || window.event;
+ if(e)
+ {
+ tt_musX = tt_GetEvtX(e);
+ tt_musY = tt_GetEvtY(e);
+ }
+ if(tt_iState & 0x4)
+ {
+ // Prevent jam of mousemove events
+ if(!tt_op && !tt_ie)
+ {
+ if(tt_bWait)
+ return;
+ tt_bWait = true;
+ tt_tWaitMov.Timer("tt_bWait = false;", 1, true);
+ }
+ if(tt_aV[FIX])
+ {
+ tt_iState &= ~0x4;
+ tt_PosFix();
+ }
+ else if(!tt_ExtCallFncs(e, "MoveBefore"))
+ tt_SetTipPos(tt_Pos(0), tt_Pos(1));
+ tt_ExtCallFncs([tt_musX, tt_musY], "MoveAfter")
+ }
+}
+function tt_Pos(iDim)
+{
+ var iX, bJmpMod, cmdAlt, cmdOff, cx, iMax, iScrl, iMus, bJmp;
+
+ // Map values according to dimension to calculate
+ if(iDim)
+ {
+ bJmpMod = tt_aV[JUMPVERT];
+ cmdAlt = ABOVE;
+ cmdOff = OFFSETY;
+ cx = tt_h;
+ iMax = tt_maxPosY;
+ iScrl = tt_GetScrollY();
+ iMus = tt_musY;
+ bJmp = tt_bJmpVert;
+ }
+ else
+ {
+ bJmpMod = tt_aV[JUMPHORZ];
+ cmdAlt = LEFT;
+ cmdOff = OFFSETX;
+ cx = tt_w;
+ iMax = tt_maxPosX;
+ iScrl = tt_GetScrollX();
+ iMus = tt_musX;
+ bJmp = tt_bJmpHorz;
+ }
+ if(bJmpMod)
+ {
+ if(tt_aV[cmdAlt] && (!bJmp || tt_CalcPosAlt(iDim) >= iScrl + 16))
+ iX = tt_PosAlt(iDim);
+ else if(!tt_aV[cmdAlt] && bJmp && tt_CalcPosDef(iDim) > iMax - 16)
+ iX = tt_PosAlt(iDim);
+ else
+ iX = tt_PosDef(iDim);
+ }
+ else
+ {
+ iX = iMus;
+ if(tt_aV[cmdAlt])
+ iX -= cx + tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ else
+ iX += tt_aV[cmdOff];
+ }
+ // Prevent tip from extending past clientarea boundary
+ if(iX > iMax)
+ iX = bJmpMod ? tt_PosAlt(iDim) : iMax;
+ // In case of insufficient space on both sides, ensure the left/upper part
+ // of the tip be visible
+ if(iX < iScrl)
+ iX = bJmpMod ? tt_PosDef(iDim) : iScrl;
+ return iX;
+}
+function tt_PosDef(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = tt_aV[LEFT];
+ return tt_CalcPosDef(iDim);
+}
+function tt_PosAlt(iDim)
+{
+ if(iDim)
+ tt_bJmpVert = !tt_aV[ABOVE];
+ else
+ tt_bJmpHorz = !tt_aV[LEFT];
+ return tt_CalcPosAlt(iDim);
+}
+function tt_CalcPosDef(iDim)
+{
+ return iDim ? (tt_musY + tt_aV[OFFSETY]) : (tt_musX + tt_aV[OFFSETX]);
+}
+function tt_CalcPosAlt(iDim)
+{
+ var cmdOff = iDim ? OFFSETY : OFFSETX;
+ var dx = tt_aV[cmdOff] - (tt_aV[SHADOW] ? tt_aV[SHADOWWIDTH] : 0);
+ if(tt_aV[cmdOff] > 0 && dx <= 0)
+ dx = 1;
+ return((iDim ? (tt_musY - tt_h) : (tt_musX - tt_w)) - dx);
+}
+function tt_PosFix()
+{
+ var iX, iY;
+
+ if(typeof(tt_aV[FIX][0]) == "number")
+ {
+ iX = tt_aV[FIX][0];
+ iY = tt_aV[FIX][1];
+ }
+ else
+ {
+ if(typeof(tt_aV[FIX][0]) == "string")
+ el = tt_GetElt(tt_aV[FIX][0]);
+ // First slot in array is direct reference to HTML element
+ else
+ el = tt_aV[FIX][0];
+ iX = tt_aV[FIX][1];
+ iY = tt_aV[FIX][2];
+ // By default, vert pos is related to bottom edge of HTML element
+ if(!tt_aV[ABOVE] && el)
+ iY += tt_GetDivH(el);
+ for(; el; el = el.offsetParent)
+ {
+ iX += el.offsetLeft || 0;
+ iY += el.offsetTop || 0;
+ }
+ }
+ // For a fixed tip positioned above the mouse, use the bottom edge as anchor
+ // (recommended by Christophe Rebeschini, 31.1.2008)
+ if(tt_aV[ABOVE])
+ iY -= tt_h;
+ tt_SetTipPos(iX, iY);
+}
+function tt_Fade(a, now, z, n)
+{
+ if(n)
+ {
+ now += Math.round((z - now) / n);
+ if((z > a) ? (now >= z) : (now <= z))
+ now = z;
+ else
+ tt_tFade.Timer(
+ "tt_Fade("
+ + a + "," + now + "," + z + "," + (n - 1)
+ + ")",
+ tt_aV[FADEINTERVAL],
+ true
+ );
+ }
+ now ? tt_SetTipOpa(now) : tt_Hide();
+}
+function tt_SetTipOpa(opa)
+{
+ // To circumvent the opacity nesting flaws of IE, we set the opacity
+ // for each sub-DIV separately, rather than for the container DIV.
+ tt_SetOpa(tt_aElt[5], opa);
+ if(tt_aElt[1])
+ tt_SetOpa(tt_aElt[1], opa);
+ if(tt_aV[SHADOW])
+ {
+ opa = Math.round(opa * 0.8);
+ tt_SetOpa(tt_aElt[7], opa);
+ tt_SetOpa(tt_aElt[8], opa);
+ }
+}
+function tt_OnCloseBtnOver(iOver)
+{
+ var css = tt_aElt[4].style;
+
+ iOver <<= 1;
+ css.background = tt_aV[CLOSEBTNCOLORS][iOver];
+ css.color = tt_aV[CLOSEBTNCOLORS][iOver + 1];
+}
+function tt_OnLClick(e)
+{
+ // Ignore right-clicks
+ e = e || window.event;
+ if(!((e.button && e.button & 2) || (e.which && e.which == 3)))
+ {
+ if(tt_aV[CLICKSTICKY] && (tt_iState & 0x4))
+ {
+ tt_aV[STICKY] = true;
+ tt_iState &= ~0x4;
+ }
+ else if(tt_aV[CLICKCLOSE])
+ tt_HideInit();
+ }
+}
+function tt_Int(x)
+{
+ var y;
+
+ return(isNaN(y = parseInt(x)) ? 0 : y);
+}
+Number.prototype.Timer = function(s, iT, bUrge)
+{
+ if(!this.value || bUrge)
+ this.value = window.setTimeout(s, iT);
+}
+Number.prototype.EndTimer = function()
+{
+ if(this.value)
+ {
+ window.clearTimeout(this.value);
+ this.value = 0;
+ }
+}
+function tt_GetWndCliSiz(s)
+{
+ var db, y = window["inner" + s], sC = "client" + s, sN = "number";
+ if(typeof y == sN)
+ {
+ var y2;
+ return(
+ // Gecko or Opera with scrollbar
+ // ... quirks mode
+ ((db = document.body) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // ... strict mode
+ : ((db = document.documentElement) && typeof(y2 = db[sC]) == sN && y2 && y2 <= y) ? y2
+ // No scrollbar, or clientarea size == 0, or other browser (KHTML etc.)
+ : y
+ );
+ }
+ // IE
+ return(
+ // document.documentElement.client+s functional, returns > 0
+ ((db = document.documentElement) && (y = db[sC])) ? y
+ // ... not functional, in which case document.body.client+s
+ // is the clientarea size, fortunately
+ : document.body[sC]
+ );
+}
+function tt_SetOpa(el, opa)
+{
+ var css = el.style;
+
+ tt_opa = opa;
+ if(tt_flagOpa == 1)
+ {
+ if(opa < 100)
+ {
+ // Hacks for bugs of IE:
+ // 1.) Once a CSS filter has been applied, fonts are no longer
+ // anti-aliased, so we store the previous 'non-filter' to be
+ // able to restore it
+ if(typeof(el.filtNo) == tt_u)
+ el.filtNo = css.filter;
+ // 2.) A DIV cannot be made visible in a single step if an
+ // opacity < 100 has been applied while the DIV was hidden
+ var bVis = css.visibility != "hidden";
+ // 3.) In IE6, applying an opacity < 100 has no effect if the
+ // element has no layout (position, size, zoom, ...)
+ css.zoom = "100%";
+ if(!bVis)
+ css.visibility = "visible";
+ css.filter = "alpha(opacity=" + opa + ")";
+ if(!bVis)
+ css.visibility = "hidden";
+ }
+ else if(typeof(el.filtNo) != tt_u)
+ // Restore 'non-filter'
+ css.filter = el.filtNo;
+ }
+ else
+ {
+ opa /= 100.0;
+ switch(tt_flagOpa)
+ {
+ case 2:
+ css.KhtmlOpacity = opa; break;
+ case 3:
+ css.KHTMLOpacity = opa; break;
+ case 4:
+ css.MozOpacity = opa; break;
+ case 5:
+ css.opacity = opa; break;
+ }
+ }
+}
+function tt_Err(sErr, bIfDebug)
+{
+ if(tt_Debug || !bIfDebug)
+ alert("Tooltip Script Error Message:\n\n" + sErr);
+}
+
+//============ EXTENSION (PLUGIN) MANAGER ===============//
+function tt_ExtCmdEnum()
+{
+ var s;
+
+ // Add new command(s) to the commands enum
+ for(var i in config)
+ {
+ s = "window." + i.toString().toUpperCase();
+ if(eval("typeof(" + s + ") == tt_u"))
+ {
+ eval(s + " = " + tt_aV.length);
+ tt_aV[tt_aV.length] = null;
+ }
+ }
+}
+function tt_ExtCallFncs(arg, sFnc)
+{
+ var b = false;
+ for(var i = tt_aExt.length; i;)
+ {--i;
+ var fnc = tt_aExt[i]["On" + sFnc];
+ // Call the method the extension has defined for this event
+ if(fnc && fnc(arg))
+ b = true;
+ }
+ return b;
+}
+
+tt_Init();
+
--
Static and dynamic websites for Debian Pure Blends
More information about the Blends-commit
mailing list