summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--about.php60
-rw-r--r--apidocs.php46
-rw-r--r--applications.php480
-rw-r--r--contributors.php54
-rw-r--r--countdown.js85
-rw-r--r--development.php38
-rw-r--r--donate.php41
-rw-r--r--faq.php50
-rw-r--r--faq/about.php40
-rw-r--r--faq/applications.php148
-rw-r--r--faq/configure.php236
-rw-r--r--faq/contribute.php128
-rw-r--r--faq/credits.php29
-rw-r--r--faq/desktop.php56
-rw-r--r--faq/filemanager.php213
-rw-r--r--faq/getting-tde.php62
-rw-r--r--faq/index.php48
-rw-r--r--faq/install.php223
-rw-r--r--faq/introduction.php154
-rw-r--r--faq/licensing.php74
-rw-r--r--faq/misc.php122
-rw-r--r--faq/more-info.php44
-rw-r--r--faq/non-tde-apps.php76
-rw-r--r--faq/panel.php153
-rw-r--r--faq/questions.php156
-rw-r--r--faq/sound.php72
-rw-r--r--faq/tips.php96
-rw-r--r--faq/webbrowser.php201
-rw-r--r--faq/windowmanager.php94
-rwxr-xr-xfavicon.icobin0 -> 2550 bytes
-rw-r--r--features.php38
-rw-r--r--footer.php22
-rw-r--r--globals.php4
-rw-r--r--handbooks.php18
-rw-r--r--header.php120
-rw-r--r--helpwanted.php42
-rw-r--r--highslide/graphics/close.pngbin0 -> 1910 bytes
-rw-r--r--highslide/graphics/closeX.pngbin0 -> 3665 bytes
-rw-r--r--highslide/graphics/controlbar-black-border.gifbin0 -> 5109 bytes
-rw-r--r--highslide/graphics/controlbar-text-buttons.pngbin0 -> 1300 bytes
-rw-r--r--highslide/graphics/controlbar-white-small.gifbin0 -> 3151 bytes
-rw-r--r--highslide/graphics/controlbar-white.gifbin0 -> 4999 bytes
-rw-r--r--highslide/graphics/controlbar2.gifbin0 -> 884 bytes
-rw-r--r--highslide/graphics/controlbar3.gifbin0 -> 838 bytes
-rw-r--r--highslide/graphics/controlbar4-hover.gifbin0 -> 2410 bytes
-rw-r--r--highslide/graphics/controlbar4.gifbin0 -> 854 bytes
-rw-r--r--highslide/graphics/fullexpand.gifbin0 -> 209 bytes
-rw-r--r--highslide/graphics/geckodimmer.pngbin0 -> 2817 bytes
-rw-r--r--highslide/graphics/icon.gifbin0 -> 867 bytes
-rw-r--r--highslide/graphics/loader.gifbin0 -> 668 bytes
-rw-r--r--highslide/graphics/loader.white.gifbin0 -> 673 bytes
-rw-r--r--highslide/graphics/outlines/Outlines.psdbin0 -> 171802 bytes
-rw-r--r--highslide/graphics/outlines/beveled.pngbin0 -> 1848 bytes
-rw-r--r--highslide/graphics/outlines/drop-shadow.pngbin0 -> 2091 bytes
-rw-r--r--highslide/graphics/outlines/glossy-dark.pngbin0 -> 2793 bytes
-rw-r--r--highslide/graphics/outlines/outer-glow.pngbin0 -> 3423 bytes
-rw-r--r--highslide/graphics/outlines/rounded-black.pngbin0 -> 3031 bytes
-rw-r--r--highslide/graphics/outlines/rounded-white.pngbin0 -> 2050 bytes
-rw-r--r--highslide/graphics/resize.gifbin0 -> 70 bytes
-rw-r--r--highslide/graphics/scrollarrows.pngbin0 -> 6463 bytes
-rw-r--r--highslide/graphics/zoomin.curbin0 -> 326 bytes
-rw-r--r--highslide/graphics/zoomout.curbin0 -> 326 bytes
-rw-r--r--highslide/highslide-full.js3293
-rw-r--r--highslide/highslide-full.packed.js28
-rw-r--r--highslide/highslide-ie6.css71
-rw-r--r--highslide/highslide-with-gallery.js2643
-rw-r--r--highslide/highslide-with-gallery.packed.js28
-rw-r--r--highslide/highslide-with-html.js2449
-rw-r--r--highslide/highslide-with-html.packed.js28
-rw-r--r--highslide/highslide.css877
-rw-r--r--highslide/highslide.js1872
-rw-r--r--highslide/highslide.packed.js28
-rw-r--r--index.php71
-rw-r--r--mailing_lists/index.php78
-rw-r--r--mailinglist.php78
-rw-r--r--mainstyle.css164
-rw-r--r--media/back.pngbin0 -> 142 bytes
-rw-r--r--media/bannerchunk.pngbin0 -> 245 bytes
-rw-r--r--media/bannerswoosh.pngbin0 -> 18646 bytes
-rw-r--r--media/gradient2.pngbin0 -> 5077 bytes
-rw-r--r--media/news-javascript.php20
-rw-r--r--media/rsync_logo.jpgbin0 -> 15959 bytes
-rw-r--r--media/screenshots/large/tde1.pngbin0 -> 365971 bytes
-rw-r--r--media/screenshots/large/tde2.pngbin0 -> 536084 bytes
-rw-r--r--media/screenshots/large/tde3.pngbin0 -> 232766 bytes
-rw-r--r--media/screenshots/large/tde4.pngbin0 -> 407491 bytes
-rw-r--r--media/screenshots/large/tde4_mainpage.pngbin0 -> 72858 bytes
-rw-r--r--media/screenshots/large/tde5.pngbin0 -> 266201 bytes
-rw-r--r--media/screenshots/small/tde1.pngbin0 -> 20294 bytes
-rw-r--r--media/screenshots/small/tde2.pngbin0 -> 18590 bytes
-rw-r--r--media/screenshots/small/tde3.pngbin0 -> 15072 bytes
-rw-r--r--media/screenshots/small/tde4.pngbin0 -> 20632 bytes
-rw-r--r--media/screenshots/small/tde5.pngbin0 -> 22038 bytes
-rwxr-xr-xmedia/tde-logo.pngbin0 -> 13503 bytes
-rw-r--r--media/tde-rss.pngbin0 -> 4932 bytes
-rw-r--r--media/tde-rss.svgzbin0 -> 4222 bytes
-rw-r--r--mirrors.php54
-rw-r--r--news.php63
-rw-r--r--newsentry.php81
-rw-r--r--ocs/karamba-providers.xml22
-rw-r--r--ocs/providers.xml22
-rw-r--r--past_contributors.php37
-rw-r--r--relatedprojects.php31
-rw-r--r--releases.php54
-rw-r--r--releases/3.5.11/index.php22
-rw-r--r--releases/3.5.12/index.php24
-rw-r--r--releases/3.5.13.1/index.php26
-rw-r--r--releases/3.5.13.2/index.php26
-rw-r--r--releases/3.5.13/index.php26
-rw-r--r--releases/R14.0.0/index.php26
-rw-r--r--releases/R14.0.1/index.html12
-rw-r--r--reskin.pl50
-rwxr-xr-xrss.php77
-rw-r--r--screenshots.css7
-rw-r--r--screenshots.js15
-rw-r--r--screenshots.php59
-rw-r--r--secret_whispers_0f_a_n3w_p0w3r.pngbin0 -> 128023 bytes
-rw-r--r--support.php25
-rw-r--r--tde-head-and-foot.php8
-rw-r--r--template.php8
120 files changed, 16026 insertions, 0 deletions
diff --git a/about.php b/about.php
new file mode 100644
index 0000000..25e3bcd
--- /dev/null
+++ b/about.php
@@ -0,0 +1,60 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("About Trinity", "Home", "About");
+?>
+<p>The Trinity Desktop Environment (TDE) project is a computer desktop environment for Unix-like operating systems
+with a primary goal of retaining the function and form of traditional desktop computers.</p>
+
+<h2>Project Goals</h2>
+<P>We seek to provide a traditional desktop environment which is . . .
+<ul>
+ <li>Flexible and highly customizable.</li>
+ <li>Visually appealing.</li>
+ <li>Equipped with a suitable collection of desktop effects that remain compatible with older hardware.</li>
+ <li>Responsive on older hardware, while also being compatible with newer hardware.</li>
+ <li>Compatible with, but not requiring, 3D acceleration.</li>
+ <li>Compatible with <a href="http://www.freedesktop.org/wiki/">freedesktop.org</a> and
+ <a href="http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard">Linux file system hierarchy</a>
+ standards.</li>
+ <li>Compatible with other desktop environments.</li>
+ <li>Capable of offering maximal <a href="http://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction">HCI
+ (Human-Computer Interaction)</a> efficiency in a mouse/keyboard environment.</li>
+</ul>
+
+<h2>Major Features</h2>
+<ul>
+ <li>Traditional panel, task bar, task manager, quick launch.</li>
+ <li>A repository of TDE compatible software applications, including several text editors, a file manager,
+ image viewers, office apps, an archive manager, and the original and improved classic Amarok music player.
+ <A HREF="applications.php">Full list of applications</A></li>
+ <li>Optional <a href="http://en.wikipedia.org/wiki/Secure_attention_key">Secure Attention
+ Key</a> to further secure the login and desktop lock dialogs.</li>
+ <li>A TDE-specific DBUS notification client for improved integration with
+ common applications such as Firefox and NetworkManager (with no need for HAL).</li>
+ <li>Plus much more! <A HREF="features.php">Full list of features</A>
+</ul>
+
+<h2>History</h2>
+<p>The TDE project began as a continuation of the K Desktop Environment (KDE)
+ version 3. The name Trinity was chosen partly because the word means "three" and TDE
+ was a continuation of KDE 3. TDE now is its own computer desktop environment
+ project.</p>
+<p>The TDE project was founded by and is still led by Timothy Pearson. Timothy
+ is an experienced and skilled software developer and was the KDE 3.x coordinator
+ of previous Kubuntu releases.</p>
+<h3>Release dates:</h3>
+<p><b>TDE 3.5.11:</b> April 29, 2010.<br>
+<b>TDE 3.5.12:</b> October 3, 2010.<br>
+<b>TDE 3.5.13:</b> November 1, 2011.<br>
+<b>TDE 3.5.13.1:</b> October 10, 2012.<br>
+<b>TDE 3.5.13.2:</b> July 21, 2013.<br>
+<b>TDE R14.0.0:</b> December 16, 2014.<br/>
+<b>TDE R14.0.1:</b> August 30, 2015<br/>
+<b>TDE R14.0.2:</b> Anticipated in Q4 2015.</p>
+<p><b>NOTE:</b> The Trinity Desktop Environment project is not a continuation of
+ KDE 3.5 by KDE e.V., members of which no longer support the KDE 3 series.
+ Trinity is an independent fork using a separate developer community.</p>
+<p><a href="http://www.trinitydesktop.org/contributors.php">Contributors</a></p>
+<?php
+ doFooter();
+?>
diff --git a/apidocs.php b/apidocs.php
new file mode 100644
index 0000000..ba121ff
--- /dev/null
+++ b/apidocs.php
@@ -0,0 +1,46 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Trinity API Documentation", "Development", "API Docs");
+?>
+<P><P>
+<a href="/docs/qt3">Qt3 API Index</a><BR>
+<a href="/docs/qt4">Qt4 API Index</a><BR>
+<a href="/docs/qt4/porting4.html">Qt3 to Qt4 porting guide</a><P>
+<a href="/docs/trinity/index.html">Trinity API</a>
+
+<FORM action="/search/omega" method="get">
+ <DIV>
+ <INPUT type="text" name="P">
+ <INPUT type="hidden" name="DEFAULTOP" value="or">
+ <INPUT type="hidden" name="DB" value="qt3">
+ <INPUT type="hidden" name="FMT" value="qt3">
+ <INPUT type="hidden" name="xDB" value="default">
+ <INPUT type="submit" value="Search Qt3 API Documentation">
+ </DIV>
+</FORM>
+
+<FORM action="/search/omega" method="get">
+ <DIV>
+ <INPUT type="text" name="P">
+ <INPUT type="hidden" name="DEFAULTOP" value="or">
+ <INPUT type="hidden" name="DB" value="qt4">
+ <INPUT type="hidden" name="FMT" value="qt4">
+ <INPUT type="hidden" name="xDB" value="default">
+ <INPUT type="submit" value="Search Qt4 API Documentation">
+ </DIV>
+</FORM>
+
+<FORM action="/search/omega" method="get">
+ <DIV>
+ <INPUT type="text" name="P">
+ <INPUT type="hidden" name="DEFAULTOP" value="or">
+ <INPUT type="hidden" name="DB" value="trinity_api">
+ <INPUT type="hidden" name="FMT" value="trinity_api">
+ <INPUT type="hidden" name="xDB" value="default">
+ <INPUT type="submit" value="Search Trinity API Documentation">
+ </DIV>
+</FORM>
+
+<?php
+ doFooter();
+?>
diff --git a/applications.php b/applications.php
new file mode 100644
index 0000000..ddcc1ed
--- /dev/null
+++ b/applications.php
@@ -0,0 +1,480 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Applications", "Documentation", "Applications");
+?>
+
+
+<UL STYLE="padding-left:1ex;margin-top:2ex">
+ <LI><A HREF="#edutainment">Educational and Edutainment Applications</A>: languages, mathematics, science . . .</LI>
+ <LI><A HREF="#games">Games</A>: arcade, card, board, kids, strategic</LI>
+ <LI><A HREF="#graphics">Graphics Applications</A>: image viewers . . .</LI>
+ <LI><A HREF="#internet">Internet Applications</A>: configuration and monitoring, messaging, email . . .</LI>
+ <LI><A HREF="#multimedia">Multimedia Applications</A>: audio, video, CD and DVD . . .</LI>
+ <LI><A HREF="#office">Office Applications</A>: KOffice, faxes, note taking . . .</LI>
+ <LI><A HREF="#development">Software Development Applications</A>: Web development . . .</LI>
+ <LI><A HREF="#system">System and Configuration Applications</A>: hardware, monitors and log viewing, package management . . .</LI>
+ <LI><A HREF="#utilities">Utilities</A>: accessibility, alternate launchers, file management, phones and devices . . .</LI>
+ <LI><A HREF="#toys">Panel Applets and Software Toys</A></LI>
+</UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="edutainment">Education and Edutainment</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px;">Languages</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Kanagram: Anagram puzzle game.</LI>
+ <LI>KHangMan: Hangman game.</LI>
+ <LI>Kiten: Japanese reference/study tool.</LI>
+ <LI>KLatin: Latin reviser and trainer.</LI>
+ <LI>KLettres: Learn alphabets. Designed to help users learn the alphabet in a new language and to read
+ simple syllables. Eleven languages are supported: Czech, Danish, Dutch, English, French, Italian,
+ Luganda, Romanized Hindi, Spanish, Slovak and German.</LI>
+ <LI>Kverbos: Study Spanish verb forms.</LI>
+ <LI>KVocTrain: Vocabulary trainer.</LI>
+ <LI>KWordQuiz: Vocabulary trainer.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Mathematics</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KBruch: Practice calculating fractions.</LI>
+ <LI>Kig: Interactive geometry trainer.</LI>
+ <LI>KmPlot: Mathematical function plotter.</LI>
+ <LI>KPercentage: Practice calculating percentages.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Bibletime: Bible study program.</LI>
+ <LI>Blinken: Simon Says electronic memory game.</LI>
+ <LI>KEduca-editor: Tests and exams editor.</LI>
+ <LI>KEduca: Tests and exams.</LI>
+ <LI>KGeography: Geography trainer.</LI>
+ <LI>KTouch: Touch typing tutor.</LI>
+ <LI>KTurtle: Logo programming environment trainer.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Science</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Kalzium: Periodic Table of Elements viewer. Search for information about the elements or to learn
+ facts about the periodic table.</LI>
+ <LI>KStars: Desktop planetarium. Depicts an accurate simulation of the night sky, including stars,
+ constellations, star clusters, nebulae, galaxies, all planets, the Sun, the Moon, comets and asteroids.
+ View the night sky from any location on Earth, on any date. The user interface is intuitive and flexible.
+ The display can be panned and zoomed with the mouse. Easily identify objects and track their motion across
+ the sky.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="games">Games</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Arcade</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KAsteroids: A clone of the popular <A HREF="http://en.wikipedia.org/wiki/Asteroids_%28video_game%29">Asteroids</A> game.</LI>
+ <LI>KBounce: Bouncing ball game.</LI>
+ <LI>KFoulEggs: Japanese PuyoPuyo-like (Tetris-like) game.</LI>
+ <LI>KGoldrunner: Action and puzzle solving game. Run through the maze, dodge your enemies, collect all the
+ gold, and climb to the next level.</LI>
+ <LI>Kolf: Miniature golf.</LI>
+ <LI>KSirtet: <A HREF="http://en.wikipedia.org/wiki/Tetris">Tetris</A>-like game.</LI>
+ <LI>KSmileTris: Tetris-like game.</LI>
+ <LI>KSnakeRace: Snake race game. A game of speed and agility. Try to eat all the apples in the room before
+ getting out!.</LI>
+ <LI>KSpaceDuel: Space arcade game.</LI>
+ <LI>KTron: A simple clone of the Tron light-cycle racing game, which you can play alone or against a friend.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Board</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Atlantik: <A HREF="http://en.wikipedia.org/wiki/Monopoly_%28game%29">Monopoly&reg;</A>-like board game. Comes with a board designer.</LI>
+ <LI>KBackgammon: Backgammon game. A graphical backgammon program, supporting games with other local players,
+ against computers, and online on the First Internet Backgammon Server.</LI>
+ <LI>KBlackBox: A "hide and seek" logic game of shooting rays into a black box to locate hidden atoms.</LI>
+ <LI>Kenolaba: <A HREF="http://en.wikipedia.org/wiki/Abalone_%28board_game%29">Abalone</A>-like board game.</LI>
+ <LI>KMahjongg: Mahjongg-like tile game. A game similar to the famous oriental game Mahjongg.</LI>
+ <LI>Knights: Chess.</LI>
+ <LI>KReversi: Reversi board game.</LI>
+ <LI>Shisen-Sho: Shisen-Sho tile game. A game similar to Mahjongg.</LI>
+ <LI>TWin4: A four-in-a-row strategy game.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Card</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KPoker: Poker card game.</LI>
+ <LI>Lieutenant Skat: card game.</LI>
+ <LI>KPatience: Solitaire card games.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Kids</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Potato Guy: game for small children. Similar to the famous Mr. Potato Head toy.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Tactics and Strategy</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KAtomic: Implementation of the Japanese warehouse-keeper puzzle/logic game Sokoban.</LI>
+ <LI>KBattleship: A network-enabled implementation of <A HREF="http://en.wikipedia.org/wiki/Battleship_%28game%29">Battleship</A>.</LI>
+ <LI>KJumpingCube: A simple tactical game you can play against a friend or the computer.</LI>
+ <LI>Klickety: board game. An adaption of <A HREF="http://en.wikipedia.org/wiki/Clickomania">Clickomania</A>,
+ itself a SameGame clone with a modified ruleset.</LI>
+ <LI>KMines: A version of the classic game <A HREF="http://en.wikipedia.org/wiki/Minesweeper_%28video_game%29">Minesweeper</A>.</LI>
+ <LI>KNetwalk: Network construction game.</LI>
+ <LI>Kolor Lines: Line up coloured tokens in order to eliminate them. Simple, but addictive. Multiple
+ difficulty levels.</LI>
+ <LI>Konquest: Galactic strategy game.</LI>
+ <LI>KSokoban: Sokoban game.</LI>
+ <LI>Samegame: Like Klickety, this is a descendant of Kuniaki Moribe's game Chain Shot!, from the mid-80s.
+ The scoring rules are different from Klickety's and closer to the original.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="graphics">Graphics</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Image Viewers</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Gwenview: Image viewer.</LI>
+ <LI>KSquirrel: Image viewer.</LI>
+ <LI>Kuickshow: Image viewer and browser.</LI>
+ <LI>KView: A small and fast image viewer with some simple image processing commands. Works with many graphics
+ file formats. Not a full-fledged image processor, but sufficient for many everyday tasks.</LI>
+ <LI>ShowFoto: Photo viewer and editor.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Chalk: Photo retouching, image editing, and paint application. Part of KOffice.</LI>
+ <LI>Digikam: Photo management.</LI>
+ <LI>Kamera: View and download images from a digital camera.</LI>
+ <LI>Karbon14: Scalable (vector) graphics editor. Part of KOffice.</LI>
+ <LI>KColorChooser: Color chooser.</LI>
+ <LI>KColorEdit: Color palette editor.</LI>
+ <LI>KDVI: DVI viewer.</LI>
+ <LI>Kipi-Plugins: Image plugin interface.</LI>
+ <LI>KolourPaint: An easy-to-use paint program.</LI>
+ <LI>Kooka: Scan and OCR program.</LI>
+ <LI>KPovModeler: Povray modeler.</LI>
+ <LI>KRuler: Screen ruler. Used to measure objects on the screen.</LI>
+ <LI>KSnapshot: Screen capture program. Capable of capturing images of the desktop, a single window, a section
+ of a window or a selected region. Images may be saved in a variety of formats.</LI>
+ <LI>Potracegui: Potrace and autotrace frontend.</LI>
+ <LI>TDEFontView: Font viewer.</LI>
+ <LI>TDEIconEdit: Icon editor. To help create icons using the standard icon palette.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="internet">Internet</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Configuration and Connection Monitoring</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Kleopatra: A tool for managing X.509 certificates.</LI>
+ <LI>KMyFirewall: IPTables firewall configuration tool.</LI>
+ <LI>KNemo: Network monitor.</LI>
+ <LI>KNetload: Network load meter.</LI>
+ <LI>KNetStats: Network monitor. A simple KDE network monitor to show rx/tx LEDs of any network interface on
+ a system tray icon.</LI>
+ <LI>KNmap: An Nmap frontend.</LI>
+ <LI>KPPP: Internet dial-up tool frontend for the ppp daemon.</LI>
+ <LI>KPPPLogview: Internet dial-up tool log viewer.</LI>
+ <LI>KVPNc: A VPN client.</LI>
+ <LI>KWiFimanager: Wireless network manager. Used to configure and monitor wireless LAN cards.</LI>
+ <LI>TDENetworkmanager: Networkmanager daemon frontend.</LI>
+ <LI>TorK: TOR frontend.</LI>
+ <LI>WLAssistant: Wireless network manager.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Email-Related</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KBiff: Email frontend to biff.</LI>
+ <LI>KMail: Mail client.</LI>
+ <LI>Korn: A system tray applet that keeps track of new mail.</LI>
+ <LI>KSig: Signature editor. Designed to graphically manage multiple email signatures.</LI>
+ <LI>KShowmail: An email viewer.</LI>
+ <LI>KTnef: Viewer for Microsoft Outlook/Exchange TNEF attachment files.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Messaging and IRC</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Konversation: IRC client.</LI>
+ <LI>Kopete: A multi-protocol instant messenger client.</LI>
+ <LI>KSirc: IRC client.</LI>
+ <LI>KTalkd: An enhanced talk daemon to handle incoming talk requests, announce them, and allow users to
+ respond using a talk client.</LI>
+ <LI>KVirc: IRC client.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Akregator: RSS feed reader.</LI>
+ <LI>Kasablanca: An FTP client.</LI>
+ <LI>KDict: A graphical client for the DICT protocol, enabling users to search through online dictionary
+ databases.</LI>
+ <LI>KFTPGrabber: An FTP client.</LI>
+ <LI>KGet: An internet download manager.</LI>
+ <LI>KNetAttach: Network folder wizard.</LI>
+ <LI>KNewsTicker: An RSS news ticker applet for the panel.</LI>
+ <LI>KNode: Usenet news reader.</LI>
+ <LI>Konqueror: Web browser.</LI>
+ <LI>Kontact: Personal information manager.</LI>
+ <LI>Krdc: Remote desktop connection. A client application to view or control the desktop session on another
+ machine running a compatible (VNC) server.</LI>
+ <LI>Krfb: Desktop sharing server application to share a current session with a user on another machine, who
+ can use a VNC client to view or control the desktop.</LI>
+ <LI>KTorrent: BitTorrent client.</LI>
+ <LI>SMB4k: Browser for Windows-style network shares.</LI>
+ <LI>TDEWallet: Password manager. The wallet subsytem provides a convenient and secure way to manage passwords.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="multimedia">Multimedia</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Audio Creators and Players</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Amarok: Audio player and manager supporting cover art, CDDB, visual effects, and more.</LI>
+ <LI>JuK: Music player jukebox, tagger, and music collection manager.</LI>
+ <LI>KRec: Recording tool. Record any sound coming in or out of the computer. Some effects for dynamics are
+ implemented as well as the possibility to play what is recorded.</LI>
+ <LI>KStreamripper: Internet radio streamer.</LI>
+ <LI>Noatun: Plugin-based media player.</LI>
+ <LI>Rosegarden: Music composition and editing. An audio and MIDI sequencer and musical notation editor.</LI>
+ <LI>Soundkonverter: Audio converters frontend.</LI>
+ <LI>TDEMid: Midi/Karaoke player.</LI>
+ <LI>TDERadio: AM/FM radio frontend.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">CD and DVD Utilities</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>K3b: CD and DVD burning. A CD and DVD burning application with a comfortable user interface.</LI>
+ <LI>K9Copy: Video DVD backup tool.</LI>
+ <LI>KAudioCreator: an audio CD ripper.</LI>
+ <LI>KsCD: A small, fast, CDDB enabled audio CD player.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Arts: Our audio server. The name stands for Analog Real-Time Synthesizer.</LI>
+ <LI>KMix: Sound mixer for changing the sound card volume.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Video Players</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Kaboodle: A simple media player.</LI>
+ <LI>Kaffeine: Media player.</LI>
+ <LI>KMplayer: Media player.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="office">Office</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Faxes</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KFax: Fax viewer.</LI>
+ <LI>KFaxView: Fax viewer.</LI>
+ <LI>TDEPrintFax: Fax utility.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">KOffice Suite</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Chalk: Photo retouching, image editing, and paint application.</LI>
+ <LI>Karbon14: Scalable graphics drawing editor.</LI>
+ <LI>KBibTex: Bibliography manager.</LI>
+ <LI>KChart: Chart and graph creator. Supports bar graphs, line plots, pie charts, ring charts, and more.</LI>
+ <LI>Kexi: Database creator and manager.</LI>
+ <LI>KFormula: Formula editor.</LI>
+ <LI>Kivio: Flowchart and diagram editing.</LI>
+ <LI>KPlato: Project management and planning.</LI>
+ <LI>KPresenter: Slide presentations.</LI>
+ <LI>KSpread: Spreadsheets.</LI>
+ <LI>Kugar: Database report generator.</LI>
+ <LI>KWord: Word processing and simple desktop publishing.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KAddressBook: Address book manager.</LI>
+ <LI>KAlarm: Personal Alarm scheduler.</LI>
+ <LI>KArm: Personal Time tracker.</LI>
+ <LI>KBarcode: Barcode and label printing.</LI>
+ <LI>KDict: Online dictionary.</LI>
+ <LI>KGhostView: Ghostview PS/PDF viewer frontend.</LI>
+ <LI>Kile: Integrated LaTeX environment editor.</LI>
+ <LI>KMail: Mail client.</LI>
+ <LI>KMyMoney: Personal finance manager.</LI>
+ <LI>KonsoleKalendar: A command line interface to TDE calendars.</LI>
+ <LI>Kontact: Personal information manager.</LI>
+ <LI>KOrganizer: Personal organizer.</LI>
+ <LI>KPDF: PDF viewer.</LI>
+ <LI>KThesaurus: Thesaurus.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Note Taking</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Basket: Note-taking application.</LI>
+ <LI>KJots: A small program for organizing miscellaneous notes.</LI>
+ <LI>KNotes: Sticky popup notes.</LI>
+ <LI>KNowit: Tree-like note manager to help keep, edit and maintain notes.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="development">Software Development</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Cervisia: CVS frontend.</LI>
+ <LI>Kate: Advanced text editor with syntax highlighting and much more.</LI>
+ <LI>KBabel: Translation tool, with a dictionary and a catalog manager.</LI>
+ <LI>KBugBuster: TDE bug management.</LI>
+ <LI>KDbg: Debugging frontend.</LI>
+ <LI>KDcop: A program to browse available dcop functions of any app.</LI>
+ <LI>KDiff3: Diff/Patch frontend. A file and directory diff and merge tool that compares and merges two or
+ three text input files or directories.</LI>
+ <LI>KHexEdit: A hexidecimal and binary editor.</LI>
+ <LI>Kommander: Dynamic dialog editor.</LI>
+ <LI>Kompare: Diff/Patch frontend to view the differences between files and directories.</LI>
+ <LI>Konstruct: Build system frontend.</LI>
+ <LI>KPicosim: Xilinx PicoBlaze-3 simulator.</LI>
+ <LI>KScope: source editing environment.</LI>
+ <LI>KTechlab: Electronic circuit and microcontroller integrated development environment.</LI>
+ <LI>KUIviewer: TQt3 designer user interface viewer.</LI>
+ <LI>Piklab: PIC and dsPIC integrated development environment. Based on Microchip PIC and dsPIC
+ microcontrollers similar to the MPLAB environment. Support for several compiler and assembler
+ toolchains is integrated. The ICD2 debugger, the PICkit1 and PICkit2 programmers, and most direct
+ programmers are supported. A command-line programmer "piklab-prog" is also available.</LI>
+ <LI>TDECachegrind: Profiler frontend.</LI>
+ <LI>TDESVN: SVN client.</LI>
+ <LI>TDevelop: An integrated software development environment, with a documentation viewer and a GUI designer.</LI>
+ <LI>Umbrello: Helps software development by using the industry standard Unified Modelling Language (UML) to
+ create diagrams for designing and documenting software systems.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Web Development</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KImageMapEditor: HTML image map editor.</LI>
+ <LI>KLinkStatus: Web page link checker.</LI>
+ <LI>Quanta Plus: Integrated web development environment. Supports many markup languages and popular web-based
+ scripting languages, and CSS.</LI>
+ <LI>KXSLDbg: XSLT debugger. A tool intended to help understand stylesheets. Can search for items of interest
+ and trace stylesheet execution.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="system">System</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Hardware</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>IRKick: LIRC server.</LI>
+ <LI>KNutclient: Network UPS tool frontend.</LI>
+ <LI>KwikDisk: File device manager utility.</LI>
+ <LI>TDElirc: Infrared remote control frontend to Linux Infrared Remote Control (LIRC).</LI>
+ <LI>TDEPowersave: Power management frontend. A utility used to set power consumption and conservation options.</LI>
+ <LI>TDEPrinter: Printer interface.</LI>
+ <LI>TDERandRTray: Screen resize and rotate.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Gtk-Qt Theme Engine: Apply TDE settings to GTK apps.</LI>
+ <LI>Kappfinder: Menu updating tool.</LI>
+ <LI>KCron: Task scheduler frontend to cron.</LI>
+ <LI>KFontinst: Font installer.</LI>
+ <LI>KGtk-Qt3: TDE Dialogs in GTK apps.</LI>
+ <LI>KioskTool: An kiosk-like administration tool providing system administrators an easy way to
+ predefine desktop configurations for groups of users, lock settings, or otherwise restrict features
+ of the Trinity Desktop Environment.</LI>
+ <LI>KMenuedit: System menu editor.</LI>
+ <LI>KPersonalizer: Desktop settings wizard.</LI>
+ <LI>KSysV: A graphical editor for SysV style init scripts.</LI>
+ <LI>KUser: User and group account manager frontend.</LI>
+ <LI>TDESU: Su frontend.</LI>
+ <LI>TDESUDO: Sudo frontend.</LI>
+ <LI>TDM: Login manager.</LI>
+ <LI>TDE-Guidance: System administration tools.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Monitors and Log Viewing</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KCPUload: CPU load display. A simple CPU meter that graphs a recent history of CPU usage in the system
+ tray, supporting SMP and separate user/system loads.</LI>
+ <LI>Kima: Sensor monitoring.</LI>
+ <LI>KJobViewer: Print job viewer.</LI>
+ <LI>KSysGuard: Performance monitor. A network enabled task manager and system monitor application, with the
+ additional functionality of application.</LI>
+ <LI>KSystemLog: System log viewer.</LI>
+ <LI>KWatchGnuPG: A simple gnupg log viewer.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Package Management</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Adept: Advanced Packaging Tool (APT) frontend for Debian-descended distributions.</LI>
+ <LI>Kdpkg: Debian package installer frontend.</LI>
+ <LI>KPackage: Package manager frontend for Debian, Slackware and BSD packages.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="utilities">Utilities</A></H2>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Accessibility</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>KMag: Screen magnifier. Magnifies a part of the screen like a magnifying glass.</LI>
+ <LI>KMousetool: Automatic mouse button clicker for people with repetitive strain injuries (RSI).</LI>
+ <LI>KMouth: Speech synthesizer frontend.</LI>
+ <LI>KSayIt: Text-to-Speech frontend.</LI>
+ <LI>Kttsmgr: Text-to-Speech manager.</LI>
+ <LI>KVKbd: Virtual keyboard.</LI>
+ <LI>Kxkb: A keyboard layout switching utility based on X11 xkb extension.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Alternate Menus and Launchers</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Katapult: Application and bookmark launcher. An application designed to provide quick and easy access to
+ applications, bookmarks, music and more.</LI>
+ <LI>Kbfx: Alternate system menu.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Files and File Management</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Dolphin: File manager.</LI>
+ <LI>Filelight: File system viewer. Displays disk usage information, effectively a graphical version of the
+ command line tool, du.</LI>
+ <LI>KDat: Tape backup tool.</LI>
+ <LI>KDirstat: Graphical disk usage utility, very much like the Unix "du" command, plus some cleanup facilities
+ to reclaim disk space.</LI>
+ <LI>KDiskFree: View disk usage viewer.</LI>
+ <LI>Keep: Archiving/Backup Tool.</LI>
+ <LI>KFind: File finder utility.</LI>
+ <LI>Konqueror: Advanced file manager and viewer.</LI>
+ <LI>KRrename: Bulk file renamer.</LI>
+ <LI>Krusader: An advanced, twin-panel (commander-style) file-manager.</LI>
+ <LI>TDEFileReplace: File string search and replace tool.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Miscellaneous</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Abakus: Simple calculator.</LI>
+ <LI>Ark: Archiving tool to create and view compressed files.</LI>
+ <LI>Kate: Advanced text editor with syntax highlighting and much more.</LI>
+ <LI>KBookreader: An e-book reader.</LI>
+ <LI>KCalc: Scientific calculator.</LI>
+ <LI>KCharSelect: Character selector.</LI>
+ <LI>KCHMviewer: CHM Help file viewer. CHM is a compressed HTML format often used by Windows applications.</LI>
+ <LI>KControl: Control center.</LI>
+ <LI>KEdit: Simple text editor.</LI>
+ <LI>Kerry: Beagle desktop search frontend.</LI>
+ <LI>KFloppy: A graphical frontend to format 3.5" and 5.25" floppy disks.</LI>
+ <LI>KGpg: Encryption tool.</LI>
+ <LI>KKBSwitch: Keyboard layout indicator.</LI>
+ <LI>Klipper: Clipboard management tool.</LI>
+ <LI>Konsole: Terminal emulator.</LI>
+ <LI>KPager: Desktop pager to select virtual desktops.</LI>
+ <LI>KRecipes: A recipe manager.</LI>
+ <LI>KRegExpeditor: Regular expression editor.</LI>
+ <LI>KSensors: An lm-sensors frontend.</LI>
+ <LI>KShutdown: A system shutdown utility.</LI>
+ <LI>KTimer: Countdown launcher.</LI>
+ <LI>KTip: Useful tips.</LI>
+ <LI>KWorldClock: World clock.</LI>
+ <LI>KWrite: Text editor with syntax highlighting.</LI>
+ <LI>Tellico: Collection manager. Usefully organize collections of anything from books to trading cards to wines!</LI>
+ <LI>Yakuake: Drop-down terminal emulator.</LI>
+ </UL>
+ <H3 STYLE="margin-left:2ex;padding-bottom:0px;margin-bottom:0px">Phones and Devices</H3>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>Kandy: Mobile phone tool. For synchronizing the data on a mobile phone with the data on the desktop.</LI>
+ <LI>KMobile: Manage mobile devices.</LI>
+ <LI>KPalmDOC: PalmDOC converter.</LI>
+ <LI>KPilot: PalmOS handheld synchronizer.</LI>
+ </UL>
+<P CLASS="spacer">
+<HR>
+<P CLASS="spacer">
+<H2><A NAME="toys">Panel Applets and Software Toys</A></H2>
+ <UL STYLE="padding-top:5px;margin-top:0px">
+ <LI>AMOR: On-Screen creature ("Amusing Misuse Of Resources".)</LI>
+ <LI>KCPUload: CPU load display. A simple CPU meter that graphs a recent history of CPU usage in the system tray,supporting SMP and separate user/system loads.</LI>
+ <LI>KMoon: An applet that shows the current phase of the moon.</LI>
+ <LI>KNetstats: Network monitor. A simple KDE network monitor to show rx/tx LEDs of any network interface on a system tray icon.</LI>
+ <LI>KNewsTicker: An RSS news ticker applet for the panel.</LI>
+ <LI>Kodo: Mouse odometer.</LI>
+ <LI>Korn: A system tray applet that keeps track of new mail.</LI>
+ <LI>KTeaTime: Tea cooker timer.</LI>
+ <LI>KWeather: An applet to display the current weather data in any area.</LI>
+ <LI>Superkaramba: Interactive eye-candy tool. A tool to create interactive widgets on the desktop.</LI>
+ </UL>
+
+<?php
+ doFooter();
+?>
diff --git a/contributors.php b/contributors.php
new file mode 100644
index 0000000..c38478f
--- /dev/null
+++ b/contributors.php
@@ -0,0 +1,54 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("TDE Team", "Development", "TDE Team");
+?>
+
+ The Trinity Development Team would like to thank everyone listed below for their assistance. These individuals have freely offered their time and effort to make Trinity better. Without their support Trinity would not exist in its current form.
+ </p>
+ <p>
+ If we have forgotten to add your name to the list, please contact us via <a href="mailinglist.php">the trinity-devel mailing list</a>.
+ </p>
+
+<h3> Trinity Developers</h3>
+<table class="table" STYLE="border:1px solid #001c7b;">
+<tr STYLE="background-color:#cfe1f6"><td class="th">Name</td><td class="th">Contributing Area(s)</td></tr>
+<tr><td class="tmain">Timothy Pearson</td><td>Project administrator<br>Primary developer<br>Build farm administrator<br>Debian/Ubuntu packaging maintainer</td></tr>
+<tr><td class="tmain">Sl&aacute;vek Banko</td><td>SRU development, management, and builds</td></tr>
+<tr><td class="tmain">Francois Andriot</td><td>Redhat/Fedora packaging maintainer</td></tr>
+<tr><td class="tmain">"Woodsman"</td><td>Vanilla build testing and repair<br>Slackware build scripts maintainer<br>Documentation reviewer<br>Testing and quality assurance</td></tr>
+<tr><td class="tmain">Michele Calgaro</td><td>Developer<br>Documentation reviewer<br>Debian/testing and quality assurance</td></tr>
+</table>
+
+<h3>Content Distribution</h3>
+<table class="table" STYLE="border:1px solid #001c7b">
+<tr STYLE="background-color:#cfe1f6">
+ <td class="th">Name</td>
+ <td class="th">Contributing Area(s)</td>
+</tr>
+<tr><td>Mike Bird (Yosemite Network)</td><td><a href="http://tde-mirror.yosemite.net/trinity/">Mirror 1 [United States]</a><a href="rsync://tde-mirror.yosemite.net/trinity/"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+<tr><td><a href="http://www.mirrorservice.org/">UK Mirror Service</a></td><td><a href="http://www.mirrorservice.org/sites/trinitydesktop.org/trinity/">Mirror 2 [United Kingdom]</a><a href="rsync://rsync.mirrorservice.org/trinitydesktop.org/trinity/"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+<tr><td>Nathaniel Taylor</td><td><a href="http://mirror.ntmm.org/trinity/">Mirror 3 [Sweden]</a><a href="rsync://mirror.ntmm.org"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+<tr><td valign=top><a href=http://www.dotriver.eu/>DotRiver</a></td><td><a href="http://depot-trinity.dotriver.eu/">Mirror 4 [France]</a><br><a href=http://ftp.rezopole.net/tde/>Mirror 5 [France] <font color=red>[Last sync 1/20/2012]</font></a></td></tr>
+<tr><td>Ivan Ganchev</td><td><a href="http://bg1.mirror.trinitydesktop.org/trinity/">Mirror 6 [Bulgaria]</a></td></tr>
+<tr><td><a href="http://www.netlinux.org.uk/">NetLinux</a></td><td><a href="http://trinity.netlinux.org.uk/">Mirror 7 [United Kingdom] <font color=red>[Not syncing]</font></a></td></tr>
+<tr><td><a href="http://blogs.fau.de/ftp/">Friedrich-Alexander-Universit&auml;t Erlangen-N&uuml;rnberg</a></td><td><a href="http://ftp.fau.de/trinity/">Mirror 8 [Germany]</a><a href="rsync://ftp.fau.de/trinity/"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+</table>
+<p>
+<a href="/mirrorstatus.php">Active mirror list</a>
+
+
+<h3>Web Team</h3>
+<table class="table" STYLE="border:1px solid #001c7b;">
+<tr STYLE="background-color:#cfe1f6"><td class="th">Name</td><td class="th">Contributing Area(s)</td></tr>
+<tr><td class="tmain">E. Liddell</td><td>Design</td></tr>
+<tr><td class="tmain">Timothy Pearson</td><td>Maintenance</td></tr>
+</table>
+<p>
+
+<p>
+<a href="./past_contributors.php">Past Contributors</a><BR>Gone, but not forgotten...thank you for your previous support!
+<p>
+
+<?php
+ doFooter();
+?>
diff --git a/countdown.js b/countdown.js
new file mode 100644
index 0000000..6d37c6b
--- /dev/null
+++ b/countdown.js
@@ -0,0 +1,85 @@
+/*
+Author: Robert Hashemian
+http://www.hashemian.com/
+
+You can use this code in any manner so long as the author's
+name, Web address and this disclaimer is kept intact.
+********************************************************
+Usage Sample:
+
+<script language="JavaScript">
+TargetDate = "12/31/2020 5:00 AM";
+BackColor = "palegreen";
+ForeColor = "navy";
+CountActive = true;
+CountStepper = -1;
+LeadingZero = true;
+DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
+FinishMessage = "It is finally here!";
+</script>
+<script language="JavaScript" src="http://scripts.hashemian.com/js/countdown.js"></script>
+*/
+
+function calcage(secs, num1, num2) {
+ s = ((Math.floor(secs/num1))%num2).toString();
+ if (LeadingZero && s.length < 2)
+ s = "0" + s;
+ return "<b>" + s + "</b>";
+}
+
+function CountBack(secs) {
+ if (secs < 0) {
+ document.getElementById("cntdwn").innerHTML = FinishMessage;
+ return;
+ }
+ DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000));
+ DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24));
+ DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60));
+ DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60));
+
+ document.getElementById("cntdwn").innerHTML = DisplayStr;
+ if (CountActive)
+ setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod);
+}
+
+function putspan(backcolor, forecolor) {
+ document.write("<span id='cntdwn' style='background-color:" + backcolor +
+ "; color:" + forecolor + "'></span>");
+}
+
+if (typeof(BackColor)=="undefined")
+ BackColor = "white";
+if (typeof(ForeColor)=="undefined")
+ ForeColor= "black";
+if (typeof(TargetDate)=="undefined")
+ TargetDate = "12/31/2020 5:00 AM";
+if (typeof(DisplayFormat)=="undefined")
+ DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
+if (typeof(CountActive)=="undefined")
+ CountActive = true;
+if (typeof(FinishMessage)=="undefined")
+ FinishMessage = "";
+if (typeof(CountStepper)!="number")
+ CountStepper = -1;
+if (typeof(LeadingZero)=="undefined")
+ LeadingZero = true;
+
+
+CountStepper = Math.ceil(CountStepper);
+if (CountStepper == 0)
+ CountActive = false;
+var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
+putspan(BackColor, ForeColor);
+var dthen = new Date(TargetDate);
+var dnow = new Date();
+
+var d = new Date()
+var gmtHours = -d.getTimezoneOffset()/60;
+
+if(CountStepper>0)
+ ddiff = new Date(dnow-dthen);
+else
+ ddiff = new Date(dthen-dnow);
+gsecs = Math.floor(ddiff.valueOf()/1000);
+CountBack(gsecs+(gmtHours*60*60)-(7*60*60));
+
diff --git a/development.php b/development.php
new file mode 100644
index 0000000..e320b23
--- /dev/null
+++ b/development.php
@@ -0,0 +1,38 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Development", "Development", "_");
+?>
+<p> This page is a portal to the various resources used in the development of the Trinity Desktop Environment.</p>
+
+<h2/>Resources</h2>
+
+<h3>Repositories</h3>
+ <div>
+ <a href="https://git.trinitydesktop.org">Official GIT Repository</a> <br>
+ <a href="https://websvn.kde.org/branches/trinity/">Old official SVN on KDE.org</a> <br>
+ <a href="https://trinitydesktop.org/patches">Commit patches from GIT</a> <br>
+ <a href="https://wiki.trinitydesktop.org/Project_GIT_Information#Using_GIT">Obtaining the source code</a> <br>
+ </div>
+<h3>Web Pages and Documentation</h3>
+ <div>
+ <a href="https://wiki.trinitydesktop.org/Category:Developers">Developer's Area on the Wiki</a> <br>
+ <a href="https://wiki.trinitydesktop.org/Project_RoadMap">Project Roadmap</a> <br>
+ <a href="./apidocs.php">API Documentation</a> <br>
+ <a href="http://etherpad.trinitydesktop.org">Official Etherpad [a real-time collaboration tool]</a> <br>
+ </div>
+<h3>Other</h3>
+ <div>
+ <a href="https://quickbuild.pearsoncomputing.net/~trinity/+archive/trinity-nightly-builds/+packages?start=0&batch=300" title="Nightly Builds">Nightly Builds</a> <br>
+ <a href="https://quickbuild.pearsoncomputing.net/~trinity/+archive/ubuntu/trinity-nightly-builds/" title="Nightly Builds Landing Page">Nightly Builds Landing Page</a> <br>
+ <a href="https://wiki.trinitydesktop.org/Nightly_Builds" title="Nightly Builds Installation Instructions">Nightly Builds Installation Instructions</a> <br>
+ <a href="./mailinglist.php">Mailing Lists</a> <br>
+ </div>
+<h3>External Links</h3>
+ <div>
+ <a href="https://www.openhub.net/p/tde">Code Stats on OpenHub</a> <br>
+ </div>
+ </p>
+
+<?php
+ doFooter();
+?>
diff --git a/donate.php b/donate.php
new file mode 100644
index 0000000..24c7931
--- /dev/null
+++ b/donate.php
@@ -0,0 +1,41 @@
+<?php
+// (c) 2014 Timothy Pearson
+// All Rights Reserved
+
+include("tde-head-and-foot.php");
+doHeader("Support Trinity", "Development", "Donations");
+?>
+
+<h2>The Trinity project needs your support!</h2>
+ <p>
+ While Trinity is free software, making it is not free.<br>
+ Developing and maintaining Trinity takes an enormous amount of effort, and relies heavily on both a fast
+ Internet connection and large, power-hungry computers for the build farm and Web services.
+ </p>
+ <p>
+ If you can, please help to both assist the Trinity development team and pay for the various resources in
+ use by donating here:
+ </p>
+ <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+ <fieldset>
+ <legend>Via PayPal</legend>
+ <input type="hidden" name="cmd" value="_s-xclick">
+ <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHZwYJKoZIhvcNAQcEoIIHWDCCB1QCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYCTKb66odRRwMSvPfb9/4LpsstiWp69EvO9wpr+7M6vPxEoSl2HFaS1P8NGjnIDV8JSARsoi5NtQEjO//B2rX5jQ/34fcycM+mBrjwWIHbdsjmZ100Mg9GYm4ojuxoFFXIwEfPvlunqvsEU32WF+xSw9EDyKHJucl5XBML3CMtLYTELMAkGBSsOAwIaBQAwgeQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIFaBWKWggAhSAgcC0/99YWzE6NCokaCtGwr8ylkCMq3QCvA+bGGcRqTXDtf0mL7wPMhx0OXepaKcJ9DdwGMsghSzMU5GTmHBqV4h9q2ClC1hlAO7NhsyT+BOOT1FXNVWmnSZetII1unv5OWAuhCw85x3eZd8OFFS+sa4vCCSG/nG7SCzTSmG5mo12+ZriMOtj7isWXSuZotvjl+Rgqir8GzIq3r50NVVz0FtpvLphyd1E3KKkO1Ga7LK9NeDK/hoOMPdb8ahS4Q0Wq4KgggOHMIIDgzCCAuygAwIBAgIBADANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wHhcNMDQwMjEzMTAxMzE1WhcNMzUwMjEzMTAxMzE1WjCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMFHTt38RMxLXJyO2SmS+Ndl72T7oKJ4u4uw+6awntALWh03PewmIJuzbALScsTS4sZoS1fKciBGoh11gIfHzylvkdNe/hJl66/RGqrj5rFb08sAABNTzDTiqqNpJeBsYs/c2aiGozptX2RlnBktH+SUNpAajW724Nv2Wvhif6sFAgMBAAGjge4wgeswHQYDVR0OBBYEFJaffLvGbxe9WT9S1wob7BDWZJRrMIG7BgNVHSMEgbMwgbCAFJaffLvGbxe9WT9S1wob7BDWZJRroYGUpIGRMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIFfOlaagFrl71+jq6OKidbWFSE+Q4FqROvdgIONth+8kSK//Y/4ihuE4Ymvzn5ceE3S/iBSQQMjyvb+s2TWbQYDwcp129OPIbD9epdr4tJOUNiSojw7BHwYRiPh58S1xGlFgHFXwrEBb3dgNbMUa+u4qectsMAXpVHnD9wIyfmHMYIBmjCCAZYCAQEwgZQwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wOTAzMTAwMjM5MzdaMCMGCSqGSIb3DQEJBDEWBBT34YB2MoAdJ39YY8IZkDauLQpH6zANBgkqhkiG9w0BAQEFAASBgK+4+dqVH8O9/V1tOdwp6oo3KQRUV11dqBydeOsaRwTnbzhXB8K9yZJHmTI8mAd//qFwTR5YYaefGBa2uWcl13QfJ//QkzVwCxasLsWM2O4UsEQQ5LrZ0JKdkkjIilxXAr6p7scMLRnv9qgdKBd1rkXjRT7bP26IBjQTJI/Hh9m3-----END PKCS7-----">
+ <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" name="submit" alt="PayPal - The safer, easier way to pay online!">
+ </fieldset>
+ </form>
+ <p>
+ <fieldset>
+ <legend>Via BitCoin</legend>
+ <a href="bitcoin:1H1RMzujpGC9wZPSjZ6hWqz4BxQ5dzhHti?amount=0.05&amp;label=Trinity%20Desktop%20Environment%20Donation">Donate 50mBTC to TDE!</a><BR>
+ <B>Pay to:</B> 1H1RMzujpGC9wZPSjZ6hWqz4BxQ5dzhHti<BR>
+ <B>Suggestion:</B> 0.05 BTC<BR>
+ <B>Message:</B> Trinity Desktop Environment Donation
+ </fieldset>
+ <p>
+ Every little bit helps and is much appreciated!
+ </p>
+
+<?php
+ doFooter();
+?>
diff --git a/faq.php b/faq.php
new file mode 100644
index 0000000..bb4ea79
--- /dev/null
+++ b/faq.php
@@ -0,0 +1,50 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Frequently Asked Questions", "Documentation", "FAQ");
+?>
+
+<H2>General Questions</H2>
+<P><B>1. Why another desktop environment?</B>
+<P>We wanted a traditional-style menu-panel-taskbar-quicklaunch desktop with a full set of features.
+For the past few years, KDE and the other major Linux desktop environments have been experimenting
+with new interface paradigms. There's nothing wrong with basing a DE around a new and innovative idea,
+but not everyone is going to be happy with it, just as not everyone likes the sort of traditional
+interface Trinity offers.
+
+<P><B>2. Doesn't XFCE4 fill the same niche as Trinity? What about Mat&eacute;?</B>
+<P>XFCE4 is a lighter desktop than Trinity, meaning that it contains less code and likely requires
+less hardware, but also offers fewer features. Mat&eacute; is probably playing in much the same
+space as we are, but a lot of us tried it when it was still Gnome 2 and decided we liked Trinity's
+ancestor better.
+
+<P><B>3. Isn't Trinity just KDE 3.5.10 with a few cosmetic changes?</B>
+<P>Trinity has several features that KDE 3 didn't have, such as
+<a href="http://en.wikipedia.org/wiki/Secure_attention_key">Secure Attention Key</a> support and
+<a href="http://en.wikipedia.org/wiki/International_Color_Consortium">ICC (International Color Consortium)</a>
+color profile support. It's also been updated to work without requiring obsolete libraries like HAL, and
+is available for more distributions (at the time of writing, KDE3 was no longer available for any major Linux
+distribution except OpenSUSE and Gentoo).
+
+<P><B>4. What's your relationship with KDE e.V. (the legal entity behind KDE)?</B>
+<P>We don't have one. Really. We do our best not to interfere with their trademarks, and in
+return they mostly pretend that we don't exist.
+
+<P><B>5. Should I report Trinity bugs to the KDE bug tracker?</B>
+<P>Please don't. We have our own bug tracker at http://bugs.trinitydesktop.org/ .
+Sending our bugs to them will just annoy them, and it won't get your bug fixed.
+
+<HR>
+
+<H2>Getting and Installing Trinity</H2>
+
+<HR>
+
+<H2>The Control Panel, Desktop, and System Tray</H2>
+
+<HR>
+
+<H2>Konqueror: File Manager and More</H2>
+
+<?php
+ doFooter();
+?>
diff --git a/faq/about.php b/faq/about.php
new file mode 100644
index 0000000..3dea9f5
--- /dev/null
+++ b/faq/about.php
@@ -0,0 +1,40 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("About this FAQ", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="index.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="introduction.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="about"></a>Chapter 1. About this FAQ</h2>
+<p class="qandaset"><dl><dt>1.1. <a href="about.php#idm140487999021808">What can I do to help with this FAQ?</a></dt><dt>1.2. <a href="about.php#idm140487998993760">How do I become an FAQ maintainer?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487999021808"></a><a name="idm140487999021488"></a><b>1.1.</b></td><td align="left" valign="top"><p>What can I do to help with this FAQ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Notify us about any errors you find. Suggestions you have are
+
+appreciated. Send us everything that you think is unclear. When possible send us what
+
+you think would be a clearer solution.</p><p>Send us your solutions of those frequently-asked
+
+questions which are still not in this FAQ. We will
+
+add them as soon as practical.</p><p>Please make full use of this FAQ.
+
+Read this FAQ (and other
+
+relevant documentation) well before asking questions on the various
+
+TDE mailing lists or newsgroups.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998993760"></a><a name="FAQ-maintainer-HOWTO"></a><b>1.2.</b></td><td align="left" valign="top"><p>How do I become an FAQ maintainer?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Becoming an FAQ maintainer is easy
+
+and we are always grateful for help. :-) Send
+
+us an email at <code class="email">&lt;<a href="mailto:trinity-devel@lists.pearsoncomputing.net">trinity-devel@lists.pearsoncomputing.net</a>&gt;</code>.
+
+</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="index.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="introduction.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">TDE Frequently Asked Questions</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Introduction</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/applications.php b/faq/applications.php
new file mode 100644
index 0000000..16e51a3
--- /dev/null
+++ b/faq/applications.php
@@ -0,0 +1,148 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("TDE applications", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="configure.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="sound.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="applications"></a>Chapter 11. TDE applications</h2>
+<p class="qandaset"><dl><dt>11.1. <a href="applications.php#idm140487997619920">KPPP</a></dt><dt>11.2. <a href="applications.php#idm140487997539488">Konsole</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997619920"></a><a name="idm140487997619600"></a><b>11.1.</b></td><td align="left" valign="top"><p>KPPP</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Many TDE users report problems using KPPP. Make sure you have already checked the
+
+following:</p>
+<p class="itemizedlist"><ul type="disc"><li><p>Can you dialup to your ISP without using KPPP? If you cannot, then perhaps KPPP is not the culprit after
+
+all.</p></li><li><p>Have you gone through the KPPP documentation
+
+and followed the instructions and troubleshooting
+
+suggestions?</p></li></ul><p>The KPPP handbook is available through the
+
+TDE Help Center.</p><p>If you still encounter problems, then the following might help:</p>
+<p class="variablelist"><dl><dt><I>How do I change the MTU setting in KPPP?</I></dt><dd><p>Open up the KPPP dialog box and select
+
+Setup. Choose an existing account and click
+
+Edit, or New to create a
+
+new dialup account. Select the Dial tab and
+
+click Arguments. Type what you want to change
+
+in the Argument textbox (e.g. <strong class="userinput"><code>mtu 296</code></strong>) and
+
+click Add. When you are satisfied, click
+
+Close.</p><p>To check whether the options took, do one of the following:</p>
+<p class="itemizedlist"><ul type="disc"><li><p>In a terminal window, run
+
+<strong class="userinput"><code><strong class="command">/sbin/ifconfig</strong> ppp0</code></strong> and look
+
+at the reported MTU in the output. It should match your
+
+request.</p></li><li><p>Add <code class="option">debug</code> and <code class="option">kdebug</code>
+
+(each on a separate line) to your
+
+<code class="filename">/etc/ppp/options</code> file and restart your
+
+PPP session. You will find debugging messages in
+
+<code class="filename">/var/log/messages</code>, including MRU and MTU
+
+settings.</p></li></ul><p>If you want, the MRU and MTU settings can be added to the
+
+<code class="filename">options</code> file, one complete setting per line, no
+
+quotes or dashes.</p></dd><dt><I>KPPP connects at a slower speed than
+
+normal.</I></dt><dd><p>The following might do the trick:</p>
+<p class="itemizedlist"><ul type="disc"><li><p>Try executing <strong class="command">setserial
+
+spd_hi</strong>.</p></li><li><p>The default MTU value is 1500,
+
+which maybe too large
+
+for a dialup connection. Try changing it to a smaller value like
+
+<strong class="userinput"><code>296</code></strong>
+
+or <strong class="userinput"><code>576</code></strong>.</p></li><li><p>Check in your <code class="filename">$<code class="envar">HOME</code>/.trinity/share/config</code> for the
+
+<code class="filename">kppprc</code>. Ensure the correct modem speed is
+
+actually defined there.</p></li></ul></dd></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997539488"></a><a name="idm140487997539168"></a><b>11.2.</b></td><td align="left" valign="top"><p>Konsole</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top">
+<p class="variablelist"><dl><dt><I>How do I page-up or page-down?</I></dt><dd><p>Use <strong class="keycap">Shift</strong>+<strong class="keycap">Page Up</strong>
+
+and <strong class="keycap">Shift</strong>+<strong class="keycap">Pg
+
+Dn</strong>.
+
+</p></dd><dt><I>How do I copy text from Konsole to
+
+anything else?</I></dt><dd><p>Use the mouse to select the desired text. From the
+
+Edit menu, select Copy, or press
+
+<strong class="keycap">Ctrl</strong>+<strong class="keycap">Shift</strong>+<strong class="keycap">C</strong>. This places
+
+the text in the TDE clipboard, Klipper. Next select
+
+the target application, place the mouse pointer to the
+
+desired location and press <strong class="keycap">Ctrl</strong>+<strong class="keycap">V</strong>.
+
+Alternately, highlight the text by dragging with the left mouse button down and
+
+paste by clicking with the middle mouse button (or both buttons if you are using a
+
+2 button mouse with 3 button emulation).
+
+</p>
+<p class="note" ><h3 class="title">Note</h3><p>Note that the copying and pasting keyboard shortcuts use the
+
+<strong class="keycap"><strong class="keycap">Shift</strong></strong> key. That is because in traditional Unix terminals,
+
+<strong class="keycap">Ctrl</strong>+<strong class="keycap">C</strong> is used to break or stop
+
+a process from running.</p></dd><dt><I>Why can't Konsole find the 9x15 and the 2
+
+console bitmap fonts installed with TDE?</I></dt><dd><p>FontConfig must find the three fonts
+
+installed in: <code class="filename">$<code class="envar">TDEDIR</code>/share/fonts</code>.
+
+ If
+
+the TDE install does not install these fonts in a directory that
+
+already exists (e.g. <code class="filename">/usr/share/fonts</code>) then you must add this
+
+directory to the configuration file <code class="filename">/etc/fonts/local.conf</code>. This should be
+
+the first line after &lt;fontconfig&gt;. For example:
+
+<pre class="programlisting">
+
+&lt;fontconfig&gt;
+
+&lt;dir&gt;/usr/trinity/share/fonts&lt;/dir&gt;
+
+&lt;/fontconfig&gt;
+
+</pre>
+
+After adding the directory, run (as root):
+
+<strong class="userinput"><code><strong class="command">fc-cache</strong> -v</code></strong> and check that
+
+it found the directory.</p></dd></dl></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="configure.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="sound.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Configuring TDE</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Troubleshooting sound problems</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/configure.php b/faq/configure.php
new file mode 100644
index 0000000..b1b0328
--- /dev/null
+++ b/faq/configure.php
@@ -0,0 +1,236 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Configuring TDE", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="webbrowser.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="applications.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="configure"></a>Chapter 10. Configuring TDE</h2>
+<p class="qandaset"><dl><dt>10.1. <a href="configure.php#idm140487997863808">How do I set the language used by TDE?</a></dt><dt>10.2. <a href="configure.php#idm140487997805632">Is there any keyboard switcher for international keyboards for
+
+TDE?</a></dt><dt>10.3. <a href="configure.php#idm140487997800880">How do I replace the standard text login screen with the
+
+TDE login screen?</a></dt><dt>10.4. <a href="configure.php#idm140487997780528">I would like to click the left mouse button anywhere on the
+
+desktop and have the TDE menu displayed.</a></dt><dt>10.5. <a href="configure.php#idm140487997774000">Where do I find additional TDE themes?</a></dt><dt>10.6. <a href="configure.php#idm140487997770320">How do I change MIME Types?</a></dt><dt>10.7. <a href="configure.php#idm140487997760704">TDE (TDM) does not read my .bash_profile.</a></dt><dt>10.8. <a href="configure.php#idm140487997751552">How do I use TrueType fonts in TDE?</a></dt><dt>10.9. <a href="configure.php#idm140487997740752">Is it possible to enter, show, and work with the Euro Symbol in
+
+TDE?</a></dt><dt>10.10. <a href="configure.php#idm140487997734752">How do I run a program at TDE startup?</a></dt><dt>10.11. <a href="configure.php#idm140487997714400">How can I allow more than one user to be logged in a at a time? Can TDE do fast user switching?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997863808"></a><a name="idm140487997863488"></a><b>10.1.</b></td><td align="left" valign="top"><p>How do I set the language used by TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>First ensure the appropriate tde-i18n language package is installed.</p><p>Thereafter there are two ways to set the language TDE uses in the
+
+messages it will display:</p>
+<p class="variablelist"><dl><dt>Using the TDE Control Center</dt><dd><p>Open the TDE Control Center and select
+
+Regional &amp; Accessibility then
+
+Country/Region &amp; Language. You can select your language and location
+
+here. If TDE cannot find a translation in the first language
+
+chosen, it will fall back on the default language. This is usually
+
+(American) English by default.</p>
+<p class="note" ><h3 class="title">Note</h3><p>Using the TDE Control Center is the preferred way of choosing
+
+languages in TDE.</p></dd><dt>Using the <code class="envar">LANG</code> environment variable</dt><dd><p>The second method uses the standard locale setting on
+
+your system. To change the language, simply set the environment
+
+variable <code class="envar">LANG</code> accordingly. For example, if your shell
+
+is bash, execute
+
+<strong class="userinput"><code><strong class="command">export</strong> <code class="envar">LANG</code>=de</code></strong>
+
+to set German as the language used.</p></dd></dl></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997805632"></a><a name="idm140487997805312"></a><b>10.2.</b></td><td align="left" valign="top"><p>Is there any keyboard switcher for international keyboards for
+
+TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+Yes, configure the switcher using the TDE Control Center
+
+Regional &amp; Accessibility-&gt;
+
+Keyboard Layout configuration page.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997800880"></a><a name="idm140487997800560"></a><b>10.3.</b></td><td align="left" valign="top"><p>How do I replace the standard text login screen with the
+
+TDE login screen?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top">
+<p class="note" ><h3 class="title">Note</h3><p>Your Unix-like distribution might have its own setup tools to
+
+change this (e.g. YaST on SuSE Linux). This will
+
+be the safest way to enable the TDE login screen. However, if for some reason
+
+you do not wish to use these tools, the following instructions might be useful.</p><p>First, ychange to the xdm runlevel (runlevel 5 on
+
+Red Hat and SuSE systems) by editing your
+
+<code class="filename">/etc/inittab</code> file. In the file, there should be
+
+a line saying <strong class="userinput"><code>id:3:initdefault:</code></strong>. Change it to
+
+<strong class="userinput"><code>id:5:initdefault:</code></strong>. At the end of the file,
+
+comment out the following line:
+
+<code class="literal">x:5:respawn:/usr/bin/X11/xdm -nodaemon</code> and
+
+replace it with
+
+<strong class="userinput"><code>x:5:respawn:<em class="replaceable"><code>/opt/trinity/</code></em>bin/tdm
+
+-nodaemon</code></strong>.
+
+
+<p class="note" ><h3 class="title">Note</h3><p>The location of TDM might differ on your
+
+system.</p></p><p>For changes to take effect immediately, type <strong class="command">init
+
+5</strong> (for Red Hat systems) at the shell prompt.
+
+
+<p class="caution" ><h3 class="title">Caution</h3><p>It is risky to initiate a graphical login without
+
+checking beforehand whether it works. If it fails to work, you would
+
+be in for a hard time getting back.</p></p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+For FreeBSD, you should edit the file <code class="filename">/etc/ttys</code>
+
+and change one of the lines that look like
+
+<pre class="programlisting">ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure</pre>
+
+to instead say <strong class="userinput"><code>ttyv8 "/usr/local/bin/tdm -nodaemon" xterm
+
+off secure</code></strong>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997780528"></a><a name="idm140487997780208"></a><b>10.4.</b></td><td align="left" valign="top"><p>I would like to click the left mouse button anywhere on the
+
+desktop and have the TDE menu displayed.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Use the right mouse button to select the desktop. From the popup menu, select
+
+Configure Desktop. From the icon list
+
+select the Behavior icon. Choose the behavior of mouse clicks on the desktop. To have
+
+the TDE menu open from a single left mouse button click, change
+
+the entry labeled Left button to say
+
+Application Menu.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997774000"></a><a name="idm140487997773680"></a><b>10.5.</b></td><td align="left" valign="top"><p>Where do I find additional TDE themes?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Go to <a href="http://www.kde-look.org" target="_top">http://www.kde-look.org</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997770320"></a><a name="idm140487997770000"></a><b>10.6.</b></td><td align="left" valign="top"><p>How do I change MIME Types?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>When using Konqueror, open a Konqueror window and choose
+
+Settings-&gt;Configure
+
+Konqueror. From the icon list select
+
+File Associations. Find the mime type you want to change
+
+(e.g. <code class="literal">text/english</code> or
+
+<code class="literal">image/gif</code>), and set the application preference order
+
+to whatever you want.</p><p>The same thing can be accomplished by using the TDE Control Center
+
+. Select TDE Components-&gt;File Associations.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997760704"></a><a name="idm140487997760384"></a><b>10.7.</b></td><td align="left" valign="top"><p>TDE (TDM) does not read my <code class="filename">.bash_profile</code>.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The login managersxdm and TDM do
+
+not run a login shell, so <code class="filename">.profile</code>,
+
+<code class="filename">.bash_profile</code>, etc. are not
+
+sourced. When the user logs in, xdm runs
+
+<strong class="command">Xstartup</strong> as root and then
+
+<strong class="command">Xsession</strong> as user. The normal practice is to add
+
+statements in <code class="filename">Xsession</code> to source the user
+
+profile. Please edit your <code class="filename">Xsession</code> and
+
+<code class="filename">.xsession</code> files.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997751552"></a><a name="idm140487997751232"></a><b>10.8.</b></td><td align="left" valign="top"><p>How do I use TrueType fonts in TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Install TrueType font support into your X Window System configuration.
+
+
+
+</p><p>If you have a bunch of TrueType fonts from Microsoft
+
+Windows, edit the <code class="filename">xorg.conf</code> file to get the
+
+fonts from the font folder. Then configure TDE to use these new
+
+fonts with the <code class="filename">Font Administrator</code> utility.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997740752"></a><a name="idm140487997740432"></a><b>10.9.</b></td><td align="left" valign="top"><p>Is it possible to enter, show, and work with the Euro Symbol in
+
+TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes. Open the TDE Control Center and select
+
+Regional &amp; Accessibility, then
+
+Keyboard Layout. Select the Xkb Options
+
+tab and enable the Enable xkb options check box. Choose a compose key.
+
+Enable Adding Eurosign to certain keys and select the desired key.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997734752"></a><a name="idm140487997734496"></a><b>10.10.</b></td><td align="left" valign="top"><p>How do I run a program at TDE startup?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There are several ways to do that. If you want to
+
+run some scripts that set environment variables (for
+
+example, to start <strong class="command">gpg-agent</strong>, <strong class="command">ssh-agent</strong> and others), place the
+
+scripts into <code class="filename">$<code class="envar">TDEHOME</code>/env/</code>. Make sure their names end in
+
+<code class="literal">.sh</code>. $<code class="envar">TDEHOME</code> is
+
+usually a folder named <code class="filename">.trinity</code>
+
+(notice the period at the beginning) in your home
+
+folder. If you want scripts to be executed for all TDE users, you can
+
+put them under <code class="filename">$<code class="envar">TDEDIR</code>/env/</code>, where $<code class="envar">TDEDIR</code> is the prefix TDE is installed (you can find this out using the command
+
+<strong class="userinput"><code><strong class="command">tde-config --prefix</strong></code></strong>).</p><p>If you wish to start a program after TDE has started, you may want to use the
+
+<code class="filename">Autostart</code> folder. To add
+
+entries to the <code class="filename">Autostart</code> folder:
+
+
+<p class="orderedlist"><ol type="1"><li><p>Open Konqueror.</p></li><li><p>Select Go-&gt;Autostart from the menubar.</p></li><li><p>Right-click in the window view area and select Create New-&gt;File-&gt;Link to
+
+Application</p></li><li><p>Click on the Application tab in
+
+the window that appears and enter the name of the command to run in
+
+the Command text box.</p></li></ol>
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997714400"></a><a name="idm140487997714080"></a><b>10.11.</b></td><td align="left" valign="top"><p>How can I allow more than one user to be logged in a at a time? Can TDE do fast user switching?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes, when starting TDE through the graphical login mode. When starting TDE
+
+from the command line using <code class="filename">startx</code>, then toggle to a different console
+
+to login in.</p><p>To enable more than one user to log in at one time on the same
+
+computer (sometimes referred to as fast user switching)
+
+configure the program that logs you in to allow more than one
+
+session (or, in X Window System terms, display) at a time.</p><p>In TDE, this program is called TDM which stands for TDE
+
+Display Manager. If you are not using TDM as your login screen
+
+then you will need to consult the documentation for the software you are using on how to
+
+accomplish multiple sessions.</p><p>By default, this will be configured at installation time automatically
+
+if TDM supports virtual terminals on your system (currently Linux only).
+
+If it was not configured automatically, consult the TDM manual, section
+
+"Specifying permanent X-Servers".
+
+After modifying tdmrc, you will have to restart TDM; just
+
+invoke <strong class="command">killall -HUP tdm</strong>.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="webbrowser.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="applications.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Webbrowsing with Konqueror</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">TDE applications</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/contribute.php b/faq/contribute.php
new file mode 100644
index 0000000..0a0ed47
--- /dev/null
+++ b/faq/contribute.php
@@ -0,0 +1,128 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Contributing", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="questions.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="credits.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="contribute"></a>Chapter 19. Contributing</h2>
+<p class="qandaset"><dl><dt>19.1. <a href="contribute.php#idm140487996923568">How can I contribute to TDE?</a></dt><dt>19.2. <a href="contribute.php#idm140487996832816">How do I submit a bug report?</a></dt><dt>19.3. <a href="contribute.php#idm140487996827392">May I join the development team?</a></dt><dt>19.4. <a href="contribute.php#idm140487996824032">I want to program for TDE. What should I do first?</a></dt><dt>19.5. <a href="contribute.php#idm140487996808128">How do I get access to TDE GIT?</a></dt><dt>19.6. <a href="contribute.php#idm140487996801168">Can I have read-only access to the GIT repository?</a></dt><dt>19.7. <a href="contribute.php#idm140487996796880">Are there any GIT mirror sites for TDE?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487996923568"></a><a name="idm140487996923248"></a><b>19.1.</b></td><td align="left" valign="top"><p>How can I contribute to TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE is a free/libre software project that lives from voluntary
+
+contributions. Everybody is encouraged to contribute to TDE. Not
+
+only programmers are welcome. There are many ways in which you can
+
+help to improve TDE:</p>
+<p class="itemizedlist"><ul type="disc"><li><p>Test the software.</p></li><li><p>Send in bug reports. For more information,
+
+refer to <a href="contribute.php#bug-report">How do I submit a bug
+
+report?</a>.</p></li><li><p>Write or edit documentation and help files.</p></li><li><p>Translate programs, documentation, and help files.
+
+</p></li><li><p>Draw icons, wallpaper, or compose sound effects.</p></li><li><p>Write articles and books about TDE. If you want to
+
+help spread the word about TDE, send an email to
+
+<code class="email">&lt;<a href="mailto:trinity-devel@lists.pearsoncomputing.net">trinity-devel@lists.pearsoncomputing.net</a>&gt;</code>. This will get you in touch
+
+with the TDE developers and packagers.</p></li><li><p>Program new TDE applications. Please refer to <a href="contribute.php#programming">Q:19.4</a> for more information.</p></li><li><p> Of course, sponsors are also
+
+welcome. :-)</p></li></ul><p>There are several places to look for more information if you
+
+want to get involved in the development. The first step is to
+
+subscribe to some of the <a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">mailing
+
+lists</a>. You will soon see something
+
+that can be improved or added.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996832816"></a><a name="bug-report"></a><b>19.2.</b></td><td align="left" valign="top"><p>How do I submit a bug report?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There is a bug tracking system available at <a href="http://bugs.pearsoncomputing.net/" target="_top">http://bugs.pearsoncomputing.net/</a>
+
+and thanks for helping! The system features several query types and a
+
+list of all known bugs.</p><p>The easiest way to submit a bug is to select
+
+Help-&gt;Report
+
+Bug/Request Enhancement... from the menu bar of the application
+
+with the bug. This will open a dialog box with a link
+
+to the bug tracking system. Please follow the
+
+instructions of the bug reporting wizard.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996827392"></a><a name="idm140487996827072"></a><b>19.3.</b></td><td align="left" valign="top"><p>May I join the development team?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Please! Join our discussion list at
+
+<a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">
+
+http://www.trinitydesktop.org/mailinglist.php</a>. Join
+
+Internet Relay Chat (IRC) sessions at chat.freenode.net, channel: #trinity-desktop</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996824032"></a><a name="programming"></a><b>19.4.</b></td><td align="left" valign="top"><p>I want to program for TDE. What should I do first?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Everybody is encouraged to develop software for TDE. What you
+
+should do first depends strongly on your experience, e.g. whether you have
+
+already learned C++ or have experience with the Qt toolkit and so
+
+on.</p><p>To get into TDE programming, you will need some basic tools:
+
+automake,
+
+autoconf, and
+
+cmake.</p><p>An excellent resource for learning TDE
+
+programming is the Qt tutorials. These are installed along with Qt. To view them,
+
+open <code class="filename">$<code class="envar">QTDIR</code>/doc/html/index.php</code> in
+
+Konqueror and bookmark the locatio. The tutorials
+
+can be found under "Using Qt". The source code for each lesson can be found in the <code class="filename">$<code class="envar">QTDIR</code>/tutorial</code>
+
+directory.</p><p>There is one thing everybody interested in
+
+programming for TDE should do: please <em>subscribe to the developers
+
+mailing list</em>. To subscribe, you have to send an email to
+
+<a href="mailto:trinity-devel-subscribe@lists.pearsoncomputing.net" target="_top">trinity-devel-subscribe@lists.pearsoncomputing.net</a>
+
+with an empty email.
+
+
+<p class="important" ><h3 class="title">Important</h3><p>Please read<a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">
+
+http://www.trinitydesktop.org/mailinglist.php</a>. Everything
+
+written there applies to the development list as well.</p></p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996808128"></a><a name="idm140487996807808"></a><b>19.5.</b></td><td align="left" valign="top"><p>How do I get access to TDE GIT?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The TDE project uses GIT to develop the
+
+core parts of the software. Usually, when you have changed one of the
+
+parts (e.g. fixed a bug), and you want to commit this change, the best
+
+way is to create a patch against a current snapshot and send this
+
+patch to the developer/maintainer of the respective program.</p><p>If you are doing this more or less regularly, then contact the developers
+
+to obtain write access to the GIT repository:
+
+<a href="trinity-devel@lists.pearsoncomputing.net" target="_top">
+
+trinity-devel@lists.pearsoncomputing.net</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996801168"></a><a name="idm140487996800848"></a><b>19.6.</b></td><td align="left" valign="top"><p>Can I have read-only access to the GIT repository?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes. Instructions on how to get anonymous, read-only GIT
+
+access are here: <a href="http://www.trinitydesktop.org/wiki/bin/view/Developers/GIT" target="_top">
+
+http://www.trinitydesktop.org/wiki/bin/view/Developers/GIT</a>
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996796880"></a><a name="idm140487996796560"></a><b>19.7.</b></td><td align="left" valign="top"><p>Are there any GIT mirror sites for TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>No, currently there are no anonymous GIT mirror sites for TDE.
+
+</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="questions.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="credits.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Asking Questions</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Credits and License</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/credits.php b/faq/credits.php
new file mode 100644
index 0000000..8a29327
--- /dev/null
+++ b/faq/credits.php
@@ -0,0 +1,29 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Credits and License", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="contribute.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ </td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="credits"></a>Chapter 20. Credits and License</h2><p>Many of the answers in this FAQ are taken
+
+from various mailing lists and newsgroups. Here is a
+
+<em>big</em> thank you to all of you who have contributed
+
+answers that eventually appear in this FAQ.</p><p>Special thanks go to the former FAQ
+
+maintainers, Rainer Endres, Mr. Lee Wee Tiong, and J. Hall.</p><p><a name="gnu-fdl"></a>This documentation is licensed under the terms of the <a href="http://www.gnu.org/licenses/old-licenses/fdl-1.2.html" target="_top">GNU Free Documentation
+
+License</a>.</p><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="contribute.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"></td></tr><tr><td width="33%" align="left" class="navLeft">Contributing</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight"></td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/desktop.php b/faq/desktop.php
new file mode 100644
index 0000000..0a1499e
--- /dev/null
+++ b/faq/desktop.php
@@ -0,0 +1,56 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("The desktop", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="panel.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="windowmanager.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="desktop"></a>Chapter 6. The desktop</h2>
+<p class="qandaset"><dl><dt>6.1. <a href="desktop.php#idm140487998355456">How do I add an application to the desktop?</a></dt><dt>6.2. <a href="desktop.php#idm140487998307136">How do I mount/unmount a device from the desktop?</a></dt><dt>6.3. <a href="desktop.php#idm140487998300816">Where are the icons kept?</a></dt><dt>6.4. <a href="desktop.php#idm140487998295328">How do I launch applications in a particular desktop?</a></dt><dt>6.5. <a href="desktop.php#idm140487998286720">Where do I save my files if I want them to appear directly on
+
+the desktop?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487998355456"></a><a name="idm140487998355136"></a><b>6.1.</b></td><td align="left" valign="top"><p>How do I add an application to the desktop?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Just choose the desired application from the TDE menu and drag and drop it to the Desktop.
+
+</p><p>For applications not listed in the TDE menu,
+
+use the right mouse button on the desktop and choose Create New-&gt;File-&gt;Link to Application... and fill in the configuration for the application you want to link to.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998307136"></a><a name="idm140487998306816"></a><b>6.2.</b></td><td align="left" valign="top"><p>How do I mount/unmount a device from the desktop?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>First, make sure you are allowed to <strong class="command">mount</strong>/<strong class="command">umount</strong> the relevant device as a user.
+
+</p><p>Then you can add any device via right mouse button on the desktop and then choosing Create New-&gt;Link to Device and then selecting the device of the type you wish to control from the desktop. Fill in the settings for the device in the dialog that appears and click OK. You can use the resulting desktop icon to mount/unmount the device from the desktop.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998300816"></a><a name="idm140487998300496"></a><b>6.3.</b></td><td align="left" valign="top"><p>Where are the icons kept?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The icons can be found only in <code class="filename">$<code class="envar">TDEDIRS</code>/share/icons</code> or <code class="filename">$<code class="envar">HOME</code>/.trinity/share/icons</code>. To use icons
+
+stored in other locations, you must either copy them into one of the
+
+above-mentioned fixed TDE locations or make symlinks.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998295328"></a><a name="idm140487998295008"></a><b>6.4.</b></td><td align="left" valign="top"><p>How do I launch applications in a particular desktop?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE comes with a program called kstart.
+
+To start an xterm on the second desktop and then activate it use:
+
+
+
+<strong class="userinput"><code><strong class="command">kstart</strong> <code class="option">--desktop
+
+2 --activate --window "xterm" </code>xterm</code></strong>.</p><p>Note that the <code class="option">--window</code> option is important. It takes an
+
+argument which is a regular expression matching the title of the window to
+
+apply the settings to.</p><p>Please read <strong class="command">kstart</strong> <code class="option">--help-all</code> for more magic
+
+available with kstart (and there is an abundance).
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998286720"></a><a name="idm140487998286400"></a><b>6.5.</b></td><td align="left" valign="top"><p>Where do I save my files if I want them to appear directly on
+
+the desktop?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p><code class="filename">$<code class="envar">HOME</code>/Desktop</code>. You might
+
+need to refresh your desktop after you have saved your files.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="panel.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="windowmanager.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">The panel</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">The window manager</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/filemanager.php b/faq/filemanager.php
new file mode 100644
index 0000000..5c17bcd
--- /dev/null
+++ b/faq/filemanager.php
@@ -0,0 +1,213 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("The File Manager", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="windowmanager.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="webbrowser.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="filemanager"></a>Chapter 8. The File Manager</h2><p>The default file manager in TDE is Konqueror. Please refer to
+
+the Konqueror Handbook for detailed information.</p>
+<p class="qandaset"><dl><dt>8.1. <a href="filemanager.php#idm140487998198336">How can I change the appearance of a folder in
+
+Konqueror?</a></dt><dt>8.2. <a href="filemanager.php#idm140487998151568">How can I do non-anonymous FTP transfers with Konqueror?</a></dt><dt>8.3. <a href="filemanager.php#idm140487998143952">How do I specify the startup folder for Konqueror?</a></dt><dt>8.4. <a href="filemanager.php#idm140487998134960">How do I rename files?</a></dt><dt>8.5. <a href="filemanager.php#idm140487998131888">Where did the delete entry from my right-click context menu go?</a></dt><dt>8.6. <a href="filemanager.php#idm140487998127952">How do I configure the programs that Konqueror uses to
+
+open different types of files?</a></dt><dt>8.7. <a href="filemanager.php#idm140487998118352">When I try to click on a folder in Konqueror, I get the
+
+message: There appears to be a configuration error. You have
+
+associated Konqueror with inode/directory, but it cannot handle this file
+
+type.</a></dt><dt>8.8. <a href="filemanager.php#idm140487998109904">What are %i and
+
+%m parameters in a file's Properties Command line?</a></dt><dt>8.9. <a href="filemanager.php#idm140487998095152">How do I make Konqueror start up without a menu bar?
+
+I can't save a view profile when the menu bar is invisible!</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487998198336"></a><a name="idm140487998198016"></a><b>8.1.</b></td><td align="left" valign="top"><p>How can I change the appearance of a folder in
+
+Konqueror?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Right-click the folder, select Properties,
+
+click on the large icon in the dialog which appears, and choose another
+
+icon.</p><p>To change the icon displayed for entries in the
+
+TDE Menu, use the Menu Editor,
+
+located at Settings-&gt;Menu
+
+Editor.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998151568"></a><a name="idm140487998151312"></a><b>8.2.</b></td><td align="left" valign="top"><p>How can I do non-anonymous FTP transfers with Konqueror?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Normally, if you enter a URL like
+
+<strong class="userinput"><code>ftp://<em class="replaceable"><code>ftp.somehost.com</code></em></code></strong>,
+
+Konqueror will attempt an anonymous login to the FTP server. If you
+
+want to login as a particular user, enter a URL like
+
+<strong class="userinput"><code>ftp://<em class="replaceable"><code>username@ftp.somehost.com</code></em></code></strong>
+
+instead. Konqueror will ask for your password and connect to the
+
+server.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998143952"></a><a name="idm140487998143632"></a><b>8.3.</b></td><td align="left" valign="top"><p>How do I specify the startup folder for Konqueror?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>With the desktop Home icon, using the right mouse button, select the icon and choose
+
+Properties. Select the
+
+URL tab. Type <code class="filename">/whereever/you/want</code>
+
+with the folder you would like Konqueror to start in.</p><p>From within Konqueror the process is similar. Ensure the Navigation Panel is active
+
+(press <strong class="keycap">F9</strong>). From the Navigation Panel tabs, select the Home icon.
+
+In the Navigation Panel directory, use the right mouse button to select the top level <code class="filename">Home Folder</code> and select Properties.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998134960"></a><a name="idm140487998134704"></a><b>8.4.</b></td><td align="left" valign="top"><p>How do I rename files?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Simply right click on the file and select
+
+Rename or press the keyboard shortcut <strong class="keycap">F2</strong> with a file selected.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998131888"></a><a name="idm140487998131632"></a><b>8.5.</b></td><td align="left" valign="top"><p>Where did the delete entry from my right-click context menu go?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The Delete context menu entry that bypasses the
+
+Trash can is not displayed by default. To enable that menu option, go to
+
+Settings-&gt;Configure
+
+Konqueror and select
+
+Behaviour in the iconbar to the left. Enable the checkbox
+
+Show 'Delete' context menu entries which bypass the
+
+trashcan.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998127952"></a><a name="idm140487998127696"></a><b>8.6.</b></td><td align="left" valign="top"><p>How do I configure the programs that Konqueror uses to
+
+open different types of files?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>In order to configure file associations, you should go to the
+
+KDE Control Center and choose the item File
+
+Associations under the category TDE
+
+Components.</p><p>
+
+Suppose the default PDF viewer is now KGhostView and
+
+you would prefer to use KPDF as a viewer. You
+
+would simply type <strong class="userinput"><code>pdf</code></strong> in the search box at the top of
+
+the dialog, choose pdf in the
+
+application group and move
+
+KPDF up. In the Embedding
+
+tab you can also choose which component other applications will use to
+
+display files (for example, when viewing files in Konqueror or using
+
+Ark's embedded viewer).
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998118352"></a><a name="idm140487998118032"></a><b>8.7.</b></td><td align="left" valign="top"><p>When I try to click on a folder in Konqueror, I get the
+
+message: There appears to be a configuration error. You have
+
+associated Konqueror with inode/directory, but it cannot handle this file
+
+type.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Make sure the embedding settings for inode/directory
+
+are correct:
+
+
+<p class="orderedlist"><ol type="1"><li><p>In Konqueror, go to
+
+Settings-&gt;Configure
+
+Konqueror and then to the File
+
+Associations page.</p></li><li><p>Open
+
+inode-&gt;directory in the tree view.</p></li><li><p>Click on
+
+the
+
+Embedding tab. Make sure that Left Click
+
+Action is set to Show file in embedded
+
+viewer, and by default Icon View (konq_iconview)
+
+is at the top
+
+of Services Preference Order.</p></li></ol>
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998109904"></a><a name="idm140487998109648"></a><b>8.8.</b></td><td align="left" valign="top"><p>What are <code class="option">%i</code> and
+
+<code class="option">%m</code> parameters in a file's Properties Command line?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>They are used by all TDE applications (since they are implemented in
+
+<code class="classname">TDEApplication</code> and all good TDE programs create a
+
+<code class="classname">TDEApplication</code> object before they even look at the
+
+command line arguments).</p><p>A standard line for a TDE
+
+application looks like this: <strong class="userinput"><code><strong class="command">foo</strong>
+
+<code class="option">... %i %m -caption \"%c\"</code></code></strong>. Pretty confusing,
+
+-but it has been designed in that way so that it can integrate legacy,
+
+non-TDE applications as smoothly as possible. Konqueror, when executing
+
+the line above, will extend the command to
+
+<strong class="userinput"><code><strong class="command"><em class="replaceable"><code>foo</code></em></strong> <code class="option">-icon
+
+something.png -miniicon something_mini.png -caption \"The
+
+Foo\"</code></code></strong>. Both the icon and the mini-icon as well as "The
+
+Foo" are properties defined in the <code class="filename">.desktop</code> file. If
+
+the icons are not defined, they simply default to the executable name
+
+<em class="replaceable"><code>foo</code></em>.</p><p>This way a user can change these things in KMenuEdit for his or her
+
+applications. The <code class="option">-caption</code> option is important, because no
+
+user will accept that the menu item Editor starts
+
+something called kedit-0.9pl4-build47. Instead, users
+
+expect a window called Editor. Furthermore these
+
+names are localized, i.e. an American English user launches
+
+CD-Player and gets a window called
+
+CD-Player while a German user launches
+
+CD-Spieler and gets a window called
+
+CD-Spieler.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998095152"></a><a name="idm140487998094832"></a><b>8.9.</b></td><td align="left" valign="top"><p>How do I make Konqueror start up without a menu bar?
+
+I can't save a view profile when the menu bar is invisible!</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The easiest way to do this is to edit Konqueror's
+
+configuration file manually. Add the following lines to
+
+<code class="filename">~/.trinity/share/config/konquerorrc</code>:
+
+<pre class="programlisting">
+
+[KonqMainWindow]
+
+MenuBar=Disabled
+
+</pre>
+
+</p><p>On restarting Konqueror, the menubar should be hidden.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="windowmanager.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="webbrowser.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">The window manager</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Webbrowsing with Konqueror</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/getting-tde.php b/faq/getting-tde.php
new file mode 100644
index 0000000..d3e60ff
--- /dev/null
+++ b/faq/getting-tde.php
@@ -0,0 +1,62 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Getting TDE", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="introduction.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="install.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="getting-tde"></a>Chapter 3. Getting TDE</h2>
+<p class="qandaset"><dl><dt>3.1. <a href="getting-tde.php#idm140487998877520">Where do I get TDE?</a></dt><dt>3.2. <a href="getting-tde.php#idm140487998827536">What is the current version?</a></dt><dt>3.3. <a href="getting-tde.php#idm140487998824912">Binary packages are not available for my distro. What do I do?</a></dt><dt>3.4. <a href="getting-tde.php#idm140487998822464">Where do I find TDE snapshots?</a></dt><dt>3.5. <a href="getting-tde.php#idm140487998818448">Where do I get Qt?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487998877520"></a><a name="where-to-get-tde"></a><b>3.1.</b></td><td align="left" valign="top"><p>Where do I get TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The easiest way to get TDE is to install a Linux based distribution or another Unix-like operating system
+
+that includes TDE.
+
+You can find an up-to-date list of distributions that ship
+
+with TDE <a href="http://www.trinitydesktop.org/" target="_top">here</a>.</p><p>The main distribution site for TDE is
+
+<a href="http://www.trinitydesktop.org/" target="_top">http://www.trinitydesktop.org/</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998827536"></a><a name="idm140487998827280"></a><b>3.2.</b></td><td align="left" valign="top"><p>What is the current version?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE is developed continually. Find the latest stable version number <a href="http://www.trinitydesktop.org/releases.php" target="_top">here</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998824912"></a><a name="idm140487998824656"></a><b>3.3.</b></td><td align="left" valign="top"><p>Binary packages are not available for my distro. What do I do?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>That is always a challenging situation. Are there skilled packagers who
+
+might help? If you are skilled in compiling software from sources, source
+
+tarballs are available for each TDE release (http://www.trinitydesktop.org/releases.php).
+
+The development version can also be built from our GIT source tree. Use the forums
+
+or mailing lists to contact packagers to obtain copies of their build scripts
+
+that can be massaged to fit your distro.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998822464"></a><a name="idm140487998822208"></a><b>3.4.</b></td><td align="left" valign="top"><p>Where do I find TDE snapshots?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Learn more about the latest development snapshots at <a href="http://www.trinitydesktop.org/development.php" target="_top">http://www.trinitydesktop.org/development.php</a>.
+
+You might want to consider setting up your own GIT account to
+
+maintain the latest snapshot at all times. Please refer to <a href="http://www.trinitydesktop.org/development.php" target="_top">http://www.trinitydesktop.org/development.php</a> for further
+
+information.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998818448"></a><a name="where-to-get-qt"></a><b>3.5.</b></td><td align="left" valign="top"><p>Where do I get Qt?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Qt is a product of the Norwegian company Trolltech. The version
+
+upon which TDE is based no longer is actively maintained by Trolltech.
+
+Maintenance is handled by the TDE developers. Get the latest Qt version
+
+from the TDE GIT repository at
+
+<a href="http://git.trinitydesktop.org/" target="_top">http://git.trinitydesktop.org/</a>.</p><p>
+
+With most Linux distributions, this version of Qt no longer is
+
+included or maintained and must be obtained from the TDE repositories. Because
+
+this version of Qt is now maintained exclusively to support TDE, the version supported
+
+by TDE developers is not backwards compatible with the original version from Trolltech.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="introduction.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="install.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Introduction</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Installation instructions</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/index.php b/faq/index.php
new file mode 100644
index 0000000..849ec52
--- /dev/null
+++ b/faq/index.php
@@ -0,0 +1,48 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("TDE Frequently Asked Questions", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="about.php">Next</a></td></tr></tbody></table>
+<p class="book" lang="en">
+<p class="titlepage">
+<p>
+<p><h2><a name="idm140487999006528"></a>TDE Frequently Asked Questions</h2>
+<p>
+<p class="authorgroup"><p class="author">The TDE Team </p>
+<p>Revision 0.1
+<p><p class="copyright">Copyright 1997-2005 The KDE Team</p>
+<p><p class="copyright">Copyright 2014 The TDE Team</p>
+<p>
+<p class="legalnotice"><a name="idm140488000783152"></a><p>Permission is granted to copy, distribute and/or modify this
+
+document under the terms of the GNU Free Documentation License,
+
+Version 1.1 or any later version published by the Free Software
+
+Foundation; with no Invariant Sections, with no Front-Cover Texts, and
+
+with no Back-Cover Texts. A copy of the license is included in <a href="credits.php#gnu-fdl">the section entitled "GNU Free Documentation License"</a>.</p>
+<p>
+<p>
+<p class="abstract"><p>This is a collection of frequently asked
+
+questions about the Trinity Desktop Environment. Please report any bugs,
+
+inconsistencies, or omissions you find in this FAQ to
+
+<code class="email">&lt;<a href="mailto:trinity-devel@lists.pearsoncomputing.net">trinity-devel@lists.pearsoncomputing.net</a>&gt;</code>. Please post
+
+questions to the TDE mailing lists. Questions are monitored to help
+
+maintain this FAQ.</p><hr>
+<p class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="about.php">1. About this FAQ</a></dt><dt><a href="introduction.php">2. Introduction</a></dt><dt><a href="getting-tde.php">3. Getting TDE</a></dt><dt><a href="install.php">4. Installation instructions</a></dt><dt><a href="panel.php">5. The panel</a></dt><dt><a href="desktop.php">6. The desktop</a></dt><dt><a href="windowmanager.php">7. The window manager</a></dt><dt><a href="filemanager.php">8. The File Manager</a></dt><dt><a href="webbrowser.php">9. Webbrowsing with Konqueror</a></dt><dt><a href="configure.php">10. Configuring TDE</a></dt><dt><a href="applications.php">11. TDE applications</a></dt><dt><a href="sound.php">12. Troubleshooting sound problems</a></dt><dt><a href="non-tde-apps.php">13. TDE with non-TDE applications</a></dt><dt><a href="tips.php">14. Useful tips</a></dt><dt><a href="misc.php">15. Miscellaneous questions</a></dt><dt><a href="licensing.php">16. Qt and Licensing questions</a></dt><dt><a href="more-info.php">17. Getting more information</a></dt><dt><a href="questions.php">18. Asking Questions</a></dt><dt><a href="contribute.php">19. Contributing</a></dt><dt><a href="credits.php">20. Credits and License</a></dt></dl><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"></td><td width="34%" align="center" valign="top" class="navCenter"></td><td width="33%" align="right" valign="top" class="navRight"><a href="about.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft"></td><td width="34%" align="center" class="navCenter"></td><td width="33%" align="right" class="navRight">About this FAQ</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/install.php b/faq/install.php
new file mode 100644
index 0000000..8765a88
--- /dev/null
+++ b/faq/install.php
@@ -0,0 +1,223 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Installation instructions", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="getting-tde.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="panel.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="install"></a>Chapter 4. Installation instructions</h2><p>These are the generic installation instructions for the Trinity
+
+Desktop Environment. Please complement your reading with the
+
+<code class="filename">README</code> and <code class="filename">INSTALL</code> text files that
+
+come along with the package. Please read them carefully and try to
+
+help yourself if anything goes wrong. If you need further
+
+assistance, consider joining the TDE mailing lists
+
+(see our web site instructions for joining the TDE
+
+<a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">mailing
+
+lists</a>).</p>
+<p class="qandaset"><dl><dt>4.1. <a href="install.php#idm140487998838576">To the would-be converts</a></dt><dt>4.2. <a href="install.php#idm140487998761408">What kind of hardware do I need to run TDE ?</a></dt><dt>4.3. <a href="install.php#idm140487998756832">Available package formats</a></dt><dt>4.4. <a href="install.php#idm140487998751936">Prerequisites</a></dt><dt>4.5. <a href="install.php#idm140487998745696">Description of the base packages</a></dt><dt>4.6. <a href="install.php#idm140487998671840">Installation instructions for the different package formats</a></dt><dt>4.7. <a href="install.php#idm140487998668416">Post-installation procedures</a></dt><dt>4.8. <a href="install.php#idm140487998650560">Should I remove old version xyz before installing a new
+
+one?</a></dt><dt>4.9. <a href="install.php#idm140487998647968">How do I start TDE?</a></dt><dt>4.10. <a href="install.php#idm140487998640496">starttde fails with can not connect to X
+
+server. What is wrong?</a></dt><dt>4.11. <a href="install.php#idm140487998632448">Will I lose my current settings when I update TDE?</a></dt><dt>4.12. <a href="install.php#greyscreen">I updated TDE and all seemed to go fine, but when I start TDE,
+
+I get a blank gray screen, and nothing happens. There are errors in
+
+the console about DCOPserver. What's going on?</a></dt><dt>4.13. <a href="install.php#idm140487998611936">Is TDE backwards or binary compatible with KDE 3?</a></dt><dt>4.14. <a href="install.php#idm140487998608144">Is TDE backwards or binary compatible with previous releases of TDE?</a></dt><dt>4.15. <a href="install.php#idm140487998604256">Is my KDE 3 profile directory compatible with Trinity?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487998838576"></a><a name="idm140487998838256"></a><b>4.1.</b></td><td align="left" valign="top"><p>To the would-be converts</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You have heard rumors about TDE. Or you have seen screenshots.
+
+You want test TDE. Yet you know next to nothing
+
+about this whole alternate operating system business. Don't worry!
+
+You only need to do some (well, maybe not some) reading, that's all!</p><p>TDE does not run on any version of Microsoft Windows. To run
+
+TDE, you need to have a Unix-like operating system. Please refer to <a href="introduction.php#platform">Q:2.2</a> for more details.</p><p>Decide on a platform and set it up for your system. This
+
+FAQ can not help you with this, since TDE is intended
+
+to run on many Unix-like platforms.</p><p>To obtain TDE, please refer to <a href="getting-tde.php#where-to-get-tde">Q:3.1</a>. If
+
+you encounter problems while installing TDE, please do not
+
+hesitate to make use of the TDE <a href="more-info.php#mailing-lists">mailing lists</a>. No question is too silly to ask, but
+
+remember to first look for answers in this FAQ.</p><p>Good luck and have fun!</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998761408"></a><a name="idm140487998761088"></a><b>4.2.</b></td><td align="left" valign="top"><p>What kind of hardware do I need to run TDE ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>To run TDE consider at least a Pentium III processor, 512MB of memory, and 500MB of free disk space for a basic installation. A full installation will require about 3GB of hard drive storage space. While TDE will run on slower hardware, performance likely will require some patience. Generally, if your computer runs other desktop environments then the hardware probably is capable of running TDE.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998756832"></a><a name="idm140487998756576"></a><b>4.3.</b></td><td align="left" valign="top"><p>Available package formats</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You can find binary and source packages for
+
+different distributions and operating systems on the
+
+<a href="http://www.trinitydesktop.org/installation.php" target="_top">Trinity web site</a>.
+
+The binary packages are made by dedicated members of the TDE community.
+
+The only official release is the source tarball
+
+packages. Please refer to the <code class="filename">README</code>s and
+
+<code class="filename">INSTALL</code>s in the several binaries folders.
+
+Find the latest stable release
+
+<a href="http://www.trinitydesktop.org/releases.php" target="_top">here</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998751936"></a><a name="prerequisites"></a><b>4.4.</b></td><td align="left" valign="top"><p>Prerequisites</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You need the Qt library as provided by the TDE developers. Previous
+
+versions of Qt will not work with the latest TDE.
+
+Please ensure you download the correct Qt. You will
+
+also need the header files, if you want to compile TDE
+
+yourself. They are all available, at no cost, from the <a href="http://www.trinitydesktop.org/" target="_top">TDE repository</a>.
+
+There are optional libraries that might improve TDE if
+
+installed on your system. An example is OpenSSL which will enable
+
+Konqueror to browse web pages securely. These additional packages
+
+should be provided by your distributor.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998745696"></a><a name="idm140487998745376"></a><b>4.5.</b></td><td align="left" valign="top"><p>Description of the base packages</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The base distribution currently consists of several
+
+packages. Some are required, while others are optional. Each package
+
+is available in each of the aforementioned package formats.</p>
+<p class="variablelist"><dl><dt>tqt3</dt><dd><p>Required</p><p>This package contains the foundational widget support needed by all
+
+TDE applications.</p></dd><dt>tqtinterface</dt><dd><p>Required</p><p>Necessary for supporting subsequent versions of Qt.</p></dd><dt>arts</dt><dd><p>Required</p><p>The core sound system for TDE</p></dd><dt>tdelibs</dt><dd><p>Required</p><p>This package contains shared libraries that are needed by all
+
+TDE applications.</p></dd><dt>tdebase</dt><dd><p>Required</p><p>This package contains the base applications that form the core
+
+of the Trinity Desktop Environment like the window manager, the terminal
+
+emulator, the control center, the file manager, and the panel.</p></dd><dt>aRts</dt><dd><p>Required</p><p>The aRts sound server. A powerful, network transparent sound
+
+server.</p></dd><dt>tdeaddons</dt><dd><p>Optional but recommended</p><p>Various plugins for Kate, Kicker, KNewsTicker, Konqueror and Noatun </p></dd><dt>tdeartwork</dt><dd><p>Optional</p><p>Additional wallpapers, themes, styles, sounds ...</p></dd><dt>tdebindings</dt><dd><p>Optional</p><p>Various bindings for other languages, including Java, Perl, Python, ...</p></dd><dt>tdegames</dt><dd><p>Optional</p><p>Various games like KMahjongg, KSnake, KAsteroids, and
+
+KPatience.</p></dd><dt>tdegraphics</dt><dd><p>Optional but recommended</p><p>Various graphics-related programs like PostScript previewer,
+
+DVI previewer, and a drawing program.</p></dd><dt>tdeutils</dt><dd><p>Optional but recommended</p><p>Various desktop tools like a calculator, an editor and other
+
+nifty stuff.</p></dd><dt>tdemultimedia</dt><dd><p>Optional but recommended</p><p>Multimedia applications like a CD player and a mixer.</p></dd><dt>tdenetwork</dt><dd><p>Optional</p><p>Network applications. Currently contains the instant messaging client Kopete, the
+
+download manager KGet, and several other network-related programs.</p></dd><dt>tdepim</dt><dd><p>Optional but recommended</p><p>Personal information management tools. Contains the email client KMail, the newsreader KNode and other related programs.</p></dd><dt>tdeadmin</dt><dd><p>Optional but recommended</p><p>System administration programs.</p></dd><dt>tdeedu</dt><dd><p>Optional</p><p>
+
+Educational and entertaining applications for TDE's younger users.
+
+</p></dd><dt>tdeaccessibility</dt><dd><p>Optional but recommended</p><p>
+
+TDE accessibility programs such as a screen magnifier and speech synthesizer front end.
+
+</p></dd><dt>tdetoys</dt><dd><p>Optional</p><p>Toys!</p></dd><dt>tdevelop</dt><dd><p>Optional</p><p>A complete Integrated Development Environment for TDE and Qt</p></dd><dt>tdewebdev</dt><dd><p>Optional</p><p>Web development applications. Contains such applications as Quanta, an integrated web development environment and other applications useful in web development</p></dd><dt>tdesdk</dt><dd><p>Optional</p><p>TDE Software Development Kit. Contains a collection of applications and tools used by TDE Developers.</p></dd></dl><p>Information about compiling all packages is available at the
+
+<a href="http://www.trinitydesktop.org/wiki/bin/view/Developers/HowToBuild" target="_top">
+
+Trinity wiki</a>.</p><p>Most package management tools will let you put all these
+
+packages in one folder and install them all at once, figuring out
+
+the dependencies as they go.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998671840"></a><a name="idm140487998671520"></a><b>4.6.</b></td><td align="left" valign="top"><p>Installation instructions for the different package formats</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>As TDE is intended for many Unix-like systems, please consult the installtion
+
+procedures and package management document for the system being used.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998668416"></a><a name="idm140487998668096"></a><b>4.7.</b></td><td align="left" valign="top"><p>Post-installation procedures</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There should be nothing to do after installing the packages except use them!
+
+Nonetheless, should problems arise, there are some common problems to consider:</p>
+<p class="variablelist"><dl><dt>System search path</dt><dd><p>Be sure all TDE binary files are installed
+
+in a location listed in your system's <code class="envar">PATH</code>.</p></dd><dt>Library files</dt><dd><p>Be sure the TDE library files are installed in the expected locations for your
+
+system.</p></dd><dt><code class="envar">TDEDIR</code> environment variable</dt><dd><p>Be sure the <code class="envar">TDEDIR</code> environment variable is correctly set.</p></dd><dt><code class="filename">starttde</code> script installation</dt><dd><p>Verify the <code class="filename">starttde</code> script is installed to <code class="filename">$<code class="envar">TDEDIR</code>/bin</code> and therefore in your
+
+system's search path.</p></dd><dt><code class="filename">starttde</code> script is run correctly</dt><dd><p>Be sure the <code class="filename">starttde</code> script is being run from within the appropriate
+
+xinitrc or xsession script.</p></dd></dl><p>This should present you with a new TDE desktop. You
+
+can now start to explore the wonderful world of TDE. In case you
+
+want to read some documentation first, there is a recommended
+
+"A Quick Start Guide to the Desktop"
+
+available in the TDE Help Center. Furthermore, every application has an online
+
+help that is available via the Help menu.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998650560"></a><a name="idm140487998650304"></a><b>4.8.</b></td><td align="left" valign="top"><p>Should I remove old version xyz before installing a new
+
+one?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>In principle, this is not necessary. The various distro package managers
+
+should handle all dependencies.</p><p>If you compile the source code yourself, you should take more care.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998647968"></a><a name="starttde"></a><b>4.9.</b></td><td align="left" valign="top"><p>How do I start TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There are only two methods of starting TDE: using a login
+
+manager such as TDM or from the command line, using <strong class="command">startx</strong>.
+
+The respective startup scripts should contain a reference to the
+
+<code class="filename">starttde</code> script.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998640496"></a><a name="idm140487998640176"></a><b>4.10.</b></td><td align="left" valign="top"><p><strong class="command">starttde</strong> fails with can not connect to X
+
+server. What is wrong?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You probably tried to start TDE directly with <strong class="command">starttde</strong> rather
+
+than letting the login manager or startx process run that script. From the command
+
+line the X server is started with <strong class="command">startx</strong>.
+
+<strong class="command">starttde</strong> is the
+
+script that should be run from your <code class="filename">.xinitrc</code>, <code class="filename">.xsession</code>, or
+
+<code class="filename">.Xclients</code> to activate the window manager and the necessary server
+
+daemons for TDE. See also <a href="install.php#starttde">Q:4.9</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998632448"></a><a name="idm140487998632128"></a><b>4.11.</b></td><td align="left" valign="top"><p>Will I lose my current settings when I update TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You shouldn't. TDE should transport your settings
+
+intact. All settings should be safe.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="greyscreen"></a><a name="idm140487998627328"></a><b>4.12.</b></td><td align="left" valign="top"><p>I updated TDE and all seemed to go fine, but when I start TDE,
+
+I get a blank gray screen, and nothing happens. There are errors in
+
+the console about DCOPserver. What's going on?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+TDE uses several temporary files during its operation.
+
+Usually these directories and files are found in the following locations:</p>
+<p class="itemizedlist"><ul type="disc"><li><p><code class="filename">$HOME/.DCOPserver-*</code> (there are usually two of these; one is a symlink to the other)</p></li><li><p><code class="filename">$HOME/.trinity/socket-<em class="replaceable"><code>hostname</code></em></code></p></li><li><p><code class="filename">$HOME/.trinity/tmp-<em class="replaceable"><code>hostname</code></em></code>, which normally is a symlink to the next file:</p></li><li><p><code class="filename">$TMP/tde-<em class="replaceable"><code>USER</code></em></code></p></li><li><p><code class="filename">$HOME/.trinity/socket-<em class="replaceable"><code>hostname</code></em></code>, which normally is a symlink to:</p></li><li><p><code class="filename">$TMP/tdesocket-<em class="replaceable"><code>USER</code></em></code></p></li></ul><p>If the symlinks get broken, such as when
+
+<strong class="command">cron</strong> or a shutdown script is emptying the
+
+<code class="filename">/tmp</code> folder, then strange
+
+things will happen. These files, and the symlinks, will all be
+
+created automatically at the start of TDE so you can safely remove
+
+them <em>while TDE is not running</em>.</p><p>If you are only getting a gray screen when you start TDE, or if you get an error message telling you to Check your installation, then shut down X and delete all the files listed above, then try to restart X.</p><p>Normally (i.e. when not updating between TDE versions) it's
+
+quite safe to leave these files intact, and you may shave a few
+
+seconds off your TDE startup time by doing so.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998611936"></a><a name="idm140487998611616"></a><b>4.13.</b></td><td align="left" valign="top"><p>Is TDE backwards or binary compatible with KDE 3?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>While many programs originally designed for KDE 3 will compile on Trinity, binary
+
+compatibility with KDE 3 is not a goal of TDE developers.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998608144"></a><a name="idm140487998607824"></a><b>4.14.</b></td><td align="left" valign="top"><p>Is TDE backwards or binary compatible with previous releases of TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Possibly, but binary compatibility is not a project goal with major point
+
+releases. A package that built on a previous version of TDE but no longer builds
+
+on the current release should be brought to the attention of the developers.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998604256"></a><a name="idm140487998603936"></a><b>4.15.</b></td><td align="left" valign="top"><p>Is my KDE 3 profile directory compatible with Trinity?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Not quite, but don't worry. Some "scrubbing" cleanup is required to migrate
+
+a KDE 3 profile. For new users or those with little customization we recommend
+
+creating a fresh profile. For those long-time users who cringe at the thought
+
+of recreating their desktop, we provide a migratekde3 shell script. That script
+
+copies a $HOME/.kde3 profile directory to $HOME/.trinity and performs the required
+
+"scrubbing" cleanup. Although the script has been tested we provide the tool "as is"
+
+with no warranties or guarantees. (The script works really well, actually. :-))</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="getting-tde.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="panel.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Getting TDE</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">The panel</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/introduction.php b/faq/introduction.php
new file mode 100644
index 0000000..44c11f6
--- /dev/null
+++ b/faq/introduction.php
@@ -0,0 +1,154 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Introduction", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="about.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="getting-tde.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="introduction"></a>Chapter 2. Introduction</h2>
+<p class="qandaset"><dl><dt>2.1. <a href="introduction.php#idm140487999026864">What is TDE?</a></dt><dt>2.2. <a href="introduction.php#idm140488007142368">On which platforms can I expect TDE to work?</a></dt><dt>2.3. <a href="introduction.php#idm140487998950448">Why should I use TDE?</a></dt><dt>2.4. <a href="introduction.php#idm140487998946848">Is TDE a window manager?</a></dt><dt>2.5. <a href="introduction.php#idm140487998940368">Is TDE a CDE, Windows or Mac
+
+OS clone?</a></dt><dt>2.6. <a href="introduction.php#idm140487998932336">On what platform is TDE based?</a></dt><dt>2.7. <a href="introduction.php#idm140487998929824">Is TDE free software?</a></dt><dt>2.8. <a href="introduction.php#idm140487998919136">Why the rebranding and renaming efforts? Why not continue calling the software KDE?</a></dt><dt>2.9. <a href="introduction.php#idm140487998915472">Why the change in version numbers?</a></dt><dt>2.10. <a href="introduction.php#idm140487998912448">How is Trinity different from KDE4?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487999026864"></a><a name="idm140487999026544"></a><b>2.1.</b></td><td align="left" valign="top"><p>What is TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE is the Trinity Desktop Environment. The project was initiated
+
+by Matthias Ettrich in 1996 and originally called the K Desktop Environment.
+
+The aim of the TDE project is to connect the power of the Unix-like operating
+
+systems with the comfort of a modern user interface.</p><p>For additional information about TDE, check the Trinity web site at
+
+<a href="http://www.trinitydesktop.org/about.php" target="_top">About Trinity</a></p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140488007142368"></a><a name="platform"></a><b>2.2.</b></td><td align="left" valign="top"><p>On which platforms can I expect TDE to work?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE is a Desktop Environment for all flavors of Unix-like systems.
+
+While most TDE developers use Linux based systems, TDE should run
+
+on a wide range of systems. You might need to tweak the
+
+source code a bit to get TDE to compile on different variant
+
+of Unix-like systems, or when not using the GNU development tools, in
+
+particular the <strong class="command">gcc</strong> compiler.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998950448"></a><a name="idm140487998950128"></a><b>2.3.</b></td><td align="left" valign="top"><p>Why should I use TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE provides a traditional computer desktop that is snappy and
+
+responsive. A project goal is to provide a highly customizable
+
+desktop without forcing any particular feature or effect on users.
+
+TDE comes with many software tools to provide a productive and enjoyable
+
+computer desktop system.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998946848"></a><a name="idm140487998946528"></a><b>2.4.</b></td><td align="left" valign="top"><p>Is TDE a window manager?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>No, TDE is not a window manager. While TDE includes a
+
+sophisticated window manager (TWin), TDE is much more, providing
+
+a full integrated desktop environment. TDE includes a web browser,
+
+a file manager, a window manager, a help system, a
+
+configuration system, many tools and utilities, and many
+
+applications, including but not limited to mail
+
+and news clients, drawing programs, a PDF and a DVI viewer
+
+and so forth.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998940368"></a><a name="idm140487998940112"></a><b>2.5.</b></td><td align="left" valign="top"><p>Is TDE a CDE, Windows or Mac
+
+OS clone?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE is not a clone. Specifically TDE is not a
+
+Common Desktop Environment (CDE) or Windows clone.
+
+While developers have and will continue to glean the best features from existing
+
+desktop environments, TDE is a unique environment that has and
+
+will continue to go its own way.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998932336"></a><a name="idm140487998932080"></a><b>2.6.</b></td><td align="left" valign="top"><p>On what platform is TDE based?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>TDE uses C++ and the <a href="licensing.php#qt">Qt C++ crossplatform toolkit</a>.
+
+The TDE development team now maintains the Qt3 toolkit, renamed TQt3.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998929824"></a><a name="idm140487998928608"></a><b>2.7.</b></td><td align="left" valign="top"><p>Is TDE free software?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes, TDE is free software according to the GNU General
+
+Public License. All TDE libraries are available under the
+
+LGPL making commercial software development for the
+
+TDE desktop possible, but all TDE applications are licensed under
+
+the GPL.</p><p>TDE uses the <a href="licensing.php#qt">Qt C++ crossplatform
+
+toolkit</a>, which, since version 2.2, is released under the
+
+GPL.</p><p>Both TDE and Qt can be made available on
+
+CD-ROM free of charge. No runtime fees of any kind are
+
+incurred.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998919136"></a><a name="idm140487998918816"></a><b>2.8.</b></td><td align="left" valign="top"><p>Why the rebranding and renaming efforts? Why not continue calling the software KDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The "KDE" name, various logos, and related efforts are trademarked by the KDE
+
+Foundation. Since the Trinity project is not affiliated with the KDE Foundation,
+
+legally we can't use their trademarks.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998915472"></a><a name="idm140487998915216"></a><b>2.9.</b></td><td align="left" valign="top"><p>Why the change in version numbers?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Trinity evolved from the last KDE 3.5 release, 3.5.10. Subsequent Trinity releases
+
+followed that numbering scheme. Release R14.0.0 marks a turning point in Trinity history
+
+because a great deal of the code infrastructure was changed. While those changes do not
+
+effect the usability or look-and-feel of the desktop that users enjoy, Trinity developers
+
+believe a change in the version scheme distinguishes when those changes occurred. An
+
+original project goal by users was to retain the flavor of the original KDE 3.5 desktop.
+
+That goal remains intact. To reflect that original goal, the last number in the original
+
+version scheme is retained in the new version scheme but is now the primary version number.
+
+While the infrastructure has changed, the desktop itself remains the same as the original
+
+KDE 3.5. This new version scheme indicates a modest divergence from the original KDE 3.5
+
+series and that Trinity is now its own desktop environment. The new version scheme reminds
+
+users that Trinity retains the original KDE 3.5 design, but is moving forward as a separate
+
+desktop project.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998912448"></a><a name="trinity-vs-kde4"></a><b>2.10.</b></td><td align="left" valign="top"><p>How is Trinity different from KDE4?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Both desktop environments share common roots to KDE 3.5.10, which was the last
+
+official release of KDE in the 3.x series. Many KDE developers wanted to break
+
+from that code chain and tool sets to start afresh. Thus was born KDE4. In
+
+addition to moving to the Qt4 tool set, the KDE developers revamped the
+
+underlying KDE code set.</p><p>KDE4 and Trinity have different philosophies about work flow preferences.
+
+KDE4 developers want to support certain work flow concepts and techniques.
+
+Trinity developers want to maintain a "traditional" desktop environment.</p><p>For example, KDE4 offers the following tools:</p>
+<p class="itemizedlist"><ul type="disc"><li><p>Semantic desktop through Nepomuk</p></li><li><p>PIM (Personal Information Management) data caching through Akonadi</p></li><li><p>Desktop file searching through Strigi</p></li><li><p>Activities, a computer desktop metaphor for managing tasks and activities</p></li></ul><p>Whereas TDE offers the following:</p>
+<p class="itemizedlist"><ul type="disc"><li><p>Desktop search through the locate:/ tdeio-slave and Beagle</p></li><li><p>Integrated PIM suite with plugins</p></li><li><p>Related task management using multiple desktops</p></li></ul><p>The KDE developers support alternate desktop interfaces, such as those used
+
+with netbooks, tablets, and smart phones. TDE provides a single interface that is
+
+optimized for the mouse/keyboard HCI (Human-computer interaction) model.</p><p>Both desktop environments provide an excellent choice for various work
+
+flows but differ in approach. Trinity leans toward user expectations of how
+
+desktop environments have functioned traditionally. There is a sense of
+
+familiarity with that environment many people like. Similarly other users prefer
+
+the work flow features offered by KDE4 because those features match their
+
+expectations of how they want their computer to behave. The difference between the
+
+two environments does not mean one is better, buggier, or slower &mdash; only that
+
+they are different and appeal to different types of people. Although sharing a
+
+common heritage, both desktops appeal to different groups of people. As always
+
+with free/libre software, there is a choice.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="about.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="getting-tde.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">About this FAQ</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Getting TDE</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/licensing.php b/faq/licensing.php
new file mode 100644
index 0000000..3f8fa41
--- /dev/null
+++ b/faq/licensing.php
@@ -0,0 +1,74 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Qt and Licensing questions", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="misc.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="more-info.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="licensing"></a>Chapter 16. Qt and Licensing questions</h2>
+<p class="qandaset"><dl><dt>16.1. <a href="licensing.php#idm140487997117232">What is Qt, by the way?</a></dt><dt>16.2. <a href="licensing.php#idm140487997066464">Why does TDE use Qt?</a></dt><dt>16.3. <a href="licensing.php#idm140487997060624">Why does TDE not use gtk, xforms, xlib, whatever?</a></dt><dt>16.4. <a href="licensing.php#idm140487997056592">But Qt isn't free, is it?</a></dt><dt>16.5. <a href="licensing.php#idm140487997051872">Can I write commercial software for TDE?</a></dt><dt>16.6. <a href="licensing.php#idm140487997045088">Isn't Qt3 obsolete and "dead" technology?</a></dt><dt>16.7. <a href="licensing.php#idm140487997042304">Are there plans to migrate TDE to Qt4 or Qt5?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997117232"></a><a name="qt"></a><b>16.1.</b></td><td align="left" valign="top"><p>What is Qt, by the way?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Qt is a C++-based class library to build user interfaces. It
+
+also includes many utility classes like string classes and classes
+
+to handle input and output. It
+
+provides most of the widgets you will see in a TDE application:
+
+menus, buttons, sliders, etc. Qt is a cross-platform library that
+
+allows developers to write code that will compile on Unix-like systems as well as
+
+Windows and embedded devices. Learn more about Qt at <a href="http://www.trolltech.com" target="_top">http://www.trolltech.com</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997066464"></a><a name="idm140487997066144"></a><b>16.2.</b></td><td align="left" valign="top"><p>Why does TDE use Qt?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Qt is a sophisticated toolkit that provides everything that
+
+needed to build a modern user interface. Qt is written in C++, thus
+
+allowing object-oriented development which ensures efficiency and
+
+code reuse in a project the size and scope of TDE. In our opinion
+
+there is no better toolkit available for Unix-like systems and that it
+
+would have been a grave mistake to try to build TDE on anything but
+
+the best.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997060624"></a><a name="idm140487997060304"></a><b>16.3.</b></td><td align="left" valign="top"><p>Why does TDE not use gtk, xforms, xlib, whatever?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There are a number of toolkits available. To provide a
+
+consistent user interface and to keep used resources such as memory to
+
+a minimum, TDE can use only one of them. Qt was selected for the
+
+reasons mentioned above.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997056592"></a><a name="idm140487997056272"></a><b>16.4.</b></td><td align="left" valign="top"><p>But Qt isn't free, is it?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Qt is free/libre. Since September 4, 2000, version 2.2 of the Qt
+
+libraries are licensed under the GPL, thereby
+
+fulfiling all aspects of free/libre software.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997051872"></a><a name="idm140487997051552"></a><b>16.5.</b></td><td align="left" valign="top"><p>Can I write commercial software for TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You can use the TDE libraries to write commercial and
+
+closed source as well as commercial and open
+
+source software. If you write open source software you can
+
+use the Qt free edition. If you write closed source software
+
+you may not use the Qt free edition; you need to obtain the Qt
+
+professional edition from Troll Tech. For more information, please
+
+contact <a href="http://www.trolltech.com" target="_top">Troll Tech</a> directly.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997045088"></a><a name="idm140487997044768"></a><b>16.6.</b></td><td align="left" valign="top"><p>Isn't Qt3 obsolete and "dead" technology?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The definition for "obsolete" varies based upon who applies the term.
+
+Generally the term "obsolete" means something no longer is useful or no longer
+
+needed. In software circles the term often means antiquated or no longer shiny.
+
+Usefulness often is not part of the intended meaning of the word. The term is
+
+used as an emotional wedge more than a factual observation.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997042304"></a><a name="idm140487997041984"></a><b>16.7.</b></td><td align="left" valign="top"><p>Are there plans to migrate TDE to Qt4 or Qt5?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There are no such plans. Porting Trinity to Qt4 is 5 to 10 years of solid work with current project manpower. Indeed, the KDE4 team of developers needed several years to port KDE and they have many more developers.</p><p>A fundamental project goal for maintaining Trinity is to keep alive the spirit and functionality of the original KDE3 concepts. Porting to Qt4 does not support that goal. Qt4 functionality is different from Qt3 (now TQt). Those differences conflict with how users want Trinity to function. The Qt4 environment is too different in focus and functionality to be used as the base toolkit of Trinity.</p><p>The idea of integrating certain portions of the Qt4 code has not been abandoned. One of the original reasons for the TQt interface layer was to keep open the possibility of adapting portions of Trinity to Qt4. That has already been done. For example, with the qt4-tqt-theme-engine package for Trinity.</p><p>More information about the philosophical and design differences between Trinity and KDE4 are available in <a href="introduction.php#trinity-vs-kde4">Q:2.10</a> of the FAQ introduction.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="misc.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="more-info.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Miscellaneous questions</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Getting more information</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/misc.php b/faq/misc.php
new file mode 100644
index 0000000..b4c5a3b
--- /dev/null
+++ b/faq/misc.php
@@ -0,0 +1,122 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Miscellaneous questions", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="tips.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="licensing.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="misc"></a>Chapter 15. Miscellaneous questions</h2>
+<p class="qandaset"><dl><dt>15.1. <a href="misc.php#idm140487997282048">Does TDE support transparency and other visual effects provided by the new composite extension to X.org?</a></dt><dt>15.2. <a href="misc.php#idm140487997231328">What about TDE programs that do not have icons? How do I get
+
+them into the menu?</a></dt><dt>15.3. <a href="misc.php#idm140487997226480">Does TDE have a graphical FTP client?</a></dt><dt>15.4. <a href="misc.php#idm140487997222544">How do I exit TDE?</a></dt><dt>15.5. <a href="misc.php#idm140487997211120">Is there a program that checks for new mails at my
+
+ISP if and only if I am online?</a></dt><dt>15.6. <a href="misc.php#idm140487997208624">Is it really necessary to update to the latest version?</a></dt><dt>15.7. <a href="misc.php#idm140487997204448">How do I copy and paste in TDE?</a></dt><dt>15.8. <a href="misc.php#idm140487997189808">How do I convert the default Red Hat menus into a menu in the
+
+TDE menu?</a></dt><dt>15.9. <a href="misc.php#idm140487997184672">What is GIT?</a></dt><dt>15.10. <a href="misc.php#idm140487997180768">Does TDE support dual screen (Xinerama)?</a></dt><dt>15.11. <a href="misc.php#idm140487997177328">How do I check which version of TDE I am using?</a></dt><dt>15.12. <a href="misc.php#idm140487997173936">How do I learn about development updates?</a></dt><dt>15.13. <a href="misc.php#idm140487997168816">Is there a release schedule?</a></dt><dt>15.14. <a href="misc.php#idm140487997166320">Are there plans to support semantic desktops?</a></dt><dt>15.15. <a href="misc.php#idm140487997163888">Are there plans to support tablet-like or special netbook desktop modes?</a></dt><dt>15.16. <a href="misc.php#idm140487997161344">How do the developers propose to transition away from HAL (hardware abstraction layer)?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997282048"></a><a name="idm140487997281728"></a><b>15.1.</b></td><td align="left" valign="top"><p>Does TDE support transparency and other visual effects provided by the new composite extension to X.org?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes. TDE supports for the X composite extension and provides its own compositor. This allows for effects such as translucency and drop shadows for all windows, easily configurable through TWin's configuration dialog. For those using an xorg.conf file, be sure the following is included:
+
+
+
+<pre class="screen">
+
+Section "Extensions"
+
+Option "Composite" "Enable"
+
+EndSection
+
+</pre>
+
+
+
+
+
+
+
+After correctly configuring xorg.conf, transparency and other effects can be enabled through the Desktop-&gt;Window Behavior KDE Control Center module, under the Translucency tab.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997231328"></a><a name="idm140487997231008"></a><b>15.2.</b></td><td align="left" valign="top"><p>What about TDE programs that do not have icons? How do I get
+
+them into the menu?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Use KMenuEdit. To access it use the right mouse button on the
+
+T button and select Menu Editor.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997226480"></a><a name="idm140487997226160"></a><b>15.3.</b></td><td align="left" valign="top"><p>Does TDE have a graphical FTP client?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes, and it is none other than your favorite file
+
+manager, Konqueror. You can drag and drop remote files into local
+
+folders.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997222544"></a><a name="idm140487997222224"></a><b>15.4.</b></td><td align="left" valign="top"><p>How do I exit TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>On the panel (kicker) use the left mouse button to select the T
+
+button and select Log Out.... Another method is to use the right mouse button
+
+to select an empty area of the desktop, which opens a popup menu,
+
+containing Log Out... as one of the options.
+
+Another option is to use a keyboard shortcut, which on many systems is
+
+<strong class="keycap">Ctrl</strong>+<strong class="keycap">Alt</strong>+<strong class="keycap">Delete</strong>.
+
+A fourth option is to add the Lock/Logout button applet.
+
+
+<p class="note" ><h3 class="title">Note</h3><p>Depending on your configuration of the X Window System, <strong class="keycap">Ctrl</strong>+<strong class="keycap">Alt</strong>+<strong class="keycap">Backspace</strong>
+
+might also exit TDE by killing the X server, but using that shortcut prevents
+
+session management and is recommended only for emergencies.</p></p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997211120"></a><a name="idm140487997210800"></a><b>15.5.</b></td><td align="left" valign="top"><p>Is there a program that checks for new mails at my
+
+ISP if and only if I am online?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>KOrn will do the job. If you are not
+
+connected, it will just sit there (idling).</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997208624"></a><a name="idm140487997208304"></a><b>15.6.</b></td><td align="left" valign="top"><p>Is it really necessary to update to the latest version?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>We recommend updating to the latest stable release, or at least to stay within
+
+a release version. Otherwise, getting answers to questions might be challenging.
+
+Each release always contains bug fixes and enhancements. Often a problem with an old version
+
+has been fixed in a more recent release. Newer versions also fix security problems. Only seldom are bug and security fixes backported to older releases.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997204448"></a><a name="idm140487997204128"></a><b>15.7.</b></td><td align="left" valign="top"><p>How do I copy and paste in TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The simplest method is to use your mouse:</p>
+<p class="procedure"><ol type="1"><li><p>Highlight the text you want to copy by holding down the
+
+left mouse button and dragging across the text. This adds the selected text to the clipboard.</p></li><li><p>Go to the destination area; depending on your configuration,
+
+you might need to click it using the left mouse button to give it
+
+focus.</p></li><li><p>Click the middle mouse button to paste. If you have a two
+
+button mouse and are emulating a three button mouse, push both buttons
+
+simultaneously.</p></li></ol><p>The standard keyboard shortcuts for copying is <strong class="keycap">Ctrl</strong>+<strong class="keycap">C</strong>, to cut is <strong class="keycap">Ctrl</strong>+<strong class="keycap">X</strong>, and to paste is <strong class="keycap">Ctrl</strong>+<strong class="keycap">V</strong>.</p><p>TDE provides a multiple layer clipboard called Klipper. Refer to the Klipper Handbook for further information.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997189808"></a><a name="idm140487997189488"></a><b>15.8.</b></td><td align="left" valign="top"><p>How do I convert the default Red Hat menus into a menu in the
+
+TDE menu?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Click on the T button and select
+
+System-&gt;Appfinder.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997184672"></a><a name="GIT"></a><b>15.9.</b></td><td align="left" valign="top"><p>What is GIT?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>GIT is a distributed version control and source code management system.
+
+GIT is used to maintain source code under development. The TDE developers use GIT.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997180768"></a><a name="idm140487997180448"></a><b>15.10.</b></td><td align="left" valign="top"><p>Does TDE support dual screen (Xinerama)?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes, you need to have a multi-headed X server.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997177328"></a><a name="idm140487997177072"></a><b>15.11.</b></td><td align="left" valign="top"><p>How do I check which version of TDE I am using?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Start any Trinity app. Each app has a Help menu providing
+
+related information in the About dialog.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997173936"></a><a name="idm140487997173088"></a><b>15.12.</b></td><td align="left" valign="top"><p>How do I learn about development updates?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>You might want to subscribe to the
+
+<a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">
+
+TDE developer's mail list</a>.
+
+Refer to <a href="http://trinity-devel.pearsoncomputing.net/" target="_top">http://trinity-devel.pearsoncomputing.net/</a>
+
+if you want to read without subscribing.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997168816"></a><a name="idm140487997168496"></a><b>15.13.</b></td><td align="left" valign="top"><p>Is there a release schedule?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The Trinity developers strive for a six to nine month schedule but that is not rigid or set in stone.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997166320"></a><a name="idm140487997166000"></a><b>15.14.</b></td><td align="left" valign="top"><p>Are there plans to support semantic desktops?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Not at this time.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997163888"></a><a name="idm140487997163568"></a><b>15.15.</b></td><td align="left" valign="top"><p>Are there plans to support tablet-like or special netbook desktop modes?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>No. The TDE team suggests a tablet-centric interface such as Unity, KDE4, or GNOME 3 for those devices.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997161344"></a><a name="idm140487997161024"></a><b>15.16.</b></td><td align="left" valign="top"><p>How do the developers propose to transition away from HAL (hardware abstraction layer)?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The Trinity team developed a new native hardware support layer that is under testing.
+
+That new system will be enabled by default in a future release, but is available now
+
+in the development sources.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="tips.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="licensing.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Useful tips</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Qt and Licensing questions</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/more-info.php b/faq/more-info.php
new file mode 100644
index 0000000..5c88724
--- /dev/null
+++ b/faq/more-info.php
@@ -0,0 +1,44 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Getting more information", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="licensing.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="questions.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="more-info"></a>Chapter 17. Getting more information</h2>
+<p class="qandaset"><dl><dt>17.1. <a href="more-info.php#idm140487997036624">Where is the TDE homepage?</a></dt><dt>17.2. <a href="more-info.php#idm140487996989632">Is there a TDE mailing list?</a></dt><dt>17.3. <a href="more-info.php#idm140487996975568">How do I subscribe/unsubscribe to these lists?</a></dt><dt>17.4. <a href="more-info.php#idm140487996971856">Is there a mailing list archive?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997036624"></a><a name="idm140487997036304"></a><b>17.1.</b></td><td align="left" valign="top"><p>Where is the TDE homepage?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The TDE homepage is located at <a href="http://www.trinitydesktop.org/" target="_top">http://www.trinitydesktop.org/</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996989632"></a><a name="mailing-lists"></a><b>17.2.</b></td><td align="left" valign="top"><p>Is there a TDE mailing list?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There are several TDE mailing lists. Each focuses on a different
+
+aspect of TDE. Some are for developers, so they are not
+
+discussed in detail. Some of the more important lists that users
+
+might be interested in are:</p>
+<p class="variablelist"><dl><dt><a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">tde-users</a></dt><dd><p>For general discussion, users helping each other.</p></dd><dt><a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">tde-announce</a></dt><dd><p>Announcements of TDE news</p></dd><dt><a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">tde-devel</a></dt><dd><p>For developers, artists, documentation writers.</p></dd></dl><p>For the complete list of mailing lists available, please refer
+
+to <a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">http://www.trinitydesktop.org/mailinglist.php</a>.</p><p>Please note that it is not a good idea to ask questions that are
+
+already answered in this FAQ.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996975568"></a><a name="subscribe"></a><b>17.3.</b></td><td align="left" valign="top"><p>How do I subscribe/unsubscribe to these lists?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>To subscribe, follow the directions here:
+
+<a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">Official Mailing Lists</a>
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996971856"></a><a name="idm140487996971536"></a><b>17.4.</b></td><td align="left" valign="top"><p>Is there a mailing list archive?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes, each list has a searchable archive:
+
+
+
+
+<p class="variablelist"><dl><dt><a href="http://trinity-users.pearsoncomputing.net/" target="_top">tde-users</a></dt><dd><p>General discussion archives.</p></dd><dt><a href="http://trinity-announce.pearsoncomputing.net/" target="_top">tde-announce</a></dt><dd><p>Announcement archives.</p></dd><dt><a href="http://trinity-devel.pearsoncomputing.net/" target="_top">tde-devel</a></dt><dd><p>Developers, artists, documentation writer archives.</p></dd></dl>
+
+
+
+</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="licensing.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="questions.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Qt and Licensing questions</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Asking Questions</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/non-tde-apps.php b/faq/non-tde-apps.php
new file mode 100644
index 0000000..a4c55e6
--- /dev/null
+++ b/faq/non-tde-apps.php
@@ -0,0 +1,76 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("TDE with non-TDE applications", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="sound.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="tips.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="non-tde-apps"></a>Chapter 13. TDE with non-TDE applications</h2>
+<p class="qandaset"><dl><dt>13.1. <a href="non-tde-apps.php#idm140487997458656">My non-TDE applications like Emacs and
+
+kterm are running amok with strange
+
+colors!</a></dt><dt>13.2. <a href="non-tde-apps.php#idm140487997384896">How can I set my default web browser to be something other
+
+than Konqueror?</a></dt><dt>13.3. <a href="non-tde-apps.php#idm140487997377232">How can I configure the style and fonts of GTK
+
+applications within TDE ?
+
+</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997458656"></a><a name="idm140487997458336"></a><b>13.1.</b></td><td align="left" valign="top"><p>My non-TDE applications like Emacs and
+
+kterm are running amok with strange
+
+colors!</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Start the TDE Control Center and in
+
+Appearance &amp; Themes-&gt;
+
+Colors, uncheck the "Apply colors to
+
+non-TDE applications" checkbox, and click
+
+Apply.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997384896"></a><a name="idm140487997384576"></a><b>13.2.</b></td><td align="left" valign="top"><p>How can I set my default web browser to be something other
+
+than Konqueror?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Open the KDE Control Center and
+
+navigate to the TDE Components-&gt;Component
+
+Chooser panel. Select Web
+
+Browser from the list on the left, then select Open
+
+http and https URLs in the following browser: and type in the
+
+name of the browser (e.g. mozilla,
+
+firefox, opera, etc.)
+
+in the textbox.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997377232"></a><a name="idm140487997376912"></a><b>13.3.</b></td><td align="left" valign="top"><p>How can I configure the style and fonts of GTK
+
+applications within TDE ?
+
+</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+Install the qt-gtk-engine package, which is available as part of TDE. This
+
+theme engine makes GTK applications look like your TDE widget style
+
+by calling functions from Qt instead of drawing the styles itself. Once
+
+the theme engine has been installed, there will be a KDE Control Center module
+
+under Appearance &amp; Themes-&gt;GTK
+
+Styles and Fonts.
+
+</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="sound.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="tips.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Troubleshooting sound problems</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Useful tips</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/panel.php b/faq/panel.php
new file mode 100644
index 0000000..20580cc
--- /dev/null
+++ b/faq/panel.php
@@ -0,0 +1,153 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("The panel", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="install.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="desktop.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="panel"></a>Chapter 5. The panel</h2>
+<p class="qandaset"><dl><dt>5.1. <a href="panel.php#idm140487998474896">How do I add applications to the TDE panel (Kicker)?</a></dt><dt>5.2. <a href="panel.php#idm140487998427712">How do I change the menu T button of
+
+the panel to another picture?</a></dt><dt>5.3. <a href="panel.php#idm140487998424784">After updating TDE, my TDE menu appears to be empty! How can I get my menu back?
+
+</a></dt><dt>5.4. <a href="panel.php#idm140487998418640">My desktop panel has disappeared. How can I get it
+
+back?</a></dt><dt>5.5. <a href="panel.php#idm140487998408432">How can I start an application minimized to the system
+
+tray?</a></dt><dt>5.6. <a href="panel.php#idm140487998400736">How do I use the Windows key to open the TDE menu?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487998474896"></a><a name="idm140487998474576"></a><b>5.1.</b></td><td align="left" valign="top"><p>How do I add applications to the TDE panel (Kicker)?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There are several ways to add an application to the panel.
+
+The easiest is to right-click on the panel, and from the context
+
+menu that appears, select Add Application to
+
+Panel.</p><p>For more ways of adding buttons to the panel, refer to the
+
+Kicker Handbook.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998427712"></a><a name="idm140487998427456"></a><b>5.2.</b></td><td align="left" valign="top"><p>How do I change the menu T button of
+
+the panel to another picture?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The simplest way is to right-click on the panel, from the context menu
+
+select Configure Panel, from the icon list on the left side,
+
+select Menus, then inside the TDE Menu grouping, select the TDE Menu button icon.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998424784"></a><a name="idm140487998424528"></a><b>5.3.</b></td><td align="left" valign="top"><p>After updating TDE, my TDE menu appears to be empty! How can I get my menu back?
+
+</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+User modifications to the TDE menu are stored in
+
+<code class="filename">$<code class="envar">HOME</code>/.config/menus/applications-tdemenuedit.menu</code>.
+
+Try moving this file out of the way and then issuing the
+
+command <strong class="userinput"><code><strong class="command">tdebuildsycoca</strong>
+
+<code class="option">--noincremental</code></code></strong>. This should restore you to the
+
+default system menus. If that is the case you'll have to recreate your customized menu.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998418640"></a><a name="idm140487998417888"></a><b>5.4.</b></td><td align="left" valign="top"><p>My desktop panel has disappeared. How can I get it
+
+back?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>The panel disappearing is usually due to a crash. This might be
+
+caused by loading an applet that has a fatal bug or a bad installation
+
+of TDE and/or the panel.</p><p>The easiest way to get the panel back is to launch the
+
+Run Command window by pressing <strong class="keycap">Alt</strong>+<strong class="keycap">F2</strong> and entering
+
+<strong class="userinput"><code><strong class="command">kicker</strong></code></strong>, and then pressing the
+
+OK button.</p><p>If the panel continues to disappear, you may wish to either
+
+remove or edit by hand your
+
+<code class="filename">$<code class="envar">TDEHOME</code>/share/config/kickerrc</code>
+
+file, where <code class="filename">$<code class="envar">TDEHOME</code></code> is usually
+
+<code class="filename">~/.trinity</code>. If you choose to edit
+
+by hand, start by removing the applet entry groups.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998408432"></a><a name="idm140487998407600"></a><b>5.5.</b></td><td align="left" valign="top"><p>How can I start an application minimized to the system
+
+tray?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Use <strong class="command">ksystraycmd</strong>. For example, to start a Konsole hidden
+
+in the system tray, run <strong class="userinput"><code><strong class="command">ksystraycmd </strong>
+
+<code class="option">--hidden</code> <strong class="command">konsole</strong></code></strong>. For
+
+more information about <strong class="command">ksystraycmd</strong>, see the section
+
+Advanced Window Management in the TDE
+
+User Guide.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998400736"></a><a name="idm140487998400416"></a><b>5.6.</b></td><td align="left" valign="top"><p>How do I use the Windows key to open the TDE menu?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Previous versions of TDE provided a trick to allow you to
+
+use the Windows key both as a modifier (so you could have shortcuts
+
+like Win+<strong class="keycap">R</strong>), and as a regular key (so that pressing
+
+Win on its own could open the TDE menu). This feature
+
+was removed for reasons of usability and accessibility, as well as
+
+keeping the code clean. For current versions of TDE, you have two
+
+options: either use a different shortcut to open the TDE menu (the
+
+default is <strong class="keycap">Alt</strong>+<strong class="keycap">F1</strong>), or remap the Win key to be a regular
+
+key, rather than a modifier.</p><p>If you choose to do the second, here's one way:
+
+
+
+
+<p class="orderedlist"><ol type="1"><li><p>Find the keycode for your Win key
+
+using <strong class="command">xev</strong>: Run the command
+
+<strong class="userinput"><code><strong class="command">xev</strong></code></strong> in a Konsole, and
+
+press the Win key. Look in the output of
+
+<strong class="command">xev</strong> for
+
+<code class="computeroutput">keycode <em class="replaceable"><code>n</code></em></code>,
+
+where <em class="replaceable"><code>n</code></em> is the keycode of the
+
+Win key.</p></li><li><p>Use <strong class="command">xmodmap</strong> to remap the
+
+Win key. An appropriate command is <strong class="userinput"><code><strong class="command">xmodmap
+
+<code class="option">-e</code> 'keycode
+
+<em class="replaceable"><code>n</code></em>=Menu'</strong></code></strong>.</p></li><li><p>In the KDE Control Center, go to
+
+Regional &amp;
+
+Accessibility-&gt;Keyboard Shortcuts and set the shortcut for Popup Launch
+
+Menu to the Win key. You should now be
+
+able to popup the TDE menu by pressing the Win key.</p></li><li><p>One more step is required to save the changes across
+
+settings: Create a file <code class="filename">~/.trinity/env/win-key.sh</code>
+
+(create the directory if it doesn't exist), and add the
+
+<strong class="command">xmodmap</strong> command you used previously to it. The
+
+change should now be applied every time you start TDE.</p></li></ol>
+
+</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="install.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="desktop.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Installation instructions</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">The desktop</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/questions.php b/faq/questions.php
new file mode 100644
index 0000000..c56a866
--- /dev/null
+++ b/faq/questions.php
@@ -0,0 +1,156 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Asking Questions", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="more-info.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="contribute.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="questions"></a>Chapter 18. Asking Questions</h2><p>To get an appropriate answer to questions requires asking a clear
+
+question in a manner that motivates people to help. Writing questions that
+
+appear to be rude, lazy, or uses bad or unclear language likely will result
+
+in your question being ignored.</p>
+<p class="qandaset"><dl><dt>18.1. <a href="questions.php#idm140487996996016">What do I do before I ask?</a></dt><dt>18.2. <a href="questions.php#idm140487996913792">Where do I ask?</a></dt><dt>18.3. <a href="questions.php#idm140487996909360">How do I ask?</a></dt><dt>18.4. <a href="questions.php#idm140487996896592">What do I do when told to look elsewhere?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487996996016"></a><a name="idm140487996995696"></a><b>18.1.</b></td><td align="left" valign="top"><p>What do I do before I ask?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Read the documentation and FAQ for the application. There is
+
+a wealth of TDE documentation availible both in the help center and
+
+online. A lot of time and effort has gone into this documentation, and
+
+often the answer to your question is there. The general TDE userguide
+
+can be found by typing <strong class="userinput"><code><strong class="command">help:/khelpcenter/userguide</strong></code></strong>
+
+into the Konqueror address bar or <strong class="userinput"><code><strong class="command">
+
+khelpcenter help:/khelpcenter/userguide with the minicli</strong></code></strong>.</p><p>Search the web: Usually searching for a specific error message or
+
+searching mailing list archives will find a solution.</p><p>Try it and see! Look through all the application options, read the
+
+What's this? and tooltips for the ones you're not sure about. If you're
+
+really unsure about an option save your data and then try. As long as you
+
+use common sense you are unlikely to break anything by experimenting.</p><p>Don't be lazy. If you show the people who you are asking
+
+that you are able to troubleshoot and research in a logical manner, you're
+
+showing them you're a reasonable person who is worth their time to
+
+help. It's your problem and not theirs so the legwork is yours to do. Save
+
+your helpers as much time as you can.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996913792"></a><a name="idm140487996913472"></a><b>18.2.</b></td><td align="left" valign="top"><p>Where do I ask?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Usually the best place to ask a question is on the
+
+IRC channels and mailing lists devoted to user
+
+questions. Don't post simple questions about using TDE to the devel
+
+channels and mailing lists, these are for technical discussions. Some good
+
+places are chat.freenode.net, channel: #trinity-desktop, and the TDE <a href="http://www.trinitydesktop.org/mailinglist.php" target="_top">mailing
+
+lists</a>.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996909360"></a><a name="idm140487996909040"></a><b>18.3.</b></td><td align="left" valign="top"><p>How do I ask?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Try to word your questions in a manner that gives the most
+
+information possible and is polite and courteous. Don't ask to ask, just
+
+ask!</p><p>Q: TDE sucks, it's slow</p><p>This is not a question that is likely to get you a useful answer. It does
+
+not give any useful information about troubleshooting the problem, and it
+
+starts out attacking the software in a way that isn't productive.</p><p>Q: Since updating TDE on Slackware Linux using sources, I have
+
+noticed it's being really slow sometimes
+
+applications take up to 20 seconds to launch. I am using the same user
+
+configuration as I had with the previous version. I have tried as a new
+
+user. I can't find anything about this on the mailing lists or by a web
+
+search. Could anyone point me to some information that could help?</p><p>This question is polite, contains information to help people
+
+troubleshoot the problem and shows your helpers what avenues you have
+
+already tried.</p><p>Don't presume automatically that the problem is the fault of
+
+TDE. Otherwise you likely will annoy people.</p><p>Use clear language with correct spelling. Watch out for any
+
+ambiguities and make sure you think about what you say before you write
+
+it. If you are asked for clarification, give it as best you can. TDE is a
+
+project where many of the users and developers are not native english
+
+speakers and if you don't use correct english, misunderstandings might
+
+ensue. Be patient. Use the language appropriate to the channel or mailing list you are
+
+in if you don't, people who might have been able to help you might
+
+ignore your message because it is not in a language they understand.</p><p>Include all information that could be relevant, even when you're not
+
+sure. Have you updated other software or hardware on your system,
+
+particularly system libraries or a new kernel? These things could affect how
+
+TDE performs. Even when you cannot see a connecting cause, someone else might.</p><p>Don't paraphrase error messages. Paste in the exact error, and if it's
+
+more than a line or two don't paste them directly into an
+
+IRC channel. Use an online paste service. If you
+
+must type the messages by hand, be sure you are accurate. When you provide
+
+faulty information, your helpers cannot help you as easily.</p><p>Follow through on your solution! Tell people when the solution worked, or when you have
+
+solved the problem yourself. This helps everybody involved know when
+
+solutions work and helps other users who might be searching for a similar
+
+solution to the problem.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487996896592"></a><a name="idm140487996896272"></a><b>18.4.</b></td><td align="left" valign="top"><p>What do I do when told to look elsewhere?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Possibly you have not followed the above
+
+advice. You've not done your research, and the solution probably is one the
+
+helper knows very well to be easy to find. When provided a web link to an
+
+FAQ or documentation don't say, No, I don't
+
+want to have to read this I want you to just tell me. That response
+
+is considered bad manners. People who don't provide effort to learn often
+
+find others have little incentive to help.</p></td></tr></tbody></table><p>Use common courtesy. TDE users and developers volunteer their time
+
+out of an already very busy schedule, and like to
+
+know that you are appreciating they are helping you for free. Be
+
+polite, say please and thank you, be constructive, and try to be pleasant and
+
+friendly.</p><p> Does this seem like a lot of trouble to ask a question? If you want
+
+to be able to feel that people owe you an answer or support, then you're
+
+quite welcome to pay for commercial support from companies that support
+
+TDE on Unix-like platforms. If you don't want to pay money, then pay the
+
+people who do this for free with your politeness and appreciation. :-)</p><p>If you think the answer to your question should be included in the
+
+TDE FAQ please feel free to submit any patches or suggestions to the
+
+TDE FAQ Maintainer, at <code class="email">&lt;<a href="mailto:trinity-devel@lists.pearsoncomputing.net">trinity-devel@lists.pearsoncomputing.net</a>&gt;</code></p><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="more-info.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="contribute.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">Getting more information</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Contributing</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/sound.php b/faq/sound.php
new file mode 100644
index 0000000..306e5b5
--- /dev/null
+++ b/faq/sound.php
@@ -0,0 +1,72 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Troubleshooting sound problems", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="applications.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="non-tde-apps.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="sound"></a>Chapter 12. Troubleshooting sound problems</h2><p>TDE uses the aRts sound system which is complex and powerful,
+
+making it difficult for some users to troubleshoot when things go
+
+wrong. Here are some tips to help you diagnose what it's doing when your
+
+sound misbehaves :</p>
+<p class="qandaset"><dl><dt>12.1. <a href="sound.php#idm140487997483664">How can I troubleshoot sound related problems in TDE?</a></dt><dt>12.2. <a href="sound.php#idm140487997424576">
+
+I've updated to the latest version of TDE keeping my previous configuration and my system sounds don't work anymore!</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997483664"></a><a name="idm140487997483344"></a><b>12.1.</b></td><td align="left" valign="top"><p>How can I troubleshoot sound related problems in TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p> To check that sound is working independently of aRts, make
+
+sure that <strong class="command">artsd</strong> isn't running and then try playing sound
+
+through XMMS or another multimedia application
+
+that isn't a part of TDE. If that application doesn't play sound, then
+
+your general sound setup is probably broken and it's not a TDE
+
+problem.</p><p>Try playing sound with
+
+<strong class="userinput"><code><strong class="command">artsplay</strong><code class="option"><em class="replaceable"><code>
+
+/path/to/some/soundfile</code></em></code></code></strong>. Try various
+
+formats, ogg, mp3 and wav. Any error messages there might be useful in
+
+pointing you in the right direction.</p><p>Try setting the aRts output method to OSS. In the
+
+KDE Control Center go to Sound &amp; Multimedia-&gt;Sound System. On the
+
+Hardware tab, under Select the audio
+
+device choose Open Sound System. If you are
+
+running alsa this will use the OSS
+
+emulation, which may give better or worse results.</p><p>Running <strong class="userinput"><code><strong class="command">artsd</strong><code class="option"> -l
+
+0</code></code></strong> from a terminal will give you a lot of debug output,
+
+some of which might help you to diagnose the problem. Trying this in
+
+conjunction with using <strong class="command">artsplay</strong> in a second terminal can give a wealth of information. If an artsd instance is already running, exit it with <strong class="userinput"><code><strong class="command">artsshell
+
+</strong><em class="parameter"><code>terminate</code></em></code></strong></p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997424576"></a><a name="idm140487997424256"></a><b>12.2.</b></td><td align="left" valign="top"><p>
+
+I've updated to the latest version of TDE keeping my previous configuration and my system sounds don't work anymore!</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+Assuming you've installed aRts correctly and you still have the codecs installed your previous TDE installation needed, possibly there is a problem with your <code class="filename">knotifyrc</code>. To confirm this, try temporarily
+
+renaming the file. A new one will be created when starting TDE.
+
+</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="applications.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="non-tde-apps.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">TDE applications</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">TDE with non-TDE applications</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/tips.php b/faq/tips.php
new file mode 100644
index 0000000..fa7b52f
--- /dev/null
+++ b/faq/tips.php
@@ -0,0 +1,96 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Useful tips", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="non-tde-apps.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="misc.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="tips"></a>Chapter 14. Useful tips</h2>
+<p class="qandaset"><dl><dt>14.1. <a href="tips.php#idm140487997402016">Reading documentation in TDE</a></dt><dt>14.2. <a href="tips.php#idm140487997322000">Move or resize windows quickly</a></dt><dt>14.3. <a href="tips.php#idm140487997314000">Killing windows in TDE</a></dt><dt>14.4. <a href="tips.php#idm140487997307472">What if something is so wrong that I can't even get the skull
+
+&amp; crossbones cursor? How do I get out of a total lockup?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487997402016"></a><a name="idm140487997401696"></a><b>14.1.</b></td><td align="left" valign="top"><p>Reading documentation in TDE</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Pop up the Run Command window (<strong class="keycap">Alt</strong>+<strong class="keycap">F2</strong> by
+
+default) and type:
+
+
+<p class="itemizedlist"><ul type="disc"><li><p><strong class="command">man:<em class="replaceable"><code>command</code></em></strong> for man pages. It
+
+even unpacks on the fly if the man pages are gzipped.</p></li><li><p><strong class="command">info:<em class="replaceable"><code>command</code></em></strong> for info
+
+pages.</p></li><li><p><strong class="command">help:<em class="replaceable"><code>kdeappname</code></em></strong> for TDE
+
+application help pages.</p></li></ul>
+
+</p><p>You can enter any of these in the Location text
+
+box in Konqueror.</p><p>Uou can use the TDE Help Center. Start the TDE Help Center by selecting Help from the TDE menu. Once the TDE Help Center has loaded, the window on the left will contain an entry called
+
+Unix manual pages. Select that entry to browse through all the installed manual pages on your
+
+system.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997322000"></a><a name="idm140487997321680"></a><b>14.2.</b></td><td align="left" valign="top"><p>Move or resize windows quickly</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>To move a window, use <strong class="keycap">Alt</strong>+left mouse
+
+button. <strong class="keycap">Alt</strong>+right mouse
+
+button will resize the window. Last but not least, <strong class="keycap">Alt</strong>+middle mouse button
+
+raises/lowers the window. The TDE Control Center
+
+allows you to change these mouse bindings. Please refer to
+
+"Windows, How To Work Them" in the Trinity user guide for more information.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997314000"></a><a name="idm140487997313680"></a><b>14.3.</b></td><td align="left" valign="top"><p>Killing windows in TDE</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>There is a standard keybinding (<strong class="keycap">Ctrl</strong>+<strong class="keycap">Alt</strong>+<strong class="keycap">Esc</strong>)
+
+that changes the mouse pointer to a skull &amp; crossbones cursor. Click that cursor on a
+
+window to kill it. The keybindings are viewable/changeable from the
+
+TDE Control Center.
+
+
+
+
+<p class="caution" ><h3 class="title">Caution</h3><p>Using this option kills the program forcibly. Data might be lost,
+
+and some processes related to the program might remain active. Use only as a
+
+last resort.</p>
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997307472"></a><a name="idm140487997307152"></a><b>14.4.</b></td><td align="left" valign="top"><p>What if something is so wrong that I can't even get the skull
+
+&amp; crossbones cursor? How do I get out of a total lockup?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>These kind of locks tend to occur when an application locks up
+
+while it has a so called mouse/keyboard grab. When that
+
+happens you can try to select a virtual text console with <strong class="keycap">Ctrl</strong>+<strong class="keycap">Alt</strong>+<strong class="keycap">F1</strong> and login. With the
+
+following command you will get a list of all running processes:</p><pre class="screen"><strong class="userinput"><code> <strong class="command">ps</strong> <code class="option">-aux</code> | <strong class="command">more</strong></code></strong></pre><p>By killing the process that has the mousegrab, your desktop will
+
+come to life again. Unfortunately you can't see which process that is,
+
+so you will have to find out through trial and error. To kill a process
+
+use:</p><pre class="screen"><strong class="userinput"><code> <strong class="command">kill</strong> <code class="option">-9</code> <em class="replaceable"><code>pid</code></em></code></strong></pre><p>Here <em class="replaceable"><code>pid</code></em> is the process id of the
+
+process, which is the first number on each line reported by
+
+<strong class="command">ps</strong> <code class="option">-aux</code>.</p><p>You can switch back to the desktop with <strong class="keycap">Ctrl</strong>+<strong class="keycap">Alt</strong>+<strong class="keycap">F7</strong> (or
+
+<strong class="keycap">F8</strong> through <strong class="keycap">F9</strong> depending on your
+
+operating system) to see if things work again. When you press
+
+<strong class="keycap">Alt</strong>+<strong class="keycap">Tab</strong> you should get a
+
+response from the window manager. If not, you need to get back to the
+
+text console and try to kill another process.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="non-tde-apps.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="misc.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">TDE with non-TDE applications</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Miscellaneous questions</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/webbrowser.php b/faq/webbrowser.php
new file mode 100644
index 0000000..62f8cd4
--- /dev/null
+++ b/faq/webbrowser.php
@@ -0,0 +1,201 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("Webbrowsing with Konqueror", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="filemanager.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="configure.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="webbrowser"></a>Chapter 9. Webbrowsing with Konqueror</h2><p>Konqueror is TDE's default web browser. Please refer to
+
+Konqueror Handbook for detailed information.</p>
+<p class="qandaset"><dl><dt>9.1. <a href="webbrowser.php#idm140487998053904">Where does the name Konqueror come from?</a></dt><dt>9.2. <a href="webbrowser.php#idm140487998008672">Can I run Konqueror without running TDE?</a></dt><dt>9.3. <a href="webbrowser.php#idm140487998001952">Why doesn't Konqueror show the contents of an image's ALT attribute in a tooltip?</a></dt><dt>9.4. <a href="webbrowser.php#idm140487997995056">How do I use Konqueror as a web browser with a proxy?</a></dt><dt>9.5. <a href="webbrowser.php#idm140487997987568">How do I import bookmarks from another browser into Konqueror ?</a></dt><dt>9.6. <a href="webbrowser.php#idm140487997980864">How can I make Konqueror only show certain bookmarks in the bookmarks toolbar?</a></dt><dt>9.7. <a href="webbrowser.php#idm140487997972544">How do I fool a site into believing Konqueror is Netscape or
+
+some other browser?</a></dt><dt>9.8. <a href="webbrowser.php#idm140487997965776">Konqueror is taking a really long time to load web pages -- mdash; what
+
+could cause this?</a></dt><dt>9.9. <a href="webbrowser.php#idm140487997960464">How do I configure Konqueror to run Java applets?</a></dt><dt>9.10. <a href="webbrowser.php#idm140487997954048">How do I block unrequested popup windows in Konqueror?</a></dt><dt>9.11. <a href="webbrowser.php#idm140487997946464">Why doesn't my banking site work with Konqueror? It pops up a new
+
+window with the login screen in other browsers, but not in
+
+Konqueror.</a></dt><dt>9.12. <a href="webbrowser.php#idm140487997940960">Can Konqueror use user-specified stylesheets, like those in the
+
+Firefox adblock extension?</a></dt><dt>9.13. <a href="webbrowser.php#idm140487997933552">
+
+Why does Konqueror display a plain grey square when I try to view flash animations, even though the flash plugin is installed?
+
+</a></dt><dt>9.14. <a href="webbrowser.php#idm140487997930384">When I try to open a web page with Konqueror, I get the
+
+message: There appears to be a configuration error. You have
+
+associated Konqueror with text/html, but it cannot handle this file
+
+type.</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487998053904"></a><a name="idm140487998010848"></a><b>9.1.</b></td><td align="left" valign="top"><p>Where does the name Konqueror come from?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>It's a word play on the other browsers' names. After the Navigator
+
+and the Explorer comes the Conqueror.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998008672"></a><a name="idm140487998008352"></a><b>9.2.</b></td><td align="left" valign="top"><p>Can I run Konqueror without running TDE?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes. Install Qt, tdelibs, and tdebase. From your window manager launch Konqueror. It should work just fine, but if it doesn't (TDE developers don't often test that use case), report the problem to <a href="http://bugs.pearsoncomputing.net/" target="_top">http://bugs.pearsoncomputing.net/</a>. Before reporting a bug, try running "tdeinit" before running Konqueror. This is of course the same for any other TDE application running in
+
+a non TDE setup.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998001952"></a><a name="idm140487998001632"></a><b>9.3.</b></td><td align="left" valign="top"><p>Why doesn't Konqueror show the contents of an image's <code class="sgmltag-attribute">ALT</code> attribute in a tooltip?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+There is no standard that states the <code class="sgmltag-attribute">ALT</code> attribute should appear as a tooltip. The specification calls for <code class="sgmltag-attribute">ALT</code> to be displayed in place of the image, as in text-mode only browsers such at lynx or w3m. Abusing the <code class="sgmltag-attribute">ALT</code> attribute is bad for accessibility. Tooltips are supposed to come from the <code class="sgmltag-attribute">TITLE</code> attribute and this is implemented in Konqueror.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997995056"></a><a name="idm140487997994736"></a><b>9.4.</b></td><td align="left" valign="top"><p>How do I use Konqueror as a web browser with a proxy?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Konqueror can be used with HTTP and FTP proxies. To set
+
+up the proxy server in Konqueror, select
+
+Settings-&gt;Configure
+
+Konqueror... from the Konqueror menu and
+
+select the Proxy option.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997987568"></a><a name="nsbookmark"></a><b>9.5.</b></td><td align="left" valign="top"><p>How do I import bookmarks from another browser into Konqueror ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>To import bookmarks from another browser into Konqueror, from the menu
+
+bar select Bookmarks, then select Edit Bookmarks.
+
+In the Bookmark Editor, select
+
+File then select Import. Select
+
+the browser from which you would like to import bookmarks. In the Open dialog,
+
+navigate to the location of the folder or file your bookmarks are
+
+located.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997980864"></a><a name="idm140487997980544"></a><b>9.6.</b></td><td align="left" valign="top"><p>How can I make Konqueror only show certain bookmarks in the bookmarks toolbar?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>In Konqueror select Settings-&gt;Configure
+
+Konqueror.... Then select Web Behaviour from the icon list. Under the Bookmarks heading, place a check in the box next to Show only marked bookmarks in bookmark toolbar.</p><p>In the Bookmark Editor an option to Show in Toolbar appears on clicking with the right mouse button on any bookmark entry or in the Edit menu when the entry is highlighted. Folders can also be shown in the bookmarks toolbar in much the same way.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997972544"></a><a name="idm140487997972224"></a><b>9.7.</b></td><td align="left" valign="top"><p>How do I fool a site into believing Konqueror is Netscape or
+
+some other browser?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>That is called setting the user agent. In Konqueror, select
+
+Settings-&gt;Configure
+
+Konqueror.... In the icon list, select
+
+Browser Identification. Default
+
+and site-specific browser identifications can be set there.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997965776"></a><a name="idm140487997965456"></a><b>9.8.</b></td><td align="left" valign="top"><p>Konqueror is taking a really long time to load web pages -- mdash; what
+
+could cause this?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Quite often Konqueror loading web pages slowly is caused by
+
+DNS servers with broken IPV6
+
+support. Adding the following to <code class="filename">/etc/profile</code> or any
+
+other script that is sourced on login should solve this problem:
+
+<pre class="screen">
+
+export TDE_NO_IPV6=true
+
+</pre>
+
+for bourne compatible shells, and for C-style shells:
+
+<pre class="screen">
+
+setenv TDE_NO_IPV6 true
+
+</pre>
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997960464"></a><a name="idm140487997960144"></a><b>9.9.</b></td><td align="left" valign="top"><p>How do I configure Konqueror to run Java applets?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>From Konqueror's menubar choose
+
+Settings-&gt;Configure
+
+Konqueror....
+
+From the icon list select Java &amp; Javascript. Set the
+
+Path to Java executable.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997954048"></a><a name="idm140487997953728"></a><b>9.10.</b></td><td align="left" valign="top"><p>How do I block unrequested popup windows in Konqueror?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Konqueror provides a 'smart' policy for JavaScript popups. From the
+
+Konqueror main window, selectSettings-&gt;Configure
+
+Konqueror.... Then
+
+Java &amp; JavaScript. On the
+
+JavaScript tab, under Global JavaScript
+
+Policies, set the radio button beside Open new
+
+windows: to Smart.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997946464"></a><a name="idm140487997946144"></a><b>9.11.</b></td><td align="left" valign="top"><p>Why doesn't my banking site work with Konqueror? It pops up a new
+
+window with the login screen in other browsers, but not in
+
+Konqueror.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+Make sure you have Javascript enabled, and the default JavaScript web popups
+
+policy set to Ask or Allow. The
+
+Smart policy is not always sufficient for some banks.
+
+Many banks also require Java support.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997940960"></a><a name="idm140487997940640"></a><b>9.12.</b></td><td align="left" valign="top"><p>Can Konqueror use user-specified stylesheets, like those in the
+
+Firefox adblock extension?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes, you can set Konqueror to use any kind of valid
+
+css stylesheet to filter webcontent or improve accessibility.
+
+From the Konqueror main window simply click
+
+Settings-&gt;Configure
+
+Konqueror... and select
+
+Stylesheets. Set the radio button to
+
+Use user-defined stylesheet and browse to where the
+
+stylesheet you want to use is located. Alternately, select
+
+Use accessibility stylesheet defined in "Customize"
+
+tab and then set your own options.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997933552"></a><a name="idm140487997933232"></a><b>9.13.</b></td><td align="left" valign="top"><p>
+
+Why does Konqueror display a plain grey square when I try to view flash animations, even though the flash plugin is installed?
+
+</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>
+
+Under the latest versions of X.org, having the composite extension loaded can cause problems with the flash plugin. Try disabling the composite extension and see whether normal flash operation is restored.
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487997930384"></a><a name="idm140487997930128"></a><b>9.14.</b></td><td align="left" valign="top"><p>When I try to open a web page with Konqueror, I get the
+
+message: There appears to be a configuration error. You have
+
+associated Konqueror with text/html, but it cannot handle this file
+
+type.</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Make sure the embedding settings for the text/html
+
+MIME type are correct:
+
+
+<p class="orderedlist"><ol type="1"><li><p>In Konqueror, go to
+
+Settings-&gt;Configure
+
+Konqueror.... In the icon list select File
+
+Associations.</p></li><li><p>Open
+
+text-&gt;html in the tree view.</p></li><li><p>Click on the
+
+Embedding tab. Make sure that Left Click
+
+Action is set to Show file in embedded
+
+viewer, and that TDEHTML (tdehtml) is at the top
+
+of Services Preference Order.</p></li></ol>
+
+</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="filemanager.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="configure.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">The File Manager</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">Configuring TDE</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/faq/windowmanager.php b/faq/windowmanager.php
new file mode 100644
index 0000000..4a41cb8
--- /dev/null
+++ b/faq/windowmanager.php
@@ -0,0 +1,94 @@
+<?php
+ include("../tde-head-and-foot.php");
+ doHeader("The window manager", "Documentation", "FAQ", "../");
+?>
+<STYLE>
+ .question {font-weight:bold;}
+ TD {padding-top:10px}
+</STYLE>
+<table width="100%" class="header"><tbody><tr><td align="left" class="navLeft" width="33%"><a accesskey="p" href="desktop.php">Prev</a></td><td align="center" class="navCenter" width="34%"></td><td align="right" class="navRight" width="33%">
+
+ <a accesskey="n" href="filemanager.php">Next</a></td></tr></tbody></table>
+<p class="chapter" lang="en">
+<p class="titlepage">
+<p>
+<p><h2 class="title"><a name="windowmanager"></a>Chapter 7. The window manager</h2><p>The default window manager provided by TDE is the Trinity Window
+
+Manager (TWin). Please refer to
+
+"Windows, How To Work Them" in the Trinity user guide for more information.</p>
+<p class="qandaset"><dl><dt>7.1. <a href="windowmanager.php#idm140487998247152">Are there keyboard shortcuts for TWin operations?</a></dt><dt>7.2. <a href="windowmanager.php#idm140487998242912">Can I define my own set of keyboard shortcuts?</a></dt><dt>7.3. <a href="windowmanager.php#idm140487998238000">When I "iconify" a window, it disappears. Where does it
+
+go?</a></dt><dt>7.4. <a href="windowmanager.php#idm140487998228224">How do I maximize windows only vertically or horizontally?</a></dt><dt>7.5. <a href="windowmanager.php#idm140487998222144">What is shading a window?</a></dt><dt>7.6. <a href="windowmanager.php#idm140487998218432">How can I start an application with special window options, like
+
+maximized/minimized/to stay on top?</a></dt></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"><tbody><tr class="question"><td align="left" valign="top"><a name="idm140487998247152"></a><a name="idm140487998246896"></a><b>7.1.</b></td><td align="left" valign="top"><p>Are there keyboard shortcuts for TWin operations?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes. Please use to the Trinity Control Center (KControl),
+
+Regional &amp; Accessibility-&gt;
+
+Keyboard Shortcuts, for the
+
+list of available shortcuts.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998242912"></a><a name="idm140487998242592"></a><b>7.2.</b></td><td align="left" valign="top"><p>Can I define my own set of keyboard shortcuts?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Yes. Launch the
+
+TDE Control Center and select
+
+Regional &amp; Accessibility-&gt;Keyboard Shortcuts to
+
+configure window manager bindings like maximizing windows, etc..
+
+</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998238000"></a><a name="idm140487998237712"></a><b>7.3.</b></td><td align="left" valign="top"><p>When I "iconify" a window, it disappears. Where does it
+
+go?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>With many X Window System GUIs, the minimize button (a little dot) will
+
+erase the window that the program is running in and create, instead,
+
+an icon on the desktop. TDE does not do this. Instead, when a
+
+window is iconified it is simply hidden (but the program is still
+
+running).</p><p>There are a few ways to access disappeared windows:</p>
+<p class="itemizedlist"><ul type="disc"><li><p>If you are running the taskbar part of Kicker,
+
+you can choose to have a list of tasks displayed on your desktop.
+
+Iconified tasks will have their names displayed in gray.</p></li><li><p>If you click the middle mouse button on the root window (i.e.,
+
+the background of the desktop), TWin will give you a list
+
+of all available tasks.</p></li></ul></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998228224"></a><a name="idm140487998227904"></a><b>7.4.</b></td><td align="left" valign="top"><p>How do I maximize windows only vertically or horizontally?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Provided your window is not already maximized, clicking on the
+
+maximize button with the left mouse button/middle mouse button/right mouse button will
+
+maximize fully/vertically/horizontally respectively.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998222144"></a><a name="idm140487998221888"></a><b>7.5.</b></td><td align="left" valign="top"><p>What is shading a window?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>By shading a window we mean rolling up the window leaving just
+
+the title bar visible. You can do this by double clicking on the
+
+window title bar.</p></td></tr><tr class="question"><td align="left" valign="top"><a name="idm140487998218432"></a><a name="idm140487998218176"></a><b>7.6.</b></td><td align="left" valign="top"><p>How can I start an application with special window options, like
+
+maximized/minimized/to stay on top?</p></td></tr><tr class="answer"><td align="left" valign="top"><b></b></td><td align="left" valign="top"><p>Use the <strong class="command">kstart</strong> command. As an example, to
+
+open KCalc with the Stay on Top option, use:
+
+<pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code><strong class="command">kstart</strong> <code class="option">--ontop</code> <code class="option">kcalc</code></code></strong></pre>
+
+</p><p>For maximized windows, use the <code class="option">--maximize</code>
+
+option, for minimized windows, use <code class="option">--iconify</code>. You can
+
+see a full list of <strong class="command">kstart</strong> options with
+
+<strong class="userinput"><code><strong class="command">kstart</strong>
+
+<code class="option">--help-all</code></code></strong>.</p>
+<p class="warning" ><h3 class="title">Warning</h3><p>If you're using <strong class="command">kstart</strong> to start
+
+applications at TDE startup, you should use the
+
+<code class="option">--window</code> option. See the TDE User Guide, section
+
+Advanced Window Management for more information about
+
+this feature.</p></td></tr></tbody></table><table width="100%" class="bottom-nav"><tr><td width="33%" align="left" valign="top" class="navLeft"><a href="desktop.php">Prev</a></td><td width="34%" align="center" valign="top" class="navCenter"><a href="index.php">Home</a></td><td width="33%" align="right" valign="top" class="navRight"><a href="filemanager.php">Next</a></td></tr><tr><td width="33%" align="left" class="navLeft">The desktop</td><td width="34%" align="center" class="navCenter"><a href="index.php">Up</a></td><td width="33%" align="right" class="navRight">The File Manager</td></tr></table>
+<?php
+ doFooter();
+?>
+
diff --git a/favicon.ico b/favicon.ico
new file mode 100755
index 0000000..bdc13a4
--- /dev/null
+++ b/favicon.ico
Binary files differ
diff --git a/features.php b/features.php
new file mode 100644
index 0000000..161fd70
--- /dev/null
+++ b/features.php
@@ -0,0 +1,38 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Features", "Home", "Features");
+?>
+ <ul>
+ <li>A repository of TDE compatible software applications.</li>
+ <li>Traditional panel, task bar, task manager, quick launch.</li>
+ <li>Several text editors, file manager, image viewers, office apps, archive manager.</li>
+ <li style="padding-bottom:1.5ex">The original and improved classic Amarok music player.</li>
+ <li>A comprehensive control center to configure the desktop to each user's preferences.</li>
+ <li>Monitor and Display control center module for system wide single/multi monitor and display configuration.</li>
+ <li>TDE Run dialog supports autocompletion and history-based autocompletion.</li>
+ <li style="padding-bottom:1.5ex">Customizable System Tray icon sizes.</li>
+ <li>Remote Folder Synchronization in Konqueror file manager.</li>
+ <li><a href="http://en.wikipedia.org/wiki/International_Color_Consortium">ICC (International Color Consortium)</a>
+ color profile support.</li>
+ <li>Searchable system menu.</li>
+ <li style="padding-bottom:1.5ex">Kickoff style system menu support.</li>
+ <li>SmartCard support.</li>
+ <li>Supports GTK2/Qt theme engine; tabs, check boxes, menu backgrounds.</li>
+ <li>Optional <a href="http://en.wikipedia.org/wiki/Secure_attention_key">Secure Attention
+ Key</a> to further secure the login and desktop lock dialogs.</li>
+ <li style="padding-bottom:1.5ex">A built-in X11 compositor.</li>
+ <li>Some TDE applications, such as Amarok, detect and use true RGBA (Red Green
+ Blue Alpha) transparency when available.</li>
+ <li>A TDE-specific DBUS notification client for improved integration with
+ common applications such as Firefox and NetworkManager (not dependant on HAL).</li>
+ <li style="padding-bottom:1.5ex">Prevent OpenGL screen savers from locking the display.</li>
+ <li>Flash plugin support in Konqueror.</li>
+ <li>Enhanced Quick Launch.</li>
+ <li style="padding-bottom:1.5ex">Caldav and Carddav support.</li>
+ <li>XDG compliant.</li>
+ <li>Improved stdout/stderr messages to enhance readability in xsession-error log.</li>
+ <li>TQt interface (lays groundwork for selective Qt4 compatibility)</li>
+ </ul>
+<?php
+ doFooter();
+?>
diff --git a/footer.php b/footer.php
new file mode 100644
index 0000000..eea0703
--- /dev/null
+++ b/footer.php
@@ -0,0 +1,22 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ function doFooter(){
+ echo(' <!--end content-->');
+ date_default_timezone_set('UTC'); #else the interpreter whines
+ echo(' <P ID="copyright">&copy; 2011-' . date('Y') . ' Trinity Desktop Project');
+
+?>
+ </DIV>
+ </DIV>
+ </DIV>
+ </DIV>
+ </DIV>
+ </BODY>
+ </HTML>
+
+<?php
+ } #end of doFooter
+?> \ No newline at end of file
diff --git a/globals.php b/globals.php
new file mode 100644
index 0000000..7dd86dc
--- /dev/null
+++ b/globals.php
@@ -0,0 +1,4 @@
+<?php
+ // Defaults
+ $newscollapsedlines = 5;
+?> \ No newline at end of file
diff --git a/handbooks.php b/handbooks.php
new file mode 100644
index 0000000..84c2d39
--- /dev/null
+++ b/handbooks.php
@@ -0,0 +1,18 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Handbooks", "Documentation", "Handbooks");
+?>
+<P>The handbooks are the primary help files provided with Trinity. Browse the most recent versions
+on-line here:
+<P><A HREF="">Welcome to Trinity</A>
+<BR><A HREF="">Trinity Users' Manual</A>
+<BR><A HREF="">Application Manuals</A>
+<BR><A HREF="">Applet Manuals</A>
+<BR><A HREF="">Control Center Modules</A>
+<BR><A HREF="">Ioslaves</A>
+<BR><A HREF="">Konqueror Plugins</A>
+<BR><A HREF="">Tutorials</A>
+
+<?php
+ doFooter();
+?>
diff --git a/header.php b/header.php
new file mode 100644
index 0000000..5ff365f
--- /dev/null
+++ b/header.php
@@ -0,0 +1,120 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ #Outputs the Trinity page header, sidebar, and prefatory matter. $pageTitle is the title of the
+ #page as it will appear in both the top banner and the browser's title bar, and $navCategory
+ #and $navItem point at the sidebar navigation item that are to be highlighted for this page.
+ #If the string "_" is passed for $navItem, the top-level navigation category will be highlighted.
+ #$maindir is the path to the top level site directory. By default, it is empty.
+ function doHeader($pageTitle, $navCategory, $navItem, $maindir = "/"){
+ header('Content-Type: text/html; charset=utf-8');
+
+ $navset = array( #change this array to alter the navigation scheme
+ "Home" => array("_" => $maindir . "index.php",
+ "News" => $maindir . "news.php",
+ "Features" => $maindir . "features.php",
+ "About" => $maindir . "about.php",
+ "Contact" => $maindir . "support.php",
+ "Screenshots" => $maindir . "screenshots.php",
+ ),
+ "Get Trinity" => array("_" => $maindir . "releases.php",
+ "Packages" => $maindir . "releases.php",
+ "LiveCDs" => "https://wiki.trinitydesktop.org/LiveCDs",
+ ),
+ "Documentation" => array("_" => $maindir . "./docs/index.php",
+ "FAQ" => $maindir . "faq/index.php",
+ "Installation" => "https://wiki.trinitydesktop.org/Category:Documentation#Installing_from_a_Package_Manager",
+ "Applications" => $maindir . "applications.php",
+# "Handbooks" => $maindir . "handbooks.php",
+ ),
+ "Bugs" => array("_" => "https://bugs.trinitydesktop.org/buglist.cgi?quicksearch=ALL"),
+ "Wiki" => array("_" => "https://wiki.trinitydesktop.org/"),
+ "Support" => array("_" => $maindir . "support.php",
+ "Wiki" => "https://wiki.trinitydesktop.org/",
+ "Bugs" => "https://bugs.trinitydesktop.org/buglist.cgi?quicksearch=ALL",
+ "Docs" => "https://wiki.trinitydesktop.org/Category:Documentation",
+ "Mailing Lists" => $maindir . "mailinglist.php",
+ "Service Alerts" => $maindir . "servicealerts/",
+ ),
+ "Development" => array("_" => $maindir . "development.php",
+ "GIT" => "http://mirror.git.trinitydesktop.org/cgit/",
+ "Commit History" => "/patches",
+ "Packaging GIT" => "http://mirror.git.trinitydesktop.org/cgit/tde-packaging/",
+ "uLab GIT" => "http://mirror.git.trinitydesktop.org/cgit/ulab/",
+ "Secure GIT" => "https://git.trinitydesktop.org/cgit/",
+ "Nightly Builds" => "https://quickbuild.pearsoncomputing.net/~trinity/+archive/ubuntu/trinity-nightly-builds/",
+ "API Docs" => $maindir . "apidocs.php",
+ "Related Projects" => $maindir . "relatedprojects.php",
+ "Supported RFEs" => $maindir . "crfe/",
+ "Get Involved" => $maindir . "helpwanted.php",
+ "CLAs" => $maindir . "cla/",
+ "TDE Team" => $maindir . "contributors.php",
+ "Donations" => $maindir . "donate.php",
+ ),
+ );
+?>
+<?php
+ echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">";
+ echo "<HTML>";
+ echo "<HEAD>";
+ echo " <TITLE>$pageTitle</TITLE>";
+ echo " <LINK REL=StyleSheet HREF=\"" . $maindir . "mainstyle.css\" TYPE=\"text/css\" MEDIA=\"screen,print\">";
+ if ($navItem == "Screenshots") {
+ echo " <LINK REL=StyleSheet HREF=\"" . $maindir . "screenshots.css\" TYPE=\"text/css\" MEDIA=\"screen,print\">";
+ echo " <LINK REL=StyleSheet HREF=\"" . $maindir . "highslide/highslide.css\" TYPE=\"text/css\" MEDIA=\"screen,print\">";
+ }
+ echo " <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">";
+ echo "</HEAD>";
+?>
+ <BODY>
+ <DIV ID="all-wrapper">
+ <DIV ID="banner">
+ <IMG ALT="" ID="bannerimg" SRC=<?php echo('"' . $maindir . 'media/bannerswoosh.png"')?>>
+ <DIV ID="logowrap">
+ <A HREF="index.php"><IMG ALT="" ID="logo" SRC=<?php echo('"' . $maindir . 'media/tde-logo.png"')?>></A>
+ </DIV>
+ <DIV ID="titlewrap">
+ <H1 ID="title"><?php echo($pageTitle) ?></H1>
+ </DIV>
+<?php
+ if ($navItem != "Donations") {
+ echo "<DIV ID=\"titlenotif\">";
+ echo " <P CLASS=\"notifhead\"><A HREF=\"" . $maindir . "donate.php\">Help Keep TDE Alive - Donate Now!</A>";
+ echo "</DIV>";
+ }
+?>
+ </DIV>
+ <DIV CLASS="equal" ID="main">
+ <DIV CLASS="row">
+ <DIV ID="sidebar">
+ <DIV ID="sidetext">
+ <?php
+ foreach ($navset as $navsectname => $urls){
+ if (($navItem == "_") && ($navsectname == $navCategory)) {
+ echo(" <P CLASS=\"navhead\" ID=\"curpage\"><A HREF=\"" . $urls["_"] . "\">$navsectname</A>\n");
+ }
+ else {
+ echo(" <P CLASS=\"navhead\"><A HREF=\"" . $urls["_"] . "\">$navsectname</A>\n");
+ }
+ foreach ($urls as $navname => $url){
+ if (!($navname == "_")) {
+ if ($navItem == $navname) {
+ echo(" <P CLASS='nav' ID='curpage'><A HREF=\"$url\">$navname</A>\n");
+ }
+ else {
+ echo(" <P CLASS='nav'><A HREF=\"$url\">$navname</A>\n");
+ }
+ }
+ }
+ }
+ ?>
+ </DIV>
+ </DIV>
+ <DIV ID="intermediate">
+ <DIV ID="textblock">
+ <!--Content goes here-->
+<?php
+ } #end of doHeader
+?>
diff --git a/helpwanted.php b/helpwanted.php
new file mode 100644
index 0000000..095c84f
--- /dev/null
+++ b/helpwanted.php
@@ -0,0 +1,42 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity: Help Wanted", "Development", "Get Involved");
+?>
+
+<h2> Getting Involved with Trinity Development</h2>
+
+ <p>
+ So you think you have what it takes to become a Trinity
+ Desktop Developer? Great! Getting started with a new project
+ can be intimidating, but here at the Trinity project we love new
+ developers! If you have any area of expertise that you think
+ could be helpful, we encourage you to speak up. The first
+ thing to do is poke around the website, the wiki, and the
+ mailing list logs in order to get acquainted with the project.
+ Emailing the developers mailing list is the best way to be
+ recognized and start helping out. Patches are always welcome
+ as well as new ideas. We look forward to your contributions!
+ </p>
+ <p>
+ Note that for legal reasons you need to <a href="/cla/">sign a CLA</a> before submitting patches or making commits. We do not transfer copyright; the CLA simply formalizes our rights to use your open-source work in our open-source project.
+ </p>
+ <p>
+ While all are welcome, the Trinity team is currently looking for help in the following specific areas:
+ </p>
+ <ul>
+ <li>Application bugfixes
+ <li>Bluetooth support
+ <li>Language translation/support
+ <li>Artwork
+ <li>UI design review
+ </ul>
+ <p>
+ If you believe you can assist in these areas, please <a href="mailinglist.php">contact us</a>.
+ </p>
+<?php
+ doFooter();
+?>
diff --git a/highslide/graphics/close.png b/highslide/graphics/close.png
new file mode 100644
index 0000000..4de4396
--- /dev/null
+++ b/highslide/graphics/close.png
Binary files differ
diff --git a/highslide/graphics/closeX.png b/highslide/graphics/closeX.png
new file mode 100644
index 0000000..cf5d018
--- /dev/null
+++ b/highslide/graphics/closeX.png
Binary files differ
diff --git a/highslide/graphics/controlbar-black-border.gif b/highslide/graphics/controlbar-black-border.gif
new file mode 100644
index 0000000..e2403fe
--- /dev/null
+++ b/highslide/graphics/controlbar-black-border.gif
Binary files differ
diff --git a/highslide/graphics/controlbar-text-buttons.png b/highslide/graphics/controlbar-text-buttons.png
new file mode 100644
index 0000000..d2f72e0
--- /dev/null
+++ b/highslide/graphics/controlbar-text-buttons.png
Binary files differ
diff --git a/highslide/graphics/controlbar-white-small.gif b/highslide/graphics/controlbar-white-small.gif
new file mode 100644
index 0000000..462fce7
--- /dev/null
+++ b/highslide/graphics/controlbar-white-small.gif
Binary files differ
diff --git a/highslide/graphics/controlbar-white.gif b/highslide/graphics/controlbar-white.gif
new file mode 100644
index 0000000..1f143f5
--- /dev/null
+++ b/highslide/graphics/controlbar-white.gif
Binary files differ
diff --git a/highslide/graphics/controlbar2.gif b/highslide/graphics/controlbar2.gif
new file mode 100644
index 0000000..39ad652
--- /dev/null
+++ b/highslide/graphics/controlbar2.gif
Binary files differ
diff --git a/highslide/graphics/controlbar3.gif b/highslide/graphics/controlbar3.gif
new file mode 100644
index 0000000..3eebb81
--- /dev/null
+++ b/highslide/graphics/controlbar3.gif
Binary files differ
diff --git a/highslide/graphics/controlbar4-hover.gif b/highslide/graphics/controlbar4-hover.gif
new file mode 100644
index 0000000..ca08b59
--- /dev/null
+++ b/highslide/graphics/controlbar4-hover.gif
Binary files differ
diff --git a/highslide/graphics/controlbar4.gif b/highslide/graphics/controlbar4.gif
new file mode 100644
index 0000000..7a3ad34
--- /dev/null
+++ b/highslide/graphics/controlbar4.gif
Binary files differ
diff --git a/highslide/graphics/fullexpand.gif b/highslide/graphics/fullexpand.gif
new file mode 100644
index 0000000..26d9ed0
--- /dev/null
+++ b/highslide/graphics/fullexpand.gif
Binary files differ
diff --git a/highslide/graphics/geckodimmer.png b/highslide/graphics/geckodimmer.png
new file mode 100644
index 0000000..309bb27
--- /dev/null
+++ b/highslide/graphics/geckodimmer.png
Binary files differ
diff --git a/highslide/graphics/icon.gif b/highslide/graphics/icon.gif
new file mode 100644
index 0000000..b74a073
--- /dev/null
+++ b/highslide/graphics/icon.gif
Binary files differ
diff --git a/highslide/graphics/loader.gif b/highslide/graphics/loader.gif
new file mode 100644
index 0000000..0b31f6f
--- /dev/null
+++ b/highslide/graphics/loader.gif
Binary files differ
diff --git a/highslide/graphics/loader.white.gif b/highslide/graphics/loader.white.gif
new file mode 100644
index 0000000..f2a1bc0
--- /dev/null
+++ b/highslide/graphics/loader.white.gif
Binary files differ
diff --git a/highslide/graphics/outlines/Outlines.psd b/highslide/graphics/outlines/Outlines.psd
new file mode 100644
index 0000000..5405651
--- /dev/null
+++ b/highslide/graphics/outlines/Outlines.psd
Binary files differ
diff --git a/highslide/graphics/outlines/beveled.png b/highslide/graphics/outlines/beveled.png
new file mode 100644
index 0000000..fc428f4
--- /dev/null
+++ b/highslide/graphics/outlines/beveled.png
Binary files differ
diff --git a/highslide/graphics/outlines/drop-shadow.png b/highslide/graphics/outlines/drop-shadow.png
new file mode 100644
index 0000000..0186c2e
--- /dev/null
+++ b/highslide/graphics/outlines/drop-shadow.png
Binary files differ
diff --git a/highslide/graphics/outlines/glossy-dark.png b/highslide/graphics/outlines/glossy-dark.png
new file mode 100644
index 0000000..3c64c0d
--- /dev/null
+++ b/highslide/graphics/outlines/glossy-dark.png
Binary files differ
diff --git a/highslide/graphics/outlines/outer-glow.png b/highslide/graphics/outlines/outer-glow.png
new file mode 100644
index 0000000..288d43f
--- /dev/null
+++ b/highslide/graphics/outlines/outer-glow.png
Binary files differ
diff --git a/highslide/graphics/outlines/rounded-black.png b/highslide/graphics/outlines/rounded-black.png
new file mode 100644
index 0000000..a77e65d
--- /dev/null
+++ b/highslide/graphics/outlines/rounded-black.png
Binary files differ
diff --git a/highslide/graphics/outlines/rounded-white.png b/highslide/graphics/outlines/rounded-white.png
new file mode 100644
index 0000000..0d4b817
--- /dev/null
+++ b/highslide/graphics/outlines/rounded-white.png
Binary files differ
diff --git a/highslide/graphics/resize.gif b/highslide/graphics/resize.gif
new file mode 100644
index 0000000..9100de7
--- /dev/null
+++ b/highslide/graphics/resize.gif
Binary files differ
diff --git a/highslide/graphics/scrollarrows.png b/highslide/graphics/scrollarrows.png
new file mode 100644
index 0000000..b3d5575
--- /dev/null
+++ b/highslide/graphics/scrollarrows.png
Binary files differ
diff --git a/highslide/graphics/zoomin.cur b/highslide/graphics/zoomin.cur
new file mode 100644
index 0000000..cb79124
--- /dev/null
+++ b/highslide/graphics/zoomin.cur
Binary files differ
diff --git a/highslide/graphics/zoomout.cur b/highslide/graphics/zoomout.cur
new file mode 100644
index 0000000..acf6199
--- /dev/null
+++ b/highslide/graphics/zoomout.cur
Binary files differ
diff --git a/highslide/highslide-full.js b/highslide/highslide-full.js
new file mode 100644
index 0000000..dfaec6a
--- /dev/null
+++ b/highslide/highslide-full.js
@@ -0,0 +1,3293 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default +events +unobtrusive +imagemap +slideshow +positioning +transitions +viewport +thumbstrip +inline +ajax +iframe +flash
+Author: Torstein Hønsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+var hs = {
+// Language strings
+lang : {
+ cssDirection: 'ltr',
+ loadingText : 'Loading...',
+ loadingTitle : 'Click to cancel',
+ focusTitle : 'Click to bring to front',
+ fullExpandTitle : 'Expand to actual size (f)',
+ creditsText : 'Powered by <i>Highslide JS</i>',
+ creditsTitle : 'Go to the Highslide JS homepage',
+ previousText : 'Previous',
+ nextText : 'Next',
+ moveText : 'Move',
+ closeText : 'Close',
+ closeTitle : 'Close (esc)',
+ resizeTitle : 'Resize',
+ playText : 'Play',
+ playTitle : 'Play slideshow (spacebar)',
+ pauseText : 'Pause',
+ pauseTitle : 'Pause slideshow (spacebar)',
+ previousTitle : 'Previous (arrow left)',
+ nextTitle : 'Next (arrow right)',
+ moveTitle : 'Move',
+ fullExpandText : '1:1',
+ number: 'Image %1 of %2',
+ restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
+},
+// See http://highslide.com/ref for examples of settings
+graphicsDir : 'highslide/graphics/',
+expandCursor : 'zoomin.cur', // null disables
+restoreCursor : 'zoomout.cur', // null disables
+expandDuration : 250, // milliseconds
+restoreDuration : 250,
+marginLeft : 15,
+marginRight : 15,
+marginTop : 15,
+marginBottom : 15,
+zIndexCounter : 1001, // adjust to other absolutely positioned elements
+loadingOpacity : 0.75,
+allowMultipleInstances: true,
+numberOfImagesToPreload : 5,
+outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only
+outlineStartOffset : 3, // ends at 10
+padToMinWidth : false, // pad the popup width to make room for wide caption
+fullExpandPosition : 'bottom right',
+fullExpandOpacity : 1,
+showCredits : true, // you can set this to false if you want
+creditsHref : 'http://highslide.com/',
+creditsTarget : '_self',
+enableKeyListener : true,
+openerTagNames : ['a', 'area'], // Add more to allow slideshow indexing
+transitions : [],
+transitionDuration: 250,
+dimmingOpacity: 0, // Lightbox style dimming background
+dimmingDuration: 50, // 0 for instant dimming
+
+allowWidthReduction : false,
+allowHeightReduction : true,
+preserveContent : true, // Preserve changes made to the content and position of HTML popups.
+objectLoadTime : 'before', // Load iframes 'before' or 'after' expansion.
+cacheAjax : true, // Cache ajax popups for instant display. Can be overridden for each popup.
+anchor : 'auto', // where the image expands from
+align : 'auto', // position in the client (overrides anchor)
+targetX: null, // the id of a target element
+targetY: null,
+dragByHeading: true,
+minWidth: 200,
+minHeight: 200,
+allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
+outlineType : 'drop-shadow', // set null to disable outlines
+skin : {
+ controls:
+ '<div class="highslide-controls"><ul>'+
+ '<li class="highslide-previous">'+
+ '<a href="#" title="{hs.lang.previousTitle}">'+
+ '<span>{hs.lang.previousText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-play">'+
+ '<a href="#" title="{hs.lang.playTitle}">'+
+ '<span>{hs.lang.playText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-pause">'+
+ '<a href="#" title="{hs.lang.pauseTitle}">'+
+ '<span>{hs.lang.pauseText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-next">'+
+ '<a href="#" title="{hs.lang.nextTitle}">'+
+ '<span>{hs.lang.nextText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-move">'+
+ '<a href="#" title="{hs.lang.moveTitle}">'+
+ '<span>{hs.lang.moveText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-full-expand">'+
+ '<a href="#" title="{hs.lang.fullExpandTitle}">'+
+ '<span>{hs.lang.fullExpandText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-close">'+
+ '<a href="#" title="{hs.lang.closeTitle}" >'+
+ '<span>{hs.lang.closeText}</span></a>'+
+ '</li>'+
+ '</ul></div>'
+ ,
+ contentWrapper:
+ '<div class="highslide-header"><ul>'+
+ '<li class="highslide-previous">'+
+ '<a href="#" title="{hs.lang.previousTitle}" onclick="return hs.previous(this)">'+
+ '<span>{hs.lang.previousText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-next">'+
+ '<a href="#" title="{hs.lang.nextTitle}" onclick="return hs.next(this)">'+
+ '<span>{hs.lang.nextText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-move">'+
+ '<a href="#" title="{hs.lang.moveTitle}" onclick="return false">'+
+ '<span>{hs.lang.moveText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-close">'+
+ '<a href="#" title="{hs.lang.closeTitle}" onclick="return hs.close(this)">'+
+ '<span>{hs.lang.closeText}</span></a>'+
+ '</li>'+
+ '</ul></div>'+
+ '<div class="highslide-body"></div>'+
+ '<div class="highslide-footer"><div>'+
+ '<span class="highslide-resize" title="{hs.lang.resizeTitle}"><span></span></span>'+
+ '</div></div>'
+},
+// END OF YOUR SETTINGS
+
+
+// declare internal properties
+preloadTheseImages : [],
+continuePreloading: true,
+expanders : [],
+overrides : [
+ 'allowSizeReduction',
+ 'useBox',
+ 'anchor',
+ 'align',
+ 'targetX',
+ 'targetY',
+ 'outlineType',
+ 'outlineWhileAnimating',
+ 'captionId',
+ 'captionText',
+ 'captionEval',
+ 'captionOverlay',
+ 'headingId',
+ 'headingText',
+ 'headingEval',
+ 'headingOverlay',
+ 'creditsPosition',
+ 'dragByHeading',
+ 'autoplay',
+ 'numberPosition',
+ 'transitions',
+ 'dimmingOpacity',
+
+ 'width',
+ 'height',
+
+ 'contentId',
+ 'allowWidthReduction',
+ 'allowHeightReduction',
+ 'preserveContent',
+ 'maincontentId',
+ 'maincontentText',
+ 'maincontentEval',
+ 'objectType',
+ 'cacheAjax',
+ 'objectWidth',
+ 'objectHeight',
+ 'objectLoadTime',
+ 'swfOptions',
+ 'wrapperClassName',
+ 'minWidth',
+ 'minHeight',
+ 'maxWidth',
+ 'maxHeight',
+ 'slideshowGroup',
+ 'easing',
+ 'easingClose',
+ 'fadeInOut',
+ 'src'
+],
+overlays : [],
+idCounter : 0,
+oPos : {
+ x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'],
+ y: ['above', 'top', 'middle', 'bottom', 'below']
+},
+mouse: {},
+headingOverlay: {},
+captionOverlay: {},
+swfOptions: { flashvars: {}, params: {}, attributes: {} },
+timers : [],
+
+slideshows : [],
+
+pendingOutlines : {},
+sleeping : [],
+preloadTheseAjax : [],
+cacheBindings : [],
+cachedGets : {},
+clones : {},
+onReady: [],
+uaVersion: parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]),
+ie : (document.all && !window.opera),
+safari : /Safari/.test(navigator.userAgent),
+geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),
+
+$ : function (id) {
+ if (id) return document.getElementById(id);
+},
+
+push : function (arr, val) {
+ arr[arr.length] = val;
+},
+
+createElement : function (tag, attribs, styles, parent, nopad) {
+ var el = document.createElement(tag);
+ if (attribs) hs.extend(el, attribs);
+ if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0});
+ if (styles) hs.setStyles(el, styles);
+ if (parent) parent.appendChild(el);
+ return el;
+},
+
+extend : function (el, attribs) {
+ for (var x in attribs) el[x] = attribs[x];
+ return el;
+},
+
+setStyles : function (el, styles) {
+ for (var x in styles) {
+ if (hs.ie && x == 'opacity') {
+ if (styles[x] > 0.99) el.style.removeAttribute('filter');
+ else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')';
+ }
+ else el.style[x] = styles[x];
+ }
+},
+animate: function(el, prop, opt) {
+ var start,
+ end,
+ unit;
+ if (typeof opt != 'object' || opt === null) {
+ var args = arguments;
+ opt = {
+ duration: args[2],
+ easing: args[3],
+ complete: args[4]
+ };
+ }
+ if (typeof opt.duration != 'number') opt.duration = 250;
+ opt.easing = Math[opt.easing] || Math.easeInQuad;
+ opt.curAnim = hs.extend({}, prop);
+ for (var name in prop) {
+ var e = new hs.fx(el, opt , name );
+
+ start = parseFloat(hs.css(el, name)) || 0;
+ end = parseFloat(prop[name]);
+ unit = name != 'opacity' ? 'px' : '';
+
+ e.custom( start, end, unit );
+ }
+},
+css: function(el, prop) {
+ if (document.defaultView) {
+ return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop);
+
+ } else {
+ if (prop == 'opacity') prop = 'filter';
+ var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })];
+ if (prop == 'filter')
+ val = val.replace(/alpha\(opacity=([0-9]+)\)/,
+ function (a, b) { return b / 100 });
+ return val === '' ? 1 : val;
+ }
+},
+
+getPageSize : function () {
+ var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat'
+ ? d.documentElement : d.body;
+
+
+ var b = d.body;
+ var xScroll = (w.innerWidth && w.scrollMaxX)
+ ? w.innerWidth + w.scrollMaxX : Math.max(b.scrollWidth, b.offsetWidth),
+ yScroll = (w.innerHeight && window.scrollMaxY)
+ ? w.innerHeight + w.scrollMaxY : Math.max(b.scrollHeight, b.offsetHeight),
+ pageWidth = hs.ie ? iebody.scrollWidth :
+ (d.documentElement.clientWidth || self.innerWidth),
+ pageHeight = hs.ie ? Math.max(iebody.scrollHeight, iebody.clientHeight) :
+ (d.documentElement.clientHeight || self.innerHeight);
+
+ var width = hs.ie ? iebody.clientWidth :
+ (d.documentElement.clientWidth || self.innerWidth),
+ height = hs.ie ? iebody.clientHeight : self.innerHeight;
+
+ hs.page = {
+ pageWidth: Math.max(pageWidth, xScroll),
+ pageHeight: Math.max(pageHeight, yScroll),
+ width: width,
+ height: height,
+ scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
+ scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
+ }
+},
+
+getPosition : function(el) {
+ if (/area/i.test(el.tagName)) {
+ var imgs = document.getElementsByTagName('img');
+ for (var i = 0; i < imgs.length; i++) {
+ var u = imgs[i].useMap;
+ if (u && u.replace(/^.*?#/, '') == el.parentNode.name) {
+ el = imgs[i];
+ break;
+ }
+ }
+ }
+ var p = { x: el.offsetLeft, y: el.offsetTop };
+ while (el.offsetParent) {
+ el = el.offsetParent;
+ p.x += el.offsetLeft;
+ p.y += el.offsetTop;
+ if (el != document.body && el != document.documentElement) {
+ p.x -= el.scrollLeft;
+ p.y -= el.scrollTop;
+ }
+ }
+ return p;
+},
+
+expand : function(a, params, custom, type) {
+ if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container);
+ if (typeof a.getParams == 'function') return params;
+ if (type == 'html') {
+ for (var i = 0; i < hs.sleeping.length; i++) {
+ if (hs.sleeping[i] && hs.sleeping[i].a == a) {
+ hs.sleeping[i].awake();
+ hs.sleeping[i] = null;
+ return false;
+ }
+ }
+ hs.hasHtmlExpanders = true;
+ }
+ try {
+ new hs.Expander(a, params, custom, type);
+ return false;
+ } catch (e) { return true; }
+},
+
+htmlExpand : function(a, params, custom) {
+ return hs.expand(a, params, custom, 'html');
+},
+
+getSelfRendered : function() {
+ return hs.createElement('div', {
+ className: 'highslide-html-content',
+ innerHTML: hs.replaceLang(hs.skin.contentWrapper)
+ });
+},
+getElementByClass : function (el, tagName, className) {
+ var els = el.getElementsByTagName(tagName);
+ for (var i = 0; i < els.length; i++) {
+ if ((new RegExp(className)).test(els[i].className)) {
+ return els[i];
+ }
+ }
+ return null;
+},
+replaceLang : function(s) {
+ s = s.replace(/\s/g, ' ');
+ var re = /{hs\.lang\.([^}]+)\}/g,
+ matches = s.match(re),
+ lang;
+ if (matches) for (var i = 0; i < matches.length; i++) {
+ lang = matches[i].replace(re, "$1");
+ if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]);
+ }
+ return s;
+},
+
+
+setClickEvents : function () {
+ var els = document.getElementsByTagName('a');
+ for (var i = 0; i < els.length; i++) {
+ var type = hs.isUnobtrusiveAnchor(els[i]);
+ if (type && !els[i].hsHasSetClick) {
+ (function(){
+ var t = type;
+ if (hs.fireEvent(hs, 'onSetClickEvent', { element: els[i], type: t })) {
+ els[i].onclick =(type == 'image') ?function() { return hs.expand(this) }:
+ function() { return hs.htmlExpand(this, { objectType: t } );};
+ }
+ })();
+ els[i].hsHasSetClick = true;
+ }
+ }
+ hs.getAnchors();
+},
+isUnobtrusiveAnchor: function(el) {
+ if (el.rel == 'highslide') return 'image';
+ else if (el.rel == 'highslide-ajax') return 'ajax';
+ else if (el.rel == 'highslide-iframe') return 'iframe';
+ else if (el.rel == 'highslide-swf') return 'swf';
+},
+
+getCacheBinding : function (a) {
+ for (var i = 0; i < hs.cacheBindings.length; i++) {
+ if (hs.cacheBindings[i][0] == a) {
+ var c = hs.cacheBindings[i][1];
+ hs.cacheBindings[i][1] = c.cloneNode(1);
+ return c;
+ }
+ }
+ return null;
+},
+
+preloadAjax : function (e) {
+ var arr = hs.getAnchors();
+ for (var i = 0; i < arr.htmls.length; i++) {
+ var a = arr.htmls[i];
+ if (hs.getParam(a, 'objectType') == 'ajax' && hs.getParam(a, 'cacheAjax'))
+ hs.push(hs.preloadTheseAjax, a);
+ }
+
+ hs.preloadAjaxElement(0);
+},
+
+preloadAjaxElement : function (i) {
+ if (!hs.preloadTheseAjax[i]) return;
+ var a = hs.preloadTheseAjax[i];
+ var cache = hs.getNode(hs.getParam(a, 'contentId'));
+ if (!cache) cache = hs.getSelfRendered();
+ var ajax = new hs.Ajax(a, cache, 1);
+ ajax.onError = function () { };
+ ajax.onLoad = function () {
+ hs.push(hs.cacheBindings, [a, cache]);
+ hs.preloadAjaxElement(i + 1);
+ };
+ ajax.run();
+},
+
+focusTopmost : function() {
+ var topZ = 0,
+ topmostKey = -1,
+ expanders = hs.expanders,
+ exp,
+ zIndex;
+ for (var i = 0; i < expanders.length; i++) {
+ exp = expanders[i];
+ if (exp) {
+ zIndex = exp.wrapper.style.zIndex;
+ if (zIndex && zIndex > topZ) {
+ topZ = zIndex;
+ topmostKey = i;
+ }
+ }
+ }
+ if (topmostKey == -1) hs.focusKey = -1;
+ else expanders[topmostKey].focus();
+},
+
+getParam : function (a, param) {
+ a.getParams = a.onclick;
+ var p = a.getParams ? a.getParams() : null;
+ a.getParams = null;
+
+ return (p && typeof p[param] != 'undefined') ? p[param] :
+ (typeof hs[param] != 'undefined' ? hs[param] : null);
+},
+
+getSrc : function (a) {
+ var src = hs.getParam(a, 'src');
+ if (src) return src;
+ return a.href;
+},
+
+getNode : function (id) {
+ var node = hs.$(id), clone = hs.clones[id], a = {};
+ if (!node && !clone) return null;
+ if (!clone) {
+ clone = node.cloneNode(true);
+ clone.id = '';
+ hs.clones[id] = clone;
+ return node;
+ } else {
+ return clone.cloneNode(true);
+ }
+},
+
+discardElement : function(d) {
+ if (d) hs.garbageBin.appendChild(d);
+ hs.garbageBin.innerHTML = '';
+},
+dim : function(exp) {
+ if (!hs.dimmer) {
+ hs.dimmer = hs.createElement ('div',
+ {
+ className: 'highslide-dimming',
+ owner: '',
+ onclick: function() {
+ if (hs.fireEvent(hs, 'onDimmerClick'))
+
+ hs.close();
+ }
+ }, {
+ position: 'absolute',
+ visibility: 'visible',
+ left: 0,
+ opacity: 0
+ }, hs.container, true);
+ hs.addEventListener(window, 'resize', hs.setDimmerSize);
+ }
+ hs.dimmer.style.display = '';
+ hs.setDimmerSize();
+ hs.dimmer.owner += '|'+ exp.key;
+ if (hs.geckoMac && hs.dimmingGeckoFix)
+ hs.setStyles(hs.dimmer, {
+ background: 'url('+ hs.graphicsDir + 'geckodimmer.png)',
+ opacity: 1
+ });
+ else
+ hs.animate(hs.dimmer, { opacity: exp.dimmingOpacity }, hs.dimmingDuration);
+},
+undim : function(key) {
+ if (!hs.dimmer) return;
+ if (typeof key != 'undefined') hs.dimmer.owner = hs.dimmer.owner.replace('|'+ key, '');
+
+ if (
+ (typeof key != 'undefined' && hs.dimmer.owner != '')
+ || (hs.upcoming && hs.getParam(hs.upcoming, 'dimmingOpacity'))
+ ) return;
+ if (hs.geckoMac && hs.dimmingGeckoFix)
+ hs.setStyles(hs.dimmer, { background: 'none', width: 0, height: 0 });
+ else hs.animate(hs.dimmer, { opacity: 0 }, hs.dimmingDuration, null, function() {
+ hs.setStyles(hs.dimmer, { display: 'none', width: 0, height: 0 });
+ });
+},
+setDimmerSize : function(exp) {
+ hs.getPageSize();
+ if (!hs.dimmer) return;
+ var h = (hs.ie && exp && exp.wrapper) ?
+ parseInt(exp.wrapper.style.top) + parseInt(exp.wrapper.style.height)+ (exp.outline ? exp.outline.offset : 0) : 0;
+ hs.setStyles(hs.dimmer, {
+ width: hs.page.pageWidth +'px',
+ height: Math.max(hs.page.pageHeight, h) +'px'
+ });
+},
+transit : function (adj, exp) {
+ var last = exp = exp || hs.getExpander();
+ if (hs.upcoming) return false;
+ else hs.last = last;
+ try {
+ hs.upcoming = adj;
+ adj.onclick();
+ } catch (e){
+ hs.last = hs.upcoming = null;
+ }
+ try {
+ if (!adj || exp.transitions[1] != 'crossfade')
+ exp.close();
+ } catch (e) {}
+ return false;
+},
+
+previousOrNext : function (el, op) {
+ var exp = hs.getExpander(el);
+ if (exp) {
+ adj = exp.getAdjacentAnchor(op);
+ return hs.transit(adj, exp);
+ } else return false;
+},
+
+previous : function (el) {
+ return hs.previousOrNext(el, -1);
+},
+
+next : function (el) {
+ return hs.previousOrNext(el, 1);
+},
+
+keyHandler : function(e) {
+ if (!e) e = window.event;
+ if (!e.target) e.target = e.srcElement; // ie
+ if (typeof e.target.form != 'undefined') return true; // form element has focus
+ if (!hs.fireEvent(hs, 'onKeyDown', e)) return true;
+ var exp = hs.getExpander();
+
+ var op = null;
+ switch (e.keyCode) {
+ case 70: // f
+ if (exp) exp.doFullExpand();
+ return true;
+ case 32: // Space
+ op = 2;
+ break;
+ case 34: // Page Down
+ case 39: // Arrow right
+ case 40: // Arrow down
+ op = 1;
+ break;
+ case 8: // Backspace
+ case 33: // Page Up
+ case 37: // Arrow left
+ case 38: // Arrow up
+ op = -1;
+ break;
+ case 27: // Escape
+ case 13: // Enter
+ op = 0;
+ }
+ if (op !== null) {if (op != 2)hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+ if (!hs.enableKeyListener) return true;
+
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ if (exp) {
+ if (op == 0) {
+ exp.close();
+ } else if (op == 2) {
+ if (exp.slideshow) exp.slideshow.hitSpace();
+ } else {
+ if (exp.slideshow) exp.slideshow.pause();
+ hs.previousOrNext(exp.key, op);
+ }
+ return false;
+ }
+ }
+ return true;
+},
+
+
+registerOverlay : function (overlay) {
+ hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } ));
+},
+
+
+addSlideshow : function (options) {
+ var sg = options.slideshowGroup;
+ if (typeof sg == 'object') {
+ for (var i = 0; i < sg.length; i++) {
+ var o = {};
+ for (var x in options) o[x] = options[x];
+ o.slideshowGroup = sg[i];
+ hs.push(hs.slideshows, o);
+ }
+ } else {
+ hs.push(hs.slideshows, options);
+ }
+},
+
+getWrapperKey : function (element, expOnly) {
+ var el, re = /^highslide-wrapper-([0-9]+)$/;
+ // 1. look in open expanders
+ el = element;
+ while (el.parentNode) {
+ if (el.hsKey !== undefined) return el.hsKey;
+ if (el.id && re.test(el.id)) return el.id.replace(re, "$1");
+ el = el.parentNode;
+ }
+ // 2. look in thumbnail
+ if (!expOnly) {
+ el = element;
+ while (el.parentNode) {
+ if (el.tagName && hs.isHsAnchor(el)) {
+ for (var key = 0; key < hs.expanders.length; key++) {
+ var exp = hs.expanders[key];
+ if (exp && exp.a == el) return key;
+ }
+ }
+ el = el.parentNode;
+ }
+ }
+ return null;
+},
+
+getExpander : function (el, expOnly) {
+ if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null;
+ if (typeof el == 'number') return hs.expanders[el] || null;
+ if (typeof el == 'string') el = hs.$(el);
+ return hs.expanders[hs.getWrapperKey(el, expOnly)] || null;
+},
+
+isHsAnchor : function (a) {
+ return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/));
+},
+
+reOrder : function () {
+ for (var i = 0; i < hs.expanders.length; i++)
+ if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost();
+},
+fireEvent : function (obj, evt, args) {
+ return obj && obj[evt] ? (obj[evt](obj, args) !== false) : true;
+},
+
+mouseClickHandler : function(e)
+{
+ if (!e) e = window.event;
+ if (e.button > 1) return true;
+ if (!e.target) e.target = e.srcElement;
+
+ var el = e.target;
+ while (el.parentNode
+ && !(/highslide-(image|move|html|resize)/.test(el.className)))
+ {
+ el = el.parentNode;
+ }
+ var exp = hs.getExpander(el);
+ if (exp && (exp.isClosing || !exp.isExpanded)) return true;
+
+ if (exp && e.type == 'mousedown') {
+ if (e.target.form) return true;
+ var match = el.className.match(/highslide-(image|move|resize)/);
+ if (match) {
+ hs.dragArgs = { exp: exp , type: match[1], left: exp.x.pos, width: exp.x.size, top: exp.y.pos,
+ height: exp.y.size, clickX: e.clientX, clickY: e.clientY };
+
+
+ hs.addEventListener(document, 'mousemove', hs.dragHandler);
+ if (e.preventDefault) e.preventDefault(); // FF
+
+ if (/highslide-(image|html)-blur/.test(exp.content.className)) {
+ exp.focus();
+ hs.hasFocused = true;
+ }
+ return false;
+ }
+ else if (/highslide-html/.test(el.className) && hs.focusKey != exp.key) {
+ exp.focus();
+ exp.doShowHide('hidden');
+ }
+ } else if (e.type == 'mouseup') {
+
+ hs.removeEventListener(document, 'mousemove', hs.dragHandler);
+
+ if (hs.dragArgs) {
+ if (hs.styleRestoreCursor && hs.dragArgs.type == 'image')
+ hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor;
+ var hasDragged = hs.dragArgs.hasDragged;
+
+ if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
+ if (hs.fireEvent(exp, 'onImageClick'))
+ exp.close();
+ }
+ else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
+ hs.dragArgs.exp.doShowHide('hidden');
+ }
+
+ if (hs.dragArgs.exp.releaseMask)
+ hs.dragArgs.exp.releaseMask.style.display = 'none';
+
+ if (hasDragged) hs.fireEvent(hs.dragArgs.exp, 'onDrop', hs.dragArgs);
+ if (hasDragged) hs.setDimmerSize(exp);
+
+ hs.hasFocused = false;
+ hs.dragArgs = null;
+
+ } else if (/highslide-image-blur/.test(el.className)) {
+ el.style.cursor = hs.styleRestoreCursor;
+ }
+ }
+ return false;
+},
+
+dragHandler : function(e)
+{
+ if (!hs.dragArgs) return true;
+ if (!e) e = window.event;
+ var a = hs.dragArgs, exp = a.exp;
+ if (exp.iframe) {
+ if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null,
+ { position: 'absolute', width: exp.x.size+'px', height: exp.y.size+'px',
+ left: exp.x.cb+'px', top: exp.y.cb+'px', zIndex: 4, background: (hs.ie ? 'white' : 'none'),
+ opacity: .01 },
+ exp.wrapper, true);
+ if (exp.releaseMask.style.display == 'none')
+ exp.releaseMask.style.display = '';
+ }
+
+ a.dX = e.clientX - a.clickX;
+ a.dY = e.clientY - a.clickY;
+
+ var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
+ if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0)
+ || (distance > (hs.dragSensitivity || 5));
+
+ if (a.hasDragged && e.clientX > 5 && e.clientY > 5) {
+ if (!hs.fireEvent(exp, 'onDrag', a)) return false;
+
+ if (a.type == 'resize') exp.resize(a);
+ else {
+ exp.moveTo(a.left + a.dX, a.top + a.dY);
+ if (a.type == 'image') exp.content.style.cursor = 'move';
+ }
+ }
+ return false;
+},
+
+wrapperMouseHandler : function (e) {
+ try {
+ if (!e) e = window.event;
+ var over = /mouseover/i.test(e.type);
+ if (!e.target) e.target = e.srcElement; // ie
+ if (hs.ie) e.relatedTarget =
+ over ? e.fromElement : e.toElement; // ie
+ var exp = hs.getExpander(e.target);
+ if (!exp.isExpanded) return;
+ if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp
+ || hs.dragArgs) return;
+ hs.fireEvent(exp, over ? 'onMouseOver' : 'onMouseOut', e);
+ for (var i = 0; i < exp.overlays.length; i++) (function() {
+ var o = hs.$('hsId'+ exp.overlays[i]);
+ if (o && o.hideOnMouseOut) {
+ if (over) hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur);
+ }
+ })();
+ } catch (e) {}
+},
+addEventListener : function (el, event, func) {
+ if (el == document && event == 'ready') hs.push(hs.onReady, func);
+ try {
+ el.addEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ el.attachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = func;
+ }
+ }
+},
+
+removeEventListener : function (el, event, func) {
+ try {
+ el.removeEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = null;
+ }
+ }
+},
+
+preloadFullImage : function (i) {
+ if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
+ var img = document.createElement('img');
+ img.onload = function() {
+ img = null;
+ hs.preloadFullImage(i + 1);
+ };
+ img.src = hs.preloadTheseImages[i];
+ }
+},
+preloadImages : function (number) {
+ if (number && typeof number != 'object') hs.numberOfImagesToPreload = number;
+
+ var arr = hs.getAnchors();
+ for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) {
+ hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i]));
+ }
+
+ // preload outlines
+ if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} );
+ else
+
+ hs.preloadFullImage(0);
+
+ // preload cursor
+ if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor });
+},
+
+
+init : function () {
+ if (!hs.container) {
+
+ hs.getPageSize();
+ hs.ieLt7 = hs.ie && hs.uaVersion < 7;
+ hs.ie6SSL = hs.ieLt7 && location.protocol == 'https:';
+ for (var x in hs.langDefaults) {
+ if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x];
+ else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined')
+ hs.lang[x] = hs.langDefaults[x];
+ }
+
+ hs.container = hs.createElement('div', {
+ className: 'highslide-container'
+ }, {
+ position: 'absolute',
+ left: 0,
+ top: 0,
+ width: '100%',
+ zIndex: hs.zIndexCounter,
+ direction: 'ltr'
+ },
+ document.body,
+ true
+ );
+ hs.loading = hs.createElement('a', {
+ className: 'highslide-loading',
+ title: hs.lang.loadingTitle,
+ innerHTML: hs.lang.loadingText,
+ href: 'javascript:;'
+ }, {
+ position: 'absolute',
+ top: '-9999px',
+ opacity: hs.loadingOpacity,
+ zIndex: 1
+ }, hs.container
+ );
+ hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container);
+ hs.viewport = hs.createElement('div', {
+ className: 'highslide-viewport'
+ }, {
+ visibility: (hs.safari && hs.uaVersion < 525) ? 'visible' : 'hidden'
+ }, hs.container, 1
+ );
+ hs.clearing = hs.createElement('div', null,
+ { clear: 'both', paddingTop: '1px' }, null, true);
+
+ // http://www.robertpenner.com/easing/
+ Math.linearTween = function (t, b, c, d) {
+ return c*t/d + b;
+ };
+ Math.easeInQuad = function (t, b, c, d) {
+ return c*(t/=d)*t + b;
+ };
+ Math.easeOutQuad = function (t, b, c, d) {
+ return -c *(t/=d)*(t-2) + b;
+ };
+
+ hs.hideSelects = hs.ieLt7;
+ hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE'
+ || (hs.ie && hs.uaVersion < 5.5));
+ hs.fireEvent(this, 'onActivate');
+ }
+},
+ready : function() {
+ if (hs.isReady) return;
+ hs.isReady = true;
+
+ for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i]();
+},
+
+updateAnchors : function() {
+ var el, els, all = [], images = [], htmls = [],groups = {}, re;
+
+ for (var i = 0; i < hs.openerTagNames.length; i++) {
+ els = document.getElementsByTagName(hs.openerTagNames[i]);
+ for (var j = 0; j < els.length; j++) {
+ el = els[j];
+ re = hs.isHsAnchor(el);
+ if (re) {
+ hs.push(all, el);
+ if (re[0] == 'hs.expand') hs.push(images, el);
+ else if (re[0] == 'hs.htmlExpand') hs.push(htmls, el);
+ var g = hs.getParam(el, 'slideshowGroup') || 'none';
+ if (!groups[g]) groups[g] = [];
+ hs.push(groups[g], el);
+ }
+ }
+ }
+ hs.anchors = { all: all, groups: groups, images: images, htmls: htmls };
+ return hs.anchors;
+
+},
+
+getAnchors : function() {
+ return hs.anchors || hs.updateAnchors();
+},
+
+
+close : function(el) {
+ var exp = hs.getExpander(el);
+ if (exp) exp.close();
+ return false;
+}
+}; // end hs object
+hs.fx = function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if (!options.orig) options.orig = {};
+};
+hs.fx.prototype = {
+ update: function(){
+ (hs.fx.step[this.prop] || hs.fx.step._default)(this);
+
+ if (this.options.step)
+ this.options.step.call(this.elem, this.now, this);
+
+ },
+ custom: function(from, to, unit){
+ this.startTime = (new Date()).getTime();
+ this.start = from;
+ this.end = to;
+ this.unit = unit;// || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && hs.timers.push(t) == 1 ) {
+ hs.timerId = setInterval(function(){
+ var timers = hs.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval(hs.timerId);
+ }
+ }, 13);
+ }
+ },
+ step: function(gotoEnd){
+ var t = (new Date()).getTime();
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if (this.options.complete) this.options.complete.call(this.elem);
+ }
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+ this.pos = this.options.easing(n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+ this.update();
+ }
+ return true;
+ }
+
+};
+
+hs.extend( hs.fx, {
+ step: {
+
+ opacity: function(fx){
+ hs.setStyles(fx.elem, { opacity: fx.now });
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+
+hs.Outline = function (outlineType, onLoad) {
+ this.onLoad = onLoad;
+ this.outlineType = outlineType;
+ var v = hs.uaVersion, tr;
+
+ this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v < 7;
+ if (!outlineType) {
+ if (onLoad) onLoad();
+ return;
+ }
+
+ hs.init();
+ this.table = hs.createElement(
+ 'table', {
+ cellSpacing: 0
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ borderCollapse: 'collapse',
+ width: 0
+ },
+ hs.container,
+ true
+ );
+ var tbody = hs.createElement('tbody', null, null, this.table, 1);
+
+ this.td = [];
+ for (var i = 0; i <= 8; i++) {
+ if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true);
+ this.td[i] = hs.createElement('td', null, null, tr, true);
+ var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
+ hs.setStyles(this.td[i], style);
+ }
+ this.td[4].className = outlineType +' highslide-outline';
+
+ this.preloadGraphic();
+};
+
+hs.Outline.prototype = {
+preloadGraphic : function () {
+ var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png";
+
+ var appendTo = hs.safari ? hs.container : null;
+ this.graphic = hs.createElement('img', null, { position: 'absolute',
+ top: '-9999px' }, appendTo, true); // for onload trigger
+
+ var pThis = this;
+ this.graphic.onload = function() { pThis.onGraphicLoad(); };
+
+ this.graphic.src = src;
+},
+
+onGraphicLoad : function () {
+ var o = this.offset = this.graphic.width / 4,
+ pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],
+ dim = { height: (2*o) +'px', width: (2*o) +'px' };
+ for (var i = 0; i <= 8; i++) {
+ if (pos[i]) {
+ if (this.hasAlphaImageLoader) {
+ var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px';
+ var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true);
+ hs.createElement ('div', null, {
+ filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')",
+ position: 'absolute',
+ width: w,
+ height: this.graphic.height +'px',
+ left: (pos[i][0]*o)+'px',
+ top: (pos[i][1]*o)+'px'
+ },
+ div,
+ true);
+ } else {
+ hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'});
+ }
+
+ if (window.opera && (i == 3 || i ==5))
+ hs.createElement('div', null, dim, this.td[i], true);
+
+ hs.setStyles (this.td[i], dim);
+ }
+ }
+ this.graphic = null;
+ if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy();
+ hs.pendingOutlines[this.outlineType] = this;
+ if (this.onLoad) this.onLoad();
+},
+
+setPosition : function (pos, offset, vis, dur, easing) {
+ var exp = this.exp,
+ stl = exp.wrapper.style,
+ offset = offset || 0,
+ pos = pos || {
+ x: exp.x.pos + offset,
+ y: exp.y.pos + offset,
+ w: exp.x.get('wsize') - 2 * offset,
+ h: exp.y.get('wsize') - 2 * offset
+ };
+ if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset)
+ ? 'visible' : 'hidden';
+ hs.setStyles(this.table, {
+ left: (pos.x - this.offset) +'px',
+ top: (pos.y - this.offset) +'px',
+ width: (pos.w + 2 * this.offset) +'px'
+ });
+
+ pos.w -= 2 * this.offset;
+ pos.h -= 2 * this.offset;
+ hs.setStyles (this.td[4], {
+ width: pos.w >= 0 ? pos.w +'px' : 0,
+ height: pos.h >= 0 ? pos.h +'px' : 0
+ });
+ if (this.hasAlphaImageLoader) this.td[3].style.height
+ = this.td[5].style.height = this.td[4].style.height;
+
+},
+
+destroy : function(hide) {
+ if (hide) this.table.style.visibility = 'hidden';
+ else hs.discardElement(this.table);
+}
+};
+
+hs.Dimension = function(exp, dim) {
+ this.exp = exp;
+ this.dim = dim;
+ this.ucwh = dim == 'x' ? 'Width' : 'Height';
+ this.wh = this.ucwh.toLowerCase();
+ this.uclt = dim == 'x' ? 'Left' : 'Top';
+ this.lt = this.uclt.toLowerCase();
+ this.ucrb = dim == 'x' ? 'Right' : 'Bottom';
+ this.rb = this.ucrb.toLowerCase();
+ this.p1 = this.p2 = 0;
+};
+hs.Dimension.prototype = {
+get : function(key) {
+ switch (key) {
+ case 'loadingPos':
+ return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2;
+ case 'loadingPosXfade':
+ return this.pos + this.cb+ this.p1 + (this.size - hs.loading['offset'+ this.ucwh]) / 2;
+ case 'wsize':
+ return this.size + 2 * this.cb + this.p1 + this.p2;
+ case 'fitsize':
+ return this.clientSize - this.marginMin - this.marginMax;
+ case 'maxsize':
+ return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ;
+ case 'opos':
+ return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
+ case 'osize':
+ return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0);
+ case 'imgPad':
+ return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0;
+
+ }
+},
+calcBorders: function() {
+ // correct for borders
+ this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2;
+ this.marginMax = hs['margin'+ this.ucrb];
+},
+calcThumb: function() {
+ this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) :
+ this.exp.el['offset'+ this.ucwh];
+ this.tpos = this.exp.tpos[this.dim];
+ this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2;
+ if (this.tpos < 1) {
+ this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt];
+ };
+},
+calcExpanded: function() {
+ var exp = this.exp;
+ this.justify = 'auto';
+
+ // get alignment
+ if (exp.align == 'center') this.justify = 'center';
+ else if (new RegExp(this.lt).test(exp.anchor)) this.justify = null;
+ else if (new RegExp(this.rb).test(exp.anchor)) this.justify = 'max';
+
+
+ // size and position
+ this.pos = this.tpos - this.cb + this.tb;
+ this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full);
+ this.minSize = exp.allowSizeReduction ?
+ Math.min(exp['min'+ this.ucwh], this.full) :this.full;
+ if (exp.isImage && exp.useBox) {
+ this.size = exp[this.wh];
+ this.imgSize = this.full;
+ }
+ if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth;
+ this.target = exp['target'+ this.dim.toUpperCase()];
+ this.marginMin = hs['margin'+ this.uclt];
+ this.scroll = hs.page['scroll'+ this.uclt];
+ this.clientSize = hs.page[this.wh];
+},
+setSize: function(i) {
+ var exp = this.exp;
+ if (exp.isImage && (exp.useBox || hs.padToMinWidth)) {
+ this.imgSize = i;
+ this.size = Math.max(this.size, this.imgSize);
+ exp.content.style[this.lt] = this.get('imgPad')+'px';
+ } else
+ this.size = i;
+
+ exp.content.style[this.wh] = i +'px';
+ exp.wrapper.style[this.wh] = this.get('wsize') +'px';
+ if (exp.outline) exp.outline.setPosition();
+ if (exp.releaseMask) exp.releaseMask.style[this.wh] = i +'px';
+ if (exp.isHtml) {
+ var d = exp.scrollerDiv;
+ if (this.sizeDiff === undefined)
+ this.sizeDiff = exp.innerContent['offset'+ this.ucwh] - d['offset'+ this.ucwh];
+ d.style[this.wh] = (this.size - this.sizeDiff) +'px';
+
+ if (this.dim == 'x') exp.mediumContent.style.width = 'auto';
+ if (exp.body) exp.body.style[this.wh] = 'auto';
+ }
+ if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true);
+ if (this.dim == 'x' && exp.slideshow && exp.isImage) {
+ if (i == this.full) exp.slideshow.disable('full-expand');
+ else exp.slideshow.enable('full-expand');
+ }
+},
+setPos: function(i) {
+ this.pos = i;
+ this.exp.wrapper.style[this.lt] = i +'px';
+
+ if (this.exp.outline) this.exp.outline.setPosition();
+
+}
+};
+
+hs.Expander = function(a, params, custom, contentType) {
+ if (document.readyState && hs.ie && !hs.isReady) {
+ hs.addEventListener(document, 'ready', function() {
+ new hs.Expander(a, params, custom, contentType);
+ });
+ return;
+ }
+ this.a = a;
+ this.custom = custom;
+ this.contentType = contentType || 'image';
+ this.isHtml = (contentType == 'html');
+ this.isImage = !this.isHtml;
+
+ hs.continuePreloading = false;
+ this.overlays = [];
+ this.last = hs.last;
+ hs.last = null;
+ hs.init();
+ var key = this.key = hs.expanders.length;
+ // override inline parameters
+ for (var i = 0; i < hs.overrides.length; i++) {
+ var name = hs.overrides[i];
+ this[name] = params && typeof params[name] != 'undefined' ?
+ params[name] : hs[name];
+ }
+ if (!this.src) this.src = a.href;
+
+ // get thumb
+ var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
+ el = this.thumb = el.getElementsByTagName('img')[0] || el;
+ this.thumbsUserSetId = el.id || a.id;
+ if (!hs.fireEvent(this, 'onInit')) return true;
+
+ // check if already open
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].a == a
+ && !(this.last && this.transitions[1] == 'crossfade')) {
+ hs.expanders[i].focus();
+ return false;
+ }
+ }
+
+ // cancel other
+ if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
+ hs.expanders[i].cancelLoading();
+ }
+ }
+ hs.expanders[key] = this;
+ if (!hs.allowMultipleInstances && !hs.upcoming) {
+ if (hs.expanders[key-1]) hs.expanders[key-1].close();
+ if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
+ hs.expanders[hs.focusKey].close();
+ }
+
+ // initiate metrics
+ this.el = el;
+ this.tpos = hs.getPosition(el);
+ hs.getPageSize();
+ var x = this.x = new hs.Dimension(this, 'x');
+ x.calcThumb();
+ var y = this.y = new hs.Dimension(this, 'y');
+ y.calcThumb();
+ if (/area/i.test(el.tagName)) this.getImageMapAreaCorrection(el);
+ this.wrapper = hs.createElement(
+ 'div', {
+ id: 'highslide-wrapper-'+ this.key,
+ className: 'highslide-wrapper '+ this.wrapperClassName
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ zIndex: hs.zIndexCounter += 2
+ }, null, true );
+
+ this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
+ if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
+ this.outlineWhileAnimating = 0;
+
+ // get the outline
+ if (!this.outlineType
+ || (this.last && this.isImage && this.transitions[1] == 'crossfade')) {
+ this[this.contentType +'Create']();
+
+ } else if (hs.pendingOutlines[this.outlineType]) {
+ this.connectOutline();
+ this[this.contentType +'Create']();
+
+ } else {
+ this.showLoading();
+ var exp = this;
+ new hs.Outline(this.outlineType,
+ function () {
+ exp.connectOutline();
+ exp[exp.contentType +'Create']();
+ }
+ );
+ }
+ return true;
+};
+
+hs.Expander.prototype = {
+error : function(e) {
+ //alert ('Line '+ e.lineNumber +': '+ e.message);
+ window.location.href = this.src;
+},
+
+connectOutline : function() {
+ var outline = this.outline = hs.pendingOutlines[this.outlineType];
+ outline.exp = this;
+ outline.table.style.zIndex = this.wrapper.style.zIndex - 1;
+ hs.pendingOutlines[this.outlineType] = null;
+},
+
+showLoading : function() {
+ if (this.onLoadStarted || this.loading) return;
+
+ this.loading = hs.loading;
+ var exp = this;
+ this.loading.onclick = function() {
+ exp.cancelLoading();
+ };
+
+
+ if (!hs.fireEvent(this, 'onShowLoading')) return;
+ var exp = this,
+ l = this.x.get('loadingPos') +'px',
+ t = this.y.get('loadingPos') +'px';
+ if (!tgt && this.last && this.transitions[1] == 'crossfade')
+ var tgt = this.last;
+ if (tgt) {
+ l = tgt.x.get('loadingPosXfade') +'px';
+ t = tgt.y.get('loadingPosXfade') +'px';
+ this.loading.style.zIndex = hs.zIndexCounter++;
+ }
+ setTimeout(function () {
+ if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })}
+ , 100);
+},
+
+imageCreate : function() {
+ var exp = this;
+
+ var img = document.createElement('img');
+ this.content = img;
+ img.onload = function () {
+ if (hs.expanders[exp.key]) exp.contentLoaded();
+ };
+ if (hs.blockRightClick) img.oncontextmenu = function() { return false; };
+ img.className = 'highslide-image';
+ hs.setStyles(img, {
+ visibility: 'hidden',
+ display: 'block',
+ position: 'absolute',
+ maxWidth: '9999px',
+ zIndex: 3
+ });
+ img.title = hs.lang.restoreTitle;
+ if (hs.safari) hs.container.appendChild(img);
+ if (hs.ie && hs.flushImgSize) img.src = null;
+ img.src = this.src;
+
+ this.showLoading();
+},
+
+htmlCreate : function () {
+ if (!hs.fireEvent(this, 'onBeforeGetContent')) return;
+
+ this.content = hs.getCacheBinding(this.a);
+ if (!this.content)
+ this.content = hs.getNode(this.contentId);
+ if (!this.content)
+ this.content = hs.getSelfRendered();
+ this.getInline(['maincontent']);
+ if (this.maincontent) {
+ var body = hs.getElementByClass(this.content, 'div', 'highslide-body');
+ if (body) body.appendChild(this.maincontent);
+ this.maincontent.style.display = 'block';
+ }
+ hs.fireEvent(this, 'onAfterGetContent');
+
+ var innerContent = this.innerContent = this.content;
+
+ if (/(swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent);
+
+ // the content tree
+ hs.container.appendChild(this.wrapper);
+ hs.setStyles( this.wrapper, {
+ position: 'static',
+ padding: '0 '+ hs.marginRight +'px 0 '+ hs.marginLeft +'px'
+ });
+ this.content = hs.createElement(
+ 'div', {
+ className: 'highslide-html'
+ }, {
+ position: 'relative',
+ zIndex: 3,
+ overflow: 'hidden'
+ },
+ this.wrapper
+ );
+ this.mediumContent = hs.createElement('div', null, null, this.content, 1);
+ this.mediumContent.appendChild(innerContent);
+
+ hs.setStyles (innerContent, {
+ position: 'relative',
+ display: 'block',
+ direction: hs.lang.cssDirection || ''
+ });
+ if (this.width) innerContent.style.width = this.width +'px';
+ if (this.height) hs.setStyles(innerContent, {
+ height: this.height +'px',
+ overflow: 'hidden'
+ });
+ if (innerContent.offsetWidth < this.minWidth)
+ innerContent.style.width = this.minWidth +'px';
+
+
+
+ if (this.objectType == 'ajax' && !hs.getCacheBinding(this.a)) {
+ this.showLoading();
+ var ajax = new hs.Ajax(this.a, innerContent);
+ var exp = this;
+ ajax.onLoad = function () { if (hs.expanders[exp.key]) exp.contentLoaded(); };
+ ajax.onError = function () { location.href = exp.src; };
+ ajax.run();
+ }
+ else
+
+ if (this.objectType == 'iframe' && this.objectLoadTime == 'before') {
+ this.writeExtendedContent();
+ }
+ else
+ this.contentLoaded();
+},
+
+contentLoaded : function() {
+ try {
+ if (!this.content) return;
+ this.content.onload = null;
+ if (this.onLoadStarted) return;
+ else this.onLoadStarted = true;
+
+ var x = this.x, y = this.y;
+
+ if (this.loading) {
+ hs.setStyles(this.loading, { top: '-9999px' });
+ this.loading = null;
+ hs.fireEvent(this, 'onHideLoading');
+ }
+ if (this.isImage) {
+ x.full = this.content.width;
+ y.full = this.content.height;
+
+ hs.setStyles(this.content, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ this.wrapper.appendChild(this.content);
+ hs.container.appendChild(this.wrapper);
+ } else if (this.htmlGetSize) this.htmlGetSize();
+
+ x.calcBorders();
+ y.calcBorders();
+
+ hs.setStyles (this.wrapper, {
+ left: (x.tpos + x.tb - x.cb) +'px',
+ top: (y.tpos + x.tb - y.cb) +'px'
+ });
+
+
+ this.initSlideshow();
+ this.getOverlays();
+
+ var ratio = x.full / y.full;
+
+ x.calcExpanded();
+ this.justify(x);
+
+ y.calcExpanded();
+ this.justify(y);
+ if (this.isHtml) this.htmlSizeOperations();
+ if (this.overlayBox) this.sizeOverlayBox(0, 1);
+
+ if (this.allowSizeReduction) {
+ if (this.isImage)
+ this.correctRatio(ratio);
+ else this.fitOverlayBox();
+ var ss = this.slideshow;
+ if (ss && this.last && ss.controls && ss.fixedControls) {
+ var pos = ss.overlayOptions.position || '', p;
+ for (var dim in hs.oPos) for (var i = 0; i < 5; i++) {
+ p = this[dim];
+ if (pos.match(hs.oPos[dim][i])) {
+ p.pos = this.last[dim].pos
+ + (this.last[dim].p1 - p.p1)
+ + (this.last[dim].size - p.size) * [0, 0, .5, 1, 1][i];
+ if (ss.fixedControls == 'fit') {
+ if (p.pos + p.size + p.p1 + p.p2 > p.scroll + p.clientSize - p.marginMax)
+ p.pos = p.scroll + p.clientSize - p.size - p.marginMin - p.marginMax - p.p1 - p.p2;
+ if (p.pos < p.scroll + p.marginMin) p.pos = p.scroll + p.marginMin;
+ }
+ }
+ }
+ }
+ if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
+ this.createFullExpand();
+ if (this.overlays.length == 1) this.sizeOverlayBox();
+ }
+ }
+ this.show();
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+
+setObjContainerSize : function(parent, auto) {
+ var c = hs.getElementByClass(parent, 'DIV', 'highslide-body');
+ if (/(iframe|swf)/.test(this.objectType)) {
+ if (this.objectWidth) c.style.width = this.objectWidth +'px';
+ if (this.objectHeight) c.style.height = this.objectHeight +'px';
+ }
+},
+
+writeExtendedContent : function () {
+ if (this.hasExtendedContent) return;
+ var exp = this;
+ this.body = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
+ if (this.objectType == 'iframe') {
+ this.showLoading();
+ var ruler = hs.clearing.cloneNode(1);
+ this.body.appendChild(ruler);
+ this.newWidth = this.innerContent.offsetWidth;
+ if (!this.objectWidth) this.objectWidth = ruler.offsetWidth;
+ var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight,
+ h = this.objectHeight || hs.page.height - hDiff - hs.marginTop - hs.marginBottom,
+ onload = this.objectLoadTime == 'before' ?
+ ' onload="if (hs.expanders['+ this.key +']) hs.expanders['+ this.key +'].contentLoaded()" ' : '';
+
+ this.body.innerHTML += '<iframe name="hs'+ (new Date()).getTime() +'" frameborder="0" key="'+ this.key +'" '
+ +' allowtransparency="true" style="width:'+ this.objectWidth +'px; height:'+ h +'px" '
+ + onload +' src="'+ this.src +'"></iframe>';
+ this.ruler = this.body.getElementsByTagName('div')[0];
+ this.iframe = this.body.getElementsByTagName('iframe')[0];
+
+ if (this.objectLoadTime == 'after') this.correctIframeSize();
+
+ }
+ if (this.objectType == 'swf') {
+ this.body.id = this.body.id || 'hs-flash-id-' + this.key;
+ var a = this.swfOptions;
+ if (!a.params) a.params = {};
+ if (typeof a.params.wmode == 'undefined') a.params.wmode = 'transparent';
+ if (swfobject) swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight,
+ a.version || '7', a.expressInstallSwfurl, a.flashvars, a.params, a.attributes);
+ }
+ this.hasExtendedContent = true;
+},
+htmlGetSize : function() {
+ if (this.iframe && !this.objectHeight) { // loadtime before
+ this.iframe.style.height = this.body.style.height = this.getIframePageHeight() +'px';
+ }
+ this.innerContent.appendChild(hs.clearing);
+ if (!this.x.full) this.x.full = this.innerContent.offsetWidth;
+ this.y.full = this.innerContent.offsetHeight;
+ this.innerContent.removeChild(hs.clearing);
+ if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug
+ this.newHeight = parseInt(this.innerContent.currentStyle.height);
+ }
+ hs.setStyles( this.wrapper, { position: 'absolute', padding: '0'});
+ hs.setStyles( this.content, { width: this.x.t +'px', height: this.y.t +'px'});
+},
+
+getIframePageHeight : function() {
+ var h;
+ try {
+ var doc = this.iframe.contentDocument || this.iframe.contentWindow.document;
+ var clearing = doc.createElement('div');
+ clearing.style.clear = 'both';
+ doc.body.appendChild(clearing);
+ h = clearing.offsetTop;
+ if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop)
+ + parseInt(doc.body.currentStyle.marginBottom) - 1;
+ } catch (e) { // other domain
+ h = 300;
+ }
+ return h;
+},
+correctIframeSize : function () {
+ var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth;
+ hs.discardElement(this.ruler);
+ if (wDiff < 0) wDiff = 0;
+
+ var hDiff = this.innerContent.offsetHeight - this.iframe.offsetHeight;
+ hs.setStyles(this.iframe, {
+ width: Math.abs(this.x.size - wDiff) +'px',
+ height: Math.abs(this.y.size - hDiff) +'px'
+ });
+ hs.setStyles(this.body, {
+ width: this.iframe.style.width,
+ height: this.iframe.style.height
+ });
+
+ this.scrollingContent = this.iframe;
+ this.scrollerDiv = this.scrollingContent;
+},
+htmlSizeOperations : function () {
+
+ this.setObjContainerSize(this.innerContent);
+
+
+ if (this.objectType == 'swf' && this.objectLoadTime == 'before') this.writeExtendedContent();
+
+ // handle minimum size
+ if (this.x.size < this.x.full && !this.allowWidthReduction) this.x.size = this.x.full;
+ if (this.y.size < this.y.full && !this.allowHeightReduction) this.y.size = this.y.full;
+ this.scrollerDiv = this.innerContent;
+ hs.setStyles(this.mediumContent, {
+ position: 'relative',
+ width: this.x.size +'px'
+ });
+ hs.setStyles(this.innerContent, {
+ border: 'none',
+ width: 'auto',
+ height: 'auto'
+ });
+ var node = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
+ if (node && !/(iframe|swf)/.test(this.objectType)) {
+ var cNode = node; // wrap to get true size
+ node = hs.createElement(cNode.nodeName, null, {overflow: 'hidden'}, null, true);
+ cNode.parentNode.insertBefore(node, cNode);
+ node.appendChild(hs.clearing); // IE6
+ node.appendChild(cNode);
+
+ var wDiff = this.innerContent.offsetWidth - node.offsetWidth;
+ var hDiff = this.innerContent.offsetHeight - node.offsetHeight;
+ node.removeChild(hs.clearing);
+
+ var kdeBugCorr = hs.safari || navigator.vendor == 'KDE' ? 1 : 0; // KDE repainting bug
+ hs.setStyles(node, {
+ width: (this.x.size - wDiff - kdeBugCorr) +'px',
+ height: (this.y.size - hDiff) +'px',
+ overflow: 'auto',
+ position: 'relative'
+ }
+ );
+ if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight) {
+ node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px';
+ }
+ this.scrollingContent = node;
+ this.scrollerDiv = this.scrollingContent;
+ }
+ if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize();
+ if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) this.scrollerDiv = this.content;
+
+ if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) {
+ this.x.size += 17; // room for scrollbars
+ }
+ if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) {
+ setTimeout("try { hs.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",
+ hs.expandDuration);
+ }
+},
+
+getImageMapAreaCorrection : function(area) {
+ var c = area.coords.split(',');
+ for (var i = 0; i < c.length; i++) c[i] = parseInt(c[i]);
+
+ if (area.shape.toLowerCase() == 'circle') {
+ this.x.tpos += c[0] - c[2];
+ this.y.tpos += c[1] - c[2];
+ this.x.t = this.y.t = 2 * c[2];
+ } else {
+ var maxX, maxY, minX = maxX = c[0], minY = maxY = c[1];
+ for (var i = 0; i < c.length; i++) {
+ if (i % 2 == 0) {
+ minX = Math.min(minX, c[i]);
+ maxX = Math.max(maxX, c[i]);
+ } else {
+ minY = Math.min(minY, c[i]);
+ maxY = Math.max(maxY, c[i]);
+ }
+ }
+ this.x.tpos += minX;
+ this.x.t = maxX - minX;
+ this.y.tpos += minY;
+ this.y.t = maxY - minY;
+ }
+},
+justify : function (p, moveOnly) {
+ var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y';
+
+ if (tgt && tgt.match(/ /)) {
+ tgtArr = tgt.split(' ');
+ tgt = tgtArr[0];
+ }
+ if (tgt && hs.$(tgt)) {
+ p.pos = hs.getPosition(hs.$(tgt))[dim];
+ if (tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/))
+ p.pos += parseInt(tgtArr[1]);
+ if (p.size < p.minSize) p.size = p.minSize;
+
+ } else if (p.justify == 'auto' || p.justify == 'center') {
+
+ var hasMovedMin = false;
+
+ var allowReduce = p.exp.allowSizeReduction;
+ if (p.justify == 'center')
+ p.pos = Math.round(p.scroll + (p.clientSize + p.marginMin - p.marginMax - p.get('wsize')) / 2);
+ else
+ p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
+ if (p.pos < p.scroll + p.marginMin) {
+ p.pos = p.scroll + p.marginMin;
+ hasMovedMin = true;
+ }
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+ if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) {
+ if (!moveOnly && hasMovedMin && allowReduce) {
+ p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ } else if (p.get('wsize') < p.get('fitsize')) {
+ p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize');
+ } else { // image larger than viewport
+ p.pos = p.scroll + p.marginMin;
+ if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ }
+ }
+
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+
+
+ } else if (p.justify == 'max') {
+ p.pos = Math.floor(p.pos - p.size + p.t);
+ }
+
+
+ if (p.pos < p.marginMin) {
+ var tmpMin = p.pos;
+ p.pos = p.marginMin;
+
+ if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin);
+
+ }
+},
+
+correctRatio : function(ratio) {
+ var x = this.x,
+ y = this.y,
+ changed = false,
+ xSize = Math.min(x.full, x.size),
+ ySize = Math.min(y.full, y.size),
+ useBox = (this.useBox || hs.padToMinWidth);
+
+ if (xSize / ySize > ratio) { // width greater
+ xSize = ySize * ratio;
+ if (xSize < x.minSize) { // below minWidth
+ xSize = x.minSize;
+ ySize = xSize / ratio;
+ }
+ changed = true;
+
+ } else if (xSize / ySize < ratio) { // height greater
+ ySize = xSize / ratio;
+ changed = true;
+ }
+
+ if (hs.padToMinWidth && x.full < x.minSize) {
+ x.imgSize = x.full;
+ y.size = y.imgSize = y.full;
+ } else if (this.useBox) {
+ x.imgSize = xSize;
+ y.imgSize = ySize;
+ } else {
+ x.size = xSize;
+ y.size = ySize;
+ }
+ this.fitOverlayBox(useBox ? null : ratio);
+ if (useBox && y.size < y.imgSize) {
+ y.imgSize = y.size;
+ x.imgSize = y.size * ratio;
+ }
+ if (changed || useBox) {
+ x.pos = x.tpos - x.cb + x.tb;
+ x.minSize = x.size;
+ this.justify(x, true);
+
+ y.pos = y.tpos - y.cb + y.tb;
+ y.minSize = y.size;
+ this.justify(y, true);
+ if (this.overlayBox) this.sizeOverlayBox();
+ }
+},
+fitOverlayBox : function(ratio) {
+ var x = this.x, y = this.y;
+ if (this.overlayBox) {
+ while (y.size > this.minHeight && x.size > this.minWidth
+ && y.get('wsize') > y.get('fitsize')) {
+ y.size -= 10;
+ if (ratio) x.size = y.size * ratio;
+ this.sizeOverlayBox(0, 1);
+ }
+ }
+},
+
+reflow : function () {
+ if (this.scrollerDiv) {
+ var h = /iframe/i.test(this.scrollerDiv.tagName) ? this.getIframePageHeight() + 1 +'px' : 'auto';
+ if (this.body) this.body.style.height = h;
+ this.scrollerDiv.style.height = h;
+ this.y.setSize(this.innerContent.offsetHeight);
+ hs.setDimmerSize(this);
+ }
+},
+
+show : function () {
+ var x = this.x, y = this.y;
+ this.doShowHide('hidden');
+ hs.fireEvent(this, 'onBeforeExpand');
+ if (this.slideshow && this.slideshow.thumbstrip) this.slideshow.thumbstrip.selectThumb();
+
+ // Apply size change
+ this.changeSize(
+ 1, {
+ wrapper: {
+ width : x.get('wsize'),
+ height : y.get('wsize'),
+ left: x.pos,
+ top: y.pos
+ },
+ content: {
+ left: x.p1 + x.get('imgPad'),
+ top: y.p1 + y.get('imgPad'),
+ width:x.imgSize ||x.size,
+ height:y.imgSize ||y.size
+ }
+ },
+ hs.expandDuration
+ );
+},
+
+changeSize : function(up, to, dur) {
+ // transition
+ var trans = this.transitions,
+ other = up ? (this.last ? this.last.a : null) : hs.upcoming,
+ t = (trans[1] && other
+ && hs.getParam(other, 'transitions')[1] == trans[1]) ?
+ trans[1] : trans[0];
+
+ if (this[t] && t != 'expand') {
+ this[t](up, to);
+ return;
+ }
+
+ if (this.outline && !this.outlineWhileAnimating) {
+ if (up) this.outline.setPosition();
+ else this.outline.destroy(
+ (this.isHtml && this.preserveContent));
+ }
+
+
+ if (!up) this.destroyOverlays();
+
+ var exp = this,
+ x = exp.x,
+ y = exp.y,
+ easing = this.easing;
+ if (!up) easing = this.easingClose || easing;
+ var after = up ?
+ function() {
+
+ if (exp.outline) exp.outline.table.style.visibility = "visible";
+ setTimeout(function() {
+ exp.afterExpand();
+ }, 50);
+ } :
+ function() {
+ exp.afterClose();
+ };
+ if (up) hs.setStyles( this.wrapper, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ if (up && this.isHtml) {
+ hs.setStyles(this.wrapper, {
+ left: (x.tpos - x.cb + x.tb) +'px',
+ top: (y.tpos - y.cb + y.tb) +'px'
+ });
+ }
+ if (this.fadeInOut) {
+ hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 });
+ hs.extend(to.wrapper, { opacity: up });
+ }
+ hs.animate( this.wrapper, to.wrapper, {
+ duration: dur,
+ easing: easing,
+ step: function(val, args) {
+ if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') {
+ var fac = up ? args.pos : 1 - args.pos;
+ var pos = {
+ w: x.t + (x.get('wsize') - x.t) * fac,
+ h: y.t + (y.get('wsize') - y.t) * fac,
+ x: x.tpos + (x.pos - x.tpos) * fac,
+ y: y.tpos + (y.pos - y.tpos) * fac
+ };
+ exp.outline.setPosition(pos, 0, 1);
+ }
+ if (exp.isHtml) {
+ if (args.prop == 'left')
+ exp.mediumContent.style.left = (x.pos - val) +'px';
+ if (args.prop == 'top')
+ exp.mediumContent.style.top = (y.pos - val) +'px';
+ }
+ }
+ });
+ hs.animate( this.content, to.content, dur, easing, after);
+ if (up) {
+ this.wrapper.style.visibility = 'visible';
+ this.content.style.visibility = 'visible';
+ if (this.isHtml) this.innerContent.style.visibility = 'visible';
+ this.a.className += ' highslide-active-anchor';
+ }
+},
+
+
+
+fade : function(up, to) {
+ this.outlineWhileAnimating = false;
+ var exp = this, t = up ? hs.expandDuration : 0;
+
+ if (up) {
+ hs.animate(this.wrapper, to.wrapper, 0);
+ hs.setStyles(this.wrapper, { opacity: 0, visibility: 'visible' });
+ hs.animate(this.content, to.content, 0);
+ this.content.style.visibility = 'visible';
+
+ hs.animate(this.wrapper, { opacity: 1 }, t, null,
+ function() { exp.afterExpand(); });
+ }
+
+ if (this.outline) {
+ this.outline.table.style.zIndex = this.wrapper.style.zIndex;
+ var dir = up || -1,
+ offset = this.outline.offset,
+ startOff = up ? 3 : offset,
+ endOff = up? offset : 3;
+ for (var i = startOff; dir * i <= dir * endOff; i += dir, t += 25) {
+ (function() {
+ var o = up ? endOff - i : startOff - i;
+ setTimeout(function() {
+ exp.outline.setPosition(0, o, 1);
+ }, t);
+ })();
+ }
+ }
+
+
+ if (up) {}//setTimeout(function() { exp.afterExpand(); }, t+50);
+ else {
+ setTimeout( function() {
+ if (exp.outline) exp.outline.destroy(exp.preserveContent);
+
+ exp.destroyOverlays();
+
+ hs.animate( exp.wrapper, { opacity: 0 }, hs.restoreDuration, null, function(){
+ exp.afterClose();
+ });
+ }, t);
+ }
+},
+
+crossfade : function (up, to) {
+ if (!up) return;
+ var exp = this,
+ dur = hs.transitionDuration,
+ last = exp.last,
+ x = exp.x,
+ y = exp.y,
+ lastX = last.x,
+ lastY = last.y,
+ overlayBox = exp.overlayBox,
+ wrapper = this.wrapper,
+ content = this.content;
+ hs.removeEventListener(document, 'mousemove', hs.dragHandler);
+ this.outline = last.outline;
+ if (this.outline) this.outline.exp = exp;
+ last.outline = null;
+ last.wrapper.style.overflow = 'hidden';
+ hs.setStyles(wrapper, {
+ left: lastX.pos +'px',
+ top: lastY.pos +'px',
+ width: lastX.get('wsize') +'px',
+ height: lastY.get('wsize') +'px'
+ });
+ hs.setStyles(content, {
+ display: 'none',
+ width: (x.imgSize || x.size) +'px',
+ height: (y.imgSize || y.size) +'px',
+ left: (x.p1 + x.get('imgPad')) +'px',
+ top: (y.p1 + y.get('imgPad')) + 'px'
+ });
+ var fadeBox = hs.createElement('div', {
+ className: 'highslide-image'
+ }, {
+ position: 'absolute',
+ zIndex: 4,
+ overflow: 'hidden',
+ display: 'none',
+ left: (lastX.p1 + lastX.get('imgPad')) +'px',
+ top: (lastY.p1 + lastY.get('imgPad')) +'px',
+ width: (lastX.imgSize || lastX.size) +'px',
+ height: (lastY.imgSize || lastY.size) +'px'
+ });
+ if (this.isHtml) hs.setStyles(this.mediumContent, {
+ left: 0,
+ top: 0
+ });
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (o.style.visibility == 'hidden') o.style.display = 'none';
+ }
+ if (overlayBox) hs.setStyles(overlayBox, {
+ overflow: 'visible',
+ left: (lastX.p1 + lastX.cb) +'px',
+ top: (lastY.p1 + lastY.cb) +'px',
+ width: lastX.size +'px',
+ height: lastY.size +'px'
+ });
+ var names = { oldImg: last, newImg: this };
+ for (var n in names) {
+ this[n] = names[n].content.cloneNode(1);
+ hs.setStyles(this[n], {
+ position: 'absolute',
+ border: 0,
+ visibility: 'visible'
+ });
+ fadeBox.appendChild(this[n]);
+ }
+ hs.setStyles(this.oldImg, {
+ left: 0,
+ top: 0
+ });
+ hs.setStyles(this.newImg, {
+ display: 'block',
+ opacity: 0,
+ left: (x.pos - lastX.pos + x.p1 - lastX.p1 + x.get('imgPad') - lastX.get('imgPad')) +'px',
+ top: (y.pos - lastY.pos + y.p1 - lastY.p1 + y.get('imgPad') - lastY.get('imgPad')) +'px'
+ });
+ wrapper.appendChild(fadeBox);
+ if (overlayBox) {
+ overlayBox.className = '';
+ wrapper.appendChild(overlayBox);
+ }
+ fadeBox.style.display = '';
+ last.content.style.display = 'none';
+
+ if (hs.safari) {
+ var match = navigator.userAgent.match(/Safari\/([0-9]{3})/);
+ if (match && parseInt(match[1]) < 525) wrapper.style.visibility = 'visible';
+ }
+ function end() {
+ wrapper.style.visibility = content.style.visibility = 'visible';
+ content.style.display = 'block';
+ fadeBox.style.display = 'none';
+ exp.a.className += ' highslide-active-anchor';
+ exp.afterExpand();
+ last.afterClose();
+ exp.last = null;
+ }
+ hs.animate(last.wrapper, {
+ left: x.pos,
+ top: y.pos,
+ width: x.get('wsize'),
+ height: y.get('wsize')
+ }, dur);
+
+ hs.animate(fadeBox, {
+ width: x.imgSize || x.size,
+ height: y.imgSize || y.size,
+ left: x.p1 + x.get('imgPad'),
+ top: y.p1 + y.get('imgPad')
+ }, dur);
+
+ hs.animate(this.oldImg, {
+ left: (lastX.pos - x.pos + lastX.p1 - x.p1 + lastX.get('imgPad') - x.get('imgPad')),
+ top: (lastY.pos - y.pos + lastY.p1 - y.p1 + lastY.get('imgPad') - y.get('imgPad'))
+ }, dur);
+
+ hs.animate(this.newImg, {
+ opacity: 1,
+ left: 0,
+ top: 0
+ }, dur);
+ if (overlayBox) hs.animate(overlayBox, {
+ left: x.p1 + x.cb,
+ top: y.p1 + y.cb,
+ width: x.size,
+ height: y.size
+ }, dur);
+ if (this.outline) var wrapStep = function(val, args) {
+ if (args.prop == 'top') {
+ var stl = exp.wrapper.style;
+ var pos = {
+ w: parseInt(stl.width),
+ h: parseInt(stl.height),
+ x: parseInt(stl.left),
+ y: parseInt(stl.top)
+ };
+ exp.outline.setPosition(pos);
+ }
+ };
+ hs.animate(wrapper, to.wrapper, {
+ duration: dur,
+ complete: end,
+ step: wrapStep
+ });
+
+ fadeBox.style.visibility = 'visible';
+},
+reuseOverlay : function(o, el) {
+ if (!this.last) return false;
+ for (var i = 0; i < this.last.overlays.length; i++) {
+ var oDiv = hs.$('hsId'+ this.last.overlays[i]);
+ if (oDiv && oDiv.hsId == o.hsId) {
+ this.genOverlayBox();
+ oDiv.reuse = this.key;
+ hs.push(this.overlays, this.last.overlays[i]);
+ return true;
+ }
+ }
+ return false;
+},
+
+
+afterExpand : function() {
+ this.isExpanded = true;
+ this.focus();
+
+ if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent();
+ if (this.iframe) {
+ try {
+ var exp = this,
+ doc = this.iframe.contentDocument || this.iframe.contentWindow.document;
+ hs.addEventListener(doc, 'mousedown', function () {
+ if (hs.focusKey != exp.key) exp.focus();
+ });
+ } catch(e) {}
+ if (hs.ie && typeof this.isClosing != 'boolean') // first open
+ this.iframe.style.width = (this.objectWidth - 1) +'px'; // hasLayout
+ }
+ if (this.dimmingOpacity) hs.dim(this);
+ if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null;
+ this.prepareNextOutline();
+ var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop;
+ this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize')
+ && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize');
+ if (this.overlayBox) this.showOverlays();
+ hs.fireEvent(this, 'onAfterExpand');
+
+},
+
+
+prepareNextOutline : function() {
+ var key = this.key;
+ var outlineType = this.outlineType;
+ new hs.Outline(outlineType,
+ function () { try { hs.expanders[key].preloadNext(); } catch (e) {} });
+},
+
+
+preloadNext : function() {
+ var next = this.getAdjacentAnchor(1);
+ if (next && next.onclick.toString().match(/hs\.expand/))
+ var img = hs.createElement('img', { src: hs.getSrc(next) });
+},
+
+
+getAdjacentAnchor : function(op) {
+ var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none'];
+
+ /*< ? if ($cfg->slideshow) : ?>s*/
+ if (!as[current + op] && this.slideshow && this.slideshow.repeat) {
+ if (op == 1) return as[0];
+ else if (op == -1) return as[as.length-1];
+ }
+ /*< ? endif ?>s*/
+ return as[current + op] || null;
+},
+
+getAnchorIndex : function() {
+ var arr = hs.getAnchors().groups[this.slideshowGroup || 'none'];
+ if (arr) for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == this.a) return i;
+ }
+ return null;
+},
+
+
+getNumber : function() {
+ if (this[this.numberPosition]) {
+ var arr = hs.anchors.groups[this.slideshowGroup || 'none'];
+ if (arr) {
+ var s = hs.lang.number.replace('%1', this.getAnchorIndex() + 1).replace('%2', arr.length);
+ this[this.numberPosition].innerHTML =
+ '<div class="highslide-number">'+ s +'</div>'+ this[this.numberPosition].innerHTML;
+ }
+ }
+},
+initSlideshow : function() {
+ if (!this.last) {
+ for (var i = 0; i < hs.slideshows.length; i++) {
+ var ss = hs.slideshows[i], sg = ss.slideshowGroup;
+ if (typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup)
+ this.slideshow = new hs.Slideshow(this.key, ss);
+ }
+ } else {
+ this.slideshow = this.last.slideshow;
+ }
+ var ss = this.slideshow;
+ if (!ss) return;
+ var key = ss.expKey = this.key;
+
+ ss.checkFirstAndLast();
+ ss.disable('full-expand');
+ if (ss.controls) {
+ var o = ss.overlayOptions || {};
+ o.overlayId = ss.controls;
+ o.hsId = 'controls';
+ this.createOverlay(o);
+ }
+ if (ss.thumbstrip) ss.thumbstrip.add(this);
+ if (!this.last && this.autoplay) ss.play(true);
+ if (ss.autoplay) {
+ ss.autoplay = setTimeout(function() {
+ hs.next(key);
+ }, (ss.interval || 500));
+ }
+},
+
+cancelLoading : function() {
+ hs.discardElement (this.wrapper);
+ hs.expanders[this.key] = null;
+ if (hs.upcoming == this.a) hs.upcoming = null;
+ hs.undim(this.key);
+ if (this.loading) hs.loading.style.left = '-9999px';
+ hs.fireEvent(this, 'onHideLoading');
+},
+
+writeCredits : function () {
+ if (this.credits) return;
+ this.credits = hs.createElement('a', {
+ href: hs.creditsHref,
+ target: hs.creditsTarget,
+ className: 'highslide-credits',
+ innerHTML: hs.lang.creditsText,
+ title: hs.lang.creditsTitle
+ });
+ this.createOverlay({
+ overlayId: this.credits,
+ position: this.creditsPosition || 'top left',
+ hsId: 'credits'
+ });
+},
+
+getInline : function(types, addOverlay) {
+ for (var i = 0; i < types.length; i++) {
+ var type = types[i], s = null;
+ if (type == 'caption' && !hs.fireEvent(this, 'onBeforeGetCaption')) return;
+ else if (type == 'heading' && !hs.fireEvent(this, 'onBeforeGetHeading')) return;
+ if (!this[type +'Id'] && this.thumbsUserSetId)
+ this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId;
+ if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']);
+ if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try {
+ s = eval(this[type +'Eval']);
+ } catch (e) {}
+ if (!this[type] && this[type +'Text']) {
+ s = this[type +'Text'];
+ }
+ if (!this[type] && !s) {
+ var next = this.a.nextSibling;
+ while (next && !hs.isHsAnchor(next)) {
+ if ((new RegExp('highslide-'+ type)).test(next.className || null)) {
+ this[type] = next.cloneNode(1);
+ break;
+ }
+ next = next.nextSibling;
+ }
+ }
+ if (!this[type] && !s && this.numberPosition == type) s = '\n';
+
+ if (!this[type] && s) this[type] = hs.createElement('div',
+ { className: 'highslide-'+ type, innerHTML: s } );
+
+ if (addOverlay && this[type]) {
+ var o = { position: (type == 'heading') ? 'above' : 'below' };
+ for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x];
+ o.overlayId = this[type];
+ this.createOverlay(o);
+ }
+ }
+},
+
+
+// on end move and resize
+doShowHide : function(visibility) {
+ if (hs.hideSelects) this.showHideElements('SELECT', visibility);
+ if (hs.hideIframes) this.showHideElements('IFRAME', visibility);
+ if (hs.geckoMac) this.showHideElements('*', visibility);
+},
+showHideElements : function (tagName, visibility) {
+ var els = document.getElementsByTagName(tagName);
+ var prop = tagName == '*' ? 'overflow' : 'visibility';
+ for (var i = 0; i < els.length; i++) {
+ if (prop == 'visibility' || (document.defaultView.getComputedStyle(
+ els[i], "").getPropertyValue('overflow') == 'auto'
+ || els[i].getAttribute('hidden-by') != null)) {
+ var hiddenBy = els[i].getAttribute('hidden-by');
+ if (visibility == 'visible' && hiddenBy) {
+ hiddenBy = hiddenBy.replace('['+ this.key +']', '');
+ els[i].setAttribute('hidden-by', hiddenBy);
+ if (!hiddenBy) els[i].style[prop] = els[i].origProp;
+ } else if (visibility == 'hidden') { // hide if behind
+ var elPos = hs.getPosition(els[i]);
+ elPos.w = els[i].offsetWidth;
+ elPos.h = els[i].offsetHeight;
+ if (!this.dimmingOpacity) { // hide all if dimming
+
+ var clearsX = (elPos.x + elPos.w < this.x.get('opos')
+ || elPos.x > this.x.get('opos') + this.x.get('osize'));
+ var clearsY = (elPos.y + elPos.h < this.y.get('opos')
+ || elPos.y > this.y.get('opos') + this.y.get('osize'));
+ }
+ var wrapperKey = hs.getWrapperKey(els[i]);
+ if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
+ if (!hiddenBy) {
+ els[i].setAttribute('hidden-by', '['+ this.key +']');
+ els[i].origProp = els[i].style[prop];
+ els[i].style[prop] = 'hidden';
+
+ } else if (hiddenBy.indexOf('['+ this.key +']') == -1) {
+ els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']');
+ }
+ } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey)
+ && wrapperKey != this.key) { // on move
+ els[i].setAttribute('hidden-by', '');
+ els[i].style[prop] = els[i].origProp || '';
+ } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) {
+ els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', ''));
+ }
+
+ }
+ }
+ }
+},
+
+focus : function() {
+ this.wrapper.style.zIndex = hs.zIndexCounter += 2;
+ // blur others
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && i == hs.focusKey) {
+ var blurExp = hs.expanders[i];
+ blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur';
+ if (blurExp.isImage) {
+ blurExp.content.style.cursor = hs.ie ? 'hand' : 'pointer';
+ blurExp.content.title = hs.lang.focusTitle;
+ }
+ hs.fireEvent(blurExp, 'onBlur');
+ }
+ }
+
+ // focus this
+ if (this.outline) this.outline.table.style.zIndex
+ = this.wrapper.style.zIndex - 1;
+ this.content.className = 'highslide-'+ this.contentType;
+ if (this.isImage) {
+ this.content.title = hs.lang.restoreTitle;
+
+ if (hs.restoreCursor) {
+ hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer';
+ if (hs.ie && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand';
+ this.content.style.cursor = hs.styleRestoreCursor;
+ }
+ }
+ hs.focusKey = this.key;
+ hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+ hs.fireEvent(this, 'onFocus');
+},
+moveTo: function(x, y) {
+ this.x.setPos(x);
+ this.y.setPos(y);
+},
+resize : function (e) {
+ var w, h, r = e.width / e.height;
+ w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full));
+ if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full;
+ h = this.isHtml ? e.height + e.dY : w / r;
+ if (h < Math.min(this.minHeight, this.y.full)) {
+ h = Math.min(this.minHeight, this.y.full);
+ if (this.isImage) w = h * r;
+ }
+ this.resizeTo(w, h);
+},
+resizeTo: function(w, h) {
+ this.y.setSize(h);
+ this.x.setSize(w);
+},
+
+close : function() {
+ if (this.isClosing || !this.isExpanded) return;
+ if (this.transitions[1] == 'crossfade' && hs.upcoming) {
+ hs.getExpander(hs.upcoming).cancelLoading();
+ hs.upcoming = null;
+ }
+ if (!hs.fireEvent(this, 'onBeforeClose')) return;
+ this.isClosing = true;
+ if (this.slideshow && !hs.upcoming) this.slideshow.pause();
+
+ hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+
+ try {
+ if (this.isHtml) this.htmlPrepareClose();
+ this.content.style.cursor = 'default';
+ this.changeSize(
+ 0, {
+ wrapper: {
+ width : this.x.t,
+ height : this.y.t,
+ left: this.x.tpos - this.x.cb + this.x.tb,
+ top: this.y.tpos - this.y.cb + this.y.tb
+ },
+ content: {
+ left: 0,
+ top: 0,
+ width: this.x.t,
+ height: this.y.t
+ }
+ }, hs.restoreDuration
+ );
+ } catch (e) { this.afterClose(); }
+},
+
+htmlPrepareClose : function() {
+ if (hs.geckoMac) { // bad redraws
+ if (!hs.mask) hs.mask = hs.createElement('div', null,
+ { position: 'absolute' }, hs.container);
+ hs.setStyles(hs.mask, { width: this.x.size +'px', height: this.y.size +'px',
+ left: this.x.pos +'px', top: this.y.pos +'px', display: 'block' });
+ }
+ if (this.objectType == 'swf') try { hs.$(this.body.id).StopPlay(); } catch (e) {}
+
+ if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject();
+ if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent)
+ this.scrollerDiv.style.overflow = 'hidden';
+},
+
+destroyObject : function () {
+ if (hs.ie && this.iframe)
+ try { this.iframe.contentWindow.document.body.innerHTML = ''; } catch (e) {}
+ if (this.objectType == 'swf') swfobject.removeSWF(this.body.id);
+ this.body.innerHTML = '';
+},
+
+sleep : function() {
+ if (this.outline) this.outline.table.style.display = 'none';
+ this.releaseMask = null;
+ this.wrapper.style.display = 'none';
+ hs.push(hs.sleeping, this);
+},
+
+awake : function() {try {
+
+ hs.expanders[this.key] = this;
+
+ if (!hs.allowMultipleInstances &&hs.focusKey != this.key) {
+ try { hs.expanders[hs.focusKey].close(); } catch (e){}
+ }
+
+ var z = hs.zIndexCounter++, stl = { display: '', zIndex: z };
+ hs.setStyles (this.wrapper, stl);
+ this.isClosing = false;
+
+ var o = this.outline || 0;
+ if (o) {
+ if (!this.outlineWhileAnimating) stl.visibility = 'hidden';
+ hs.setStyles (o.table, stl);
+ }
+ if (this.slideshow) {
+ this.initSlideshow();
+ }
+
+ this.show();
+} catch (e) {}
+
+
+},
+
+createOverlay : function (o) {
+ var el = o.overlayId,
+ relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position));
+ if (typeof el == 'string') el = hs.getNode(el);
+ if (o.html) el = hs.createElement('div', { innerHTML: o.html });
+ if (!el || typeof el == 'string') return;
+ if (!hs.fireEvent(this, 'onCreateOverlay', { overlay: el })) return;
+ el.style.display = 'block';
+ o.hsId = o.hsId || o.overlayId;
+ if (this.transitions[1] == 'crossfade' && this.reuseOverlay(o, el)) return;
+ this.genOverlayBox();
+ var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto';
+ if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px';
+ var overlay = hs.createElement(
+ 'div', {
+ id: 'hsId'+ hs.idCounter++,
+ hsId: o.hsId
+ }, {
+ position: 'absolute',
+ visibility: 'hidden',
+ width: width,
+ direction: hs.lang.cssDirection || '',
+ opacity: 0
+ },
+ relToVP ? hs.viewport :this.overlayBox,
+ true
+ );
+ if (relToVP) overlay.hsKey = this.key;
+
+ overlay.appendChild(el);
+ hs.extend(overlay, {
+ opacity: 1,
+ offsetX: 0,
+ offsetY: 0,
+ dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250
+ });
+ hs.extend(overlay, o);
+
+ if (this.gotOverlays) {
+ this.positionOverlay(overlay);
+ if (!overlay.hideOnMouseOut || this.mouseIsOver)
+ hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur);
+ }
+ hs.push(this.overlays, hs.idCounter - 1);
+},
+positionOverlay : function(overlay) {
+ var p = overlay.position || 'middle center',
+ relToVP = (overlay.relativeTo == 'viewport'),
+ offX = overlay.offsetX,
+ offY = overlay.offsetY;
+ if (relToVP) {
+ hs.viewport.style.display = 'block';
+ overlay.hsKey = this.key;
+ if (overlay.offsetWidth > overlay.parentNode.offsetWidth)
+ overlay.style.width = '100%';
+ } else
+ if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay);
+ if (/left$/.test(p)) overlay.style.left = offX +'px';
+
+ if (/center$/.test(p)) hs.setStyles (overlay, {
+ left: '50%',
+ marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px'
+ });
+
+ if (/right$/.test(p)) overlay.style.right = - offX +'px';
+
+ if (/^leftpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ right: '100%',
+ marginRight: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p1 = overlay.offsetWidth;
+
+ } else if (/^rightpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: '100%',
+ marginLeft: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p2 = overlay.offsetWidth;
+ }
+ var parOff = overlay.parentNode.offsetHeight;
+ overlay.style.height = 'auto';
+ if (relToVP && overlay.offsetHeight > parOff)
+ overlay.style.height = hs.ieLt7 ? parOff +'px' : '100%';
+
+ if (/^top/.test(p)) overlay.style.top = offY +'px';
+ if (/^middle/.test(p)) hs.setStyles (overlay, {
+ top: '50%',
+ marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px'
+ });
+ if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px';
+ if (/^above$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ bottom: '100%',
+ marginBottom: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p1 = overlay.offsetHeight;
+
+ } else if (/^below$/.test(p)) {
+ hs.setStyles(overlay, {
+ position: 'relative',
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ top: '100%',
+ marginTop: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p2 = overlay.offsetHeight;
+ overlay.style.position = 'absolute';
+ }
+},
+
+getOverlays : function() {
+ this.getInline(['heading', 'caption'], true);
+ this.getNumber();
+ if (this.caption) hs.fireEvent(this, 'onAfterGetCaption');
+ if (this.heading) hs.fireEvent(this, 'onAfterGetHeading');
+ if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move';
+ if (hs.showCredits) this.writeCredits();
+ for (var i = 0; i < hs.overlays.length; i++) {
+ var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup;
+ if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId)
+ || (sg && sg === this.slideshowGroup)) {
+ if (this.isImage || (this.isHtml && o.useOnHtml))
+ this.createOverlay(o);
+ }
+ }
+ var os = [];
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (/panel$/.test(o.position)) this.positionOverlay(o);
+ else hs.push(os, o);
+ }
+ for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]);
+ this.gotOverlays = true;
+},
+genOverlayBox : function() {
+ if (!this.overlayBox) this.overlayBox = hs.createElement (
+ 'div', {
+ className: this.wrapperClassName
+ }, {
+ position : 'absolute',
+ width: (this.x.size || (this.useBox ? this.width : null)
+ || this.x.full) +'px',
+ height: (this.y.size || this.y.full) +'px',
+ visibility : 'hidden',
+ overflow : 'hidden',
+ zIndex : hs.ie ? 4 : null
+ },
+ hs.container,
+ true
+ );
+},
+sizeOverlayBox : function(doWrapper, doPanels) {
+ var overlayBox = this.overlayBox,
+ x = this.x,
+ y = this.y;
+ hs.setStyles( overlayBox, {
+ width: x.size +'px',
+ height: y.size +'px'
+ });
+ if (doWrapper || doPanels) {
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat');
+ if (o && /^(above|below)$/.test(o.position)) {
+ if (ie6) {
+ o.style.width = (overlayBox.offsetWidth + 2 * x.cb
+ + x.p1 + x.p2) +'px';
+ }
+ y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight;
+ }
+ if (o && ie6 && /^(left|right)panel$/.test(o.position)) {
+ o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px';
+ }
+ }
+ }
+ if (doWrapper) {
+ hs.setStyles(this.content, {
+ top: y.p1 +'px'
+ });
+ hs.setStyles(overlayBox, {
+ top: (y.p1 + y.cb) +'px'
+ });
+ }
+},
+
+showOverlays : function() {
+ var b = this.overlayBox;
+ b.className = '';
+ hs.setStyles(b, {
+ top: (this.y.p1 + this.y.cb) +'px',
+ left: (this.x.p1 + this.x.cb) +'px',
+ overflow : 'visible'
+ });
+ if (hs.safari) b.style.visibility = 'visible';
+ this.wrapper.appendChild (b);
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ o.style.zIndex = o.hsId == 'controls' ? 5 : 4;
+ if (!o.hideOnMouseOut || this.mouseIsOver) {
+ o.style.visibility = 'visible';
+ hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: o.opacity }, o.dur);
+ }
+ }
+},
+
+destroyOverlays : function() {
+ if (!this.overlays.length) return;
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (o.parentNode == hs.viewport) hs.discardElement(o);
+ }
+ if (this.slideshow) {
+ var c = this.slideshow.controls;
+ if (c && hs.getExpander(c) == this) c.parentNode.removeChild(c);
+ }
+ if (this.isHtml && this.preserveContent) {
+ this.overlayBox.style.top = '-9999px';
+ hs.container.appendChild(this.overlayBox);
+ } else
+ hs.discardElement(this.overlayBox);
+},
+
+
+
+createFullExpand : function () {
+ if (this.slideshow && this.slideshow.controls) {
+ this.slideshow.enable('full-expand');
+ return;
+ }
+ this.fullExpandLabel = hs.createElement(
+ 'a', {
+ href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();',
+ title: hs.lang.fullExpandTitle,
+ className: 'highslide-full-expand'
+ }
+ );
+ if (!hs.fireEvent(this, 'onCreateFullExpand')) return;
+
+ this.createOverlay({
+ overlayId: this.fullExpandLabel,
+ position: hs.fullExpandPosition,
+ hideOnMouseOut: true,
+ opacity: hs.fullExpandOpacity
+ });
+},
+
+doFullExpand : function () {
+ try {
+ if (!hs.fireEvent(this, 'onDoFullExpand')) return;
+ if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel);
+
+ this.focus();
+ var xSize = this.x.size;
+ this.resizeTo(this.x.full, this.y.full);
+
+ var xpos = this.x.pos - (this.x.size - xSize) / 2;
+ if (xpos < hs.marginLeft) xpos = hs.marginLeft;
+
+ this.moveTo(xpos, this.y.pos);
+ this.doShowHide('hidden');
+ hs.setDimmerSize(this);
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+
+afterClose : function () {
+ this.a.className = this.a.className.replace('highslide-active-anchor', '');
+
+ this.doShowHide('visible');
+
+ if (this.isHtml && this.preserveContent
+ && this.transitions[1] != 'crossfade') {
+ this.sleep();
+ } else {
+ if (this.outline && this.outlineWhileAnimating) this.outline.destroy();
+
+ hs.discardElement(this.wrapper);
+ }
+ if (hs.mask) hs.mask.style.display = 'none';
+ if (!hs.viewport.childNodes.length) hs.viewport.style.display = 'none';
+
+ if (this.dimmingOpacity) hs.undim(this.key);
+ hs.fireEvent(this, 'onAfterClose');
+ hs.expanders[this.key] = null;
+ hs.reOrder();
+}
+
+};
+
+
+// hs.Ajax object prototype
+hs.Ajax = function (a, content, pre) {
+ this.a = a;
+ this.content = content;
+ this.pre = pre;
+};
+
+hs.Ajax.prototype = {
+run : function () {
+ if (!this.src) this.src = hs.getSrc(this.a);
+ if (this.src.match('#')) {
+ var arr = this.src.split('#');
+ this.src = arr[0];
+ this.id = arr[1];
+ }
+ if (hs.cachedGets[this.src]) {
+ this.cachedGet = hs.cachedGets[this.src];
+ if (this.id) this.getElementContent();
+ else this.loadHTML();
+ return;
+ }
+ try { this.xmlHttp = new XMLHttpRequest(); }
+ catch (e) {
+ try { this.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
+ catch (e) {
+ try { this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
+ catch (e) { this.onError(); }
+ }
+ }
+ var pThis = this;
+ this.xmlHttp.onreadystatechange = function() {
+ if(pThis.xmlHttp.readyState == 4) {
+ if (pThis.id) pThis.getElementContent();
+ else pThis.loadHTML();
+ }
+ };
+ var src = this.src;
+ if (hs.forceAjaxReload)
+ src = src.replace(/$/, (/\?/.test(src) ? '&' : '?') +'dummy='+ (new Date()).getTime());
+ this.xmlHttp.open('GET', src, true);
+ this.xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+ this.xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+ this.xmlHttp.send(null);
+},
+
+getElementContent : function() {
+ hs.init();
+ var attribs = window.opera || hs.ie6SSL ? { src: 'about:blank' } : null;
+
+ this.iframe = hs.createElement('iframe', attribs,
+ { position: 'absolute', top: '-9999px' }, hs.container);
+
+ this.loadHTML();
+},
+
+loadHTML : function() {
+ var s = this.cachedGet || this.xmlHttp.responseText;
+ if (this.pre) hs.cachedGets[this.src] = s;
+ if (!hs.ie || hs.uaVersion >= 5.5) {
+ s = s.replace(/\s/g, ' ').replace(
+ new RegExp('<link[^>]*>', 'gi'), '').replace(
+ new RegExp('<script[^>]*>.*?</script>', 'gi'), '');
+
+ if (this.iframe) {
+ var doc = this.iframe.contentDocument;
+ if (!doc && this.iframe.contentWindow) doc = this.iframe.contentWindow.document;
+ if (!doc) { // Opera
+ var pThis = this;
+ setTimeout(function() { pThis.loadHTML(); }, 25);
+ return;
+ }
+ doc.open();
+ doc.write(s);
+ doc.close();
+ try { s = doc.getElementById(this.id).innerHTML; } catch (e) {
+ try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera
+ }
+ hs.discardElement(this.iframe);
+ } else {
+ s = s.replace(new RegExp('^.*?<body[^>]*>(.*?)</body>.*?$', 'i'), '$1');
+ }
+ }
+ hs.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s;
+ this.onLoad();
+ for (var x in this) this[x] = null;
+}
+};
+
+
+hs.Slideshow = function (expKey, options) {
+ if (hs.dynamicallyUpdateAnchors !== false) hs.updateAnchors();
+ this.expKey = expKey;
+ for (var x in options) this[x] = options[x];
+ if (this.useControls) this.getControls();
+ if (this.thumbstrip) this.thumbstrip = hs.Thumbstrip(this);
+};
+hs.Slideshow.prototype = {
+getControls: function() {
+ this.controls = hs.createElement('div', { innerHTML: hs.replaceLang(hs.skin.controls) },
+ null, hs.container);
+
+ var buttons = ['play', 'pause', 'previous', 'next', 'move', 'full-expand', 'close'];
+ this.btn = {};
+ var pThis = this;
+ for (var i = 0; i < buttons.length; i++) {
+ this.btn[buttons[i]] = hs.getElementByClass(this.controls, 'li', 'highslide-'+ buttons[i]);
+ this.enable(buttons[i]);
+ }
+ this.btn.pause.style.display = 'none';
+ //this.disable('full-expand');
+},
+checkFirstAndLast: function() {
+ if (this.repeat || !this.controls) return;
+ var exp = hs.expanders[this.expKey],
+ cur = exp.getAnchorIndex(),
+ re = /disabled$/;
+ if (cur == 0)
+ this.disable('previous');
+ else if (re.test(this.btn.previous.getElementsByTagName('a')[0].className))
+ this.enable('previous');
+ if (cur + 1 == hs.anchors.groups[exp.slideshowGroup || 'none'].length) {
+ this.disable('next');
+ this.disable('play');
+ } else if (re.test(this.btn.next.getElementsByTagName('a')[0].className)) {
+ this.enable('next');
+ this.enable('play');
+ }
+},
+enable: function(btn) {
+ if (!this.btn) return;
+ var sls = this, a = this.btn[btn].getElementsByTagName('a')[0], re = /disabled$/;
+ a.onclick = function() {
+ sls[btn]();
+ return false;
+ };
+ if (re.test(a.className)) a.className = a.className.replace(re, '');
+},
+disable: function(btn) {
+ if (!this.btn) return;
+ var a = this.btn[btn].getElementsByTagName('a')[0];
+ a.onclick = function() { return false; };
+ if (!/disabled$/.test(a.className)) a.className += ' disabled';
+},
+hitSpace: function() {
+ if (this.autoplay) this.pause();
+ else this.play();
+},
+play: function(wait) {
+ if (this.btn) {
+ this.btn.play.style.display = 'none';
+ this.btn.pause.style.display = '';
+ }
+
+ this.autoplay = true;
+ if (!wait) hs.next(this.expKey);
+},
+pause: function() {
+ if (this.btn) {
+ this.btn.pause.style.display = 'none';
+ this.btn.play.style.display = '';
+ }
+
+ clearTimeout(this.autoplay);
+ this.autoplay = null;
+},
+previous: function() {
+ this.pause();
+ hs.previous(this.btn.previous);
+},
+next: function() {
+ this.pause();
+ hs.next(this.btn.next);
+},
+move: function() {},
+'full-expand': function() {
+ hs.getExpander().doFullExpand();
+},
+close: function() {
+ hs.close(this.btn.close);
+}
+};
+hs.Thumbstrip = function(slideshow) {
+ function add (exp) {
+ hs.extend(options || {}, {
+ overlayId: dom,
+ hsId: 'thumbstrip'
+ });
+ if (hs.ieLt7) options.fade = 0;
+ exp.createOverlay(options);
+ hs.setStyles(dom.parentNode, { overflow: 'hidden' });
+ };
+
+ function scroll (delta) {
+ selectThumb(undefined, Math.round(delta * dom[isX ? 'offsetWidth' : 'offsetHeight'] * 0.7));
+ };
+
+ function selectThumb (i, scrollBy) {
+ if (i === undefined) for (var j = 0; j < group.length; j++) {
+ if (group[j] == hs.expanders[slideshow.expKey].a) {
+ i = j;
+ break;
+ }
+ }
+ if (i === undefined) return;
+ var as = dom.getElementsByTagName('a'),
+ active = as[i],
+ cell = active.parentNode,
+ left = isX ? 'Left' : 'Top',
+ right = isX ? 'Right' : 'Bottom',
+ width = isX ? 'Width' : 'Height',
+ offsetLeft = 'offset' + left,
+ offsetWidth = 'offset' + width,
+ overlayWidth = div.parentNode.parentNode[offsetWidth],
+ minTblPos = overlayWidth - table[offsetWidth],
+ curTblPos = parseInt(table.style[isX ? 'left' : 'top']) || 0,
+ tblPos = curTblPos,
+ mgnRight = 20;
+ if (scrollBy !== undefined) {
+ tblPos = curTblPos - scrollBy;
+ if (tblPos > 0) tblPos = 0;
+ if (tblPos < minTblPos) tblPos = minTblPos;
+
+ } else {
+ for (var j = 0; j < as.length; j++) as[j].className = '';
+ active.className = 'highslide-active-anchor';
+ var activeLeft = i > 0 ? as[i - 1].parentNode[offsetLeft] : cell[offsetLeft],
+ activeRight = cell[offsetLeft] + cell[offsetWidth] +
+ (as[i + 1] ? as[i + 1].parentNode[offsetWidth] : 0);
+ if (activeRight > overlayWidth - curTblPos) tblPos = overlayWidth - activeRight;
+ else if (activeLeft < -curTblPos) tblPos = -activeLeft;
+ }
+ var markerPos = cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / 2 + tblPos;
+ hs.animate(table, isX ? { left: tblPos } : { top: tblPos }, null, 'easeOutQuad');
+ hs.animate(marker, isX ? { left: markerPos } : { top: markerPos }, null, 'easeOutQuad');
+ scrollUp.style.display = tblPos < 0 ? 'block' : 'none';
+ scrollDown.style.display = (tblPos > minTblPos) ? 'block' : 'none';
+ };
+
+
+ // initialize
+ var group = hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'],
+ options = slideshow.thumbstrip,
+ mode = options.mode || 'horizontal',
+ floatMode = (mode == 'float'),
+ tree = floatMode ? ['div', 'ul', 'li', 'span'] : ['table', 'tbody', 'tr', 'td'],
+ isX = (mode == 'horizontal'),
+ dom = hs.createElement('div', {
+ className: 'highslide-thumbstrip highslide-thumbstrip-'+ mode,
+ innerHTML:
+ '<div class="highslide-thumbstrip-inner">'+
+ '<'+ tree[0] +'><'+ tree[1] +'></'+ tree[1] +'></'+ tree[0] +'></div>'+
+ '<div class="highslide-scroll-up"><div></div></div>'+
+ '<div class="highslide-scroll-down"><div></div></div>'+
+ '<div class="highslide-marker"><div></div></div>'
+ }, {
+ display: 'none'
+ }, hs.container),
+ domCh = dom.childNodes,
+ div = domCh[0],
+ scrollUp = domCh[1],
+ scrollDown = domCh[2],
+ marker = domCh[3],
+ table = div.firstChild,
+ tbody = dom.getElementsByTagName(tree[1])[0],
+ tr;
+ for (var i = 0; i < group.length; i++) {
+ if (i == 0 || !isX) tr = hs.createElement(tree[2], null, null, tbody);
+ (function(){
+ var a = group[i],
+ cell = hs.createElement(tree[3], null, null, tr),
+ pI = i;
+ hs.createElement('a', {
+ href: a.href,
+ onclick: function() {
+ hs.getExpander(this).focus();
+ return hs.transit(a);
+ },
+ innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(a) : a.innerHTML
+ }, null, cell);
+ })();
+ }
+
+ if (!floatMode) {
+ scrollUp.onclick = function () { scroll(-1); };
+ scrollDown.onclick = function() { scroll(1); };
+ hs.addEventListener(tbody, document.onmousewheel !== undefined ?
+ 'mousewheel' : 'DOMMouseScroll', function(e) {
+ var delta = 0;
+ e = e || window.event;
+ if (e.wheelDelta) {
+ delta = e.wheelDelta/120;
+ if (hs.opera) delta = -delta;
+ } else if (e.detail) {
+ delta = -e.detail/3;
+ }
+ if (delta) scroll(-delta * 0.2);
+ if (e.preventDefault) e.preventDefault();
+ e.returnValue = false;
+ });
+ }
+
+ return {
+ add: add,
+ selectThumb: selectThumb
+ }
+};
+if (hs.ie) {
+ (function () {
+ try {
+ document.documentElement.doScroll('left');
+ } catch (e) {
+ setTimeout(arguments.callee, 50);
+ return;
+ }
+ hs.ready();
+ })();
+}
+hs.addEventListener(document, 'DOMContentLoaded', hs.ready);
+hs.addEventListener(window, 'load', hs.ready);
+hs.langDefaults = hs.lang;
+// history
+var HsExpander = hs.Expander;
+
+// set handlers
+hs.addEventListener(window, 'load', function() {
+ if (hs.expandCursor) {
+ var sel = '.highslide img',
+ dec = 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;';
+
+ var style = hs.createElement('style', { type: 'text/css' }, null,
+ document.getElementsByTagName('HEAD')[0]);
+
+ if (!hs.ie) {
+ style.appendChild(document.createTextNode(sel + " {" + dec + "}"));
+ } else {
+ var last = document.styleSheets[document.styleSheets.length - 1];
+ if (typeof(last.addRule) == "object") last.addRule(sel, dec);
+ }
+ }
+});
+hs.addEventListener(window, 'resize', function() {
+ hs.getPageSize();
+ if (hs.viewport) for (var i = 0; i < hs.viewport.childNodes.length; i++) {
+ var node = hs.viewport.childNodes[i],
+ exp = hs.getExpander(node);
+ exp.positionOverlay(node);
+ if (node.hsId == 'thumbstrip') exp.slideshow.thumbstrip.selectThumb();
+ }
+});
+hs.addEventListener(document, 'mousemove', function(e) {
+ hs.mouse = { x: e.clientX, y: e.clientY };
+});
+hs.addEventListener(document, 'mousedown', hs.mouseClickHandler);
+hs.addEventListener(document, 'mouseup', hs.mouseClickHandler);
+hs.addEventListener(document, 'ready', hs.setClickEvents);
+hs.addEventListener(window, 'load', hs.preloadImages);
+hs.addEventListener(window, 'load', hs.preloadAjax); \ No newline at end of file
diff --git a/highslide/highslide-full.packed.js b/highslide/highslide-full.packed.js
new file mode 100644
index 0000000..57029e1
--- /dev/null
+++ b/highslide/highslide-full.packed.js
@@ -0,0 +1,28 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default +events +unobtrusive +imagemap +slideshow +positioning +transitions +viewport +thumbstrip +inline +ajax +iframe +flash +packed
+Author: Torstein Hønsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('A m={14:{9B:\'aL\',aw:\'eE...\',av:\'9S 2a eF\',bt:\'9S 2a eG 2a eH\',8J:\'eP 2a eW I (f)\',cv:\'eX by <i>aj a7</i>\',cr:\'eY 2a eZ aj a7 ei\',8N:\'a8\',91:\'a6\',98:\'ac\',8R:\'aM\',8Z:\'aM (ez)\',am:\'eA\',a3:\'a9\',al:\'a9 1p (ab)\',ae:\'aa\',ah:\'aa 1p (ab)\',8M:\'a8 (9E Y)\',93:\'a6 (9E 3i)\',94:\'ac\',ag:\'1:1\',3Q:\'ft %1 fC %2\',7Q:\'9S 2a 2f 2L, fe ad fj 2a 3B. d4 9E dk O 1G ad 35.\'},5m:\'M/d6/\',8B:\'d3.56\',69:\'cZ.56\',7f:63,9o:63,4Y:15,9O:15,6b:15,6v:15,4p:db,ay:0.75,9d:L,8p:5,3U:2,cO:3,5G:1i,bp:\'4i 3i\',bn:1,bf:L,ck:\'cT://M.dl/\',ch:\'dM\',b7:L,8F:[\'a\',\'5c\'],3g:[],cq:63,4m:0,96:50,71:1i,7T:L,4E:L,3O:\'5r\',8W:L,4c:\'28\',9q:\'28\',9Y:H,9W:H,9G:L,4H:ak,6k:ak,5v:L,1X:\'e7-e8\',8U:{2N:\'<R 1Z="M-2N"><5s>\'+\'<1J 1Z="M-35">\'+\'<a 23="#" 2k="{m.14.8M}">\'+\'<1A>{m.14.8N}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-3G">\'+\'<a 23="#" 2k="{m.14.al}">\'+\'<1A>{m.14.a3}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-3h">\'+\'<a 23="#" 2k="{m.14.ah}">\'+\'<1A>{m.14.ae}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-1G">\'+\'<a 23="#" 2k="{m.14.93}">\'+\'<1A>{m.14.91}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-3B">\'+\'<a 23="#" 2k="{m.14.94}">\'+\'<1A>{m.14.98}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-1d-2H">\'+\'<a 23="#" 2k="{m.14.8J}">\'+\'<1A>{m.14.ag}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-2f">\'+\'<a 23="#" 2k="{m.14.8Z}" >\'+\'<1A>{m.14.8R}</1A></a>\'+\'</1J>\'+\'</5s></R>\',aQ:\'<R 1Z="M-fk"><5s>\'+\'<1J 1Z="M-35">\'+\'<a 23="#" 2k="{m.14.8M}" 2p="D m.35(k)">\'+\'<1A>{m.14.8N}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-1G">\'+\'<a 23="#" 2k="{m.14.93}" 2p="D m.1G(k)">\'+\'<1A>{m.14.91}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-3B">\'+\'<a 23="#" 2k="{m.14.94}" 2p="D 1i">\'+\'<1A>{m.14.98}</1A></a>\'+\'</1J>\'+\'<1J 1Z="M-2f">\'+\'<a 23="#" 2k="{m.14.8Z}" 2p="D m.2f(k)">\'+\'<1A>{m.14.8R}</1A></a>\'+\'</1J>\'+\'</5s></R>\'+\'<R 1Z="M-1k"></R>\'+\'<R 1Z="M-dF"><R>\'+\'<1A 1Z="M-3L" 2k="{m.14.am}"><1A></1A></1A>\'+\'</R></R>\'},6e:[],86:L,11:[],88:[\'5v\',\'3A\',\'4c\',\'9q\',\'9Y\',\'9W\',\'1X\',\'3U\',\'dG\',\'dy\',\'dx\',\'a2\',\'dq\',\'dp\',\'do\',\'9V\',\'ct\',\'9G\',\'45\',\'5t\',\'3g\',\'4m\',\'K\',\'N\',\'8e\',\'71\',\'7T\',\'4E\',\'dm\',\'dn\',\'dr\',\'2J\',\'8W\',\'3Y\',\'5e\',\'3O\',\'89\',\'9J\',\'4H\',\'6k\',\'aq\',\'ds\',\'2R\',\'2S\',\'cj\',\'cp\',\'1e\'],1L:[],6p:0,8f:{x:[\'br\',\'Y\',\'4A\',\'3i\',\'bq\'],y:[\'5A\',\'V\',\'9T\',\'4i\',\'7s\']},79:{},9V:{},a2:{},89:{an:{},2e:{},b5:{}},47:[],5u:[],4F:{},4K:[],7k:[],5i:[],6Q:{},8Y:{},7r:[],3X:9r((5d.6M.6f().2y(/.+(?:9Z|du|dt|1z)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1z:(19.5H&&!1U.3F),4o:/cw/.1c(5d.6M),5p:/dK.+9Z:1\\.[0-8].+dL/.1c(5d.6M),$:C(1D){q(1D)D 19.8S(1D)},2o:C(2b,3e){2b[2b.W]=3e},18:C(ai,3W,46,5M,b9){A el=19.18(ai);q(3W)m.3E(el,3W);q(b9)m.S(el,{7Z:0,8c:\'1r\',9t:0});q(46)m.S(el,46);q(5M)5M.1V(el);D el},3E:C(el,3W){O(A x 3j 3W)el[x]=3W[x];D el},S:C(el,46){O(A x 3j 46){q(m.1z&&x==\'1w\'){q(46[x]>0.99)el.E.e1(\'6g\');J el.E.6g=\'aT(1w=\'+(46[x]*2W)+\')\'}J el.E[x]=46[x]}},24:C(el,1y,3u){A 4D,3Z,4C;q(1I 3u!=\'72\'||3u===H){A 2K=bW;3u={41:2K[2],2S:2K[3],6G:2K[4]}}q(1I 3u.41!=\'3Q\')3u.41=63;3u.2S=1j[3u.2S]||1j.au;3u.6y=m.3E({},1y);O(A 3d 3j 1y){A e=1H m.fx(el,3u,3d);4D=9r(m.8L(el,3d))||0;3Z=9r(1y[3d]);4C=3d!=\'1w\'?\'F\':\'\';e.3t(4D,3Z,4C)}},8L:C(el,1y){q(19.7N){D 19.7N.cf(el,H).bw(1y)}J{q(1y==\'1w\')1y=\'6g\';A 3e=el.5L[1y.26(/\\-(\\w)/g,C(a,b){D b.aE()})];q(1y==\'6g\')3e=3e.26(/aT\\(1w=([0-9]+)\\)/,C(a,b){D b/2W});D 3e===\'\'?1:3e}},6d:C(){A d=19,w=1U,4e=d.9I&&d.9I!=\'bd\'?d.5n:d.1k;A b=d.1k;A aR=(w.6Y&&w.aU)?w.6Y+w.aU:1j.2Q(b.aW,b.1M),aO=(w.6N&&1U.aV)?w.6N+w.aV:1j.2Q(b.aS,b.1Q),6V=m.1z?4e.aW:(d.5n.8K||54.6Y),6U=m.1z?1j.2Q(4e.aS,4e.8I):(d.5n.8I||54.6N);A K=m.1z?4e.8K:(d.5n.8K||54.6Y),N=m.1z?4e.8I:54.6N;m.3V={6V:1j.2Q(6V,aR),6U:1j.2Q(6U,aO),K:K,N:N,7B:m.1z?4e.7B:dO,7A:m.1z?4e.7A:dN}},6n:C(el){q(/5c/i.1c(el.3T)){A 6O=19.2z(\'1S\');O(A i=0;i<6O.W;i++){A u=6O[i].dR;q(u&&u.26(/^.*?#/,\'\')==el.29.3d){el=6O[i];5f}}}A p={x:el.4I,y:el.7L};4Q(el.aP){el=el.aP;p.x+=el.4I;p.y+=el.7L;q(el!=19.1k&&el!=19.5n){p.x-=el.7B;p.y-=el.7A}}D p},2H:C(a,2e,3t,Z){q(!a)a=m.18(\'a\',H,{1m:\'1r\'},m.2g);q(1I a.65==\'C\')D 2e;q(Z==\'3y\'){O(A i=0;i<m.4K.W;i++){q(m.4K[i]&&m.4K[i].a==a){m.4K[i].bG();m.4K[i]=H;D 1i}}m.b4=L}1C{1H m.5x(a,2e,3t,Z);D 1i}1E(e){D L}},9c:C(a,2e,3t){D m.2H(a,2e,3t,\'3y\')},85:C(){D m.18(\'R\',{1b:\'M-3y-T\',2h:m.8V(m.8U.aQ)})},4G:C(el,3T,1b){A 1l=el.2z(3T);O(A i=0;i<1l.W;i++){q((1H 4y(1b)).1c(1l[i].1b)){D 1l[i]}}D H},8V:C(s){s=s.26(/\\s/g,\' \');A 2n=/{m\\.14\\.([^}]+)\\}/g,68=s.2y(2n),14;q(68)O(A i=0;i<68.W;i++){14=68[i].26(2n,"$1");q(1I m.14[14]!=\'1T\')s=s.26(68[i],m.14[14])}D s},bS:C(){A 1l=19.2z(\'a\');O(A i=0;i<1l.W;i++){A Z=m.aY(1l[i]);q(Z&&!1l[i].aX){(C(){A t=Z;q(m.1x(m,\'dU\',{7l:1l[i],Z:t})){1l[i].2p=(Z==\'2L\')?C(){D m.2H(k)}:C(){D m.9c(k,{2J:t})}}})();1l[i].aX=L}}m.6h()},aY:C(el){q(el.6I==\'M\')D\'2L\';J q(el.6I==\'M-3a\')D\'3a\';J q(el.6I==\'M-1h\')D\'1h\';J q(el.6I==\'M-3D\')D\'3D\'},7V:C(a){O(A i=0;i<m.5i.W;i++){q(m.5i[i][0]==a){A c=m.5i[i][1];m.5i[i][1]=c.4Z(1);D c}}D H},bv:C(e){A 2b=m.6h();O(A i=0;i<2b.4O.W;i++){A a=2b.4O[i];q(m.4b(a,\'2J\')==\'3a\'&&m.4b(a,\'8W\'))m.2o(m.7k,a)}m.8O(0)},8O:C(i){q(!m.7k[i])D;A a=m.7k[i];A 5S=m.5W(m.4b(a,\'8e\'));q(!5S)5S=m.85();A 3a=1H m.7p(a,5S,1);3a.8z=C(){};3a.3s=C(){m.2o(m.5i,[a,5S]);m.8O(i+1)};3a.8q()},b8:C(){A 8P=0,6P=-1,11=m.11,B,1F;O(A i=0;i<11.W;i++){B=11[i];q(B){1F=B.Q.E.1F;q(1F&&1F>8P){8P=1F;6P=i}}}q(6P==-1)m.31=-1;J 11[6P].3I()},4b:C(a,61){a.65=a.2p;A p=a.65?a.65():H;a.65=H;D(p&&1I p[61]!=\'1T\')?p[61]:(1I m[61]!=\'1T\'?m[61]:H)},7x:C(a){A 1e=m.4b(a,\'1e\');q(1e)D 1e;D a.23},5W:C(1D){A 1R=m.$(1D),4t=m.8Y[1D],a={};q(!1R&&!4t)D H;q(!4t){4t=1R.4Z(L);4t.1D=\'\';m.8Y[1D]=4t;D 1R}J{D 4t.4Z(L)}},3H:C(d){q(d)m.8H.1V(d);m.8H.2h=\'\'},1B:C(B){q(!m.2F){m.2F=m.18(\'R\',{1b:\'M-cL\',62:\'\',2p:C(){q(m.1x(m,\'de\'))m.2f()}},{1n:\'2r\',1o:\'22\',Y:0,1w:0},m.2g,L);m.2l(1U,\'3L\',m.4T)}m.2F.E.1m=\'\';m.4T();m.2F.62+=\'|\'+B.P;q(m.5p&&m.b6)m.S(m.2F,{6A:\'7a(\'+m.5m+\'dc.aJ)\',1w:1});J m.24(m.2F,{1w:B.4m},m.96)},8r:C(P){q(!m.2F)D;q(1I P!=\'1T\')m.2F.62=m.2F.62.26(\'|\'+P,\'\');q((1I P!=\'1T\'&&m.2F.62!=\'\')||(m.2u&&m.4b(m.2u,\'4m\')))D;q(m.5p&&m.b6)m.S(m.2F,{6A:\'1r\',K:0,N:0});J m.24(m.2F,{1w:0},m.96,H,C(){m.S(m.2F,{1m:\'1r\',K:0,N:0})})},4T:C(B){m.6d();q(!m.2F)D;A h=(m.1z&&B&&B.Q)?2v(B.Q.E.V)+2v(B.Q.E.N)+(B.1a?B.1a.1s:0):0;m.S(m.2F,{K:m.3V.6V+\'F\',N:1j.2Q(m.3V.6U,h)+\'F\'})},9v:C(4V,B){A 1f=B=B||m.2Y();q(m.2u)D 1i;J m.1f=1f;1C{m.2u=4V;4V.2p()}1E(e){m.1f=m.2u=H}1C{q(!4V||B.3g[1]!=\'4f\')B.2f()}1E(e){}D 1i},7j:C(el,2m){A B=m.2Y(el);q(B){4V=B.8a(2m);D m.9v(4V,B)}J D 1i},35:C(el){D m.7j(el,-1)},1G:C(el){D m.7j(el,1)},6x:C(e){q(!e)e=1U.2E;q(!e.2G)e.2G=e.8x;q(1I e.2G.95!=\'1T\')D L;q(!m.1x(m,\'d2\',e))D L;A B=m.2Y();A 2m=H;aC(e.d1){2c 70:q(B)B.6L();D L;2c 32:2m=2;5f;2c 34:2c 39:2c 40:2m=1;5f;2c 8:2c 33:2c 37:2c 38:2m=-1;5f;2c 27:2c 13:2m=0}q(2m!==H){q(2m!=2)m.5j(19,1U.3F?\'9z\':\'9y\',m.6x);q(!m.b7)D L;q(e.5h)e.5h();J e.bR=1i;q(B){q(2m==0){B.2f()}J q(2m==2){q(B.1p)B.1p.ca()}J{q(B.1p)B.1p.3h();m.7j(B.P,2m)}D 1i}}D L},dd:C(16){m.2o(m.1L,m.3E(16,{21:\'21\'+m.6p++}))},cY:C(1v){A 3c=1v.2R;q(1I 3c==\'72\'){O(A i=0;i<3c.W;i++){A o={};O(A x 3j 1v)o[x]=1v[x];o.2R=3c[i];m.2o(m.5u,o)}}J{m.2o(m.5u,1v)}},87:C(7l,7D){A el,2n=/^M-Q-([0-9]+)$/;el=7l;4Q(el.29){q(el.6o!==1T)D el.6o;q(el.1D&&2n.1c(el.1D))D el.1D.26(2n,"$1");el=el.29}q(!7D){el=7l;4Q(el.29){q(el.3T&&m.6F(el)){O(A P=0;P<m.11.W;P++){A B=m.11[P];q(B&&B.a==el)D P}}el=el.29}}D H},2Y:C(el,7D){q(1I el==\'1T\')D m.11[m.31]||H;q(1I el==\'3Q\')D m.11[el]||H;q(1I el==\'9n\')el=m.$(el);D m.11[m.87(el,7D)]||H},6F:C(a){D(a.2p&&a.2p.cz().26(/\\s/g,\' \').2y(/m.(cG|e)cU/))},bk:C(){O(A i=0;i<m.11.W;i++)q(m.11[i]&&m.11[i].5w)m.b8()},1x:C(64,90,2K){D 64&&64[90]?(64[90](64,2K)!==1i):L},9x:C(e){q(!e)e=1U.2E;q(e.cS>1)D L;q(!e.2G)e.2G=e.8x;A el=e.2G;4Q(el.29&&!(/M-(2L|3B|3y|3L)/.1c(el.1b))){el=el.29}A B=m.2Y(el);q(B&&(B.5X||!B.5w))D L;q(B&&e.Z==\'8G\'){q(e.2G.95)D L;A 2y=el.1b.2y(/M-(2L|3B|3L)/);q(2y){m.2D={B:B,Z:2y[1],Y:B.x.G,K:B.x.I,V:B.y.G,N:B.y.I,b3:e.77,aZ:e.7n};m.2l(19,\'76\',m.6Z);q(e.5h)e.5h();q(/M-(2L|3y)-7J/.1c(B.T.1b)){B.3I();m.92=L}D 1i}J q(/M-3y/.1c(el.1b)&&m.31!=B.P){B.3I();B.4W(\'1q\')}}J q(e.Z==\'bU\'){m.5j(19,\'76\',m.6Z);q(m.2D){q(m.53&&m.2D.Z==\'2L\')m.2D.B.T.E.4M=m.53;A 3z=m.2D.3z;q(!3z&&!m.92&&!/(3B|3L)/.1c(m.2D.Z)){q(m.1x(B,\'dS\'))B.2f()}J q(3z||(!3z&&m.b4)){m.2D.B.4W(\'1q\')}q(m.2D.B.3S)m.2D.B.3S.E.1m=\'1r\';q(3z)m.1x(m.2D.B,\'fi\',m.2D);q(3z)m.4T(B);m.92=1i;m.2D=H}J q(/M-2L-7J/.1c(el.1b)){el.E.4M=m.53}}D 1i},6Z:C(e){q(!m.2D)D L;q(!e)e=1U.2E;A a=m.2D,B=a.B;q(B.1h){q(!B.3S)B.3S=m.18(\'R\',H,{1n:\'2r\',K:B.x.I+\'F\',N:B.y.I+\'F\',Y:B.x.cb+\'F\',V:B.y.cb+\'F\',1F:4,6A:(m.1z?\'fg\':\'1r\'),1w:.ff},B.Q,L);q(B.3S.E.1m==\'1r\')B.3S.E.1m=\'\'}a.dX=e.77-a.b3;a.dY=e.7n-a.aZ;A 8w=1j.fo(1j.b0(a.dX,2)+1j.b0(a.dY,2));q(!a.3z)a.3z=(a.Z!=\'2L\'&&8w>0)||(8w>(m.fl||5));q(a.3z&&e.77>5&&e.7n>5){q(!m.1x(B,\'fd\',a))D 1i;q(a.Z==\'3L\')B.3L(a);J{B.8t(a.Y+a.dX,a.V+a.dY);q(a.Z==\'2L\')B.T.E.4M=\'3B\'}}D 1i},az:C(e){1C{q(!e)e=1U.2E;A 5V=/f6/i.1c(e.Z);q(!e.2G)e.2G=e.8x;q(m.1z)e.8y=5V?e.f5:e.f4;A B=m.2Y(e.2G);q(!B.5w)D;q(!B||!e.8y||m.2Y(e.8y,L)==B||m.2D)D;m.1x(B,5V?\'f3\':\'f7\',e);O(A i=0;i<B.1L.W;i++)(C(){A o=m.$(\'21\'+B.1L[i]);q(o&&o.7q){q(5V)m.S(o,{1o:\'22\',1m:\'\'});m.24(o,{1w:5V?o.1w:0},o.2B)}})()}1E(e){}},2l:C(el,2E,3P){q(el==19&&2E==\'4q\')m.2o(m.7r,3P);1C{el.2l(2E,3P,1i)}1E(e){1C{el.b2(\'6j\'+2E,3P);el.f8(\'6j\'+2E,3P)}1E(e){el[\'6j\'+2E]=3P}}},5j:C(el,2E,3P){1C{el.5j(2E,3P,1i)}1E(e){1C{el.b2(\'6j\'+2E,3P)}1E(e){el[\'6j\'+2E]=H}}},7m:C(i){q(m.86&&m.6e[i]&&m.6e[i]!=\'1T\'){A 1S=19.18(\'1S\');1S.4L=C(){1S=H;m.7m(i+1)};1S.1e=m.6e[i]}},bT:C(3Q){q(3Q&&1I 3Q!=\'72\')m.8p=3Q;A 2b=m.6h();O(A i=0;i<2b.4P.W&&i<m.8p;i++){m.2o(m.6e,m.7x(2b.4P[i]))}q(m.1X)1H m.5U(m.1X,C(){m.7m(0)});J m.7m(0);q(m.69)A 56=m.18(\'1S\',{1e:m.5m+m.69})},6R:C(){q(!m.2g){m.6d();m.5b=m.1z&&m.3X<7;m.c3=m.5b&&7P.fr==\'fE:\';O(A x 3j m.7b){q(1I m[x]!=\'1T\')m.14[x]=m[x];J q(1I m.14[x]==\'1T\'&&1I m.7b[x]!=\'1T\')m.14[x]=m.7b[x]}m.2g=m.18(\'R\',{1b:\'M-2g\'},{1n:\'2r\',Y:0,V:0,K:\'2W%\',1F:m.4p,9l:\'aL\'},19.1k,L);m.2s=m.18(\'a\',{1b:\'M-2s\',2k:m.14.av,2h:m.14.aw,23:\'bo:;\'},{1n:\'2r\',V:\'-4h\',1w:m.ay,1F:1},m.2g);m.8H=m.18(\'R\',H,{1m:\'1r\'},m.2g);m.36=m.18(\'R\',{1b:\'M-36\'},{1o:(m.4o&&m.3X<cu)?\'22\':\'1q\'},m.2g,1);m.3v=m.18(\'R\',H,{a1:\'a0\',fH:\'fI\'},H,L);1j.fK=C(t,b,c,d){D c*t/d+b};1j.au=C(t,b,c,d){D c*(t/=d)*t+b};1j.9h=C(t,b,c,d){D-c*(t/=d)*(t-2)+b};m.cF=m.5b;m.cE=((1U.3F&&m.3X<9)||5d.a5==\'a4\'||(m.1z&&m.3X<5.5));m.1x(k,\'fu\')}},4q:C(){q(m.7K)D;m.7K=L;O(A i=0;i<m.7r.W;i++)m.7r[i]()},8T:C(){A el,1l,5H=[],4P=[],4O=[],3m={},2n;O(A i=0;i<m.8F.W;i++){1l=19.2z(m.8F[i]);O(A j=0;j<1l.W;j++){el=1l[j];2n=m.6F(el);q(2n){m.2o(5H,el);q(2n[0]==\'m.2H\')m.2o(4P,el);J q(2n[0]==\'m.9c\')m.2o(4O,el);A g=m.4b(el,\'2R\')||\'1r\';q(!3m[g])3m[g]=[];m.2o(3m[g],el)}}}m.4N={5H:5H,3m:3m,4P:4P,4O:4O};D m.4N},6h:C(){D m.4N||m.8T()},2f:C(el){A B=m.2Y(el);q(B)B.2f();D 1i}};m.fx=C(30,1v,1y){k.1v=1v;k.30=30;k.1y=1y;q(!1v.at)1v.at={}};m.fx.58={9P:C(){(m.fx.3J[k.1y]||m.fx.3J.aA)(k);q(k.1v.3J)k.1v.3J.ar(k.30,k.4r,k)},3t:C(ao,2a,4C){k.9Q=(1H 7z()).7C();k.4D=ao;k.3Z=2a;k.4C=4C;k.4r=k.4D;k.G=k.9R=0;A 54=k;C t(6m){D 54.3J(6m)}t.30=k.30;q(t()&&m.47.2o(t)==1){m.ap=fB(C(){A 47=m.47;O(A i=0;i<47.W;i++)q(!47[i]())47.fz(i--,1);q(!47.W){fJ(m.ap)}},13)}},3J:C(6m){A t=(1H 7z()).7C();q(6m||t>=k.1v.41+k.9Q){k.4r=k.3Z;k.G=k.9R=1;k.9P();k.1v.6y[k.1y]=L;A 9M=L;O(A i 3j k.1v.6y)q(k.1v.6y[i]!==L)9M=1i;q(9M){q(k.1v.6G)k.1v.6G.ar(k.30)}D 1i}J{A n=t-k.9Q;k.9R=n/k.1v.41;k.G=k.1v.2S(n,0,1,k.1v.41);k.4r=k.4D+((k.3Z-k.4D)*k.G);k.9P()}D L}};m.3E(m.fx,{3J:{1w:C(fx){m.S(fx.30,{1w:fx.4r})},aA:C(fx){q(fx.30.E&&fx.30.E[fx.1y]!=H)fx.30.E[fx.1y]=fx.4r+fx.4C;J fx.30[fx.1y]=fx.4r}}});m.5U=C(1X,3s){k.3s=3s;k.1X=1X;A v=m.3X,43;k.9p=m.1z&&v>=5.5&&v<7;q(!1X){q(3s)3s();D}m.6R();k.2i=m.18(\'2i\',{ey:0},{1o:\'1q\',1n:\'2r\',ex:\'eq\',K:0},m.2g,L);A 4g=m.18(\'4g\',H,H,k.2i,1);k.2I=[];O(A i=0;i<=8;i++){q(i%3==0)43=m.18(\'43\',H,{N:\'28\'},4g,L);k.2I[i]=m.18(\'2I\',H,H,43,L);A E=i!=4?{ep:0,eh:0}:{1n:\'4j\'};m.S(k.2I[i],E)}k.2I[4].1b=1X+\' M-1a\';k.aI()};m.5U.58={aI:C(){A 1e=m.5m+(m.ef||"ed/")+k.1X+".aJ";A aK=m.4o?m.2g:H;k.3M=m.18(\'1S\',H,{1n:\'2r\',V:\'-4h\'},aK,L);A 3x=k;k.3M.4L=C(){3x.aG()};k.3M.1e=1e},aG:C(){A o=k.1s=k.3M.K/4,G=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1B={N:(2*o)+\'F\',K:(2*o)+\'F\'};O(A i=0;i<=8;i++){q(G[i]){q(k.9p){A w=(i==1||i==7)?\'2W%\':k.3M.K+\'F\';A R=m.18(\'R\',H,{K:\'2W%\',N:\'2W%\',1n:\'4j\',2q:\'1q\'},k.2I[i],L);m.18(\'R\',H,{6g:"em:ek.bH.eB(eC=eT, 1e=\'"+k.3M.1e+"\')",1n:\'2r\',K:w,N:k.3M.N+\'F\',Y:(G[i][0]*o)+\'F\',V:(G[i][1]*o)+\'F\'},R,L)}J{m.S(k.2I[i],{6A:\'7a(\'+k.3M.1e+\') \'+(G[i][0]*o)+\'F \'+(G[i][1]*o)+\'F\'})}q(1U.3F&&(i==3||i==5))m.18(\'R\',H,1B,k.2I[i],L);m.S(k.2I[i],1B)}}k.3M=H;q(m.4F[k.1X])m.4F[k.1X].6a();m.4F[k.1X]=k;q(k.3s)k.3s()},4B:C(G,1s,aF,2B,2S){A B=k.B,3C=B.Q.E,1s=1s||0,G=G||{x:B.x.G+1s,y:B.y.G+1s,w:B.x.U(\'1W\')-2*1s,h:B.y.U(\'1W\')-2*1s};q(aF)k.2i.E.1o=(G.h>=4*k.1s)?\'22\':\'1q\';m.S(k.2i,{Y:(G.x-k.1s)+\'F\',V:(G.y-k.1s)+\'F\',K:(G.w+2*k.1s)+\'F\'});G.w-=2*k.1s;G.h-=2*k.1s;m.S(k.2I[4],{K:G.w>=0?G.w+\'F\':0,N:G.h>=0?G.h+\'F\':0});q(k.9p)k.2I[3].E.N=k.2I[5].E.N=k.2I[4].E.N},6a:C(aB){q(aB)k.2i.E.1o=\'1q\';J m.3H(k.2i)}};m.6q=C(B,1B){k.B=B;k.1B=1B;k.3p=1B==\'x\'?\'bN\':\'bM\';k.3l=k.3p.6f();k.5Z=1B==\'x\'?\'bZ\':\'bY\';k.6w=k.5Z.6f();k.9u=1B==\'x\'?\'bO\':\'bP\';k.aD=k.9u.6f();k.1g=k.3o=0};m.6q.58={U:C(P){aC(P){2c\'8b\':D k.1N+k.3k+(k.t-m.2s[\'1s\'+k.3p])/2;2c\'8k\':D k.G+k.cb+k.1g+(k.I-m.2s[\'1s\'+k.3p])/2;2c\'1W\':D k.I+2*k.cb+k.1g+k.3o;2c\'5a\':D k.4l-k.3n-k.4n;2c\'7F\':D k.U(\'5a\')-2*k.cb-k.1g-k.3o;2c\'60\':D k.G-(k.B.1a?k.B.1a.1s:0);2c\'82\':D k.U(\'1W\')+(k.B.1a?2*k.B.1a.1s:0);2c\'2j\':D k.1Y?1j.5g((k.I-k.1Y)/2):0}},7E:C(){k.cb=(k.B.T[\'1s\'+k.3p]-k.t)/2;k.4n=m[\'9t\'+k.9u]},7U:C(){k.t=k.B.el[k.3l]?2v(k.B.el[k.3l]):k.B.el[\'1s\'+k.3p];k.1N=k.B.1N[k.1B];k.3k=(k.B.el[\'1s\'+k.3p]-k.t)/2;q(k.1N<1){k.1N=(m.3V[k.3l]/2)+m.3V[\'2d\'+k.5Z]}},7I:C(){A B=k.B;k.2O=\'28\';q(B.9q==\'4A\')k.2O=\'4A\';J q(1H 4y(k.6w).1c(B.4c))k.2O=H;J q(1H 4y(k.aD).1c(B.4c))k.2O=\'2Q\';k.G=k.1N-k.cb+k.3k;k.I=1j.3q(k.1d,B[\'2Q\'+k.3p]||k.1d);k.2Z=B.5v?1j.3q(B[\'3q\'+k.3p],k.1d):k.1d;q(B.2M&&B.3A){k.I=B[k.3l];k.1Y=k.1d}q(k.1B==\'x\'&&m.5G)k.2Z=B.4H;k.2G=B[\'2G\'+k.1B.aE()];k.3n=m[\'9t\'+k.5Z];k.2d=m.3V[\'2d\'+k.5Z];k.4l=m.3V[k.3l]},6z:C(i){A B=k.B;q(B.2M&&(B.3A||m.5G)){k.1Y=i;k.I=1j.2Q(k.I,k.1Y);B.T.E[k.6w]=k.U(\'2j\')+\'F\'}J k.I=i;B.T.E[k.3l]=i+\'F\';B.Q.E[k.3l]=k.U(\'1W\')+\'F\';q(B.1a)B.1a.4B();q(B.3S)B.3S.E[k.3l]=i+\'F\';q(B.2C){A d=B.2t;q(k.7S===1T)k.7S=B.1t[\'1s\'+k.3p]-d[\'1s\'+k.3p];d.E[k.3l]=(k.I-k.7S)+\'F\';q(k.1B==\'x\')B.42.E.K=\'28\';q(B.1k)B.1k.E[k.3l]=\'28\'}q(k.1B==\'x\'&&B.1u)B.4R(L);q(k.1B==\'x\'&&B.1p&&B.2M){q(i==k.1d)B.1p.57(\'1d-2H\');J B.1p.4u(\'1d-2H\')}},9a:C(i){k.G=i;k.B.Q.E[k.6w]=i+\'F\';q(k.B.1a)k.B.1a.4B()}};m.5x=C(a,2e,3t,3f){q(19.cg&&m.1z&&!m.7K){m.2l(19,\'4q\',C(){1H m.5x(a,2e,3t,3f)});D}k.a=a;k.3t=3t;k.3f=3f||\'2L\';k.2C=(3f==\'3y\');k.2M=!k.2C;m.86=1i;k.1L=[];k.1f=m.1f;m.1f=H;m.6R();A P=k.P=m.11.W;O(A i=0;i<m.88.W;i++){A 3d=m.88[i];k[3d]=2e&&1I 2e[3d]!=\'1T\'?2e[3d]:m[3d]}q(!k.1e)k.1e=a.23;A el=(2e&&2e.9H)?m.$(2e.9H):a;el=k.aH=el.2z(\'1S\')[0]||el;k.6D=el.1D||a.1D;q(!m.1x(k,\'eJ\'))D L;O(A i=0;i<m.11.W;i++){q(m.11[i]&&m.11[i].a==a&&!(k.1f&&k.3g[1]==\'4f\')){m.11[i].3I();D 1i}}q(!m.eN)O(A i=0;i<m.11.W;i++){q(m.11[i]&&m.11[i].aH!=el&&!m.11[i].7w){m.11[i].6r()}}m.11[P]=k;q(!m.9d&&!m.2u){q(m.11[P-1])m.11[P-1].2f();q(1I m.31!=\'1T\'&&m.11[m.31])m.11[m.31].2f()}k.el=el;k.1N=m.6n(el);m.6d();A x=k.x=1H m.6q(k,\'x\');x.7U();A y=k.y=1H m.6q(k,\'y\');y.7U();q(/5c/i.1c(el.3T))k.cm(el);k.Q=m.18(\'R\',{1D:\'M-Q-\'+k.P,1b:\'M-Q \'+k.9J},{1o:\'1q\',1n:\'2r\',1F:m.4p+=2},H,L);k.Q.eK=k.Q.d7=m.az;q(k.3f==\'2L\'&&k.3U==2)k.3U=0;q(!k.1X||(k.1f&&k.2M&&k.3g[1]==\'4f\')){k[k.3f+\'8h\']()}J q(m.4F[k.1X]){k.8l();k[k.3f+\'8h\']()}J{k.5Q();A B=k;1H m.5U(k.1X,C(){B.8l();B[B.3f+\'8h\']()})}D L};m.5x.58={8s:C(e){1U.7P.23=k.1e},8l:C(){A 1a=k.1a=m.4F[k.1X];1a.B=k;1a.2i.E.1F=k.Q.E.1F-1;m.4F[k.1X]=H},5Q:C(){q(k.7w||k.2s)D;k.2s=m.2s;A B=k;k.2s.2p=C(){B.6r()};q(!m.1x(k,\'eI\'))D;A B=k,l=k.x.U(\'8b\')+\'F\',t=k.y.U(\'8b\')+\'F\';q(!2P&&k.1f&&k.3g[1]==\'4f\')A 2P=k.1f;q(2P){l=2P.x.U(\'8k\')+\'F\';t=2P.y.U(\'8k\')+\'F\';k.2s.E.1F=m.4p++}49(C(){q(B.2s)m.S(B.2s,{Y:l,V:t,1F:m.4p++})},2W)},eQ:C(){A B=k;A 1S=19.18(\'1S\');k.T=1S;1S.4L=C(){q(m.11[B.P])B.5q()};q(m.eS)1S.ej=C(){D 1i};1S.1b=\'M-2L\';m.S(1S,{1o:\'1q\',1m:\'3w\',1n:\'2r\',aq:\'4h\',1F:3});1S.2k=m.14.7Q;q(m.4o)m.2g.1V(1S);q(m.1z&&m.ev)1S.1e=H;1S.1e=k.1e;k.5Q()},er:C(){q(!m.1x(k,\'es\'))D;k.T=m.7V(k.a);q(!k.T)k.T=m.5W(k.8e);q(!k.T)k.T=m.85();k.9N([\'6B\']);q(k.6B){A 1k=m.4G(k.T,\'R\',\'M-1k\');q(1k)1k.1V(k.6B);k.6B.E.1m=\'3w\'}m.1x(k,\'f1\');A 1t=k.1t=k.T;q(/(3D|1h)/.1c(k.2J))k.7O(1t);m.2g.1V(k.Q);m.S(k.Q,{1n:\'fs\',7Z:\'0 \'+m.9O+\'F 0 \'+m.4Y+\'F\'});k.T=m.18(\'R\',{1b:\'M-3y\'},{1n:\'4j\',1F:3,2q:\'1q\'},k.Q);k.42=m.18(\'R\',H,H,k.T,1);k.42.1V(1t);m.S(1t,{1n:\'4j\',1m:\'3w\',9l:m.14.9B||\'\'});q(k.K)1t.E.K=k.K+\'F\';q(k.N)m.S(1t,{N:k.N+\'F\',2q:\'1q\'});q(1t.1M<k.4H)1t.E.K=k.4H+\'F\';q(k.2J==\'3a\'&&!m.7V(k.a)){k.5Q();A 3a=1H m.7p(k.a,1t);A B=k;3a.3s=C(){q(m.11[B.P])B.5q()};3a.8z=C(){7P.23=B.1e};3a.8q()}J q(k.2J==\'1h\'&&k.3O==\'5r\'){k.6T()}J k.5q()},5q:C(){1C{q(!k.T)D;k.T.4L=H;q(k.7w)D;J k.7w=L;A x=k.x,y=k.y;q(k.2s){m.S(k.2s,{V:\'-4h\'});k.2s=H;m.1x(k,\'cl\')}q(k.2M){x.1d=k.T.K;y.1d=k.T.N;m.S(k.T,{K:x.t+\'F\',N:y.t+\'F\'});k.Q.1V(k.T);m.2g.1V(k.Q)}J q(k.83)k.83();x.7E();y.7E();m.S(k.Q,{Y:(x.1N+x.3k-x.cb)+\'F\',V:(y.1N+x.3k-y.cb)+\'F\'});k.9i();k.bg();A 2T=x.1d/y.1d;x.7I();k.2O(x);y.7I();k.2O(y);q(k.2C)k.af();q(k.1u)k.4R(0,1);q(k.5v){q(k.2M)k.cA(2T);J k.7M();A 1P=k.1p;q(1P&&k.1f&&1P.2N&&1P.ax){A G=1P.cn.1n||\'\',p;O(A 1B 3j m.8f)O(A i=0;i<5;i++){p=k[1B];q(G.2y(m.8f[1B][i])){p.G=k.1f[1B].G+(k.1f[1B].1g-p.1g)+(k.1f[1B].I-p.I)*[0,0,.5,1,1][i];q(1P.ax==\'fD\'){q(p.G+p.I+p.1g+p.3o>p.2d+p.4l-p.4n)p.G=p.2d+p.4l-p.I-p.3n-p.4n-p.1g-p.3o;q(p.G<p.2d+p.3n)p.G=p.2d+p.3n}}}}q(k.2M&&k.x.1d>(k.x.1Y||k.x.I)){k.bj();q(k.1L.W==1)k.4R()}}k.9j()}1E(e){k.8s(e)}},7O:C(5M,28){A c=m.4G(5M,\'6J\',\'M-1k\');q(/(1h|3D)/.1c(k.2J)){q(k.3Y)c.E.K=k.3Y+\'F\';q(k.5e)c.E.N=k.5e+\'F\'}},6T:C(){q(k.aN)D;A B=k;k.1k=m.4G(k.1t,\'6J\',\'M-1k\');q(k.2J==\'1h\'){k.5Q();A 5k=m.3v.4Z(1);k.1k.1V(5k);k.fc=k.1t.1M;q(!k.3Y)k.3Y=5k.1M;A 55=k.1t.1Q-k.1k.1Q,h=k.5e||m.3V.N-55-m.6b-m.6v,4L=k.3O==\'5r\'?\' 4L="q (m.11[\'+k.P+\']) m.11[\'+k.P+\'].5q()" \':\'\';k.1k.2h+=\'<1h 3d="m\'+(1H 7z()).7C()+\'" cX="0" P="\'+k.P+\'" \'+\' cR="L" E="K:\'+k.3Y+\'F; N:\'+h+\'F" \'+4L+\' 1e="\'+k.1e+\'"></1h>\';k.5k=k.1k.2z(\'R\')[0];k.1h=k.1k.2z(\'1h\')[0];q(k.3O==\'5z\')k.7R()}q(k.2J==\'3D\'){k.1k.1D=k.1k.1D||\'m-dg-1D-\'+k.P;A a=k.89;q(!a.2e)a.2e={};q(1I a.2e.b1==\'1T\')a.2e.b1=\'cP\';q(9g)9g.cJ(k.1e,k.1k.1D,k.3Y,k.5e,a.da||\'7\',a.eb,a.an,a.2e,a.b5)}k.aN=L},83:C(){q(k.1h&&!k.5e){k.1h.E.N=k.1k.E.N=k.7X()+\'F\'}k.1t.1V(m.3v);q(!k.x.1d)k.x.1d=k.1t.1M;k.y.1d=k.1t.1Q;k.1t.8C(m.3v);q(m.1z&&k.9X>2v(k.1t.5L.N)){k.9X=2v(k.1t.5L.N)}m.S(k.Q,{1n:\'2r\',7Z:\'0\'});m.S(k.T,{K:k.x.t+\'F\',N:k.y.t+\'F\'})},7X:C(){A h;1C{A 2A=k.1h.8Q||k.1h.67.19;A 3v=2A.18(\'R\');3v.E.a1=\'a0\';2A.1k.1V(3v);h=3v.7L;q(m.1z)h+=2v(2A.1k.5L.6b)+2v(2A.1k.5L.6v)-1}1E(e){h=dJ}D h},7R:C(){A 4U=k.1t.1M-k.5k.1M;m.3H(k.5k);q(4U<0)4U=0;A 55=k.1t.1Q-k.1h.1Q;m.S(k.1h,{K:1j.9s(k.x.I-4U)+\'F\',N:1j.9s(k.y.I-55)+\'F\'});m.S(k.1k,{K:k.1h.E.K,N:k.1h.E.N});k.59=k.1h;k.2t=k.59},af:C(){k.7O(k.1t);q(k.2J==\'3D\'&&k.3O==\'5r\')k.6T();q(k.x.I<k.x.1d&&!k.71)k.x.I=k.x.1d;q(k.y.I<k.y.1d&&!k.7T)k.y.I=k.y.1d;k.2t=k.1t;m.S(k.42,{1n:\'4j\',K:k.x.I+\'F\'});m.S(k.1t,{8c:\'1r\',K:\'28\',N:\'28\'});A 1R=m.4G(k.1t,\'6J\',\'M-1k\');q(1R&&!/(1h|3D)/.1c(k.2J)){A 51=1R;1R=m.18(51.fv,H,{2q:\'1q\'},H,L);51.29.eg(1R,51);1R.1V(m.3v);1R.1V(51);A 4U=k.1t.1M-1R.1M;A 55=k.1t.1Q-1R.1Q;1R.8C(m.3v);A 78=m.4o||5d.a5==\'a4\'?1:0;m.S(1R,{K:(k.x.I-4U-78)+\'F\',N:(k.y.I-55)+\'F\',2q:\'28\',1n:\'4j\'});q(78&&51.1Q>1R.1Q){1R.E.K=(2v(1R.E.K)+78)+\'F\'}k.59=1R;k.2t=k.59}q(k.1h&&k.3O==\'5r\')k.7R();q(!k.59&&k.y.I<k.42.1Q)k.2t=k.T;q(k.2t==k.T&&!k.71&&!/(1h|3D)/.1c(k.2J)){k.x.I+=17}q(k.2t&&k.2t.1Q>k.2t.29.1Q){49("1C { m.11["+k.P+"].2t.E.2q = \'28\'; } 1E(e) {}",m.7f)}},cm:C(5c){A c=5c.eo.8u(\',\');O(A i=0;i<c.W;i++)c[i]=2v(c[i]);q(5c.d8.6f()==\'dC\'){k.x.1N+=c[0]-c[2];k.y.1N+=c[1]-c[2];k.x.t=k.y.t=2*c[2]}J{A 5B,5O,5C=5B=c[0],5K=5O=c[1];O(A i=0;i<c.W;i++){q(i%2==0){5C=1j.3q(5C,c[i]);5B=1j.2Q(5B,c[i])}J{5K=1j.3q(5K,c[i]);5O=1j.2Q(5O,c[i])}}k.x.1N+=5C;k.x.t=5B-5C;k.y.1N+=5K;k.y.t=5O-5K}},2O:C(p,5o){A 4v,2P=p.2G,1B=p==k.x?\'x\':\'y\';q(2P&&2P.2y(/ /)){4v=2P.8u(\' \');2P=4v[0]}q(2P&&m.$(2P)){p.G=m.6n(m.$(2P))[1B];q(4v&&4v[1]&&4v[1].2y(/^[-]?[0-9]+F$/))p.G+=2v(4v[1]);q(p.I<p.2Z)p.I=p.2Z}J q(p.2O==\'28\'||p.2O==\'4A\'){A 7Y=1i;A 5l=p.B.5v;q(p.2O==\'4A\')p.G=1j.5g(p.2d+(p.4l+p.3n-p.4n-p.U(\'1W\'))/2);J p.G=1j.5g(p.G-((p.U(\'1W\')-p.t)/2));q(p.G<p.2d+p.3n){p.G=p.2d+p.3n;7Y=L}q(!5o&&p.I<p.2Z){p.I=p.2Z;5l=1i}q(p.G+p.U(\'1W\')>p.2d+p.4l-p.4n){q(!5o&&7Y&&5l){p.I=p.U(1B==\'y\'?\'5a\':\'7F\')}J q(p.U(\'1W\')<p.U(\'5a\')){p.G=p.2d+p.4l-p.4n-p.U(\'1W\')}J{p.G=p.2d+p.3n;q(!5o&&5l)p.I=p.U(1B==\'y\'?\'5a\':\'7F\')}}q(!5o&&p.I<p.2Z){p.I=p.2Z;5l=1i}}J q(p.2O==\'2Q\'){p.G=1j.dz(p.G-p.I+p.t)}q(p.G<p.3n){A cB=p.G;p.G=p.3n;q(5l&&!5o)p.I=p.I-(p.G-cB)}},cA:C(2T){A x=k.x,y=k.y,7i=1i,3b=1j.3q(x.1d,x.I),4a=1j.3q(y.1d,y.I),3A=(k.3A||m.5G);q(3b/4a>2T){ 3b=4a*2T;q(3b<x.2Z){3b=x.2Z;4a=3b/2T}7i=L}J q(3b/4a<2T){ 4a=3b/2T;7i=L}q(m.5G&&x.1d<x.2Z){x.1Y=x.1d;y.I=y.1Y=y.1d}J q(k.3A){x.1Y=3b;y.1Y=4a}J{x.I=3b;y.I=4a}k.7M(3A?H:2T);q(3A&&y.I<y.1Y){y.1Y=y.I;x.1Y=y.I*2T}q(7i||3A){x.G=x.1N-x.cb+x.3k;x.2Z=x.I;k.2O(x,L);y.G=y.1N-y.cb+y.3k;y.2Z=y.I;k.2O(y,L);q(k.1u)k.4R()}},7M:C(2T){A x=k.x,y=k.y;q(k.1u){4Q(y.I>k.6k&&x.I>k.4H&&y.U(\'1W\')>y.U(\'5a\')){y.I-=10;q(2T)x.I=y.I*2T;k.4R(0,1)}}},dQ:C(){q(k.2t){A h=/1h/i.1c(k.2t.3T)?k.7X()+1+\'F\':\'28\';q(k.1k)k.1k.E.N=h;k.2t.E.N=h;k.y.6z(k.1t.1Q);m.4T(k)}},9j:C(){A x=k.x,y=k.y;k.4W(\'1q\');m.1x(k,\'dP\');q(k.1p&&k.1p.2X)k.1p.2X.4X();k.9w(1,{Q:{K:x.U(\'1W\'),N:y.U(\'1W\'),Y:x.G,V:y.G},T:{Y:x.1g+x.U(\'2j\'),V:y.1g+y.U(\'2j\'),K:x.1Y||x.I,N:y.1Y||y.I}},m.7f)},9w:C(1K,2a,2B){A 5F=k.3g,8n=1K?(k.1f?k.1f.a:H):m.2u,t=(5F[1]&&8n&&m.4b(8n,\'3g\')[1]==5F[1])?5F[1]:5F[0];q(k[t]&&t!=\'2H\'){k[t](1K,2a);D}q(k.1a&&!k.3U){q(1K)k.1a.4B();J k.1a.6a((k.2C&&k.4E))}q(!1K)k.8D();A B=k,x=B.x,y=B.y,2S=k.2S;q(!1K)2S=k.cj||2S;A 5z=1K?C(){q(B.1a)B.1a.2i.E.1o="22";49(C(){B.6S()},50)}:C(){B.5R()};q(1K)m.S(k.Q,{K:x.t+\'F\',N:y.t+\'F\'});q(1K&&k.2C){m.S(k.Q,{Y:(x.1N-x.cb+x.3k)+\'F\',V:(y.1N-y.cb+y.3k)+\'F\'})}q(k.cp){m.S(k.Q,{1w:1K?0:1});m.3E(2a.Q,{1w:1K})}m.24(k.Q,2a.Q,{41:2B,2S:2S,3J:C(3e,2K){q(B.1a&&B.3U&&2K.1y==\'V\'){A 5E=1K?2K.G:1-2K.G;A G={w:x.t+(x.U(\'1W\')-x.t)*5E,h:y.t+(y.U(\'1W\')-y.t)*5E,x:x.1N+(x.G-x.1N)*5E,y:y.1N+(y.G-y.1N)*5E};B.1a.4B(G,0,1)}q(B.2C){q(2K.1y==\'Y\')B.42.E.Y=(x.G-3e)+\'F\';q(2K.1y==\'V\')B.42.E.V=(y.G-3e)+\'F\'}}});m.24(k.T,2a.T,2B,2S,5z);q(1K){k.Q.E.1o=\'22\';k.T.E.1o=\'22\';q(k.2C)k.1t.E.1o=\'22\';k.a.1b+=\' M-4z-4c\'}},6i:C(1K,2a){k.3U=1i;A B=k,t=1K?m.7f:0;q(1K){m.24(k.Q,2a.Q,0);m.S(k.Q,{1w:0,1o:\'22\'});m.24(k.T,2a.T,0);k.T.E.1o=\'22\';m.24(k.Q,{1w:1},t,H,C(){B.6S()})}q(k.1a){k.1a.2i.E.1F=k.Q.E.1F;A 7d=1K||-1,1s=k.1a.1s,8m=1K?3:1s,8i=1K?1s:3;O(A i=8m;7d*i<=7d*8i;i+=7d,t+=25){(C(){A o=1K?8i-i:8m-i;49(C(){B.1a.4B(0,o,1)},t)})()}}q(1K){}J{49(C(){q(B.1a)B.1a.6a(B.4E);B.8D();m.24(B.Q,{1w:0},m.9o,H,C(){B.5R()})},t)}},4f:C(1K,2a){q(!1K)D;A B=k,2B=m.cq,1f=B.1f,x=B.x,y=B.y,2w=1f.x,2x=1f.y,1u=B.1u,Q=k.Q,T=k.T;m.5j(19,\'76\',m.6Z);k.1a=1f.1a;q(k.1a)k.1a.B=B;1f.1a=H;1f.Q.E.2q=\'1q\';m.S(Q,{Y:2w.G+\'F\',V:2x.G+\'F\',K:2w.U(\'1W\')+\'F\',N:2x.U(\'1W\')+\'F\'});m.S(T,{1m:\'1r\',K:(x.1Y||x.I)+\'F\',N:(y.1Y||y.I)+\'F\',Y:(x.1g+x.U(\'2j\'))+\'F\',V:(y.1g+y.U(\'2j\'))+\'F\'});A 4w=m.18(\'R\',{1b:\'M-2L\'},{1n:\'2r\',1F:4,2q:\'1q\',1m:\'1r\',Y:(2w.1g+2w.U(\'2j\'))+\'F\',V:(2x.1g+2x.U(\'2j\'))+\'F\',K:(2w.1Y||2w.I)+\'F\',N:(2x.1Y||2x.I)+\'F\'});q(k.2C)m.S(k.42,{Y:0,V:0});O(A i=0;i<k.1L.W;i++){A o=m.$(\'21\'+k.1L[i]);q(o.E.1o==\'1q\')o.E.1m=\'1r\'}q(1u)m.S(1u,{2q:\'22\',Y:(2w.1g+2w.cb)+\'F\',V:(2x.1g+2x.cb)+\'F\',K:2w.I+\'F\',N:2x.I+\'F\'});A 8j={81:1f,8g:k};O(A n 3j 8j){k[n]=8j[n].T.4Z(1);m.S(k[n],{1n:\'2r\',8c:0,1o:\'22\'});4w.1V(k[n])}m.S(k.81,{Y:0,V:0});m.S(k.8g,{1m:\'3w\',1w:0,Y:(x.G-2w.G+x.1g-2w.1g+x.U(\'2j\')-2w.U(\'2j\'))+\'F\',V:(y.G-2x.G+y.1g-2x.1g+y.U(\'2j\')-2x.U(\'2j\'))+\'F\'});Q.1V(4w);q(1u){1u.1b=\'\';Q.1V(1u)}4w.E.1m=\'\';1f.T.E.1m=\'1r\';q(m.4o){A 2y=5d.6M.2y(/cw\\/([0-9]{3})/);q(2y&&2v(2y[1])<cu)Q.E.1o=\'22\'}C 3Z(){Q.E.1o=T.E.1o=\'22\';T.E.1m=\'3w\';4w.E.1m=\'1r\';B.a.1b+=\' M-4z-4c\';B.6S();1f.5R();B.1f=H}m.24(1f.Q,{Y:x.G,V:y.G,K:x.U(\'1W\'),N:y.U(\'1W\')},2B);m.24(4w,{K:x.1Y||x.I,N:y.1Y||y.I,Y:x.1g+x.U(\'2j\'),V:y.1g+y.U(\'2j\')},2B);m.24(k.81,{Y:(2w.G-x.G+2w.1g-x.1g+2w.U(\'2j\')-x.U(\'2j\')),V:(2x.G-y.G+2x.1g-y.1g+2x.U(\'2j\')-y.U(\'2j\'))},2B);m.24(k.8g,{1w:1,Y:0,V:0},2B);q(1u)m.24(1u,{Y:x.1g+x.cb,V:y.1g+y.cb,K:x.I,N:y.I},2B);q(k.1a)A cs=C(3e,2K){q(2K.1y==\'V\'){A 3C=B.Q.E;A G={w:2v(3C.K),h:2v(3C.N),x:2v(3C.Y),y:2v(3C.V)};B.1a.4B(G)}};m.24(Q,2a.Q,{41:2B,6G:3Z,3J:cs});4w.E.1o=\'22\'},bE:C(o,el){q(!k.1f)D 1i;O(A i=0;i<k.1f.1L.W;i++){A 6X=m.$(\'21\'+k.1f.1L[i]);q(6X&&6X.21==o.21){k.9K();6X.dV=k.P;m.2o(k.1L,k.1f.1L[i]);D L}}D 1i},6S:C(){k.5w=L;k.3I();q(k.2C&&k.3O==\'5z\')k.6T();q(k.1h){1C{A B=k,2A=k.1h.8Q||k.1h.67.19;m.2l(2A,\'8G\',C(){q(m.31!=B.P)B.3I()})}1E(e){}q(m.1z&&1I k.5X!=\'dT\')k.1h.E.K=(k.3Y-1)+\'F\'}q(k.4m)m.1B(k);q(m.2u&&m.2u==k.a)m.2u=H;k.ci();A p=m.3V,7G=m.79.x+p.7B,8d=m.79.y+p.7A;k.8E=k.x.G<7G&&7G<k.x.G+k.x.U(\'1W\')&&k.y.G<8d&&8d<k.y.G+k.y.U(\'1W\');q(k.1u)k.bi();m.1x(k,\'cK\')},ci:C(){A P=k.P;A 1X=k.1X;1H m.5U(1X,C(){1C{m.11[P].co()}1E(e){}})},co:C(){A 1G=k.8a(1);q(1G&&1G.2p.cz().2y(/m\\.2H/))A 1S=m.18(\'1S\',{1e:m.7x(1G)})},8a:C(2m){A 80=k.6H(),as=m.4N.3m[k.2R||\'1r\'];q(!as[80+2m]&&k.1p&&k.1p.ce){q(2m==1)D as[0];J q(2m==-1)D as[as.W-1]}D as[80+2m]||H},6H:C(){A 2b=m.6h().3m[k.2R||\'1r\'];q(2b)O(A i=0;i<2b.W;i++){q(2b[i]==k.a)D i}D H},bh:C(){q(k[k.5t]){A 2b=m.4N.3m[k.2R||\'1r\'];q(2b){A s=m.14.3Q.26(\'%1\',k.6H()+1).26(\'%2\',2b.W);k[k.5t].2h=\'<R 1Z="M-3Q">\'+s+\'</R>\'+k[k.5t].2h}}},9i:C(){q(!k.1f){O(A i=0;i<m.5u.W;i++){A 1P=m.5u[i],3c=1P.2R;q(1I 3c==\'1T\'||3c===H||3c===k.2R)k.1p=1H m.8X(k.P,1P)}}J{k.1p=k.1f.1p}A 1P=k.1p;q(!1P)D;A P=1P.4d=k.P;1P.cd();1P.57(\'1d-2H\');q(1P.2N){A o=1P.cn||{};o.4x=1P.2N;o.21=\'2N\';k.4k(o)}q(1P.2X)1P.2X.7h(k);q(!k.1f&&k.45)1P.3G(L);q(1P.45){1P.45=49(C(){m.1G(P)},(1P.fa||fq))}},6r:C(){m.3H(k.Q);m.11[k.P]=H;q(m.2u==k.a)m.2u=H;m.8r(k.P);q(k.2s)m.2s.E.Y=\'-4h\';m.1x(k,\'cl\')},be:C(){q(k.5I)D;k.5I=m.18(\'a\',{23:m.ck,2G:m.ch,1b:\'M-5I\',2h:m.14.cv,2k:m.14.cr});k.4k({4x:k.5I,1n:k.ct||\'V Y\',21:\'5I\'})},9N:C(7W,cD){O(A i=0;i<7W.W;i++){A Z=7W[i],s=H;q(Z==\'9D\'&&!m.1x(k,\'fw\'))D;J q(Z==\'4S\'&&!m.1x(k,\'fy\'))D;q(!k[Z+\'7t\']&&k.6D)k[Z+\'7t\']=Z+\'-O-\'+k.6D;q(k[Z+\'7t\'])k[Z]=m.5W(k[Z+\'7t\']);q(!k[Z]&&!k[Z+\'7H\']&&k[Z+\'cy\'])1C{s=et(k[Z+\'cy\'])}1E(e){}q(!k[Z]&&k[Z+\'7H\']){s=k[Z+\'7H\']}q(!k[Z]&&!s){A 1G=k.a.cx;4Q(1G&&!m.6F(1G)){q((1H 4y(\'M-\'+Z)).1c(1G.1b||H)){k[Z]=1G.4Z(1);5f}1G=1G.cx}}q(!k[Z]&&!s&&k.5t==Z)s=\'\\n\';q(!k[Z]&&s)k[Z]=m.18(\'R\',{1b:\'M-\'+Z,2h:s});q(cD&&k[Z]){A o={1n:(Z==\'4S\')?\'5A\':\'7s\'};O(A x 3j k[Z+\'cC\'])o[x]=k[Z+\'cC\'][x];o.4x=k[Z];k.4k(o)}}},4W:C(1o){q(m.cF)k.6u(\'eM\',1o);q(m.cE)k.6u(\'eL\',1o);q(m.5p)k.6u(\'*\',1o)},6u:C(3T,1o){A 1l=19.2z(3T);A 1y=3T==\'*\'?\'2q\':\'1o\';O(A i=0;i<1l.W;i++){q(1y==\'1o\'||(19.7N.cf(1l[i],"").bw(\'2q\')==\'28\'||1l[i].bx(\'1q-by\')!=H)){A 2V=1l[i].bx(\'1q-by\');q(1o==\'22\'&&2V){2V=2V.26(\'[\'+k.P+\']\',\'\');1l[i].5D(\'1q-by\',2V);q(!2V)1l[i].E[1y]=1l[i].84}J q(1o==\'1q\'){A 3R=m.6n(1l[i]);3R.w=1l[i].1M;3R.h=1l[i].1Q;q(!k.4m){A ba=(3R.x+3R.w<k.x.U(\'60\')||3R.x>k.x.U(\'60\')+k.x.U(\'82\'));A bu=(3R.y+3R.h<k.y.U(\'60\')||3R.y>k.y.U(\'60\')+k.y.U(\'82\'))}A 6t=m.87(1l[i]);q(!ba&&!bu&&6t!=k.P){q(!2V){1l[i].5D(\'1q-by\',\'[\'+k.P+\']\');1l[i].84=1l[i].E[1y];1l[i].E[1y]=\'1q\'}J q(2V.bs(\'[\'+k.P+\']\')==-1){1l[i].5D(\'1q-by\',2V+\'[\'+k.P+\']\')}}J q((2V==\'[\'+k.P+\']\'||m.31==6t)&&6t!=k.P){1l[i].5D(\'1q-by\',\'\');1l[i].E[1y]=1l[i].84||\'\'}J q(2V&&2V.bs(\'[\'+k.P+\']\')>-1){1l[i].5D(\'1q-by\',2V.26(\'[\'+k.P+\']\',\'\'))}}}}},3I:C(){k.Q.E.1F=m.4p+=2;O(A i=0;i<m.11.W;i++){q(m.11[i]&&i==m.31){A 4s=m.11[i];4s.T.1b+=\' M-\'+4s.3f+\'-7J\';q(4s.2M){4s.T.E.4M=m.1z?\'bz\':\'73\';4s.T.2k=m.14.bt}m.1x(4s,\'eD\')}}q(k.1a)k.1a.2i.E.1F=k.Q.E.1F-1;k.T.1b=\'M-\'+k.3f;q(k.2M){k.T.2k=m.14.7Q;q(m.69){m.53=1U.3F?\'73\':\'7a(\'+m.5m+m.69+\'), 73\';q(m.1z&&m.3X<6)m.53=\'bz\';k.T.E.4M=m.53}}m.31=k.P;m.2l(19,1U.3F?\'9z\':\'9y\',m.6x);m.1x(k,\'eO\')},8t:C(x,y){k.x.9a(x);k.y.9a(y)},3L:C(e){A w,h,r=e.K/e.N;w=1j.2Q(e.K+e.dX,1j.3q(k.4H,k.x.1d));q(k.2M&&1j.9s(w-k.x.1d)<12)w=k.x.1d;h=k.2C?e.N+e.dY:w/r;q(h<1j.3q(k.6k,k.y.1d)){h=1j.3q(k.6k,k.y.1d);q(k.2M)w=h*r}k.8o(w,h)},8o:C(w,h){k.y.6z(h);k.x.6z(w)},2f:C(){q(k.5X||!k.5w)D;q(k.3g[1]==\'4f\'&&m.2u){m.2Y(m.2u).6r();m.2u=H}q(!m.1x(k,\'eV\'))D;k.5X=L;q(k.1p&&!m.2u)k.1p.3h();m.5j(19,1U.3F?\'9z\':\'9y\',m.6x);1C{q(k.2C)k.bA();k.T.E.4M=\'eU\';k.9w(0,{Q:{K:k.x.t,N:k.y.t,Y:k.x.1N-k.x.cb+k.x.3k,V:k.y.1N-k.y.cb+k.y.3k},T:{Y:0,V:0,K:k.x.t,N:k.y.t}},m.9o)}1E(e){k.5R()}},bA:C(){q(m.5p){q(!m.6c)m.6c=m.18(\'R\',H,{1n:\'2r\'},m.2g);m.S(m.6c,{K:k.x.I+\'F\',N:k.y.I+\'F\',Y:k.x.G+\'F\',V:k.y.G+\'F\',1m:\'3w\'})}q(k.2J==\'3D\')1C{m.$(k.1k.1D).eR()}1E(e){}q(k.3O==\'5z\'&&!k.4E)k.bF();q(k.2t&&k.2t!=k.59)k.2t.E.2q=\'1q\'},bF:C(){q(m.1z&&k.1h)1C{k.1h.67.19.1k.2h=\'\'}1E(e){}q(k.2J==\'3D\')9g.en(k.1k.1D);k.1k.2h=\'\'},bm:C(){q(k.1a)k.1a.2i.E.1m=\'1r\';k.3S=H;k.Q.E.1m=\'1r\';m.2o(m.4K,k)},bG:C(){1C{m.11[k.P]=k;q(!m.9d&&m.31!=k.P){1C{m.11[m.31].2f()}1E(e){}}A z=m.4p++,3C={1m:\'\',1F:z};m.S(k.Q,3C);k.5X=1i;A o=k.1a||0;q(o){q(!k.3U)3C.1o=\'1q\';m.S(o.2i,3C)}q(k.1p){k.9i()}k.9j()}1E(e){}},4k:C(o){A el=o.4x,52=(o.bD==\'36\'&&!/7u$/.1c(o.1n));q(1I el==\'9n\')el=m.5W(el);q(o.3y)el=m.18(\'R\',{2h:o.3y});q(!el||1I el==\'9n\')D;q(!m.1x(k,\'ee\',{16:el}))D;el.E.1m=\'3w\';o.21=o.21||o.4x;q(k.3g[1]==\'4f\'&&k.bE(o,el))D;k.9K();A K=o.K&&/^[0-9]+(F|%)$/.1c(o.K)?o.K:\'28\';q(/^(Y|3i)7u$/.1c(o.1n)&&!/^[0-9]+F$/.1c(o.K))K=\'ew\';A 16=m.18(\'R\',{1D:\'21\'+m.6p++,21:o.21},{1n:\'2r\',1o:\'1q\',K:K,9l:m.14.9B||\'\',1w:0},52?m.36:k.1u,L);q(52)16.6o=k.P;16.1V(el);m.3E(16,{1w:1,bB:0,bC:0,2B:(o.6i===0||o.6i===1i||(o.6i==2&&m.1z))?0:63});m.3E(16,o);q(k.bb){k.5T(16);q(!16.7q||k.8E)m.24(16,{1w:16.1w},16.2B)}m.2o(k.1L,m.6p-1)},5T:C(16){A p=16.1n||\'9T 4A\',52=(16.bD==\'36\'),6l=16.bB,6C=16.bC;q(52){m.36.E.1m=\'3w\';16.6o=k.P;q(16.1M>16.29.1M)16.E.K=\'2W%\'}J q(16.29!=k.1u)k.1u.1V(16);q(/Y$/.1c(p))16.E.Y=6l+\'F\';q(/4A$/.1c(p))m.S(16,{Y:\'50%\',4Y:(6l-1j.5g(16.1M/2))+\'F\'});q(/3i$/.1c(p))16.E.3i=-6l+\'F\';q(/^br$/.1c(p)){m.S(16,{3i:\'2W%\',9O:k.x.cb+\'F\',V:-k.y.cb+\'F\',4i:-k.y.cb+\'F\',2q:\'28\'});k.x.1g=16.1M}J q(/^bq$/.1c(p)){m.S(16,{Y:\'2W%\',4Y:k.x.cb+\'F\',V:-k.y.cb+\'F\',4i:-k.y.cb+\'F\',2q:\'28\'});k.x.3o=16.1M}A 9U=16.29.1Q;16.E.N=\'28\';q(52&&16.1Q>9U)16.E.N=m.5b?9U+\'F\':\'2W%\';q(/^V/.1c(p))16.E.V=6C+\'F\';q(/^9T/.1c(p))m.S(16,{V:\'50%\',6b:(6C-1j.5g(16.1Q/2))+\'F\'});q(/^4i/.1c(p))16.E.4i=-6C+\'F\';q(/^5A$/.1c(p)){m.S(16,{Y:(-k.x.1g-k.x.cb)+\'F\',3i:(-k.x.3o-k.x.cb)+\'F\',4i:\'2W%\',6v:k.y.cb+\'F\',K:\'28\'});k.y.1g=16.1Q}J q(/^7s$/.1c(p)){m.S(16,{1n:\'4j\',Y:(-k.x.1g-k.x.cb)+\'F\',3i:(-k.x.3o-k.x.cb)+\'F\',V:\'2W%\',6b:k.y.cb+\'F\',K:\'28\'});k.y.3o=16.1Q;16.E.1n=\'2r\'}},bg:C(){k.9N([\'4S\',\'9D\'],L);k.bh();q(k.9D)m.1x(k,\'f0\');q(k.4S)m.1x(k,\'fF\');q(k.4S&&k.9G)k.4S.1b+=\' M-3B\';q(m.bf)k.be();O(A i=0;i<m.1L.W;i++){A o=m.1L[i],6E=o.9H,3c=o.2R;q((!6E&&!3c)||(6E&&6E==k.6D)||(3c&&3c===k.2R)){q(k.2M||(k.2C&&o.fA))k.4k(o)}}A 6s=[];O(A i=0;i<k.1L.W;i++){A o=m.$(\'21\'+k.1L[i]);q(/7u$/.1c(o.1n))k.5T(o);J m.2o(6s,o)}O(A i=0;i<6s.W;i++)k.5T(6s[i]);k.bb=L},9K:C(){q(!k.1u)k.1u=m.18(\'R\',{1b:k.9J},{1n:\'2r\',K:(k.x.I||(k.3A?k.K:H)||k.x.1d)+\'F\',N:(k.y.I||k.y.1d)+\'F\',1o:\'1q\',2q:\'1q\',1F:m.1z?4:H},m.2g,L)},4R:C(9b,bc){A 1u=k.1u,x=k.x,y=k.y;m.S(1u,{K:x.I+\'F\',N:y.I+\'F\'});q(9b||bc){O(A i=0;i<k.1L.W;i++){A o=m.$(\'21\'+k.1L[i]);A 9k=(m.5b||19.9I==\'bd\');q(o&&/^(5A|7s)$/.1c(o.1n)){q(9k){o.E.K=(1u.1M+2*x.cb+x.1g+x.3o)+\'F\'}y[o.1n==\'5A\'?\'1g\':\'3o\']=o.1Q}q(o&&9k&&/^(Y|3i)7u$/.1c(o.1n)){o.E.N=(1u.1Q+2*y.cb)+\'F\'}}}q(9b){m.S(k.T,{V:y.1g+\'F\'});m.S(1u,{V:(y.1g+y.cb)+\'F\'})}},bi:C(){A b=k.1u;b.1b=\'\';m.S(b,{V:(k.y.1g+k.y.cb)+\'F\',Y:(k.x.1g+k.x.cb)+\'F\',2q:\'22\'});q(m.4o)b.E.1o=\'22\';k.Q.1V(b);O(A i=0;i<k.1L.W;i++){A o=m.$(\'21\'+k.1L[i]);o.E.1F=o.21==\'2N\'?5:4;q(!o.7q||k.8E){o.E.1o=\'22\';m.S(o,{1o:\'22\',1m:\'\'});m.24(o,{1w:o.1w},o.2B)}}},8D:C(){q(!k.1L.W)D;O(A i=0;i<k.1L.W;i++){A o=m.$(\'21\'+k.1L[i]);q(o.29==m.36)m.3H(o)}q(k.1p){A c=k.1p.2N;q(c&&m.2Y(c)==k)c.29.8C(c)}q(k.2C&&k.4E){k.1u.E.V=\'-4h\';m.2g.1V(k.1u)}J m.3H(k.1u)},bj:C(){q(k.1p&&k.1p.2N){k.1p.4u(\'1d-2H\');D}k.7y=m.18(\'a\',{23:\'bo:m.11[\'+k.P+\'].6L();\',2k:m.14.8J,1b:\'M-1d-2H\'});q(!m.1x(k,\'fG\'))D;k.4k({4x:k.7y,1n:m.bp,7q:L,1w:m.bn})},6L:C(){1C{q(!m.1x(k,\'fp\'))D;q(k.7y)m.3H(k.7y);k.3I();A 3b=k.x.I;k.8o(k.x.1d,k.y.1d);A 7o=k.x.G-(k.x.I-3b)/2;q(7o<m.4Y)7o=m.4Y;k.8t(7o,k.y.G);k.4W(\'1q\');m.4T(k)}1E(e){k.8s(e)}},5R:C(){k.a.1b=k.a.1b.26(\'M-4z-4c\',\'\');k.4W(\'22\');q(k.2C&&k.4E&&k.3g[1]!=\'4f\'){k.bm()}J{q(k.1a&&k.3U)k.1a.6a();m.3H(k.Q)}q(m.6c)m.6c.E.1m=\'1r\';q(!m.36.74.W)m.36.E.1m=\'1r\';q(k.4m)m.8r(k.P);m.1x(k,\'f9\');m.11[k.P]=H;m.bk()}};m.7p=C(a,T,6W){k.a=a;k.T=T;k.6W=6W};m.7p.58={8q:C(){q(!k.1e)k.1e=m.7x(k.a);q(k.1e.2y(\'#\')){A 2b=k.1e.8u(\'#\');k.1e=2b[0];k.1D=2b[1]}q(m.6Q[k.1e]){k.c2=m.6Q[k.1e];q(k.1D)k.97();J k.66();D}1C{k.3r=1H c4()}1E(e){1C{k.3r=1H bl("fb.bI")}1E(e){1C{k.3r=1H bl("bH.bI")}1E(e){k.8z()}}}A 3x=k;k.3r.f2=C(){q(3x.3r.cg==4){q(3x.1D)3x.97();J 3x.66()}};A 1e=k.1e;q(m.fm)1e=1e.26(/$/,(/\\?/.1c(1e)?\'&\':\'?\')+\'fn=\'+(1H 7z()).7C());k.3r.c6(\'ec\',1e,L);k.3r.c5(\'X-fh-eu\',\'c4\');k.3r.c5(\'cQ-cN\',\'cW/x-dh-95-d0\');k.3r.d9(H)},97:C(){m.6R();A 3W=1U.3F||m.c3?{1e:\'di:dj\'}:H;k.1h=m.18(\'1h\',3W,{1n:\'2r\',V:\'-4h\'},m.2g);k.66()},66:C(){A s=k.c2||k.3r.df;q(k.6W)m.6Q[k.1e]=s;q(!m.1z||m.3X>=5.5){s=s.26(/\\s/g,\' \').26(1H 4y(\'<cM[^>]*>\',\'c1\'),\'\').26(1H 4y(\'<c0[^>]*>.*?</c0>\',\'c1\'),\'\');q(k.1h){A 2A=k.1h.8Q;q(!2A&&k.1h.67)2A=k.1h.67.19;q(!2A){A 3x=k;49(C(){3x.66()},25);D}2A.c6();2A.cV(s);2A.2f();1C{s=2A.8S(k.1D).2h}1E(e){1C{s=k.1h.19.8S(k.1D).2h}1E(e){}}m.3H(k.1h)}J{s=s.26(1H 4y(\'^.*?<1k[^>]*>(.*?)</1k>.*?$\',\'i\'),\'$1\')}}m.4G(k.T,\'6J\',\'M-1k\').2h=s;k.3s();O(A x 3j k)k[x]=H}};m.8X=C(4d,1v){q(m.cI!==1i)m.8T();k.4d=4d;O(A x 3j 1v)k[x]=1v[x];q(k.cH)k.c7();q(k.2X)k.2X=m.c9(k)};m.8X.58={c7:C(){k.2N=m.18(\'R\',{2h:m.8V(m.8U.2N)},H,m.2g);A 5Y=[\'3G\',\'3h\',\'35\',\'1G\',\'3B\',\'1d-2H\',\'2f\'];k.1O={};A 3x=k;O(A i=0;i<5Y.W;i++){k.1O[5Y[i]]=m.4G(k.2N,\'1J\',\'M-\'+5Y[i]);k.4u(5Y[i])}k.1O.3h.E.1m=\'1r\'},cd:C(){q(k.ce||!k.2N)D;A B=m.11[k.4d],56=B.6H(),2n=/6K$/;q(56==0)k.57(\'35\');J q(2n.1c(k.1O.35.2z(\'a\')[0].1b))k.4u(\'35\');q(56+1==m.4N.3m[B.2R||\'1r\'].W){k.57(\'1G\');k.57(\'3G\')}J q(2n.1c(k.1O.1G.2z(\'a\')[0].1b)){k.4u(\'1G\');k.4u(\'3G\')}},4u:C(1O){q(!k.1O)D;A cc=k,a=k.1O[1O].2z(\'a\')[0],2n=/6K$/;a.2p=C(){cc[1O]();D 1i};q(2n.1c(a.1b))a.1b=a.1b.26(2n,\'\')},57:C(1O){q(!k.1O)D;A a=k.1O[1O].2z(\'a\')[0];a.2p=C(){D 1i};q(!/6K$/.1c(a.1b))a.1b+=\' 6K\'},ca:C(){q(k.45)k.3h();J k.3G()},3G:C(c8){q(k.1O){k.1O.3G.E.1m=\'1r\';k.1O.3h.E.1m=\'\'}k.45=L;q(!c8)m.1G(k.4d)},3h:C(){q(k.1O){k.1O.3h.E.1m=\'1r\';k.1O.3G.E.1m=\'\'}dW(k.45);k.45=H},35:C(){k.3h();m.35(k.1O.35)},1G:C(){k.3h();m.1G(k.1O.1G)},3B:C(){},\'1d-2H\':C(){m.2Y().6L()},2f:C(){m.2f(k.1O.2f)}};m.c9=C(1p){C 7h(B){m.3E(1v||{},{4x:4J,21:\'2X\'});q(m.5b)1v.6i=0;B.4k(1v);m.S(4J.29,{2q:\'1q\'})};C 2d(3N){4X(1T,1j.5g(3N*4J[3K?\'1M\':\'1Q\']*0.7))};C 4X(i,9C){q(i===1T)O(A j=0;j<5J.W;j++){q(5J[j]==m.11[1p.4d].a){i=j;5f}}q(i===1T)D;A as=4J.2z(\'a\'),4z=as[i],48=4z.29,Y=3K?\'bZ\':\'bY\',3i=3K?\'bO\':\'bP\',K=3K?\'bN\':\'bM\',4I=\'1s\'+Y,1M=\'1s\'+K,7e=R.29.29[1M],7c=7e-2i[1M],5y=2v(2i.E[3K?\'Y\':\'V\'])||0,2U=5y,dZ=20;q(9C!==1T){2U=5y-9C;q(2U>0)2U=0;q(2U<7c)2U=7c}J{O(A j=0;j<as.W;j++)as[j].1b=\'\';4z.1b=\'M-4z-4c\';A 9e=i>0?as[i-1].29[4I]:48[4I],9m=48[4I]+48[1M]+(as[i+1]?as[i+1].29[1M]:0);q(9m>7e-5y)2U=7e-9m;J q(9e<-5y)2U=-9e}A 9f=48[4I]+(48[1M]-7g[1M])/2+2U;m.24(2i,3K?{Y:2U}:{V:2U},H,\'9h\');m.24(7g,3K?{Y:9f}:{V:9f},H,\'9h\');8A.E.1m=2U<0?\'3w\':\'1r\';8v.E.1m=(2U>7c)?\'3w\':\'1r\'};A 5J=m.4N.3m[m.11[1p.4d].2R||\'1r\'],1v=1p.2X,5N=1v.5N||\'bJ\',9L=(5N==\'e9\'),44=9L?[\'R\',\'5s\',\'1J\',\'1A\']:[\'2i\',\'4g\',\'43\',\'2I\'],3K=(5N==\'bJ\'),4J=m.18(\'R\',{1b:\'M-2X M-2X-\'+5N,2h:\'<R 1Z="M-2X-e6">\'+\'<\'+44[0]+\'><\'+44[1]+\'></\'+44[1]+\'></\'+44[0]+\'></R>\'+\'<R 1Z="M-2d-1K"><R></R></R>\'+\'<R 1Z="M-2d-e5"><R></R></R>\'+\'<R 1Z="M-7g"><R></R></R>\'},{1m:\'1r\'},m.2g),5P=4J.74,R=5P[0],8A=5P[1],8v=5P[2],7g=5P[3],2i=R.e3,4g=4J.2z(44[1])[0],43;O(A i=0;i<5J.W;i++){q(i==0||!3K)43=m.18(44[2],H,H,4g);(C(){A a=5J[i],48=m.18(44[3],H,H,43),e4=i;m.18(\'a\',{23:a.23,2p:C(){m.2Y(k).3I();D m.9v(a)},2h:m.bK?m.bK(a):a.2h},H,48)})()}q(!9L){8A.2p=C(){2d(-1)};8v.2p=C(){2d(1)};m.2l(4g,19.dw!==1T?\'dH\':\'dI\',C(e){A 3N=0;e=e||1U.2E;q(e.bL){3N=e.bL/dE;q(m.3F)3N=-3N}J q(e.bQ){3N=-e.bQ/3}q(3N)2d(-3N*0.2);q(e.5h)e.5h();e.bR=1i})}D{7h:7h,4X:4X}};q(m.1z){(C(){1C{19.5n.dB(\'Y\')}1E(e){49(bW.dD,50);D}m.4q()})()}m.2l(19,\'dA\',m.4q);m.2l(1U,\'7v\',m.4q);m.7b=m.14;A dv=m.5x;m.2l(1U,\'7v\',C(){q(m.8B){A 9F=\'.M 1S\',9A=\'4M: 7a(\'+m.5m+m.8B+\'), 73 !e2;\';A E=m.18(\'E\',{Z:\'ea/8L\'},H,19.2z(\'e0\')[0]);q(!m.1z){E.1V(19.d5(9F+" {"+9A+"}"))}J{A 1f=19.bX[19.bX.W-1];q(1I(1f.bV)=="72")1f.bV(9F,9A)}}});m.2l(1U,\'3L\',C(){m.6d();q(m.36)O(A i=0;i<m.36.74.W;i++){A 1R=m.36.74[i],B=m.2Y(1R);B.5T(1R);q(1R.21==\'2X\')B.1p.2X.4X()}});m.2l(19,\'76\',C(e){m.79={x:e.77,y:e.7n}});m.2l(19,\'8G\',m.9x);m.2l(19,\'bU\',m.9x);m.2l(19,\'4q\',m.bS);m.2l(1U,\'7v\',m.bT);m.2l(1U,\'7v\',m.bv);',62,977,'||||||||||||||||||||this||hs||||if||||||||||var|exp|function|return|style|px|pos|null|size|else|width|true|highslide|height|for|key|wrapper|div|setStyles|content|get|top|length||left|type||expanders|||lang||overlay||createElement|document|outline|className|test|full|src|last|p1|iframe|false|Math|body|els|display|position|visibility|slideshow|hidden|none|offset|innerContent|overlayBox|options|opacity|fireEvent|prop|ie|span|dim|try|id|catch|zIndex|next|new|typeof|li|up|overlays|offsetWidth|tpos|btn|ss|offsetHeight|node|img|undefined|window|appendChild|wsize|outlineType|imgSize|class||hsId|visible|href|animate||replace||auto|parentNode|to|arr|case|scroll|params|close|container|innerHTML|table|imgPad|title|addEventListener|op|re|push|onclick|overflow|absolute|loading|scrollerDiv|upcoming|parseInt|lastX|lastY|match|getElementsByTagName|doc|dur|isHtml|dragArgs|event|dimmer|target|expand|td|objectType|args|image|isImage|controls|justify|tgt|max|slideshowGroup|easing|ratio|tblPos|hiddenBy|100|thumbstrip|getExpander|minSize|elem|focusKey||||previous|viewport||||ajax|xSize|sg|name|val|contentType|transitions|pause|right|in|tb|wh|groups|marginMin|p2|ucwh|min|xmlHttp|onLoad|custom|opt|clearing|block|pThis|html|hasDragged|useBox|move|stl|swf|extend|opera|play|discardElement|focus|step|isX|resize|graphic|delta|objectLoadTime|func|number|elPos|releaseMask|tagName|outlineWhileAnimating|page|attribs|uaVersion|objectWidth|end||duration|mediumContent|tr|tree|autoplay|styles|timers|cell|setTimeout|ySize|getParam|anchor|expKey|iebody|crossfade|tbody|9999px|bottom|relative|createOverlay|clientSize|dimmingOpacity|marginMax|safari|zIndexCounter|ready|now|blurExp|clone|enable|tgtArr|fadeBox|overlayId|RegExp|active|center|setPosition|unit|start|preserveContent|pendingOutlines|getElementByClass|minWidth|offsetLeft|dom|sleeping|onload|cursor|anchors|htmls|images|while|sizeOverlayBox|heading|setDimmerSize|wDiff|adj|doShowHide|selectThumb|marginLeft|cloneNode||cNode|relToVP|styleRestoreCursor|self|hDiff|cur|disable|prototype|scrollingContent|fitsize|ieLt7|area|navigator|objectHeight|break|round|preventDefault|cacheBindings|removeEventListener|ruler|allowReduce|graphicsDir|documentElement|moveOnly|geckoMac|contentLoaded|before|ul|numberPosition|slideshows|allowSizeReduction|isExpanded|Expander|curTblPos|after|above|maxX|minX|setAttribute|fac|trans|padToMinWidth|all|credits|group|minY|currentStyle|parent|mode|maxY|domCh|showLoading|afterClose|cache|positionOverlay|Outline|over|getNode|isClosing|buttons|uclt|opos|param|owner|250|obj|getParams|loadHTML|contentWindow|matches|restoreCursor|destroy|marginTop|mask|getPageSize|preloadTheseImages|toLowerCase|filter|getAnchors|fade|on|minHeight|offX|gotoEnd|getPosition|hsKey|idCounter|Dimension|cancelLoading|os|wrapperKey|showHideElements|marginBottom|lt|keyHandler|curAnim|setSize|background|maincontent|offY|thumbsUserSetId|tId|isHsAnchor|complete|getAnchorIndex|rel|DIV|disabled|doFullExpand|userAgent|innerHeight|imgs|topmostKey|cachedGets|init|afterExpand|writeExtendedContent|pageHeight|pageWidth|pre|oDiv|innerWidth|dragHandler||allowWidthReduction|object|pointer|childNodes||mousemove|clientX|kdeBugCorr|mouse|url|langDefaults|minTblPos|dir|overlayWidth|expandDuration|marker|add|changed|previousOrNext|preloadTheseAjax|element|preloadFullImage|clientY|xpos|Ajax|hideOnMouseOut|onReady|below|Id|panel|load|onLoadStarted|getSrc|fullExpandLabel|Date|scrollTop|scrollLeft|getTime|expOnly|calcBorders|maxsize|mX|Text|calcExpanded|blur|isReady|offsetTop|fitOverlayBox|defaultView|setObjContainerSize|location|restoreTitle|correctIframeSize|sizeDiff|allowHeightReduction|calcThumb|getCacheBinding|types|getIframePageHeight|hasMovedMin|padding|current|oldImg|osize|htmlGetSize|origProp|getSelfRendered|continuePreloading|getWrapperKey|overrides|swfOptions|getAdjacentAnchor|loadingPos|border|mY|contentId|oPos|newImg|Create|endOff|names|loadingPosXfade|connectOutline|startOff|other|resizeTo|numberOfImagesToPreload|run|undim|error|moveTo|split|scrollDown|distance|srcElement|relatedTarget|onError|scrollUp|expandCursor|removeChild|destroyOverlays|mouseIsOver|openerTagNames|mousedown|garbageBin|clientHeight|fullExpandTitle|clientWidth|css|previousTitle|previousText|preloadAjaxElement|topZ|contentDocument|closeText|getElementById|updateAnchors|skin|replaceLang|cacheAjax|Slideshow|clones|closeTitle|evt|nextText|hasFocused|nextTitle|moveTitle|form|dimmingDuration|getElementContent|moveText||setPos|doWrapper|htmlExpand|allowMultipleInstances|activeLeft|markerPos|swfobject|easeOutQuad|initSlideshow|show|ie6|direction|activeRight|string|restoreDuration|hasAlphaImageLoader|align|parseFloat|abs|margin|ucrb|transit|changeSize|mouseClickHandler|keydown|keypress|dec|cssDirection|scrollBy|caption|arrow|sel|dragByHeading|thumbnailId|compatMode|wrapperClassName|genOverlayBox|floatMode|done|getInline|marginRight|update|startTime|state|Click|middle|parOff|headingOverlay|targetY|newHeight|targetX|rv|both|clear|captionOverlay|playText|KDE|vendor|Next|JS|Previous|Play|Pause|spacebar|Move|and|pauseText|htmlSizeOperations|fullExpandText|pauseTitle|tag|Highslide|200|playTitle|resizeTitle|flashvars|from|timerId|maxWidth|call||orig|easeInQuad|loadingTitle|loadingText|fixedControls|loadingOpacity|wrapperMouseHandler|_default|hide|switch|rb|toUpperCase|vis|onGraphicLoad|thumb|preloadGraphic|png|appendTo|ltr|Close|hasExtendedContent|yScroll|offsetParent|contentWrapper|xScroll|scrollHeight|alpha|scrollMaxX|scrollMaxY|scrollWidth|hsHasSetClick|isUnobtrusiveAnchor|clickY|pow|wmode|detachEvent|clickX|hasHtmlExpanders|attributes|dimmingGeckoFix|enableKeyListener|focusTopmost|nopad|clearsX|gotOverlays|doPanels|BackCompat|writeCredits|showCredits|getOverlays|getNumber|showOverlays|createFullExpand|reOrder|ActiveXObject|sleep|fullExpandOpacity|javascript|fullExpandPosition|rightpanel|leftpanel|indexOf|focusTitle|clearsY|preloadAjax|getPropertyValue|getAttribute||hand|htmlPrepareClose|offsetX|offsetY|relativeTo|reuseOverlay|destroyObject|awake|Microsoft|XMLHTTP|horizontal|stripItemFormatter|wheelDelta|Height|Width|Right|Bottom|detail|returnValue|setClickEvents|preloadImages|mouseup|addRule|arguments|styleSheets|Top|Left|script|gi|cachedGet|ie6SSL|XMLHttpRequest|setRequestHeader|open|getControls|wait|Thumbstrip|hitSpace||sls|checkFirstAndLast|repeat|getComputedStyle|readyState|creditsTarget|prepareNextOutline|easingClose|creditsHref|onHideLoading|getImageMapAreaCorrection|overlayOptions|preloadNext|fadeInOut|transitionDuration|creditsTitle|wrapStep|creditsPosition|525|creditsText|Safari|nextSibling|Eval|toString|correctRatio|tmpMin|Overlay|addOverlay|hideIframes|hideSelects|htmlE|useControls|dynamicallyUpdateAnchors|embedSWF|onAfterExpand|dimming|link|Type|outlineStartOffset|transparent|Content|allowtransparency|button|http|xpand|write|application|frameborder|addSlideshow|zoomout|urlencoded|keyCode|onKeyDown|zoomin|Use|createTextNode|graphics|onmouseout|shape|send|version|1001|geckodimmer|registerOverlay|onDimmerClick|responseText|flash|www|about|blank|keys|com|maincontentId|maincontentText|headingEval|headingText|headingId|maincontentEval|maxHeight|ra|it|HsExpander|onmousewheel|captionEval|captionText|floor|DOMContentLoaded|doScroll|circle|callee|120|footer|captionId|mousewheel|DOMMouseScroll|300|Macintosh|Gecko|_self|pageYOffset|pageXOffset|onBeforeExpand|reflow|useMap|onImageClick|boolean|onSetClickEvent|reuse|clearTimeout|||mgnRight|HEAD|removeAttribute|important|firstChild|pI|down|inner|drop|shadow|float|text|expressInstallSwfurl|GET|outlines|onCreateOverlay|outlinesDir|insertBefore|fontSize|homepage|oncontextmenu|DXImageTransform||progid|removeSWF|coords|lineHeight|collapse|htmlCreate|onBeforeGetContent|eval|With|flushImgSize|200px|borderCollapse|cellSpacing|esc|Resize|AlphaImageLoader|sizingMethod|onBlur|Loading|cancel|bring|front|onShowLoading|onInit|onmouseover|IFRAME|SELECT|allowSimultaneousLoading|onFocus|Expand|imageCreate|StopPlay|blockRightClick|scale|default|onBeforeClose|actual|Powered|Go|the|onAfterGetCaption|onAfterGetContent|onreadystatechange|onMouseOver|toElement|fromElement|mouseover|onMouseOut|attachEvent|onAfterClose|interval|Msxml2|newWidth|onDrag|click|01|white|Requested|onDrop|drag|header|dragSensitivity|forceAjaxReload|dummy|sqrt|onDoFullExpand|500|protocol|static|Image|onActivate|nodeName|onBeforeGetCaption||onBeforeGetHeading|splice|useOnHtml|setInterval|of|fit|https|onAfterGetHeading|onCreateFullExpand|paddingTop|1px|clearInterval|linearTween'.split('|'),0,{}))
diff --git a/highslide/highslide-ie6.css b/highslide/highslide-ie6.css
new file mode 100644
index 0000000..0e42b8e
--- /dev/null
+++ b/highslide/highslide-ie6.css
@@ -0,0 +1,71 @@
+.closebutton {
+ /* NOTE! This URL is relative to the HTML page, not the CSS */
+ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
+ src='../highslide/graphics/close.png', sizingMethod='scale');
+
+ background: none;
+ cursor: hand;
+}
+
+/* Viewport fixed hack */
+.highslide-viewport {
+ position: absolute;
+ left: expression( ( ( ignoreMe1 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+ top: expression( ( ignoreMe2 = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) + 'px' );
+ width: expression( ( ( ignoreMe3 = document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) ) + 'px' );
+ height: expression( ( ( ignoreMe4 = document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) ) + 'px' );
+}
+
+/* Thumbstrip PNG fix */
+.highslide-scroll-down, .highslide-scroll-up {
+ position: relative;
+ overflow: hidden;
+}
+.highslide-scroll-down div, .highslide-scroll-up div {
+ /* NOTE! This URL is relative to the HTML page, not the CSS */
+ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
+ src='/highslide/graphics/scrollarrows.png', sizingMethod='scale');
+ background: none !important;
+ position: absolute;
+ cursor: hand;
+ width: 75px;
+ height: 75px !important;
+}
+.highslide-thumbstrip-horizontal .highslide-scroll-down div {
+ left: -50px;
+ top: -15px;
+}
+.highslide-thumbstrip-horizontal .highslide-scroll-up div {
+ top: -15px;
+}
+.highslide-thumbstrip-vertical .highslide-scroll-down div {
+ top: -50px;
+}
+
+/* Thumbstrip marker arrow trasparent background fix */
+.highslide-thumbstrip .highslide-marker {
+ border-color: white; /* match the background */
+}
+.dark .highslide-thumbstrip-horizontal .highslide-marker {
+ border-color: #111;
+}
+.highslide-viewport .highslide-marker {
+ border-color: #333;
+}
+.highslide-thumbstrip {
+ float: left;
+}
+
+/* Positioning fixes for the control bar */
+.text-controls .highslide-controls {
+ width: 480px;
+}
+.text-controls a span {
+ width: 4em;
+}
+.text-controls .highslide-full-expand a span {
+ width: 0;
+}
+.text-controls .highslide-close a span {
+ width: 0;
+}
diff --git a/highslide/highslide-with-gallery.js b/highslide/highslide-with-gallery.js
new file mode 100644
index 0000000..caa1abd
--- /dev/null
+++ b/highslide/highslide-with-gallery.js
@@ -0,0 +1,2643 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default +slideshow +positioning +transitions +viewport +thumbstrip
+Author: Torstein H�nsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+var hs = {
+// Language strings
+lang : {
+ cssDirection: 'ltr',
+ loadingText : 'Loading...',
+ loadingTitle : 'Click to cancel',
+ focusTitle : 'Click to bring to front',
+ fullExpandTitle : 'Expand to actual size (f)',
+ creditsText : 'Powered by <i>Highslide JS</i>',
+ creditsTitle : 'Go to the Highslide JS homepage',
+ previousText : 'Previous',
+ nextText : 'Next',
+ moveText : 'Move',
+ closeText : 'Close',
+ closeTitle : 'Close (esc)',
+ resizeTitle : 'Resize',
+ playText : 'Play',
+ playTitle : 'Play slideshow (spacebar)',
+ pauseText : 'Pause',
+ pauseTitle : 'Pause slideshow (spacebar)',
+ previousTitle : 'Previous (arrow left)',
+ nextTitle : 'Next (arrow right)',
+ moveTitle : 'Move',
+ fullExpandText : '1:1',
+ number: 'Image %1 of %2',
+ restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
+},
+
+// See http://highslide.com/ref for examples of settings
+graphicsDir : 'highslide/graphics/',
+expandCursor : 'zoomin.cur', // null disables
+restoreCursor : 'zoomout.cur', // null disables
+expandDuration : 250, // milliseconds
+restoreDuration : 250,
+marginLeft : 15,
+marginRight : 15,
+marginTop : 15,
+marginBottom : 15,
+zIndexCounter : 1001, // adjust to other absolutely positioned elements
+loadingOpacity : 0.75,
+allowMultipleInstances: true,
+numberOfImagesToPreload : 5,
+outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only
+outlineStartOffset : 3, // ends at 10
+padToMinWidth : false, // pad the popup width to make room for wide caption
+fullExpandPosition : 'bottom right',
+fullExpandOpacity : 1,
+showCredits : true, // you can set this to false if you want
+creditsHref : 'http://highslide.com/',
+creditsTarget : '_self',
+enableKeyListener : true,
+openerTagNames : ['a'], // Add more to allow slideshow indexing
+transitions : [],
+transitionDuration: 250,
+dimmingOpacity: 0, // Lightbox style dimming background
+dimmingDuration: 50, // 0 for instant dimming
+
+anchor : 'auto', // where the image expands from
+align : 'auto', // position in the client (overrides anchor)
+targetX: null, // the id of a target element
+targetY: null,
+dragByHeading: true,
+minWidth: 200,
+minHeight: 200,
+allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
+outlineType : 'drop-shadow', // set null to disable outlines
+skin : {
+ controls:
+ '<div class="highslide-controls"><ul class="ulhs">'+
+ '<li class="highslide-previous">'+
+ '<a href="#" title="{hs.lang.previousTitle}">'+
+ '<span>{hs.lang.previousText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-play">'+
+ '<a href="#" title="{hs.lang.playTitle}">'+
+ '<span>{hs.lang.playText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-pause">'+
+ '<a href="#" title="{hs.lang.pauseTitle}">'+
+ '<span>{hs.lang.pauseText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-next">'+
+ '<a href="#" title="{hs.lang.nextTitle}">'+
+ '<span>{hs.lang.nextText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-move">'+
+ '<a href="#" title="{hs.lang.moveTitle}">'+
+ '<span>{hs.lang.moveText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-full-expand">'+
+ '<a href="#" title="{hs.lang.fullExpandTitle}">'+
+ '<span>{hs.lang.fullExpandText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-close">'+
+ '<a href="#" title="{hs.lang.closeTitle}" >'+
+ '<span>{hs.lang.closeText}</span></a>'+
+ '</li>'+
+ '</ul></div>'
+},
+// END OF YOUR SETTINGS
+
+
+// declare internal properties
+preloadTheseImages : [],
+continuePreloading: true,
+expanders : [],
+overrides : [
+ 'allowSizeReduction',
+ 'useBox',
+ 'anchor',
+ 'align',
+ 'targetX',
+ 'targetY',
+ 'outlineType',
+ 'outlineWhileAnimating',
+ 'captionId',
+ 'captionText',
+ 'captionEval',
+ 'captionOverlay',
+ 'headingId',
+ 'headingText',
+ 'headingEval',
+ 'headingOverlay',
+ 'creditsPosition',
+ 'dragByHeading',
+ 'autoplay',
+ 'numberPosition',
+ 'transitions',
+ 'dimmingOpacity',
+
+ 'width',
+ 'height',
+
+ 'wrapperClassName',
+ 'minWidth',
+ 'minHeight',
+ 'maxWidth',
+ 'maxHeight',
+ 'slideshowGroup',
+ 'easing',
+ 'easingClose',
+ 'fadeInOut',
+ 'src'
+],
+overlays : [],
+idCounter : 0,
+oPos : {
+ x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'],
+ y: ['above', 'top', 'middle', 'bottom', 'below']
+},
+mouse: {},
+headingOverlay: {},
+captionOverlay: {},
+timers : [],
+
+slideshows : [],
+
+pendingOutlines : {},
+clones : {},
+onReady: [],
+uaVersion: parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]),
+ie : (document.all && !window.opera),
+safari : /Safari/.test(navigator.userAgent),
+geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),
+
+$ : function (id) {
+ if (id) return document.getElementById(id);
+},
+
+push : function (arr, val) {
+ arr[arr.length] = val;
+},
+
+createElement : function (tag, attribs, styles, parent, nopad) {
+ var el = document.createElement(tag);
+ if (attribs) hs.extend(el, attribs);
+ if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0});
+ if (styles) hs.setStyles(el, styles);
+ if (parent) parent.appendChild(el);
+ return el;
+},
+
+extend : function (el, attribs) {
+ for (var x in attribs) el[x] = attribs[x];
+ return el;
+},
+
+setStyles : function (el, styles) {
+ for (var x in styles) {
+ if (hs.ie && x == 'opacity') {
+ if (styles[x] > 0.99) el.style.removeAttribute('filter');
+ else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')';
+ }
+ else el.style[x] = styles[x];
+ }
+},
+animate: function(el, prop, opt) {
+ var start,
+ end,
+ unit;
+ if (typeof opt != 'object' || opt === null) {
+ var args = arguments;
+ opt = {
+ duration: args[2],
+ easing: args[3],
+ complete: args[4]
+ };
+ }
+ if (typeof opt.duration != 'number') opt.duration = 250;
+ opt.easing = Math[opt.easing] || Math.easeInQuad;
+ opt.curAnim = hs.extend({}, prop);
+ for (var name in prop) {
+ var e = new hs.fx(el, opt , name );
+
+ start = parseFloat(hs.css(el, name)) || 0;
+ end = parseFloat(prop[name]);
+ unit = name != 'opacity' ? 'px' : '';
+
+ e.custom( start, end, unit );
+ }
+},
+css: function(el, prop) {
+ if (document.defaultView) {
+ return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop);
+
+ } else {
+ if (prop == 'opacity') prop = 'filter';
+ var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })];
+ if (prop == 'filter')
+ val = val.replace(/alpha\(opacity=([0-9]+)\)/,
+ function (a, b) { return b / 100 });
+ return val === '' ? 1 : val;
+ }
+},
+
+getPageSize : function () {
+ var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat'
+ ? d.documentElement : d.body;
+
+
+ var b = d.body;
+ var xScroll = (w.innerWidth && w.scrollMaxX)
+ ? w.innerWidth + w.scrollMaxX : Math.max(b.scrollWidth, b.offsetWidth),
+ yScroll = (w.innerHeight && window.scrollMaxY)
+ ? w.innerHeight + w.scrollMaxY : Math.max(b.scrollHeight, b.offsetHeight),
+ pageWidth = hs.ie ? iebody.scrollWidth :
+ (d.documentElement.clientWidth || self.innerWidth),
+ pageHeight = hs.ie ? Math.max(iebody.scrollHeight, iebody.clientHeight) :
+ (d.documentElement.clientHeight || self.innerHeight);
+
+ var width = hs.ie ? iebody.clientWidth :
+ (d.documentElement.clientWidth || self.innerWidth),
+ height = hs.ie ? iebody.clientHeight : self.innerHeight;
+
+ hs.page = {
+ pageWidth: Math.max(pageWidth, xScroll),
+ pageHeight: Math.max(pageHeight, yScroll),
+ width: width,
+ height: height,
+ scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
+ scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
+ }
+},
+
+getPosition : function(el) {
+ var p = { x: el.offsetLeft, y: el.offsetTop };
+ while (el.offsetParent) {
+ el = el.offsetParent;
+ p.x += el.offsetLeft;
+ p.y += el.offsetTop;
+ if (el != document.body && el != document.documentElement) {
+ p.x -= el.scrollLeft;
+ p.y -= el.scrollTop;
+ }
+ }
+ return p;
+},
+
+expand : function(a, params, custom, type) {
+ if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container);
+ if (typeof a.getParams == 'function') return params;
+ try {
+ new hs.Expander(a, params, custom);
+ return false;
+ } catch (e) { return true; }
+},
+getElementByClass : function (el, tagName, className) {
+ var els = el.getElementsByTagName(tagName);
+ for (var i = 0; i < els.length; i++) {
+ if ((new RegExp(className)).test(els[i].className)) {
+ return els[i];
+ }
+ }
+ return null;
+},
+replaceLang : function(s) {
+ s = s.replace(/\s/g, ' ');
+ var re = /{hs\.lang\.([^}]+)\}/g,
+ matches = s.match(re),
+ lang;
+ if (matches) for (var i = 0; i < matches.length; i++) {
+ lang = matches[i].replace(re, "$1");
+ if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]);
+ }
+ return s;
+},
+
+
+focusTopmost : function() {
+ var topZ = 0,
+ topmostKey = -1,
+ expanders = hs.expanders,
+ exp,
+ zIndex;
+ for (var i = 0; i < expanders.length; i++) {
+ exp = expanders[i];
+ if (exp) {
+ zIndex = exp.wrapper.style.zIndex;
+ if (zIndex && zIndex > topZ) {
+ topZ = zIndex;
+ topmostKey = i;
+ }
+ }
+ }
+ if (topmostKey == -1) hs.focusKey = -1;
+ else expanders[topmostKey].focus();
+},
+
+getParam : function (a, param) {
+ a.getParams = a.onclick;
+ var p = a.getParams ? a.getParams() : null;
+ a.getParams = null;
+
+ return (p && typeof p[param] != 'undefined') ? p[param] :
+ (typeof hs[param] != 'undefined' ? hs[param] : null);
+},
+
+getSrc : function (a) {
+ var src = hs.getParam(a, 'src');
+ if (src) return src;
+ return a.href;
+},
+
+getNode : function (id) {
+ var node = hs.$(id), clone = hs.clones[id], a = {};
+ if (!node && !clone) return null;
+ if (!clone) {
+ clone = node.cloneNode(true);
+ clone.id = '';
+ hs.clones[id] = clone;
+ return node;
+ } else {
+ return clone.cloneNode(true);
+ }
+},
+
+discardElement : function(d) {
+ if (d) hs.garbageBin.appendChild(d);
+ hs.garbageBin.innerHTML = '';
+},
+dim : function(exp) {
+ if (!hs.dimmer) {
+ hs.dimmer = hs.createElement ('div',
+ {
+ className: 'highslide-dimming',
+ owner: '',
+ onclick: function() {
+
+ hs.close();
+ }
+ }, {
+ position: 'absolute',
+ visibility: 'visible',
+ left: 0,
+ opacity: 0
+ }, hs.container, true);
+ hs.addEventListener(window, 'resize', hs.setDimmerSize);
+ }
+ hs.dimmer.style.display = '';
+ hs.setDimmerSize();
+ hs.dimmer.owner += '|'+ exp.key;
+ if (hs.geckoMac && hs.dimmingGeckoFix)
+ hs.setStyles(hs.dimmer, {
+ background: 'url('+ hs.graphicsDir + 'geckodimmer.png)',
+ opacity: 1
+ });
+ else
+ hs.animate(hs.dimmer, { opacity: exp.dimmingOpacity }, hs.dimmingDuration);
+},
+undim : function(key) {
+ if (!hs.dimmer) return;
+ if (typeof key != 'undefined') hs.dimmer.owner = hs.dimmer.owner.replace('|'+ key, '');
+
+ if (
+ (typeof key != 'undefined' && hs.dimmer.owner != '')
+ || (hs.upcoming && hs.getParam(hs.upcoming, 'dimmingOpacity'))
+ ) return;
+ if (hs.geckoMac && hs.dimmingGeckoFix)
+ hs.setStyles(hs.dimmer, { background: 'none', width: 0, height: 0 });
+ else hs.animate(hs.dimmer, { opacity: 0 }, hs.dimmingDuration, null, function() {
+ hs.setStyles(hs.dimmer, { display: 'none', width: 0, height: 0 });
+ });
+},
+setDimmerSize : function(exp) {
+ hs.getPageSize();
+ if (!hs.dimmer) return;
+ var h = (hs.ie && exp && exp.wrapper) ?
+ parseInt(exp.wrapper.style.top) + parseInt(exp.wrapper.style.height)+ (exp.outline ? exp.outline.offset : 0) : 0;
+ hs.setStyles(hs.dimmer, {
+ width: hs.page.pageWidth +'px',
+ height: Math.max(hs.page.pageHeight, h) +'px'
+ });
+},
+transit : function (adj, exp) {
+ var last = exp = exp || hs.getExpander();
+ if (hs.upcoming) return false;
+ else hs.last = last;
+ try {
+ hs.upcoming = adj;
+ adj.onclick();
+ } catch (e){
+ hs.last = hs.upcoming = null;
+ }
+ try {
+ if (!adj || exp.transitions[1] != 'crossfade')
+ exp.close();
+ } catch (e) {}
+ return false;
+},
+
+previousOrNext : function (el, op) {
+ var exp = hs.getExpander(el);
+ if (exp) {
+ adj = exp.getAdjacentAnchor(op);
+ return hs.transit(adj, exp);
+ } else return false;
+},
+
+previous : function (el) {
+ return hs.previousOrNext(el, -1);
+},
+
+next : function (el) {
+ return hs.previousOrNext(el, 1);
+},
+
+keyHandler : function(e) {
+ if (!e) e = window.event;
+ if (!e.target) e.target = e.srcElement; // ie
+ if (typeof e.target.form != 'undefined') return true; // form element has focus
+ var exp = hs.getExpander();
+
+ var op = null;
+ switch (e.keyCode) {
+ case 70: // f
+ if (exp) exp.doFullExpand();
+ return true;
+ case 32: // Space
+ op = 2;
+ break;
+ case 34: // Page Down
+ case 39: // Arrow right
+ case 40: // Arrow down
+ op = 1;
+ break;
+ case 8: // Backspace
+ case 33: // Page Up
+ case 37: // Arrow left
+ case 38: // Arrow up
+ op = -1;
+ break;
+ case 27: // Escape
+ case 13: // Enter
+ op = 0;
+ }
+ if (op !== null) {if (op != 2)hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+ if (!hs.enableKeyListener) return true;
+
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ if (exp) {
+ if (op == 0) {
+ exp.close();
+ } else if (op == 2) {
+ if (exp.slideshow) exp.slideshow.hitSpace();
+ } else {
+ if (exp.slideshow) exp.slideshow.pause();
+ hs.previousOrNext(exp.key, op);
+ }
+ return false;
+ }
+ }
+ return true;
+},
+
+
+registerOverlay : function (overlay) {
+ hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } ));
+},
+
+
+addSlideshow : function (options) {
+ var sg = options.slideshowGroup;
+ if (typeof sg == 'object') {
+ for (var i = 0; i < sg.length; i++) {
+ var o = {};
+ for (var x in options) o[x] = options[x];
+ o.slideshowGroup = sg[i];
+ hs.push(hs.slideshows, o);
+ }
+ } else {
+ hs.push(hs.slideshows, options);
+ }
+},
+
+getWrapperKey : function (element, expOnly) {
+ var el, re = /^highslide-wrapper-([0-9]+)$/;
+ // 1. look in open expanders
+ el = element;
+ while (el.parentNode) {
+ if (el.hsKey !== undefined) return el.hsKey;
+ if (el.id && re.test(el.id)) return el.id.replace(re, "$1");
+ el = el.parentNode;
+ }
+ // 2. look in thumbnail
+ if (!expOnly) {
+ el = element;
+ while (el.parentNode) {
+ if (el.tagName && hs.isHsAnchor(el)) {
+ for (var key = 0; key < hs.expanders.length; key++) {
+ var exp = hs.expanders[key];
+ if (exp && exp.a == el) return key;
+ }
+ }
+ el = el.parentNode;
+ }
+ }
+ return null;
+},
+
+getExpander : function (el, expOnly) {
+ if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null;
+ if (typeof el == 'number') return hs.expanders[el] || null;
+ if (typeof el == 'string') el = hs.$(el);
+ return hs.expanders[hs.getWrapperKey(el, expOnly)] || null;
+},
+
+isHsAnchor : function (a) {
+ return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/));
+},
+
+reOrder : function () {
+ for (var i = 0; i < hs.expanders.length; i++)
+ if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost();
+},
+
+mouseClickHandler : function(e)
+{
+ if (!e) e = window.event;
+ if (e.button > 1) return true;
+ if (!e.target) e.target = e.srcElement;
+
+ var el = e.target;
+ while (el.parentNode
+ && !(/highslide-(image|move|html|resize)/.test(el.className)))
+ {
+ el = el.parentNode;
+ }
+ var exp = hs.getExpander(el);
+ if (exp && (exp.isClosing || !exp.isExpanded)) return true;
+
+ if (exp && e.type == 'mousedown') {
+ if (e.target.form) return true;
+ var match = el.className.match(/highslide-(image|move|resize)/);
+ if (match) {
+ hs.dragArgs = { exp: exp , type: match[1], left: exp.x.pos, width: exp.x.size, top: exp.y.pos,
+ height: exp.y.size, clickX: e.clientX, clickY: e.clientY };
+
+
+ hs.addEventListener(document, 'mousemove', hs.dragHandler);
+ if (e.preventDefault) e.preventDefault(); // FF
+
+ if (/highslide-(image|html)-blur/.test(exp.content.className)) {
+ exp.focus();
+ hs.hasFocused = true;
+ }
+ return false;
+ }
+ } else if (e.type == 'mouseup') {
+
+ hs.removeEventListener(document, 'mousemove', hs.dragHandler);
+
+ if (hs.dragArgs) {
+ if (hs.styleRestoreCursor && hs.dragArgs.type == 'image')
+ hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor;
+ var hasDragged = hs.dragArgs.hasDragged;
+
+ if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
+ exp.close();
+ }
+ else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
+ hs.dragArgs.exp.doShowHide('hidden');
+ }
+ if (hasDragged) hs.setDimmerSize(exp);
+
+ hs.hasFocused = false;
+ hs.dragArgs = null;
+
+ } else if (/highslide-image-blur/.test(el.className)) {
+ el.style.cursor = hs.styleRestoreCursor;
+ }
+ }
+ return false;
+},
+
+dragHandler : function(e)
+{
+ if (!hs.dragArgs) return true;
+ if (!e) e = window.event;
+ var a = hs.dragArgs, exp = a.exp;
+
+ a.dX = e.clientX - a.clickX;
+ a.dY = e.clientY - a.clickY;
+
+ var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
+ if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0)
+ || (distance > (hs.dragSensitivity || 5));
+
+ if (a.hasDragged && e.clientX > 5 && e.clientY > 5) {
+
+ if (a.type == 'resize') exp.resize(a);
+ else {
+ exp.moveTo(a.left + a.dX, a.top + a.dY);
+ if (a.type == 'image') exp.content.style.cursor = 'move';
+ }
+ }
+ return false;
+},
+
+wrapperMouseHandler : function (e) {
+ try {
+ if (!e) e = window.event;
+ var over = /mouseover/i.test(e.type);
+ if (!e.target) e.target = e.srcElement; // ie
+ if (hs.ie) e.relatedTarget =
+ over ? e.fromElement : e.toElement; // ie
+ var exp = hs.getExpander(e.target);
+ if (!exp.isExpanded) return;
+ if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp
+ || hs.dragArgs) return;
+ for (var i = 0; i < exp.overlays.length; i++) (function() {
+ var o = hs.$('hsId'+ exp.overlays[i]);
+ if (o && o.hideOnMouseOut) {
+ if (over) hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur);
+ }
+ })();
+ } catch (e) {}
+},
+addEventListener : function (el, event, func) {
+ if (el == document && event == 'ready') hs.push(hs.onReady, func);
+ try {
+ el.addEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ el.attachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = func;
+ }
+ }
+},
+
+removeEventListener : function (el, event, func) {
+ try {
+ el.removeEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = null;
+ }
+ }
+},
+
+preloadFullImage : function (i) {
+ if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
+ var img = document.createElement('img');
+ img.onload = function() {
+ img = null;
+ hs.preloadFullImage(i + 1);
+ };
+ img.src = hs.preloadTheseImages[i];
+ }
+},
+preloadImages : function (number) {
+ if (number && typeof number != 'object') hs.numberOfImagesToPreload = number;
+
+ var arr = hs.getAnchors();
+ for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) {
+ hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i]));
+ }
+
+ // preload outlines
+ if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} );
+ else
+
+ hs.preloadFullImage(0);
+
+ // preload cursor
+ if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor });
+},
+
+
+init : function () {
+ if (!hs.container) {
+
+ hs.getPageSize();
+ hs.ieLt7 = hs.ie && hs.uaVersion < 7;
+ for (var x in hs.langDefaults) {
+ if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x];
+ else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined')
+ hs.lang[x] = hs.langDefaults[x];
+ }
+
+ hs.container = hs.createElement('div', {
+ className: 'highslide-container'
+ }, {
+ position: 'absolute',
+ left: 0,
+ top: 0,
+ width: '100%',
+ zIndex: hs.zIndexCounter,
+ direction: 'ltr'
+ },
+ document.body,
+ true
+ );
+ hs.loading = hs.createElement('a', {
+ className: 'highslide-loading',
+ title: hs.lang.loadingTitle,
+ innerHTML: hs.lang.loadingText,
+ href: 'javascript:;'
+ }, {
+ position: 'absolute',
+ top: '-9999px',
+ opacity: hs.loadingOpacity,
+ zIndex: 1
+ }, hs.container
+ );
+ hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container);
+ hs.viewport = hs.createElement('div', {
+ className: 'highslide-viewport'
+ }, {
+ visibility: (hs.safari && hs.uaVersion < 525) ? 'visible' : 'hidden'
+ }, hs.container, 1
+ );
+
+ // http://www.robertpenner.com/easing/
+ Math.linearTween = function (t, b, c, d) {
+ return c*t/d + b;
+ };
+ Math.easeInQuad = function (t, b, c, d) {
+ return c*(t/=d)*t + b;
+ };
+ Math.easeOutQuad = function (t, b, c, d) {
+ return -c *(t/=d)*(t-2) + b;
+ };
+
+ hs.hideSelects = hs.ieLt7;
+ hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE'
+ || (hs.ie && hs.uaVersion < 5.5));
+ }
+},
+ready : function() {
+ if (hs.isReady) return;
+ hs.isReady = true;
+
+ for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i]();
+},
+
+updateAnchors : function() {
+ var el, els, all = [], images = [],groups = {}, re;
+
+ for (var i = 0; i < hs.openerTagNames.length; i++) {
+ els = document.getElementsByTagName(hs.openerTagNames[i]);
+ for (var j = 0; j < els.length; j++) {
+ el = els[j];
+ re = hs.isHsAnchor(el);
+ if (re) {
+ hs.push(all, el);
+ if (re[0] == 'hs.expand') hs.push(images, el);
+ var g = hs.getParam(el, 'slideshowGroup') || 'none';
+ if (!groups[g]) groups[g] = [];
+ hs.push(groups[g], el);
+ }
+ }
+ }
+ hs.anchors = { all: all, groups: groups, images: images };
+ return hs.anchors;
+
+},
+
+getAnchors : function() {
+ return hs.anchors || hs.updateAnchors();
+},
+
+
+close : function(el) {
+ var exp = hs.getExpander(el);
+ if (exp) exp.close();
+ return false;
+}
+}; // end hs object
+hs.fx = function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if (!options.orig) options.orig = {};
+};
+hs.fx.prototype = {
+ update: function(){
+ (hs.fx.step[this.prop] || hs.fx.step._default)(this);
+
+ if (this.options.step)
+ this.options.step.call(this.elem, this.now, this);
+
+ },
+ custom: function(from, to, unit){
+ this.startTime = (new Date()).getTime();
+ this.start = from;
+ this.end = to;
+ this.unit = unit;// || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && hs.timers.push(t) == 1 ) {
+ hs.timerId = setInterval(function(){
+ var timers = hs.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval(hs.timerId);
+ }
+ }, 13);
+ }
+ },
+ step: function(gotoEnd){
+ var t = (new Date()).getTime();
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if (this.options.complete) this.options.complete.call(this.elem);
+ }
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+ this.pos = this.options.easing(n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+ this.update();
+ }
+ return true;
+ }
+
+};
+
+hs.extend( hs.fx, {
+ step: {
+
+ opacity: function(fx){
+ hs.setStyles(fx.elem, { opacity: fx.now });
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+
+hs.Outline = function (outlineType, onLoad) {
+ this.onLoad = onLoad;
+ this.outlineType = outlineType;
+ var v = hs.uaVersion, tr;
+
+ this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v < 7;
+ if (!outlineType) {
+ if (onLoad) onLoad();
+ return;
+ }
+
+ hs.init();
+ this.table = hs.createElement(
+ 'table', {
+ cellSpacing: 0
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ borderCollapse: 'collapse',
+ width: 0
+ },
+ hs.container,
+ true
+ );
+ var tbody = hs.createElement('tbody', null, null, this.table, 1);
+
+ this.td = [];
+ for (var i = 0; i <= 8; i++) {
+ if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true);
+ this.td[i] = hs.createElement('td', null, null, tr, true);
+ var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
+ hs.setStyles(this.td[i], style);
+ }
+ this.td[4].className = outlineType +' highslide-outline';
+
+ this.preloadGraphic();
+};
+
+hs.Outline.prototype = {
+preloadGraphic : function () {
+ var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png";
+
+ var appendTo = hs.safari ? hs.container : null;
+ this.graphic = hs.createElement('img', null, { position: 'absolute',
+ top: '-9999px' }, appendTo, true); // for onload trigger
+
+ var pThis = this;
+ this.graphic.onload = function() { pThis.onGraphicLoad(); };
+
+ this.graphic.src = src;
+},
+
+onGraphicLoad : function () {
+ var o = this.offset = this.graphic.width / 4,
+ pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],
+ dim = { height: (2*o) +'px', width: (2*o) +'px' };
+ for (var i = 0; i <= 8; i++) {
+ if (pos[i]) {
+ if (this.hasAlphaImageLoader) {
+ var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px';
+ var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true);
+ hs.createElement ('div', null, {
+ filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')",
+ position: 'absolute',
+ width: w,
+ height: this.graphic.height +'px',
+ left: (pos[i][0]*o)+'px',
+ top: (pos[i][1]*o)+'px'
+ },
+ div,
+ true);
+ } else {
+ hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'});
+ }
+
+ if (window.opera && (i == 3 || i ==5))
+ hs.createElement('div', null, dim, this.td[i], true);
+
+ hs.setStyles (this.td[i], dim);
+ }
+ }
+ this.graphic = null;
+ if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy();
+ hs.pendingOutlines[this.outlineType] = this;
+ if (this.onLoad) this.onLoad();
+},
+
+setPosition : function (pos, offset, vis, dur, easing) {
+ var exp = this.exp,
+ stl = exp.wrapper.style,
+ offset = offset || 0,
+ pos = pos || {
+ x: exp.x.pos + offset,
+ y: exp.y.pos + offset,
+ w: exp.x.get('wsize') - 2 * offset,
+ h: exp.y.get('wsize') - 2 * offset
+ };
+ if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset)
+ ? 'visible' : 'hidden';
+ hs.setStyles(this.table, {
+ left: (pos.x - this.offset) +'px',
+ top: (pos.y - this.offset) +'px',
+ width: (pos.w + 2 * this.offset) +'px'
+ });
+
+ pos.w -= 2 * this.offset;
+ pos.h -= 2 * this.offset;
+ hs.setStyles (this.td[4], {
+ width: pos.w >= 0 ? pos.w +'px' : 0,
+ height: pos.h >= 0 ? pos.h +'px' : 0
+ });
+ if (this.hasAlphaImageLoader) this.td[3].style.height
+ = this.td[5].style.height = this.td[4].style.height;
+
+},
+
+destroy : function(hide) {
+ if (hide) this.table.style.visibility = 'hidden';
+ else hs.discardElement(this.table);
+}
+};
+
+hs.Dimension = function(exp, dim) {
+ this.exp = exp;
+ this.dim = dim;
+ this.ucwh = dim == 'x' ? 'Width' : 'Height';
+ this.wh = this.ucwh.toLowerCase();
+ this.uclt = dim == 'x' ? 'Left' : 'Top';
+ this.lt = this.uclt.toLowerCase();
+ this.ucrb = dim == 'x' ? 'Right' : 'Bottom';
+ this.rb = this.ucrb.toLowerCase();
+ this.p1 = this.p2 = 0;
+};
+hs.Dimension.prototype = {
+get : function(key) {
+ switch (key) {
+ case 'loadingPos':
+ return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2;
+ case 'loadingPosXfade':
+ return this.pos + this.cb+ this.p1 + (this.size - hs.loading['offset'+ this.ucwh]) / 2;
+ case 'wsize':
+ return this.size + 2 * this.cb + this.p1 + this.p2;
+ case 'fitsize':
+ return this.clientSize - this.marginMin - this.marginMax;
+ case 'maxsize':
+ return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ;
+ case 'opos':
+ return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
+ case 'osize':
+ return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0);
+ case 'imgPad':
+ return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0;
+
+ }
+},
+calcBorders: function() {
+ // correct for borders
+ this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2;
+ this.marginMax = hs['margin'+ this.ucrb];
+},
+calcThumb: function() {
+ this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) :
+ this.exp.el['offset'+ this.ucwh];
+ this.tpos = this.exp.tpos[this.dim];
+ this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2;
+ if (this.tpos < 1) {
+ this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt];
+ };
+},
+calcExpanded: function() {
+ var exp = this.exp;
+ this.justify = 'auto';
+
+ // get alignment
+ if (exp.align == 'center') this.justify = 'center';
+ else if (new RegExp(this.lt).test(exp.anchor)) this.justify = null;
+ else if (new RegExp(this.rb).test(exp.anchor)) this.justify = 'max';
+
+
+ // size and position
+ this.pos = this.tpos - this.cb + this.tb;
+ this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full);
+ this.minSize = exp.allowSizeReduction ?
+ Math.min(exp['min'+ this.ucwh], this.full) :this.full;
+ if (exp.isImage && exp.useBox) {
+ this.size = exp[this.wh];
+ this.imgSize = this.full;
+ }
+ if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth;
+ this.target = exp['target'+ this.dim.toUpperCase()];
+ this.marginMin = hs['margin'+ this.uclt];
+ this.scroll = hs.page['scroll'+ this.uclt];
+ this.clientSize = hs.page[this.wh];
+},
+setSize: function(i) {
+ var exp = this.exp;
+ if (exp.isImage && (exp.useBox || hs.padToMinWidth)) {
+ this.imgSize = i;
+ this.size = Math.max(this.size, this.imgSize);
+ exp.content.style[this.lt] = this.get('imgPad')+'px';
+ } else
+ this.size = i;
+
+ exp.content.style[this.wh] = i +'px';
+ exp.wrapper.style[this.wh] = this.get('wsize') +'px';
+ if (exp.outline) exp.outline.setPosition();
+ if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true);
+ if (this.dim == 'x' && exp.slideshow && exp.isImage) {
+ if (i == this.full) exp.slideshow.disable('full-expand');
+ else exp.slideshow.enable('full-expand');
+ }
+},
+setPos: function(i) {
+ this.pos = i;
+ this.exp.wrapper.style[this.lt] = i +'px';
+
+ if (this.exp.outline) this.exp.outline.setPosition();
+
+}
+};
+
+hs.Expander = function(a, params, custom, contentType) {
+ if (document.readyState && hs.ie && !hs.isReady) {
+ hs.addEventListener(document, 'ready', function() {
+ new hs.Expander(a, params, custom, contentType);
+ });
+ return;
+ }
+ this.a = a;
+ this.custom = custom;
+ this.contentType = contentType || 'image';
+ this.isImage = !this.isHtml;
+
+ hs.continuePreloading = false;
+ this.overlays = [];
+ this.last = hs.last;
+ hs.last = null;
+ hs.init();
+ var key = this.key = hs.expanders.length;
+ // override inline parameters
+ for (var i = 0; i < hs.overrides.length; i++) {
+ var name = hs.overrides[i];
+ this[name] = params && typeof params[name] != 'undefined' ?
+ params[name] : hs[name];
+ }
+ if (!this.src) this.src = a.href;
+
+ // get thumb
+ var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
+ el = this.thumb = el.getElementsByTagName('img')[0] || el;
+ this.thumbsUserSetId = el.id || a.id;
+
+ // check if already open
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].a == a
+ && !(this.last && this.transitions[1] == 'crossfade')) {
+ hs.expanders[i].focus();
+ return false;
+ }
+ }
+
+ // cancel other
+ if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
+ hs.expanders[i].cancelLoading();
+ }
+ }
+ hs.expanders[key] = this;
+ if (!hs.allowMultipleInstances && !hs.upcoming) {
+ if (hs.expanders[key-1]) hs.expanders[key-1].close();
+ if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
+ hs.expanders[hs.focusKey].close();
+ }
+
+ // initiate metrics
+ this.el = el;
+ this.tpos = hs.getPosition(el);
+ hs.getPageSize();
+ var x = this.x = new hs.Dimension(this, 'x');
+ x.calcThumb();
+ var y = this.y = new hs.Dimension(this, 'y');
+ y.calcThumb();
+ this.wrapper = hs.createElement(
+ 'div', {
+ id: 'highslide-wrapper-'+ this.key,
+ className: 'highslide-wrapper '+ this.wrapperClassName
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ zIndex: hs.zIndexCounter += 2
+ }, null, true );
+
+ this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
+ if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
+ this.outlineWhileAnimating = 0;
+
+ // get the outline
+ if (!this.outlineType
+ || (this.last && this.isImage && this.transitions[1] == 'crossfade')) {
+ this[this.contentType +'Create']();
+
+ } else if (hs.pendingOutlines[this.outlineType]) {
+ this.connectOutline();
+ this[this.contentType +'Create']();
+
+ } else {
+ this.showLoading();
+ var exp = this;
+ new hs.Outline(this.outlineType,
+ function () {
+ exp.connectOutline();
+ exp[exp.contentType +'Create']();
+ }
+ );
+ }
+ return true;
+};
+
+hs.Expander.prototype = {
+error : function(e) {
+ //alert ('Line '+ e.lineNumber +': '+ e.message);
+ window.location.href = this.src;
+},
+
+connectOutline : function() {
+ var outline = this.outline = hs.pendingOutlines[this.outlineType];
+ outline.exp = this;
+ outline.table.style.zIndex = this.wrapper.style.zIndex - 1;
+ hs.pendingOutlines[this.outlineType] = null;
+},
+
+showLoading : function() {
+ if (this.onLoadStarted || this.loading) return;
+
+ this.loading = hs.loading;
+ var exp = this;
+ this.loading.onclick = function() {
+ exp.cancelLoading();
+ };
+ var exp = this,
+ l = this.x.get('loadingPos') +'px',
+ t = this.y.get('loadingPos') +'px';
+ if (!tgt && this.last && this.transitions[1] == 'crossfade')
+ var tgt = this.last;
+ if (tgt) {
+ l = tgt.x.get('loadingPosXfade') +'px';
+ t = tgt.y.get('loadingPosXfade') +'px';
+ this.loading.style.zIndex = hs.zIndexCounter++;
+ }
+ setTimeout(function () {
+ if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })}
+ , 100);
+},
+
+imageCreate : function() {
+ var exp = this;
+
+ var img = document.createElement('img');
+ this.content = img;
+ img.onload = function () {
+ if (hs.expanders[exp.key]) exp.contentLoaded();
+ };
+ if (hs.blockRightClick) img.oncontextmenu = function() { return false; };
+ img.className = 'highslide-image';
+ hs.setStyles(img, {
+ visibility: 'hidden',
+ display: 'block',
+ position: 'absolute',
+ maxWidth: '9999px',
+ zIndex: 3
+ });
+ img.title = hs.lang.restoreTitle;
+ if (hs.safari) hs.container.appendChild(img);
+ if (hs.ie && hs.flushImgSize) img.src = null;
+ img.src = this.src;
+
+ this.showLoading();
+},
+
+contentLoaded : function() {
+ try {
+ if (!this.content) return;
+ this.content.onload = null;
+ if (this.onLoadStarted) return;
+ else this.onLoadStarted = true;
+
+ var x = this.x, y = this.y;
+
+ if (this.loading) {
+ hs.setStyles(this.loading, { top: '-9999px' });
+ this.loading = null;
+ }
+ x.full = this.content.width;
+ y.full = this.content.height;
+
+ hs.setStyles(this.content, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ this.wrapper.appendChild(this.content);
+ hs.container.appendChild(this.wrapper);
+
+ x.calcBorders();
+ y.calcBorders();
+
+ hs.setStyles (this.wrapper, {
+ left: (x.tpos + x.tb - x.cb) +'px',
+ top: (y.tpos + x.tb - y.cb) +'px'
+ });
+
+
+ this.initSlideshow();
+ this.getOverlays();
+
+ var ratio = x.full / y.full;
+
+ x.calcExpanded();
+ this.justify(x);
+
+ y.calcExpanded();
+ this.justify(y);
+ if (this.overlayBox) this.sizeOverlayBox(0, 1);
+
+ if (this.allowSizeReduction) {
+ this.correctRatio(ratio);
+ var ss = this.slideshow;
+ if (ss && this.last && ss.controls && ss.fixedControls) {
+ var pos = ss.overlayOptions.position || '', p;
+ for (var dim in hs.oPos) for (var i = 0; i < 5; i++) {
+ p = this[dim];
+ if (pos.match(hs.oPos[dim][i])) {
+ p.pos = this.last[dim].pos
+ + (this.last[dim].p1 - p.p1)
+ + (this.last[dim].size - p.size) * [0, 0, .5, 1, 1][i];
+ if (ss.fixedControls == 'fit') {
+ if (p.pos + p.size + p.p1 + p.p2 > p.scroll + p.clientSize - p.marginMax)
+ p.pos = p.scroll + p.clientSize - p.size - p.marginMin - p.marginMax - p.p1 - p.p2;
+ if (p.pos < p.scroll + p.marginMin) p.pos = p.scroll + p.marginMin;
+ }
+ }
+ }
+ }
+ if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
+ this.createFullExpand();
+ if (this.overlays.length == 1) this.sizeOverlayBox();
+ }
+ }
+ this.show();
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+justify : function (p, moveOnly) {
+ var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y';
+
+ if (tgt && tgt.match(/ /)) {
+ tgtArr = tgt.split(' ');
+ tgt = tgtArr[0];
+ }
+ if (tgt && hs.$(tgt)) {
+ p.pos = hs.getPosition(hs.$(tgt))[dim];
+ if (tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/))
+ p.pos += parseInt(tgtArr[1]);
+ if (p.size < p.minSize) p.size = p.minSize;
+
+ } else if (p.justify == 'auto' || p.justify == 'center') {
+
+ var hasMovedMin = false;
+
+ var allowReduce = p.exp.allowSizeReduction;
+ if (p.justify == 'center')
+ p.pos = Math.round(p.scroll + (p.clientSize + p.marginMin - p.marginMax - p.get('wsize')) / 2);
+ else
+ p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
+ if (p.pos < p.scroll + p.marginMin) {
+ p.pos = p.scroll + p.marginMin;
+ hasMovedMin = true;
+ }
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+ if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) {
+ if (!moveOnly && hasMovedMin && allowReduce) {
+ p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ } else if (p.get('wsize') < p.get('fitsize')) {
+ p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize');
+ } else { // image larger than viewport
+ p.pos = p.scroll + p.marginMin;
+ if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ }
+ }
+
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+
+
+ } else if (p.justify == 'max') {
+ p.pos = Math.floor(p.pos - p.size + p.t);
+ }
+
+
+ if (p.pos < p.marginMin) {
+ var tmpMin = p.pos;
+ p.pos = p.marginMin;
+
+ if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin);
+
+ }
+},
+
+correctRatio : function(ratio) {
+ var x = this.x,
+ y = this.y,
+ changed = false,
+ xSize = Math.min(x.full, x.size),
+ ySize = Math.min(y.full, y.size),
+ useBox = (this.useBox || hs.padToMinWidth);
+
+ if (xSize / ySize > ratio) { // width greater
+ xSize = ySize * ratio;
+ if (xSize < x.minSize) { // below minWidth
+ xSize = x.minSize;
+ ySize = xSize / ratio;
+ }
+ changed = true;
+
+ } else if (xSize / ySize < ratio) { // height greater
+ ySize = xSize / ratio;
+ changed = true;
+ }
+
+ if (hs.padToMinWidth && x.full < x.minSize) {
+ x.imgSize = x.full;
+ y.size = y.imgSize = y.full;
+ } else if (this.useBox) {
+ x.imgSize = xSize;
+ y.imgSize = ySize;
+ } else {
+ x.size = xSize;
+ y.size = ySize;
+ }
+ this.fitOverlayBox(useBox ? null : ratio);
+ if (useBox && y.size < y.imgSize) {
+ y.imgSize = y.size;
+ x.imgSize = y.size * ratio;
+ }
+ if (changed || useBox) {
+ x.pos = x.tpos - x.cb + x.tb;
+ x.minSize = x.size;
+ this.justify(x, true);
+
+ y.pos = y.tpos - y.cb + y.tb;
+ y.minSize = y.size;
+ this.justify(y, true);
+ if (this.overlayBox) this.sizeOverlayBox();
+ }
+},
+fitOverlayBox : function(ratio) {
+ var x = this.x, y = this.y;
+ if (this.overlayBox) {
+ while (y.size > this.minHeight && x.size > this.minWidth
+ && y.get('wsize') > y.get('fitsize')) {
+ y.size -= 10;
+ if (ratio) x.size = y.size * ratio;
+ this.sizeOverlayBox(0, 1);
+ }
+ }
+},
+
+show : function () {
+ var x = this.x, y = this.y;
+ this.doShowHide('hidden');
+ if (this.slideshow && this.slideshow.thumbstrip) this.slideshow.thumbstrip.selectThumb();
+
+ // Apply size change
+ this.changeSize(
+ 1, {
+ wrapper: {
+ width : x.get('wsize'),
+ height : y.get('wsize'),
+ left: x.pos,
+ top: y.pos
+ },
+ content: {
+ left: x.p1 + x.get('imgPad'),
+ top: y.p1 + y.get('imgPad'),
+ width:x.imgSize ||x.size,
+ height:y.imgSize ||y.size
+ }
+ },
+ hs.expandDuration
+ );
+},
+
+changeSize : function(up, to, dur) {
+ // transition
+ var trans = this.transitions,
+ other = up ? (this.last ? this.last.a : null) : hs.upcoming,
+ t = (trans[1] && other
+ && hs.getParam(other, 'transitions')[1] == trans[1]) ?
+ trans[1] : trans[0];
+
+ if (this[t] && t != 'expand') {
+ this[t](up, to);
+ return;
+ }
+
+ if (this.outline && !this.outlineWhileAnimating) {
+ if (up) this.outline.setPosition();
+ else this.outline.destroy();
+ }
+
+
+ if (!up) this.destroyOverlays();
+
+ var exp = this,
+ x = exp.x,
+ y = exp.y,
+ easing = this.easing;
+ if (!up) easing = this.easingClose || easing;
+ var after = up ?
+ function() {
+
+ if (exp.outline) exp.outline.table.style.visibility = "visible";
+ setTimeout(function() {
+ exp.afterExpand();
+ }, 50);
+ } :
+ function() {
+ exp.afterClose();
+ };
+ if (up) hs.setStyles( this.wrapper, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ if (this.fadeInOut) {
+ hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 });
+ hs.extend(to.wrapper, { opacity: up });
+ }
+ hs.animate( this.wrapper, to.wrapper, {
+ duration: dur,
+ easing: easing,
+ step: function(val, args) {
+ if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') {
+ var fac = up ? args.pos : 1 - args.pos;
+ var pos = {
+ w: x.t + (x.get('wsize') - x.t) * fac,
+ h: y.t + (y.get('wsize') - y.t) * fac,
+ x: x.tpos + (x.pos - x.tpos) * fac,
+ y: y.tpos + (y.pos - y.tpos) * fac
+ };
+ exp.outline.setPosition(pos, 0, 1);
+ }
+ }
+ });
+ hs.animate( this.content, to.content, dur, easing, after);
+ if (up) {
+ this.wrapper.style.visibility = 'visible';
+ this.content.style.visibility = 'visible';
+ this.a.className += ' highslide-active-anchor';
+ }
+},
+
+
+
+fade : function(up, to) {
+ this.outlineWhileAnimating = false;
+ var exp = this, t = up ? hs.expandDuration : 0;
+
+ if (up) {
+ hs.animate(this.wrapper, to.wrapper, 0);
+ hs.setStyles(this.wrapper, { opacity: 0, visibility: 'visible' });
+ hs.animate(this.content, to.content, 0);
+ this.content.style.visibility = 'visible';
+
+ hs.animate(this.wrapper, { opacity: 1 }, t, null,
+ function() { exp.afterExpand(); });
+ }
+
+ if (this.outline) {
+ this.outline.table.style.zIndex = this.wrapper.style.zIndex;
+ var dir = up || -1,
+ offset = this.outline.offset,
+ startOff = up ? 3 : offset,
+ endOff = up? offset : 3;
+ for (var i = startOff; dir * i <= dir * endOff; i += dir, t += 25) {
+ (function() {
+ var o = up ? endOff - i : startOff - i;
+ setTimeout(function() {
+ exp.outline.setPosition(0, o, 1);
+ }, t);
+ })();
+ }
+ }
+
+
+ if (up) {}//setTimeout(function() { exp.afterExpand(); }, t+50);
+ else {
+ setTimeout( function() {
+ if (exp.outline) exp.outline.destroy(exp.preserveContent);
+
+ exp.destroyOverlays();
+
+ hs.animate( exp.wrapper, { opacity: 0 }, hs.restoreDuration, null, function(){
+ exp.afterClose();
+ });
+ }, t);
+ }
+},
+
+crossfade : function (up, to) {
+ if (!up) return;
+ var exp = this,
+ dur = hs.transitionDuration,
+ last = exp.last,
+ x = exp.x,
+ y = exp.y,
+ lastX = last.x,
+ lastY = last.y,
+ overlayBox = exp.overlayBox,
+ wrapper = this.wrapper,
+ content = this.content;
+ hs.removeEventListener(document, 'mousemove', hs.dragHandler);
+ this.outline = last.outline;
+ if (this.outline) this.outline.exp = exp;
+ last.outline = null;
+ last.wrapper.style.overflow = 'hidden';
+ hs.setStyles(wrapper, {
+ left: lastX.pos +'px',
+ top: lastY.pos +'px',
+ width: lastX.get('wsize') +'px',
+ height: lastY.get('wsize') +'px'
+ });
+ hs.setStyles(content, {
+ display: 'none',
+ width: (x.imgSize || x.size) +'px',
+ height: (y.imgSize || y.size) +'px',
+ left: (x.p1 + x.get('imgPad')) +'px',
+ top: (y.p1 + y.get('imgPad')) + 'px'
+ });
+ var fadeBox = hs.createElement('div', {
+ className: 'highslide-image'
+ }, {
+ position: 'absolute',
+ zIndex: 4,
+ overflow: 'hidden',
+ display: 'none',
+ left: (lastX.p1 + lastX.get('imgPad')) +'px',
+ top: (lastY.p1 + lastY.get('imgPad')) +'px',
+ width: (lastX.imgSize || lastX.size) +'px',
+ height: (lastY.imgSize || lastY.size) +'px'
+ });
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (o.style.visibility == 'hidden') o.style.display = 'none';
+ }
+ if (overlayBox) hs.setStyles(overlayBox, {
+ overflow: 'visible',
+ left: (lastX.p1 + lastX.cb) +'px',
+ top: (lastY.p1 + lastY.cb) +'px',
+ width: lastX.size +'px',
+ height: lastY.size +'px'
+ });
+ var names = { oldImg: last, newImg: this };
+ for (var n in names) {
+ this[n] = names[n].content.cloneNode(1);
+ hs.setStyles(this[n], {
+ position: 'absolute',
+ border: 0,
+ visibility: 'visible'
+ });
+ fadeBox.appendChild(this[n]);
+ }
+ hs.setStyles(this.oldImg, {
+ left: 0,
+ top: 0
+ });
+ hs.setStyles(this.newImg, {
+ display: 'block',
+ opacity: 0,
+ left: (x.pos - lastX.pos + x.p1 - lastX.p1 + x.get('imgPad') - lastX.get('imgPad')) +'px',
+ top: (y.pos - lastY.pos + y.p1 - lastY.p1 + y.get('imgPad') - lastY.get('imgPad')) +'px'
+ });
+ wrapper.appendChild(fadeBox);
+ if (overlayBox) {
+ overlayBox.className = '';
+ wrapper.appendChild(overlayBox);
+ }
+ fadeBox.style.display = '';
+ last.content.style.display = 'none';
+
+ if (hs.safari) {
+ var match = navigator.userAgent.match(/Safari\/([0-9]{3})/);
+ if (match && parseInt(match[1]) < 525) wrapper.style.visibility = 'visible';
+ }
+ function end() {
+ wrapper.style.visibility = content.style.visibility = 'visible';
+ content.style.display = 'block';
+ fadeBox.style.display = 'none';
+ exp.a.className += ' highslide-active-anchor';
+ exp.afterExpand();
+ last.afterClose();
+ exp.last = null;
+ }
+ hs.animate(last.wrapper, {
+ left: x.pos,
+ top: y.pos,
+ width: x.get('wsize'),
+ height: y.get('wsize')
+ }, dur);
+
+ hs.animate(fadeBox, {
+ width: x.imgSize || x.size,
+ height: y.imgSize || y.size,
+ left: x.p1 + x.get('imgPad'),
+ top: y.p1 + y.get('imgPad')
+ }, dur);
+
+ hs.animate(this.oldImg, {
+ left: (lastX.pos - x.pos + lastX.p1 - x.p1 + lastX.get('imgPad') - x.get('imgPad')),
+ top: (lastY.pos - y.pos + lastY.p1 - y.p1 + lastY.get('imgPad') - y.get('imgPad'))
+ }, dur);
+
+ hs.animate(this.newImg, {
+ opacity: 1,
+ left: 0,
+ top: 0
+ }, dur);
+ if (overlayBox) hs.animate(overlayBox, {
+ left: x.p1 + x.cb,
+ top: y.p1 + y.cb,
+ width: x.size,
+ height: y.size
+ }, dur);
+ if (this.outline) var wrapStep = function(val, args) {
+ if (args.prop == 'top') {
+ var stl = exp.wrapper.style;
+ var pos = {
+ w: parseInt(stl.width),
+ h: parseInt(stl.height),
+ x: parseInt(stl.left),
+ y: parseInt(stl.top)
+ };
+ exp.outline.setPosition(pos);
+ }
+ };
+ hs.animate(wrapper, to.wrapper, {
+ duration: dur,
+ complete: end,
+ step: wrapStep
+ });
+
+ fadeBox.style.visibility = 'visible';
+},
+reuseOverlay : function(o, el) {
+ if (!this.last) return false;
+ for (var i = 0; i < this.last.overlays.length; i++) {
+ var oDiv = hs.$('hsId'+ this.last.overlays[i]);
+ if (oDiv && oDiv.hsId == o.hsId) {
+ this.genOverlayBox();
+ oDiv.reuse = this.key;
+ hs.push(this.overlays, this.last.overlays[i]);
+ return true;
+ }
+ }
+ return false;
+},
+
+
+afterExpand : function() {
+ this.isExpanded = true;
+ this.focus();
+ if (this.dimmingOpacity) hs.dim(this);
+ if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null;
+ this.prepareNextOutline();
+ var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop;
+ this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize')
+ && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize');
+ if (this.overlayBox) this.showOverlays();
+
+},
+
+
+prepareNextOutline : function() {
+ var key = this.key;
+ var outlineType = this.outlineType;
+ new hs.Outline(outlineType,
+ function () { try { hs.expanders[key].preloadNext(); } catch (e) {} });
+},
+
+
+preloadNext : function() {
+ var next = this.getAdjacentAnchor(1);
+ if (next && next.onclick.toString().match(/hs\.expand/))
+ var img = hs.createElement('img', { src: hs.getSrc(next) });
+},
+
+
+getAdjacentAnchor : function(op) {
+ var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none'];
+
+ /*< ? if ($cfg->slideshow) : ?>s*/
+ if (!as[current + op] && this.slideshow && this.slideshow.repeat) {
+ if (op == 1) return as[0];
+ else if (op == -1) return as[as.length-1];
+ }
+ /*< ? endif ?>s*/
+ return as[current + op] || null;
+},
+
+getAnchorIndex : function() {
+ var arr = hs.getAnchors().groups[this.slideshowGroup || 'none'];
+ if (arr) for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == this.a) return i;
+ }
+ return null;
+},
+
+
+getNumber : function() {
+ if (this[this.numberPosition]) {
+ var arr = hs.anchors.groups[this.slideshowGroup || 'none'];
+ if (arr) {
+ var s = hs.lang.number.replace('%1', this.getAnchorIndex() + 1).replace('%2', arr.length);
+ this[this.numberPosition].innerHTML =
+ '<div class="highslide-number">'+ s +'</div>'+ this[this.numberPosition].innerHTML;
+ }
+ }
+},
+initSlideshow : function() {
+ if (!this.last) {
+ for (var i = 0; i < hs.slideshows.length; i++) {
+ var ss = hs.slideshows[i], sg = ss.slideshowGroup;
+ if (typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup)
+ this.slideshow = new hs.Slideshow(this.key, ss);
+ }
+ } else {
+ this.slideshow = this.last.slideshow;
+ }
+ var ss = this.slideshow;
+ if (!ss) return;
+ var key = ss.expKey = this.key;
+
+ ss.checkFirstAndLast();
+ ss.disable('full-expand');
+ if (ss.controls) {
+ var o = ss.overlayOptions || {};
+ o.overlayId = ss.controls;
+ o.hsId = 'controls';
+ this.createOverlay(o);
+ }
+ if (ss.thumbstrip) ss.thumbstrip.add(this);
+ if (!this.last && this.autoplay) ss.play(true);
+ if (ss.autoplay) {
+ ss.autoplay = setTimeout(function() {
+ hs.next(key);
+ }, (ss.interval || 500));
+ }
+},
+
+cancelLoading : function() {
+ hs.discardElement (this.wrapper);
+ hs.expanders[this.key] = null;
+ if (hs.upcoming == this.a) hs.upcoming = null;
+ hs.undim(this.key);
+ if (this.loading) hs.loading.style.left = '-9999px';
+},
+
+writeCredits : function () {
+ if (this.credits) return;
+ this.credits = hs.createElement('a', {
+ href: hs.creditsHref,
+ target: hs.creditsTarget,
+ className: 'highslide-credits',
+ innerHTML: hs.lang.creditsText,
+ title: hs.lang.creditsTitle
+ });
+ this.createOverlay({
+ overlayId: this.credits,
+ position: this.creditsPosition || 'top left',
+ hsId: 'credits'
+ });
+},
+
+getInline : function(types, addOverlay) {
+ for (var i = 0; i < types.length; i++) {
+ var type = types[i], s = null;
+ if (!this[type +'Id'] && this.thumbsUserSetId)
+ this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId;
+ if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']);
+ if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try {
+ s = eval(this[type +'Eval']);
+ } catch (e) {}
+ if (!this[type] && this[type +'Text']) {
+ s = this[type +'Text'];
+ }
+ if (!this[type] && !s) {
+ var next = this.a.nextSibling;
+ while (next && !hs.isHsAnchor(next)) {
+ if ((new RegExp('highslide-'+ type)).test(next.className || null)) {
+ this[type] = next.cloneNode(1);
+ break;
+ }
+ next = next.nextSibling;
+ }
+ }
+ if (!this[type] && !s && this.numberPosition == type) s = '\n';
+
+ if (!this[type] && s) this[type] = hs.createElement('div',
+ { className: 'highslide-'+ type, innerHTML: s } );
+
+ if (addOverlay && this[type]) {
+ var o = { position: (type == 'heading') ? 'above' : 'below' };
+ for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x];
+ o.overlayId = this[type];
+ this.createOverlay(o);
+ }
+ }
+},
+
+
+// on end move and resize
+doShowHide : function(visibility) {
+ if (hs.hideSelects) this.showHideElements('SELECT', visibility);
+ if (hs.hideIframes) this.showHideElements('IFRAME', visibility);
+ if (hs.geckoMac) this.showHideElements('*', visibility);
+},
+showHideElements : function (tagName, visibility) {
+ var els = document.getElementsByTagName(tagName);
+ var prop = tagName == '*' ? 'overflow' : 'visibility';
+ for (var i = 0; i < els.length; i++) {
+ if (prop == 'visibility' || (document.defaultView.getComputedStyle(
+ els[i], "").getPropertyValue('overflow') == 'auto'
+ || els[i].getAttribute('hidden-by') != null)) {
+ var hiddenBy = els[i].getAttribute('hidden-by');
+ if (visibility == 'visible' && hiddenBy) {
+ hiddenBy = hiddenBy.replace('['+ this.key +']', '');
+ els[i].setAttribute('hidden-by', hiddenBy);
+ if (!hiddenBy) els[i].style[prop] = els[i].origProp;
+ } else if (visibility == 'hidden') { // hide if behind
+ var elPos = hs.getPosition(els[i]);
+ elPos.w = els[i].offsetWidth;
+ elPos.h = els[i].offsetHeight;
+ if (!this.dimmingOpacity) { // hide all if dimming
+
+ var clearsX = (elPos.x + elPos.w < this.x.get('opos')
+ || elPos.x > this.x.get('opos') + this.x.get('osize'));
+ var clearsY = (elPos.y + elPos.h < this.y.get('opos')
+ || elPos.y > this.y.get('opos') + this.y.get('osize'));
+ }
+ var wrapperKey = hs.getWrapperKey(els[i]);
+ if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
+ if (!hiddenBy) {
+ els[i].setAttribute('hidden-by', '['+ this.key +']');
+ els[i].origProp = els[i].style[prop];
+ els[i].style[prop] = 'hidden';
+
+ } else if (hiddenBy.indexOf('['+ this.key +']') == -1) {
+ els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']');
+ }
+ } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey)
+ && wrapperKey != this.key) { // on move
+ els[i].setAttribute('hidden-by', '');
+ els[i].style[prop] = els[i].origProp || '';
+ } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) {
+ els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', ''));
+ }
+
+ }
+ }
+ }
+},
+
+focus : function() {
+ this.wrapper.style.zIndex = hs.zIndexCounter += 2;
+ // blur others
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && i == hs.focusKey) {
+ var blurExp = hs.expanders[i];
+ blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur';
+ blurExp.content.style.cursor = hs.ie ? 'hand' : 'pointer';
+ blurExp.content.title = hs.lang.focusTitle;
+ }
+ }
+
+ // focus this
+ if (this.outline) this.outline.table.style.zIndex
+ = this.wrapper.style.zIndex - 1;
+ this.content.className = 'highslide-'+ this.contentType;
+ this.content.title = hs.lang.restoreTitle;
+
+ if (hs.restoreCursor) {
+ hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer';
+ if (hs.ie && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand';
+ this.content.style.cursor = hs.styleRestoreCursor;
+ }
+
+ hs.focusKey = this.key;
+ hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+},
+moveTo: function(x, y) {
+ this.x.setPos(x);
+ this.y.setPos(y);
+},
+resize : function (e) {
+ var w, h, r = e.width / e.height;
+ w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full));
+ if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full;
+ h = w / r;
+ if (h < Math.min(this.minHeight, this.y.full)) {
+ h = Math.min(this.minHeight, this.y.full);
+ if (this.isImage) w = h * r;
+ }
+ this.resizeTo(w, h);
+},
+resizeTo: function(w, h) {
+ this.y.setSize(h);
+ this.x.setSize(w);
+},
+
+close : function() {
+ if (this.isClosing || !this.isExpanded) return;
+ if (this.transitions[1] == 'crossfade' && hs.upcoming) {
+ hs.getExpander(hs.upcoming).cancelLoading();
+ hs.upcoming = null;
+ }
+ this.isClosing = true;
+ if (this.slideshow && !hs.upcoming) this.slideshow.pause();
+
+ hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+
+ try {
+ this.content.style.cursor = 'default';
+ this.changeSize(
+ 0, {
+ wrapper: {
+ width : this.x.t,
+ height : this.y.t,
+ left: this.x.tpos - this.x.cb + this.x.tb,
+ top: this.y.tpos - this.y.cb + this.y.tb
+ },
+ content: {
+ left: 0,
+ top: 0,
+ width: this.x.t,
+ height: this.y.t
+ }
+ }, hs.restoreDuration
+ );
+ } catch (e) { this.afterClose(); }
+},
+
+createOverlay : function (o) {
+ var el = o.overlayId,
+ relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position));
+ if (typeof el == 'string') el = hs.getNode(el);
+ if (o.html) el = hs.createElement('div', { innerHTML: o.html });
+ if (!el || typeof el == 'string') return;
+ el.style.display = 'block';
+ o.hsId = o.hsId || o.overlayId;
+ if (this.transitions[1] == 'crossfade' && this.reuseOverlay(o, el)) return;
+ this.genOverlayBox();
+ var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto';
+ if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px';
+ var overlay = hs.createElement(
+ 'div', {
+ id: 'hsId'+ hs.idCounter++,
+ hsId: o.hsId
+ }, {
+ position: 'absolute',
+ visibility: 'hidden',
+ width: width,
+ direction: hs.lang.cssDirection || '',
+ opacity: 0
+ },
+ relToVP ? hs.viewport :this.overlayBox,
+ true
+ );
+ if (relToVP) overlay.hsKey = this.key;
+
+ overlay.appendChild(el);
+ hs.extend(overlay, {
+ opacity: 1,
+ offsetX: 0,
+ offsetY: 0,
+ dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250
+ });
+ hs.extend(overlay, o);
+
+ if (this.gotOverlays) {
+ this.positionOverlay(overlay);
+ if (!overlay.hideOnMouseOut || this.mouseIsOver)
+ hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur);
+ }
+ hs.push(this.overlays, hs.idCounter - 1);
+},
+positionOverlay : function(overlay) {
+ var p = overlay.position || 'middle center',
+ relToVP = (overlay.relativeTo == 'viewport'),
+ offX = overlay.offsetX,
+ offY = overlay.offsetY;
+ if (relToVP) {
+ hs.viewport.style.display = 'block';
+ overlay.hsKey = this.key;
+ if (overlay.offsetWidth > overlay.parentNode.offsetWidth)
+ overlay.style.width = '100%';
+ } else
+ if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay);
+ if (/left$/.test(p)) overlay.style.left = offX +'px';
+
+ if (/center$/.test(p)) hs.setStyles (overlay, {
+ left: '50%',
+ marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px'
+ });
+
+ if (/right$/.test(p)) overlay.style.right = - offX +'px';
+
+ if (/^leftpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ right: '100%',
+ marginRight: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p1 = overlay.offsetWidth;
+
+ } else if (/^rightpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: '100%',
+ marginLeft: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p2 = overlay.offsetWidth;
+ }
+ var parOff = overlay.parentNode.offsetHeight;
+ overlay.style.height = 'auto';
+ if (relToVP && overlay.offsetHeight > parOff)
+ overlay.style.height = hs.ieLt7 ? parOff +'px' : '100%';
+
+ if (/^top/.test(p)) overlay.style.top = offY +'px';
+ if (/^middle/.test(p)) hs.setStyles (overlay, {
+ top: '50%',
+ marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px'
+ });
+ if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px';
+ if (/^above$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ bottom: '100%',
+ marginBottom: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p1 = overlay.offsetHeight;
+
+ } else if (/^below$/.test(p)) {
+ hs.setStyles(overlay, {
+ position: 'relative',
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ top: '100%',
+ marginTop: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p2 = overlay.offsetHeight;
+ overlay.style.position = 'absolute';
+ }
+},
+
+getOverlays : function() {
+ this.getInline(['heading', 'caption'], true);
+ this.getNumber();
+ if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move';
+ if (hs.showCredits) this.writeCredits();
+ for (var i = 0; i < hs.overlays.length; i++) {
+ var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup;
+ if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId)
+ || (sg && sg === this.slideshowGroup)) {
+ this.createOverlay(o);
+ }
+ }
+ var os = [];
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (/panel$/.test(o.position)) this.positionOverlay(o);
+ else hs.push(os, o);
+ }
+ for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]);
+ this.gotOverlays = true;
+},
+genOverlayBox : function() {
+ if (!this.overlayBox) this.overlayBox = hs.createElement (
+ 'div', {
+ className: this.wrapperClassName
+ }, {
+ position : 'absolute',
+ width: (this.x.size || (this.useBox ? this.width : null)
+ || this.x.full) +'px',
+ height: (this.y.size || this.y.full) +'px',
+ visibility : 'hidden',
+ overflow : 'hidden',
+ zIndex : hs.ie ? 4 : null
+ },
+ hs.container,
+ true
+ );
+},
+sizeOverlayBox : function(doWrapper, doPanels) {
+ var overlayBox = this.overlayBox,
+ x = this.x,
+ y = this.y;
+ hs.setStyles( overlayBox, {
+ width: x.size +'px',
+ height: y.size +'px'
+ });
+ if (doWrapper || doPanels) {
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat');
+ if (o && /^(above|below)$/.test(o.position)) {
+ if (ie6) {
+ o.style.width = (overlayBox.offsetWidth + 2 * x.cb
+ + x.p1 + x.p2) +'px';
+ }
+ y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight;
+ }
+ if (o && ie6 && /^(left|right)panel$/.test(o.position)) {
+ o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px';
+ }
+ }
+ }
+ if (doWrapper) {
+ hs.setStyles(this.content, {
+ top: y.p1 +'px'
+ });
+ hs.setStyles(overlayBox, {
+ top: (y.p1 + y.cb) +'px'
+ });
+ }
+},
+
+showOverlays : function() {
+ var b = this.overlayBox;
+ b.className = '';
+ hs.setStyles(b, {
+ top: (this.y.p1 + this.y.cb) +'px',
+ left: (this.x.p1 + this.x.cb) +'px',
+ overflow : 'visible'
+ });
+ if (hs.safari) b.style.visibility = 'visible';
+ this.wrapper.appendChild (b);
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ o.style.zIndex = o.hsId == 'controls' ? 5 : 4;
+ if (!o.hideOnMouseOut || this.mouseIsOver) {
+ o.style.visibility = 'visible';
+ hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: o.opacity }, o.dur);
+ }
+ }
+},
+
+destroyOverlays : function() {
+ if (!this.overlays.length) return;
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (o.parentNode == hs.viewport) hs.discardElement(o);
+ }
+ if (this.slideshow) {
+ var c = this.slideshow.controls;
+ if (c && hs.getExpander(c) == this) c.parentNode.removeChild(c);
+ }
+ hs.discardElement(this.overlayBox);
+},
+
+
+
+createFullExpand : function () {
+ if (this.slideshow && this.slideshow.controls) {
+ this.slideshow.enable('full-expand');
+ return;
+ }
+ this.fullExpandLabel = hs.createElement(
+ 'a', {
+ href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();',
+ title: hs.lang.fullExpandTitle,
+ className: 'highslide-full-expand'
+ }
+ );
+
+ this.createOverlay({
+ overlayId: this.fullExpandLabel,
+ position: hs.fullExpandPosition,
+ hideOnMouseOut: true,
+ opacity: hs.fullExpandOpacity
+ });
+},
+
+doFullExpand : function () {
+ try {
+ if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel);
+
+ this.focus();
+ var xSize = this.x.size;
+ this.resizeTo(this.x.full, this.y.full);
+
+ var xpos = this.x.pos - (this.x.size - xSize) / 2;
+ if (xpos < hs.marginLeft) xpos = hs.marginLeft;
+
+ this.moveTo(xpos, this.y.pos);
+ this.doShowHide('hidden');
+ hs.setDimmerSize(this);
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+
+afterClose : function () {
+ this.a.className = this.a.className.replace('highslide-active-anchor', '');
+
+ this.doShowHide('visible');
+ if (this.outline && this.outlineWhileAnimating) this.outline.destroy();
+
+ hs.discardElement(this.wrapper);
+ if (!hs.viewport.childNodes.length) hs.viewport.style.display = 'none';
+
+ if (this.dimmingOpacity) hs.undim(this.key);
+ hs.expanders[this.key] = null;
+ hs.reOrder();
+}
+
+};
+
+
+hs.Slideshow = function (expKey, options) {
+ if (hs.dynamicallyUpdateAnchors !== false) hs.updateAnchors();
+ this.expKey = expKey;
+ for (var x in options) this[x] = options[x];
+ if (this.useControls) this.getControls();
+ if (this.thumbstrip) this.thumbstrip = hs.Thumbstrip(this);
+};
+hs.Slideshow.prototype = {
+getControls: function() {
+ this.controls = hs.createElement('div', { innerHTML: hs.replaceLang(hs.skin.controls) },
+ null, hs.container);
+
+ var buttons = ['play', 'pause', 'previous', 'next', 'move', 'full-expand', 'close'];
+ this.btn = {};
+ var pThis = this;
+ for (var i = 0; i < buttons.length; i++) {
+ this.btn[buttons[i]] = hs.getElementByClass(this.controls, 'li', 'highslide-'+ buttons[i]);
+ this.enable(buttons[i]);
+ }
+ this.btn.pause.style.display = 'none';
+ //this.disable('full-expand');
+},
+checkFirstAndLast: function() {
+ if (this.repeat || !this.controls) return;
+ var exp = hs.expanders[this.expKey],
+ cur = exp.getAnchorIndex(),
+ re = /disabled$/;
+ if (cur == 0)
+ this.disable('previous');
+ else if (re.test(this.btn.previous.getElementsByTagName('a')[0].className))
+ this.enable('previous');
+ if (cur + 1 == hs.anchors.groups[exp.slideshowGroup || 'none'].length) {
+ this.disable('next');
+ this.disable('play');
+ } else if (re.test(this.btn.next.getElementsByTagName('a')[0].className)) {
+ this.enable('next');
+ this.enable('play');
+ }
+},
+enable: function(btn) {
+ if (!this.btn) return;
+ var sls = this, a = this.btn[btn].getElementsByTagName('a')[0], re = /disabled$/;
+ a.onclick = function() {
+ sls[btn]();
+ return false;
+ };
+ if (re.test(a.className)) a.className = a.className.replace(re, '');
+},
+disable: function(btn) {
+ if (!this.btn) return;
+ var a = this.btn[btn].getElementsByTagName('a')[0];
+ a.onclick = function() { return false; };
+ if (!/disabled$/.test(a.className)) a.className += ' disabled';
+},
+hitSpace: function() {
+ if (this.autoplay) this.pause();
+ else this.play();
+},
+play: function(wait) {
+ if (this.btn) {
+ this.btn.play.style.display = 'none';
+ this.btn.pause.style.display = '';
+ }
+
+ this.autoplay = true;
+ if (!wait) hs.next(this.expKey);
+},
+pause: function() {
+ if (this.btn) {
+ this.btn.pause.style.display = 'none';
+ this.btn.play.style.display = '';
+ }
+
+ clearTimeout(this.autoplay);
+ this.autoplay = null;
+},
+previous: function() {
+ this.pause();
+ hs.previous(this.btn.previous);
+},
+next: function() {
+ this.pause();
+ hs.next(this.btn.next);
+},
+move: function() {},
+'full-expand': function() {
+ hs.getExpander().doFullExpand();
+},
+close: function() {
+ hs.close(this.btn.close);
+}
+};
+hs.Thumbstrip = function(slideshow) {
+ function add (exp) {
+ hs.extend(options || {}, {
+ overlayId: dom,
+ hsId: 'thumbstrip'
+ });
+ if (hs.ieLt7) options.fade = 0;
+ exp.createOverlay(options);
+ hs.setStyles(dom.parentNode, { overflow: 'hidden' });
+ };
+
+ function scroll (delta) {
+ selectThumb(undefined, Math.round(delta * dom[isX ? 'offsetWidth' : 'offsetHeight'] * 0.7));
+ };
+
+ function selectThumb (i, scrollBy) {
+ if (i === undefined) for (var j = 0; j < group.length; j++) {
+ if (group[j] == hs.expanders[slideshow.expKey].a) {
+ i = j;
+ break;
+ }
+ }
+ if (i === undefined) return;
+ var as = dom.getElementsByTagName('a'),
+ active = as[i],
+ cell = active.parentNode,
+ left = isX ? 'Left' : 'Top',
+ right = isX ? 'Right' : 'Bottom',
+ width = isX ? 'Width' : 'Height',
+ offsetLeft = 'offset' + left,
+ offsetWidth = 'offset' + width,
+ overlayWidth = div.parentNode.parentNode[offsetWidth],
+ minTblPos = overlayWidth - table[offsetWidth],
+ curTblPos = parseInt(table.style[isX ? 'left' : 'top']) || 0,
+ tblPos = curTblPos,
+ mgnRight = 20;
+ if (scrollBy !== undefined) {
+ tblPos = curTblPos - scrollBy;
+ if (tblPos > 0) tblPos = 0;
+ if (tblPos < minTblPos) tblPos = minTblPos;
+
+ } else {
+ for (var j = 0; j < as.length; j++) as[j].className = '';
+ active.className = 'highslide-active-anchor';
+ var activeLeft = i > 0 ? as[i - 1].parentNode[offsetLeft] : cell[offsetLeft],
+ activeRight = cell[offsetLeft] + cell[offsetWidth] +
+ (as[i + 1] ? as[i + 1].parentNode[offsetWidth] : 0);
+ if (activeRight > overlayWidth - curTblPos) tblPos = overlayWidth - activeRight;
+ else if (activeLeft < -curTblPos) tblPos = -activeLeft;
+ }
+ var markerPos = cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / 2 + tblPos;
+ hs.animate(table, isX ? { left: tblPos } : { top: tblPos }, null, 'easeOutQuad');
+ hs.animate(marker, isX ? { left: markerPos } : { top: markerPos }, null, 'easeOutQuad');
+ scrollUp.style.display = tblPos < 0 ? 'block' : 'none';
+ scrollDown.style.display = (tblPos > minTblPos) ? 'block' : 'none';
+ };
+
+
+ // initialize
+ var group = hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'],
+ options = slideshow.thumbstrip,
+ mode = options.mode || 'horizontal',
+ floatMode = (mode == 'float'),
+ tree = floatMode ? ['div', 'ul', 'li', 'span'] : ['table', 'tbody', 'tr', 'td'],
+ isX = (mode == 'horizontal'),
+ dom = hs.createElement('div', {
+ className: 'highslide-thumbstrip highslide-thumbstrip-'+ mode,
+ innerHTML:
+ '<div class="highslide-thumbstrip-inner">'+
+ '<'+ tree[0] +'><'+ tree[1] +'></'+ tree[1] +'></'+ tree[0] +'></div>'+
+ '<div class="highslide-scroll-up"><div></div></div>'+
+ '<div class="highslide-scroll-down"><div></div></div>'+
+ '<div class="highslide-marker"><div></div></div>'
+ }, {
+ display: 'none'
+ }, hs.container),
+ domCh = dom.childNodes,
+ div = domCh[0],
+ scrollUp = domCh[1],
+ scrollDown = domCh[2],
+ marker = domCh[3],
+ table = div.firstChild,
+ tbody = dom.getElementsByTagName(tree[1])[0],
+ tr;
+ for (var i = 0; i < group.length; i++) {
+ if (i == 0 || !isX) tr = hs.createElement(tree[2], null, null, tbody);
+ (function(){
+ var a = group[i],
+ cell = hs.createElement(tree[3], null, null, tr),
+ pI = i;
+ hs.createElement('a', {
+ href: a.href,
+ onclick: function() {
+ hs.getExpander(this).focus();
+ return hs.transit(a);
+ },
+ innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(a) : a.innerHTML
+ }, null, cell);
+ })();
+ }
+
+ if (!floatMode) {
+ scrollUp.onclick = function () { scroll(-1); };
+ scrollDown.onclick = function() { scroll(1); };
+ hs.addEventListener(tbody, document.onmousewheel !== undefined ?
+ 'mousewheel' : 'DOMMouseScroll', function(e) {
+ var delta = 0;
+ e = e || window.event;
+ if (e.wheelDelta) {
+ delta = e.wheelDelta/120;
+ if (hs.opera) delta = -delta;
+ } else if (e.detail) {
+ delta = -e.detail/3;
+ }
+ if (delta) scroll(-delta * 0.2);
+ if (e.preventDefault) e.preventDefault();
+ e.returnValue = false;
+ });
+ }
+
+ return {
+ add: add,
+ selectThumb: selectThumb
+ }
+};
+if (hs.ie) {
+ (function () {
+ try {
+ document.documentElement.doScroll('left');
+ } catch (e) {
+ setTimeout(arguments.callee, 50);
+ return;
+ }
+ hs.ready();
+ })();
+}
+hs.addEventListener(document, 'DOMContentLoaded', hs.ready);
+hs.addEventListener(window, 'load', hs.ready);
+hs.langDefaults = hs.lang;
+// history
+var HsExpander = hs.Expander;
+
+// set handlers
+hs.addEventListener(window, 'load', function() {
+ if (hs.expandCursor) {
+ var sel = '.highslide img',
+ dec = 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;';
+
+ var style = hs.createElement('style', { type: 'text/css' }, null,
+ document.getElementsByTagName('HEAD')[0]);
+
+ if (!hs.ie) {
+ style.appendChild(document.createTextNode(sel + " {" + dec + "}"));
+ } else {
+ var last = document.styleSheets[document.styleSheets.length - 1];
+ if (typeof(last.addRule) == "object") last.addRule(sel, dec);
+ }
+ }
+});
+hs.addEventListener(window, 'resize', function() {
+ hs.getPageSize();
+ if (hs.viewport) for (var i = 0; i < hs.viewport.childNodes.length; i++) {
+ var node = hs.viewport.childNodes[i],
+ exp = hs.getExpander(node);
+ exp.positionOverlay(node);
+ if (node.hsId == 'thumbstrip') exp.slideshow.thumbstrip.selectThumb();
+ }
+});
+hs.addEventListener(document, 'mousemove', function(e) {
+ hs.mouse = { x: e.clientX, y: e.clientY };
+});
+hs.addEventListener(document, 'mousedown', hs.mouseClickHandler);
+hs.addEventListener(document, 'mouseup', hs.mouseClickHandler);
+
+hs.addEventListener(document, 'ready', hs.getAnchors);
+hs.addEventListener(window, 'load', hs.preloadImages); \ No newline at end of file
diff --git a/highslide/highslide-with-gallery.packed.js b/highslide/highslide-with-gallery.packed.js
new file mode 100644
index 0000000..dc4c37c
--- /dev/null
+++ b/highslide/highslide-with-gallery.packed.js
@@ -0,0 +1,28 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default +slideshow +positioning +transitions +viewport +thumbstrip +packed
+Author: Torstein Hønsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('u m={17:{9Q:\'9e\',96:\'be...\',95:\'6O 1N bd\',9W:\'6O 1N bc 1N bb\',6u:\'bf 1N bg H (f)\',a5:\'bj by <i>a2 a3</i>\',a6:\'bi 1N bh a2 a3 ba\',9y:\'9A\',8j:\'9z\',8r:\'9u\',8k:\'9Y\',8l:\'9Y (b9)\',b3:\'b2\',8s:\'9B\',9d:\'9B 1f (9E)\',8h:\'9C\',8q:\'9C 1f (9E)\',ap:\'9A (7j T)\',8g:\'9z (7j 2M)\',8t:\'9u\',8p:\'1:1\',3i:\'b1 %1 b0 %2\',7p:\'6O 1N 2c 2B, b4 af b5 1N 3c. b8 7j b7 M 1v af 2V.\'},4v:\'P/b6/\',6A:\'bk.4m\',4J:\'bl.4m\',6P:4H,8f:4H,5k:15,9I:15,7L:15,9J:15,4r:bB,98:0.75,8Z:K,6E:5,3w:2,aZ:3,4U:1g,aD:\'4c 2M\',aA:1,a0:K,aF:\'bA://P.bz/\',ax:\'bx\',au:K,72:[\'a\'],2Y:[],a7:4H,3R:0,7F:50,3y:\'2I\',6z:\'2I\',91:G,92:G,7N:K,4E:am,4M:am,5c:K,1C:\'bC-bD\',aQ:{2p:\'<Y 2n="P-2p"><7P>\'+\'<1W 2n="P-2V">\'+\'<a 23="#" 2j="{m.17.ap}">\'+\'<22>{m.17.9y}</22></a>\'+\'</1W>\'+\'<1W 2n="P-3f">\'+\'<a 23="#" 2j="{m.17.9d}">\'+\'<22>{m.17.8s}</22></a>\'+\'</1W>\'+\'<1W 2n="P-2L">\'+\'<a 23="#" 2j="{m.17.8q}">\'+\'<22>{m.17.8h}</22></a>\'+\'</1W>\'+\'<1W 2n="P-1v">\'+\'<a 23="#" 2j="{m.17.8g}">\'+\'<22>{m.17.8j}</22></a>\'+\'</1W>\'+\'<1W 2n="P-3c">\'+\'<a 23="#" 2j="{m.17.8t}">\'+\'<22>{m.17.8r}</22></a>\'+\'</1W>\'+\'<1W 2n="P-1d-2C">\'+\'<a 23="#" 2j="{m.17.6u}">\'+\'<22>{m.17.8p}</22></a>\'+\'</1W>\'+\'<1W 2n="P-2c">\'+\'<a 23="#" 2j="{m.17.8l}" >\'+\'<22>{m.17.8k}</22></a>\'+\'</1W>\'+\'</7P></Y>\'},59:[],6X:K,U:[],6V:[\'5c\',\'36\',\'3y\',\'6z\',\'91\',\'92\',\'1C\',\'3w\',\'bG\',\'bF\',\'bE\',\'9a\',\'bw\',\'bv\',\'bp\',\'9b\',\'9x\',\'7N\',\'3z\',\'4N\',\'2Y\',\'3R\',\'L\',\'W\',\'7y\',\'4E\',\'4M\',\'8o\',\'bo\',\'2w\',\'2t\',\'at\',\'ak\',\'1K\'],1r:[],5J:0,84:{x:[\'9M\',\'T\',\'3P\',\'2M\',\'9H\'],y:[\'4I\',\'S\',\'7M\',\'4c\',\'63\']},6i:{},9b:{},9a:{},3C:[],4P:[],44:{},7o:{},5y:[],3X:7S((4V.5S.5V().26(/.+(?:97|bn|bm|1A)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1A:(19.58&&!1J.3o),4x:/ah/.1b(4V.5S),5N:/bq.+97:1\\.[0-8].+br/.1b(4V.5S),$:A(24){q(24)C 19.bu(24)},2y:A(2k,3n){2k[2k.R]=3n},1a:A(8C,4e,3q,7Y,8E){u B=19.1a(8C);q(4e)m.3e(B,4e);q(8E)m.V(B,{bt:0,ad:\'1s\',7b:0});q(3q)m.V(B,3q);q(7Y)7Y.2F(B);C B},3e:A(B,4e){M(u x 2W 4e)B[x]=4e[x];C B},V:A(B,3q){M(u x 2W 3q){q(m.1A&&x==\'1k\'){q(3q[x]>0.99)B.E.bs(\'4Z\');I B.E.4Z=\'8G(1k=\'+(3q[x]*2m)+\')\'}I B.E[x]=3q[x]}},1H:A(B,1n,2X){u 49,3E,3W;q(1x 2X!=\'6d\'||2X===G){u 2Z=8w;2X={3F:2Z[2],2t:2Z[3],5F:2Z[4]}}q(1x 2X.3F!=\'3i\')2X.3F=4H;2X.2t=1e[2X.2t]||1e.8z;2X.5Q=m.3e({},1n);M(u 30 2W 1n){u e=2d m.1F(B,2X,30);49=7S(m.6C(B,30))||0;3E=7S(1n[30]);3W=30!=\'1k\'?\'F\':\'\';e.3v(49,3E,3W)}},6C:A(B,1n){q(19.7V){C 19.7V.9m(B,G).9n(1n)}I{q(1n==\'1k\')1n=\'4Z\';u 3n=B.bH[1n.2e(/\\-(\\w)/g,A(a,b){C b.8U()})];q(1n==\'4Z\')3n=3n.2e(/8G\\(1k=([0-9]+)\\)/,A(a,b){C b/2m});C 3n===\'\'?1:3n}},57:A(){u d=19,w=1J,3p=d.88&&d.88!=\'9q\'?d.4w:d.5r;u b=d.5r;u 8F=(w.5u&&w.8P)?w.5u+w.8P:1e.2P(b.8L,b.1V),8A=(w.5o&&1J.8M)?w.5o+w.8M:1e.2P(b.8H,b.31),5z=m.1A?3p.8L:(d.4w.7A||4l.5u),5A=m.1A?1e.2P(3p.8H,3p.73):(d.4w.73||4l.5o);u L=m.1A?3p.7A:(d.4w.7A||4l.5u),W=m.1A?3p.73:4l.5o;m.3I={5z:1e.2P(5z,8F),5A:1e.2P(5A,8A),L:L,W:W,5Z:m.1A?3p.5Z:aX,5q:m.1A?3p.5q:aY}},5K:A(B){u p={x:B.3N,y:B.ao};4g(B.8X){B=B.8X;p.x+=B.3N;p.y+=B.ao;q(B!=19.5r&&B!=19.4w){p.x-=B.5Z;p.y-=B.5q}}C p},2C:A(a,2R,3v,16){q(!a)a=m.1a(\'a\',G,{1o:\'1s\'},m.2a);q(1x a.54==\'A\')C 2R;2g{2d m.51(a,2R,3v);C 1g}2i(e){C K}},aL:A(B,4t,Z){u 1h=B.2N(4t);M(u i=0;i<1h.R;i++){q((2d 5P(Z)).1b(1h[i].Z)){C 1h[i]}}C G},aS:A(s){s=s.2e(/\\s/g,\' \');u 1Y=/{m\\.17\\.([^}]+)\\}/g,55=s.26(1Y),17;q(55)M(u i=0;i<55.R;i++){17=55[i].2e(1Y,"$1");q(1x m.17[17]!=\'1G\')s=s.2e(55[i],m.17[17])}C s},9L:A(){u 81=0,5w=-1,U=m.U,z,1z;M(u i=0;i<U.R;i++){z=U[i];q(z){1z=z.N.E.1z;q(1z&&1z>81){81=1z;5w=i}}}q(5w==-1)m.3r=-1;I U[5w].4a()},4X:A(a,53){a.54=a.2E;u p=a.54?a.54():G;a.54=G;C(p&&1x p[53]!=\'1G\')?p[53]:(1x m[53]!=\'1G\'?m[53]:G)},7n:A(a){u 1K=m.4X(a,\'1K\');q(1K)C 1K;C a.23},8c:A(24){u 3s=m.$(24),3M=m.7o[24],a={};q(!3s&&!3M)C G;q(!3M){3M=3s.5G(K);3M.24=\'\';m.7o[24]=3M;C 3s}I{C 3M.5G(K)}},3Q:A(d){q(d)m.85.2F(d);m.85.2O=\'\'},1p:A(z){q(!m.28){m.28=m.1a(\'Y\',{Z:\'P-aV\',52:\'\',2E:A(){m.2c()}},{1m:\'2l\',1c:\'1I\',T:0,1k:0},m.2a,K);m.21(1J,\'3u\',m.5m)}m.28.E.1o=\'\';m.5m();m.28.52+=\'|\'+z.O;q(m.5N&&m.a1)m.V(m.28,{6R:\'6p(\'+m.4v+\'aU.8B)\',1k:1});I m.1H(m.28,{1k:z.3R},m.7F)},7h:A(O){q(!m.28)C;q(1x O!=\'1G\')m.28.52=m.28.52.2e(\'|\'+O,\'\');q((1x O!=\'1G\'&&m.28.52!=\'\')||(m.1S&&m.4X(m.1S,\'3R\')))C;q(m.5N&&m.a1)m.V(m.28,{6R:\'1s\',L:0,W:0});I m.1H(m.28,{1k:0},m.7F,G,A(){m.V(m.28,{1o:\'1s\',L:0,W:0})})},5m:A(z){m.57();q(!m.28)C;u h=(m.1A&&z&&z.N)?2U(z.N.E.S)+2U(z.N.E.W)+(z.X?z.X.1j:0):0;m.V(m.28,{L:m.3I.5z+\'F\',W:1e.2P(m.3I.5A,h)+\'F\'})},6S:A(4j,z){u 11=z=z||m.2s();q(m.1S)C 1g;I m.11=11;2g{m.1S=4j;4j.2E()}2i(e){m.11=m.1S=G}2g{q(!4j||z.2Y[1]!=\'3O\')z.2c()}2i(e){}C 1g},5C:A(B,1P){u z=m.2s(B);q(z){4j=z.6N(1P);C m.6S(4j,z)}I C 1g},2V:A(B){C m.5C(B,-1)},1v:A(B){C m.5C(B,1)},5B:A(e){q(!e)e=1J.2b;q(!e.2h)e.2h=e.6x;q(1x e.2h.9V!=\'1G\')C K;u z=m.2s();u 1P=G;93(e.aW){1L 70:q(z)z.6g();C K;1L 32:1P=2;5b;1L 34:1L 39:1L 40:1P=1;5b;1L 8:1L 33:1L 37:1L 38:1P=-1;5b;1L 27:1L 13:1P=0}q(1P!==G){q(1P!=2)m.4o(19,1J.3o?\'7G\':\'7K\',m.5B);q(!m.au)C K;q(e.4B)e.4B();I e.8v=1g;q(z){q(1P==0){z.2c()}I q(1P==2){q(z.1f)z.1f.aJ()}I{q(z.1f)z.1f.2L();m.5C(z.O,1P)}C 1g}}C K},cI:A(Q){m.2y(m.1r,m.3e(Q,{1E:\'1E\'+m.5J++}))},cH:A(1i){u 2D=1i.2w;q(1x 2D==\'6d\'){M(u i=0;i<2D.R;i++){u o={};M(u x 2W 1i)o[x]=1i[x];o.2w=2D[i];m.2y(m.4P,o)}}I{m.2y(m.4P,1i)}},8b:A(7C,5n){u B,1Y=/^P-N-([0-9]+)$/;B=7C;4g(B.1Q){q(B.6s!==1G)C B.6s;q(B.24&&1Y.1b(B.24))C B.24.2e(1Y,"$1");B=B.1Q}q(!5n){B=7C;4g(B.1Q){q(B.4t&&m.5U(B)){M(u O=0;O<m.U.R;O++){u z=m.U[O];q(z&&z.a==B)C O}}B=B.1Q}}C G},2s:A(B,5n){q(1x B==\'1G\')C m.U[m.3r]||G;q(1x B==\'3i\')C m.U[B]||G;q(1x B==\'82\')B=m.$(B);C m.U[m.8b(B,5n)]||G},5U:A(a){C(a.2E&&a.2E.aB().2e(/\\s/g,\' \').26(/m.(cG|e)cJ/))},aT:A(){M(u i=0;i<m.U.R;i++)q(m.U[i]&&m.U[i].4C)m.9L()},87:A(e){q(!e)e=1J.2b;q(e.cK>1)C K;q(!e.2h)e.2h=e.6x;u B=e.2h;4g(B.1Q&&!(/P-(2B|3c|5x|3u)/.1b(B.Z))){B=B.1Q}u z=m.2s(B);q(z&&(z.7I||!z.4C))C K;q(z&&e.16==\'ag\'){q(e.2h.9V)C K;u 26=B.Z.26(/P-(2B|3c|3u)/);q(26){m.2Q={z:z,16:26[1],T:z.x.D,L:z.x.H,S:z.y.D,W:z.y.H,9t:e.6j,9w:e.6k};m.21(19,\'6c\',m.5L);q(e.4B)e.4B();q(/P-(2B|5x)-7B/.1b(z.18.Z)){z.4a();m.80=K}C 1g}}I q(e.16==\'8K\'){m.4o(19,\'6c\',m.5L);q(m.2Q){q(m.4k&&m.2Q.16==\'2B\')m.2Q.z.18.E.45=m.4k;u 3a=m.2Q.3a;q(!3a&&!m.80&&!/(3c|3u)/.1b(m.2Q.16)){z.2c()}I q(3a||(!3a&&m.cM)){m.2Q.z.5j(\'1q\')}q(3a)m.5m(z);m.80=1g;m.2Q=G}I q(/P-2B-7B/.1b(B.Z)){B.E.45=m.4k}}C 1g},5L:A(e){q(!m.2Q)C K;q(!e)e=1J.2b;u a=m.2Q,z=a.z;a.5T=e.6j-a.9t;a.76=e.6k-a.9w;u 6v=1e.cL(1e.aI(a.5T,2)+1e.aI(a.76,2));q(!a.3a)a.3a=(a.16!=\'2B\'&&6v>0)||(6v>(m.cF||5));q(a.3a&&e.6j>5&&e.6k>5){q(a.16==\'3u\')z.3u(a);I{z.7e(a.T+a.5T,a.S+a.76);q(a.16==\'2B\')z.18.E.45=\'3c\'}}C 1g},8i:A(e){2g{q(!e)e=1J.2b;u 5p=/cE/i.1b(e.16);q(!e.2h)e.2h=e.6x;q(m.1A)e.7Z=5p?e.cz:e.cy;u z=m.2s(e.2h);q(!z.4C)C;q(!z||!e.7Z||m.2s(e.7Z,K)==z||m.2Q)C;M(u i=0;i<z.1r.R;i++)(A(){u o=m.$(\'1E\'+z.1r[i]);q(o&&o.6l){q(5p)m.V(o,{1c:\'1I\',1o:\'\'});m.1H(o,{1k:5p?o.1k:0},o.29)}})()}2i(e){}},21:A(B,2b,3h){q(B==19&&2b==\'4d\')m.2y(m.5y,3h);2g{B.21(2b,3h,1g)}2i(e){2g{B.8Y(\'5a\'+2b,3h);B.cx(\'5a\'+2b,3h)}2i(e){B[\'5a\'+2b]=3h}}},4o:A(B,2b,3h){2g{B.4o(2b,3h,1g)}2i(e){2g{B.8Y(\'5a\'+2b,3h)}2i(e){B[\'5a\'+2b]=G}}},5s:A(i){q(m.6X&&m.59[i]&&m.59[i]!=\'1G\'){u 1y=19.1a(\'1y\');1y.5W=A(){1y=G;m.5s(i+1)};1y.1K=m.59[i]}},9i:A(3i){q(3i&&1x 3i!=\'6d\')m.6E=3i;u 2k=m.6b();M(u i=0;i<2k.4f.R&&i<m.6E;i++){m.2y(m.59,m.7n(2k.4f[i]))}q(m.1C)2d m.5i(m.1C,A(){m.5s(0)});I m.5s(0);q(m.4J)u 4m=m.1a(\'1y\',{1K:m.4v+m.4J})},6U:A(){q(!m.2a){m.57();m.5e=m.1A&&m.3X<7;M(u x 2W m.68){q(1x m[x]!=\'1G\')m.17[x]=m[x];I q(1x m.17[x]==\'1G\'&&1x m.68[x]!=\'1G\')m.17[x]=m.68[x]}m.2a=m.1a(\'Y\',{Z:\'P-2a\'},{1m:\'2l\',T:0,S:0,L:\'2m%\',1z:m.4r,9R:\'9e\'},19.5r,K);m.1Z=m.1a(\'a\',{Z:\'P-1Z\',2j:m.17.95,2O:m.17.96,23:\'aH:;\'},{1m:\'2l\',S:\'-4F\',1k:m.98,1z:1},m.2a);m.85=m.1a(\'Y\',G,{1o:\'1s\'},m.2a);m.2G=m.1a(\'Y\',{Z:\'P-2G\'},{1c:(m.4x&&m.3X<9g)?\'1I\':\'1q\'},m.2a,1);1e.cC=A(t,b,c,d){C c*t/d+b};1e.8z=A(t,b,c,d){C c*(t/=d)*t+b};1e.7t=A(t,b,c,d){C-c*(t/=d)*(t-2)+b};m.9k=m.5e;m.9j=((1J.3o&&m.3X<9)||4V.cN==\'cR\'||(m.1A&&m.3X<5.5))}},4d:A(){q(m.79)C;m.79=K;M(u i=0;i<m.5y.R;i++)m.5y[i]()},7i:A(){u B,1h,58=[],4f=[],2K={},1Y;M(u i=0;i<m.72.R;i++){1h=19.2N(m.72[i]);M(u j=0;j<1h.R;j++){B=1h[j];1Y=m.5U(B);q(1Y){m.2y(58,B);q(1Y[0]==\'m.2C\')m.2y(4f,B);u g=m.4X(B,\'2w\')||\'1s\';q(!2K[g])2K[g]=[];m.2y(2K[g],B)}}}m.42={58:58,2K:2K,4f:4f};C m.42},6b:A(){C m.42||m.7i()},2c:A(B){u z=m.2s(B);q(z)z.2c();C 1g}};m.1F=A(2A,1i,1n){k.1i=1i;k.2A=2A;k.1n=1n;q(!1i.8J)1i.8J={}};m.1F.5g={7z:A(){(m.1F.3k[k.1n]||m.1F.3k.8x)(k);q(k.1i.3k)k.1i.3k.8y(k.2A,k.3V,k)},3v:A(8I,1N,3W){k.7s=(2d 8O()).8N();k.49=8I;k.3E=1N;k.3W=3W;k.3V=k.49;k.D=k.7v=0;u 4l=k;A t(5R){C 4l.3k(5R)}t.2A=k.2A;q(t()&&m.3C.2y(t)==1){m.8Q=cV(A(){u 3C=m.3C;M(u i=0;i<3C.R;i++)q(!3C[i]())3C.cQ(i--,1);q(!3C.R){cP(m.8Q)}},13)}},3k:A(5R){u t=(2d 8O()).8N();q(5R||t>=k.1i.3F+k.7s){k.3V=k.3E;k.D=k.7v=1;k.7z();k.1i.5Q[k.1n]=K;u 7u=K;M(u i 2W k.1i.5Q)q(k.1i.5Q[i]!==K)7u=1g;q(7u){q(k.1i.5F)k.1i.5F.8y(k.2A)}C 1g}I{u n=t-k.7s;k.7v=n/k.1i.3F;k.D=k.1i.2t(n,0,1,k.1i.3F);k.3V=k.49+((k.3E-k.49)*k.D);k.7z()}C K}};m.3e(m.1F,{3k:{1k:A(1F){m.V(1F.2A,{1k:1F.3V})},8x:A(1F){q(1F.2A.E&&1F.2A.E[1F.1n]!=G)1F.2A.E[1F.1n]=1F.3V+1F.3W;I 1F.2A[1F.1n]=1F.3V}}});m.5i=A(1C,4b){k.4b=4b;k.1C=1C;u v=m.3X,3B;k.6F=m.1A&&v>=5.5&&v<7;q(!1C){q(4b)4b();C}m.6U();k.1U=m.1a(\'1U\',{cT:0},{1c:\'1q\',1m:\'2l\',cv:\'bZ\',L:0},m.2a,K);u 47=m.1a(\'47\',G,G,k.1U,1);k.2f=[];M(u i=0;i<=8;i++){q(i%3==0)3B=m.1a(\'3B\',G,{W:\'2I\'},47,K);k.2f[i]=m.1a(\'2f\',G,G,3B,K);u E=i!=4?{bY:0,bX:0}:{1m:\'7H\'};m.V(k.2f[i],E)}k.2f[4].Z=1C+\' P-X\';k.8D()};m.5i.5g={8D:A(){u 1K=m.4v+(m.bW||"c0/")+k.1C+".8B";u 8R=m.4x?m.2a:G;k.3b=m.1a(\'1y\',G,{1m:\'2l\',S:\'-4F\'},8R,K);u 6W=k;k.3b.5W=A(){6W.8S()};k.3b.1K=1K},8S:A(){u o=k.1j=k.3b.L/4,D=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1p={W:(2*o)+\'F\',L:(2*o)+\'F\'};M(u i=0;i<=8;i++){q(D[i]){q(k.6F){u w=(i==1||i==7)?\'2m%\':k.3b.L+\'F\';u Y=m.1a(\'Y\',G,{L:\'2m%\',W:\'2m%\',1m:\'7H\',2J:\'1q\'},k.2f[i],K);m.1a(\'Y\',G,{4Z:"c1:c5.c4.c3(c2=bV, 1K=\'"+k.3b.1K+"\')",1m:\'2l\',L:w,W:k.3b.W+\'F\',T:(D[i][0]*o)+\'F\',S:(D[i][1]*o)+\'F\'},Y,K)}I{m.V(k.2f[i],{6R:\'6p(\'+k.3b.1K+\') \'+(D[i][0]*o)+\'F \'+(D[i][1]*o)+\'F\'})}q(1J.3o&&(i==3||i==5))m.1a(\'Y\',G,1p,k.2f[i],K);m.V(k.2f[i],1p)}}k.3b=G;q(m.44[k.1C])m.44[k.1C].5h();m.44[k.1C]=k;q(k.4b)k.4b()},3S:A(D,1j,9c,29,2t){u z=k.z,4z=z.N.E,1j=1j||0,D=D||{x:z.x.D+1j,y:z.y.D+1j,w:z.x.J(\'1B\')-2*1j,h:z.y.J(\'1B\')-2*1j};q(9c)k.1U.E.1c=(D.h>=4*k.1j)?\'1I\':\'1q\';m.V(k.1U,{T:(D.x-k.1j)+\'F\',S:(D.y-k.1j)+\'F\',L:(D.w+2*k.1j)+\'F\'});D.w-=2*k.1j;D.h-=2*k.1j;m.V(k.2f[4],{L:D.w>=0?D.w+\'F\':0,W:D.h>=0?D.h+\'F\':0});q(k.6F)k.2f[3].E.W=k.2f[5].E.W=k.2f[4].E.W},5h:A(94){q(94)k.1U.E.1c=\'1q\';I m.3Q(k.1U)}};m.5X=A(z,1p){k.z=z;k.1p=1p;k.3d=1p==\'x\'?\'ab\':\'aj\';k.3H=k.3d.5V();k.4S=1p==\'x\'?\'ai\':\'ac\';k.5Y=k.4S.5V();k.6y=1p==\'x\'?\'a8\':\'a9\';k.8V=k.6y.5V();k.14=k.2T=0};m.5X.5g={J:A(O){93(O){1L\'6Q\':C k.1R+k.3l+(k.t-m.1Z[\'1j\'+k.3d])/2;1L\'6L\':C k.D+k.cb+k.14+(k.H-m.1Z[\'1j\'+k.3d])/2;1L\'1B\':C k.H+2*k.cb+k.14+k.2T;1L\'4p\':C k.3U-k.2S-k.3Y;1L\'7O\':C k.J(\'4p\')-2*k.cb-k.14-k.2T;1L\'4K\':C k.D-(k.z.X?k.z.X.1j:0);1L\'8a\':C k.J(\'1B\')+(k.z.X?2*k.z.X.1j:0);1L\'1O\':C k.1D?1e.4s((k.H-k.1D)/2):0}},7Q:A(){k.cb=(k.z.18[\'1j\'+k.3d]-k.t)/2;k.3Y=m[\'7b\'+k.6y]},83:A(){k.t=k.z.B[k.3H]?2U(k.z.B[k.3H]):k.z.B[\'1j\'+k.3d];k.1R=k.z.1R[k.1p];k.3l=(k.z.B[\'1j\'+k.3d]-k.t)/2;q(k.1R<1){k.1R=(m.3I[k.3H]/2)+m.3I[\'1M\'+k.4S]}},6J:A(){u z=k.z;k.2x=\'2I\';q(z.6z==\'3P\')k.2x=\'3P\';I q(2d 5P(k.5Y).1b(z.3y))k.2x=G;I q(2d 5P(k.8V).1b(z.3y))k.2x=\'2P\';k.D=k.1R-k.cb+k.3l;k.H=1e.3G(k.1d,z[\'2P\'+k.3d]||k.1d);k.2o=z.5c?1e.3G(z[\'3G\'+k.3d],k.1d):k.1d;q(z.3t&&z.36){k.H=z[k.3H];k.1D=k.1d}q(k.1p==\'x\'&&m.4U)k.2o=z.4E;k.2h=z[\'2h\'+k.1p.8U()];k.2S=m[\'7b\'+k.4S];k.1M=m.3I[\'1M\'+k.4S];k.3U=m.3I[k.3H]},7E:A(i){u z=k.z;q(z.3t&&(z.36||m.4U)){k.1D=i;k.H=1e.2P(k.H,k.1D);z.18.E[k.5Y]=k.J(\'1O\')+\'F\'}I k.H=i;z.18.E[k.3H]=i+\'F\';z.N.E[k.3H]=k.J(\'1B\')+\'F\';q(z.X)z.X.3S();q(k.1p==\'x\'&&z.1l)z.4h(K);q(k.1p==\'x\'&&z.1f&&z.3t){q(i==k.1d)z.1f.4y(\'1d-2C\');I z.1f.3T(\'1d-2C\')}},7D:A(i){k.D=i;k.z.N.E[k.5Y]=i+\'F\';q(k.z.X)k.z.X.3S()}};m.51=A(a,2R,3v,35){q(19.bM&&m.1A&&!m.79){m.21(19,\'4d\',A(){2d m.51(a,2R,3v,35)});C}k.a=a;k.3v=3v;k.35=35||\'2B\';k.3t=!k.bL;m.6X=1g;k.1r=[];k.11=m.11;m.11=G;m.6U();u O=k.O=m.U.R;M(u i=0;i<m.6V.R;i++){u 30=m.6V[i];k[30]=2R&&1x 2R[30]!=\'1G\'?2R[30]:m[30]}q(!k.1K)k.1K=a.23;u B=(2R&&2R.7r)?m.$(2R.7r):a;B=k.90=B.2N(\'1y\')[0]||B;k.65=B.24||a.24;M(u i=0;i<m.U.R;i++){q(m.U[i]&&m.U[i].a==a&&!(k.11&&k.2Y[1]==\'3O\')){m.U[i].4a();C 1g}}q(!m.bJ)M(u i=0;i<m.U.R;i++){q(m.U[i]&&m.U[i].90!=B&&!m.U[i].5O){m.U[i].5t()}}m.U[O]=k;q(!m.8Z&&!m.1S){q(m.U[O-1])m.U[O-1].2c();q(1x m.3r!=\'1G\'&&m.U[m.3r])m.U[m.3r].2c()}k.B=B;k.1R=m.5K(B);m.57();u x=k.x=2d m.5X(k,\'x\');x.83();u y=k.y=2d m.5X(k,\'y\');y.83();k.N=m.1a(\'Y\',{24:\'P-N-\'+k.O,Z:\'P-N \'+k.7y},{1c:\'1q\',1m:\'2l\',1z:m.4r+=2},G,K);k.N.bK=k.N.bO=m.8i;q(k.35==\'2B\'&&k.3w==2)k.3w=0;q(!k.1C||(k.11&&k.3t&&k.2Y[1]==\'3O\')){k[k.35+\'6Z\']()}I q(m.44[k.1C]){k.7g();k[k.35+\'6Z\']()}I{k.7R();u z=k;2d m.5i(k.1C,A(){z.7g();z[z.35+\'6Z\']()})}C K};m.51.5g={7c:A(e){1J.bP.23=k.1K},7g:A(){u X=k.X=m.44[k.1C];X.z=k;X.1U.E.1z=k.N.E.1z-1;m.44[k.1C]=G},7R:A(){q(k.5O||k.1Z)C;k.1Z=m.1Z;u z=k;k.1Z.2E=A(){z.5t()};u z=k,l=k.x.J(\'6Q\')+\'F\',t=k.y.J(\'6Q\')+\'F\';q(!2q&&k.11&&k.2Y[1]==\'3O\')u 2q=k.11;q(2q){l=2q.x.J(\'6L\')+\'F\';t=2q.y.J(\'6L\')+\'F\';k.1Z.E.1z=m.4r++}4i(A(){q(z.1Z)m.V(z.1Z,{T:l,S:t,1z:m.4r++})},2m)},bT:A(){u z=k;u 1y=19.1a(\'1y\');k.18=1y;1y.5W=A(){q(m.U[z.O])z.8n()};q(m.bS)1y.bR=A(){C 1g};1y.Z=\'P-2B\';m.V(1y,{1c:\'1q\',1o:\'43\',1m:\'2l\',8o:\'4F\',1z:3});1y.2j=m.17.7p;q(m.4x)m.2a.2F(1y);q(m.1A&&m.bQ)1y.1K=G;1y.1K=k.1K;k.7R()},8n:A(){2g{q(!k.18)C;k.18.5W=G;q(k.5O)C;I k.5O=K;u x=k.x,y=k.y;q(k.1Z){m.V(k.1Z,{S:\'-4F\'});k.1Z=G}x.1d=k.18.L;y.1d=k.18.W;m.V(k.18,{L:x.t+\'F\',W:y.t+\'F\'});k.N.2F(k.18);m.2a.2F(k.N);x.7Q();y.7Q();m.V(k.N,{T:(x.1R+x.3l-x.cb)+\'F\',S:(y.1R+x.3l-y.cb)+\'F\'});k.az();k.9S();u 2v=x.1d/y.1d;x.6J();k.2x(x);y.6J();k.2x(y);q(k.1l)k.4h(0,1);q(k.5c){k.ar(2v);u 1u=k.1f;q(1u&&k.11&&1u.2p&&1u.8m){u D=1u.aE.1m||\'\',p;M(u 1p 2W m.84)M(u i=0;i<5;i++){p=k[1p];q(D.26(m.84[1p][i])){p.D=k.11[1p].D+(k.11[1p].14-p.14)+(k.11[1p].H-p.H)*[0,0,.5,1,1][i];q(1u.8m==\'co\'){q(p.D+p.H+p.14+p.2T>p.1M+p.3U-p.3Y)p.D=p.1M+p.3U-p.H-p.2S-p.3Y-p.14-p.2T;q(p.D<p.1M+p.2S)p.D=p.1M+p.2S}}}}q(k.3t&&k.x.1d>(k.x.1D||k.x.H)){k.aG();q(k.1r.R==1)k.4h()}}k.av()}2i(e){k.7c(e)}},2x:A(p,4A){u 3L,2q=p.2h,1p=p==k.x?\'x\':\'y\';q(2q&&2q.26(/ /)){3L=2q.cn(\' \');2q=3L[0]}q(2q&&m.$(2q)){p.D=m.5K(m.$(2q))[1p];q(3L&&3L[1]&&3L[1].26(/^[-]?[0-9]+F$/))p.D+=2U(3L[1]);q(p.H<p.2o)p.H=p.2o}I q(p.2x==\'2I\'||p.2x==\'3P\'){u 7J=1g;u 4q=p.z.5c;q(p.2x==\'3P\')p.D=1e.4s(p.1M+(p.3U+p.2S-p.3Y-p.J(\'1B\'))/2);I p.D=1e.4s(p.D-((p.J(\'1B\')-p.t)/2));q(p.D<p.1M+p.2S){p.D=p.1M+p.2S;7J=K}q(!4A&&p.H<p.2o){p.H=p.2o;4q=1g}q(p.D+p.J(\'1B\')>p.1M+p.3U-p.3Y){q(!4A&&7J&&4q){p.H=p.J(1p==\'y\'?\'4p\':\'7O\')}I q(p.J(\'1B\')<p.J(\'4p\')){p.D=p.1M+p.3U-p.3Y-p.J(\'1B\')}I{p.D=p.1M+p.2S;q(!4A&&4q)p.H=p.J(1p==\'y\'?\'4p\':\'7O\')}}q(!4A&&p.H<p.2o){p.H=p.2o;4q=1g}}I q(p.2x==\'2P\'){p.D=1e.cp(p.D-p.H+p.t)}q(p.D<p.2S){u aq=p.D;p.D=p.2S;q(4q&&!4A)p.H=p.H-(p.D-aq)}},ar:A(2v){u x=k.x,y=k.y,5E=1g,2H=1e.3G(x.1d,x.H),3x=1e.3G(y.1d,y.H),36=(k.36||m.4U);q(2H/3x>2v){ 2H=3x*2v;q(2H<x.2o){2H=x.2o;3x=2H/2v}5E=K}I q(2H/3x<2v){ 3x=2H/2v;5E=K}q(m.4U&&x.1d<x.2o){x.1D=x.1d;y.H=y.1D=y.1d}I q(k.36){x.1D=2H;y.1D=3x}I{x.H=2H;y.H=3x}k.aw(36?G:2v);q(36&&y.H<y.1D){y.1D=y.H;x.1D=y.H*2v}q(5E||36){x.D=x.1R-x.cb+x.3l;x.2o=x.H;k.2x(x,K);y.D=y.1R-y.cb+y.3l;y.2o=y.H;k.2x(y,K);q(k.1l)k.4h()}},aw:A(2v){u x=k.x,y=k.y;q(k.1l){4g(y.H>k.4M&&x.H>k.4E&&y.J(\'1B\')>y.J(\'4p\')){y.H-=10;q(2v)x.H=y.H*2v;k.4h(0,1)}}},av:A(){u x=k.x,y=k.y;k.5j(\'1q\');q(k.1f&&k.1f.2r)k.1f.2r.4n();k.7q(1,{N:{L:x.J(\'1B\'),W:y.J(\'1B\'),T:x.D,S:y.D},18:{T:x.14+x.J(\'1O\'),S:y.14+y.J(\'1O\'),L:x.1D||x.H,W:y.1D||y.H}},m.6P)},7q:A(1w,1N,29){u 4O=k.2Y,6K=1w?(k.11?k.11.a:G):m.1S,t=(4O[1]&&6K&&m.4X(6K,\'2Y\')[1]==4O[1])?4O[1]:4O[0];q(k[t]&&t!=\'2C\'){k[t](1w,1N);C}q(k.X&&!k.3w){q(1w)k.X.3S();I k.X.5h()}q(!1w)k.6G();u z=k,x=z.x,y=z.y,2t=k.2t;q(!1w)2t=k.at||2t;u aa=1w?A(){q(z.X)z.X.1U.E.1c="1I";4i(A(){z.5D()},50)}:A(){z.5f()};q(1w)m.V(k.N,{L:x.t+\'F\',W:y.t+\'F\'});q(k.ak){m.V(k.N,{1k:1w?0:1});m.3e(1N.N,{1k:1w})}m.1H(k.N,1N.N,{3F:29,2t:2t,3k:A(3n,2Z){q(z.X&&z.3w&&2Z.1n==\'S\'){u 4W=1w?2Z.D:1-2Z.D;u D={w:x.t+(x.J(\'1B\')-x.t)*4W,h:y.t+(y.J(\'1B\')-y.t)*4W,x:x.1R+(x.D-x.1R)*4W,y:y.1R+(y.D-y.1R)*4W};z.X.3S(D,0,1)}}});m.1H(k.18,1N.18,29,2t,aa);q(1w){k.N.E.1c=\'1I\';k.18.E.1c=\'1I\';k.a.Z+=\' P-3Z-3y\'}},5l:A(1w,1N){k.3w=1g;u z=k,t=1w?m.6P:0;q(1w){m.1H(k.N,1N.N,0);m.V(k.N,{1k:0,1c:\'1I\'});m.1H(k.18,1N.18,0);k.18.E.1c=\'1I\';m.1H(k.N,{1k:1},t,G,A(){z.5D()})}q(k.X){k.X.1U.E.1z=k.N.E.1z;u 5M=1w||-1,1j=k.X.1j,6D=1w?3:1j,6w=1w?1j:3;M(u i=6D;5M*i<=5M*6w;i+=5M,t+=25){(A(){u o=1w?6w-i:6D-i;4i(A(){z.X.3S(0,o,1)},t)})()}}q(1w){}I{4i(A(){q(z.X)z.X.5h(z.ct);z.6G();m.1H(z.N,{1k:0},m.8f,G,A(){z.5f()})},t)}},3O:A(1w,1N){q(!1w)C;u z=k,29=m.a7,11=z.11,x=z.x,y=z.y,1X=11.x,1T=11.y,1l=z.1l,N=k.N,18=k.18;m.4o(19,\'6c\',m.5L);k.X=11.X;q(k.X)k.X.z=z;11.X=G;11.N.E.2J=\'1q\';m.V(N,{T:1X.D+\'F\',S:1T.D+\'F\',L:1X.J(\'1B\')+\'F\',W:1T.J(\'1B\')+\'F\'});m.V(18,{1o:\'1s\',L:(x.1D||x.H)+\'F\',W:(y.1D||y.H)+\'F\',T:(x.14+x.J(\'1O\'))+\'F\',S:(y.14+y.J(\'1O\'))+\'F\'});u 3K=m.1a(\'Y\',{Z:\'P-2B\'},{1m:\'2l\',1z:4,2J:\'1q\',1o:\'1s\',T:(1X.14+1X.J(\'1O\'))+\'F\',S:(1T.14+1T.J(\'1O\'))+\'F\',L:(1X.1D||1X.H)+\'F\',W:(1T.1D||1T.H)+\'F\'});M(u i=0;i<k.1r.R;i++){u o=m.$(\'1E\'+k.1r[i]);q(o.E.1c==\'1q\')o.E.1o=\'1s\'}q(1l)m.V(1l,{2J:\'1I\',T:(1X.14+1X.cb)+\'F\',S:(1T.14+1T.cb)+\'F\',L:1X.H+\'F\',W:1T.H+\'F\'});u 78={74:11,77:k};M(u n 2W 78){k[n]=78[n].18.5G(1);m.V(k[n],{1m:\'2l\',ad:0,1c:\'1I\'});3K.2F(k[n])}m.V(k.74,{T:0,S:0});m.V(k.77,{1o:\'43\',1k:0,T:(x.D-1X.D+x.14-1X.14+x.J(\'1O\')-1X.J(\'1O\'))+\'F\',S:(y.D-1T.D+y.14-1T.14+y.J(\'1O\')-1T.J(\'1O\'))+\'F\'});N.2F(3K);q(1l){1l.Z=\'\';N.2F(1l)}3K.E.1o=\'\';11.18.E.1o=\'1s\';q(m.4x){u 26=4V.5S.26(/ah\\/([0-9]{3})/);q(26&&2U(26[1])<9g)N.E.1c=\'1I\'}A 3E(){N.E.1c=18.E.1c=\'1I\';18.E.1o=\'43\';3K.E.1o=\'1s\';z.a.Z+=\' P-3Z-3y\';z.5D();11.5f();z.11=G}m.1H(11.N,{T:x.D,S:y.D,L:x.J(\'1B\'),W:y.J(\'1B\')},29);m.1H(3K,{L:x.1D||x.H,W:y.1D||y.H,T:x.14+x.J(\'1O\'),S:y.14+y.J(\'1O\')},29);m.1H(k.74,{T:(1X.D-x.D+1X.14-x.14+1X.J(\'1O\')-x.J(\'1O\')),S:(1T.D-y.D+1T.14-y.14+1T.J(\'1O\')-y.J(\'1O\'))},29);m.1H(k.77,{1k:1,T:0,S:0},29);q(1l)m.1H(1l,{T:x.14+x.cb,S:y.14+y.cb,L:x.H,W:y.H},29);q(k.X)u aP=A(3n,2Z){q(2Z.1n==\'S\'){u 4z=z.N.E;u D={w:2U(4z.L),h:2U(4z.W),x:2U(4z.T),y:2U(4z.S)};z.X.3S(D)}};m.1H(N,1N.N,{3F:29,5F:3E,3k:aP});3K.E.1c=\'1I\'},9N:A(o,B){q(!k.11)C 1g;M(u i=0;i<k.11.1r.R;i++){u 5H=m.$(\'1E\'+k.11.1r[i]);q(5H&&5H.1E==o.1E){k.7x();5H.cr=k.O;m.2y(k.1r,k.11.1r[i]);C K}}C 1g},5D:A(){k.4C=K;k.4a();q(k.3R)m.1p(k);q(m.1S&&m.1S==k.a)m.1S=G;k.aK();u p=m.3I,7l=m.6i.x+p.5Z,7m=m.6i.y+p.5q;k.6I=k.x.D<7l&&7l<k.x.D+k.x.J(\'1B\')&&k.y.D<7m&&7m<k.y.D+k.y.J(\'1B\');q(k.1l)k.9h()},aK:A(){u O=k.O;u 1C=k.1C;2d m.5i(1C,A(){2g{m.U[O].aC()}2i(e){}})},aC:A(){u 1v=k.6N(1);q(1v&&1v.2E.aB().26(/m\\.2C/))u 1y=m.1a(\'1y\',{1K:m.7n(1v)})},6N:A(1P){u 6B=k.6e(),as=m.42.2K[k.2w||\'1s\'];q(!as[6B+1P]&&k.1f&&k.1f.aN){q(1P==1)C as[0];I q(1P==-1)C as[as.R-1]}C as[6B+1P]||G},6e:A(){u 2k=m.6b().2K[k.2w||\'1s\'];q(2k)M(u i=0;i<2k.R;i++){q(2k[i]==k.a)C i}C G},a4:A(){q(k[k.4N]){u 2k=m.42.2K[k.2w||\'1s\'];q(2k){u s=m.17.3i.2e(\'%1\',k.6e()+1).2e(\'%2\',2k.R);k[k.4N].2O=\'<Y 2n="P-3i">\'+s+\'</Y>\'+k[k.4N].2O}}},az:A(){q(!k.11){M(u i=0;i<m.4P.R;i++){u 1u=m.4P[i],2D=1u.2w;q(1x 2D==\'1G\'||2D===G||2D===k.2w)k.1f=2d m.7a(k.O,1u)}}I{k.1f=k.11.1f}u 1u=k.1f;q(!1u)C;u O=1u.3J=k.O;1u.aM();1u.4y(\'1d-2C\');q(1u.2p){u o=1u.aE||{};o.48=1u.2p;o.1E=\'2p\';k.46(o)}q(1u.2r)1u.2r.62(k);q(!k.11&&k.3z)1u.3f(K);q(1u.3z){1u.3z=4i(A(){m.1v(O)},(1u.cc||ca))}},5t:A(){m.3Q(k.N);m.U[k.O]=G;q(m.1S==k.a)m.1S=G;m.7h(k.O);q(k.1Z)m.1Z.E.T=\'-4F\'},9U:A(){q(k.4G)C;k.4G=m.1a(\'a\',{23:m.aF,2h:m.ax,Z:\'P-4G\',2O:m.17.a5,2j:m.17.a6});k.46({48:k.4G,1m:k.9x||\'S T\',1E:\'4G\'})},9T:A(6M,9s){M(u i=0;i<6M.R;i++){u 16=6M[i],s=G;q(!k[16+\'5v\']&&k.65)k[16+\'5v\']=16+\'-M-\'+k.65;q(k[16+\'5v\'])k[16]=m.8c(k[16+\'5v\']);q(!k[16]&&!k[16+\'6H\']&&k[16+\'9v\'])2g{s=c8(k[16+\'9v\'])}2i(e){}q(!k[16]&&k[16+\'6H\']){s=k[16+\'6H\']}q(!k[16]&&!s){u 1v=k.a.9D;4g(1v&&!m.5U(1v)){q((2d 5P(\'P-\'+16)).1b(1v.Z||G)){k[16]=1v.5G(1);5b}1v=1v.9D}}q(!k[16]&&!s&&k.4N==16)s=\'\\n\';q(!k[16]&&s)k[16]=m.1a(\'Y\',{Z:\'P-\'+16,2O:s});q(9s&&k[16]){u o={1m:(16==\'6a\')?\'4I\':\'63\'};M(u x 2W k[16+\'9l\'])o[x]=k[16+\'9l\'][x];o.48=k[16];k.46(o)}}},5j:A(1c){q(m.9k)k.60(\'cd\',1c);q(m.9j)k.60(\'ce\',1c);q(m.5N)k.60(\'*\',1c)},60:A(4t,1c){u 1h=19.2N(4t);u 1n=4t==\'*\'?\'2J\':\'1c\';M(u i=0;i<1h.R;i++){q(1n==\'1c\'||(19.7V.9m(1h[i],"").9n(\'2J\')==\'2I\'||1h[i].9r(\'1q-by\')!=G)){u 2z=1h[i].9r(\'1q-by\');q(1c==\'1I\'&&2z){2z=2z.2e(\'[\'+k.O+\']\',\'\');1h[i].4L(\'1q-by\',2z);q(!2z)1h[i].E[1n]=1h[i].7T}I q(1c==\'1q\'){u 3m=m.5K(1h[i]);3m.w=1h[i].1V;3m.h=1h[i].31;q(!k.3R){u 9p=(3m.x+3m.w<k.x.J(\'4K\')||3m.x>k.x.J(\'4K\')+k.x.J(\'8a\'));u 9o=(3m.y+3m.h<k.y.J(\'4K\')||3m.y>k.y.J(\'4K\')+k.y.J(\'8a\'))}u 5I=m.8b(1h[i]);q(!9p&&!9o&&5I!=k.O){q(!2z){1h[i].4L(\'1q-by\',\'[\'+k.O+\']\');1h[i].7T=1h[i].E[1n];1h[i].E[1n]=\'1q\'}I q(2z.9G(\'[\'+k.O+\']\')==-1){1h[i].4L(\'1q-by\',2z+\'[\'+k.O+\']\')}}I q((2z==\'[\'+k.O+\']\'||m.3r==5I)&&5I!=k.O){1h[i].4L(\'1q-by\',\'\');1h[i].E[1n]=1h[i].7T||\'\'}I q(2z&&2z.9G(\'[\'+k.O+\']\')>-1){1h[i].4L(\'1q-by\',2z.2e(\'[\'+k.O+\']\',\'\'))}}}}},4a:A(){k.N.E.1z=m.4r+=2;M(u i=0;i<m.U.R;i++){q(m.U[i]&&i==m.3r){u 4D=m.U[i];4D.18.Z+=\' P-\'+4D.35+\'-7B\';4D.18.E.45=m.1A?\'9Z\':\'6r\';4D.18.2j=m.17.9W}}q(k.X)k.X.1U.E.1z=k.N.E.1z-1;k.18.Z=\'P-\'+k.35;k.18.2j=m.17.7p;q(m.4J){m.4k=1J.3o?\'6r\':\'6p(\'+m.4v+m.4J+\'), 6r\';q(m.1A&&m.3X<6)m.4k=\'9Z\';k.18.E.45=m.4k}m.3r=k.O;m.21(19,1J.3o?\'7G\':\'7K\',m.5B)},7e:A(x,y){k.x.7D(x);k.y.7D(y)},3u:A(e){u w,h,r=e.L/e.W;w=1e.2P(e.L+e.5T,1e.3G(k.4E,k.x.1d));q(k.3t&&1e.ch(w-k.x.1d)<12)w=k.x.1d;h=w/r;q(h<1e.3G(k.4M,k.y.1d)){h=1e.3G(k.4M,k.y.1d);q(k.3t)w=h*r}k.6T(w,h)},6T:A(w,h){k.y.7E(h);k.x.7E(w)},2c:A(){q(k.7I||!k.4C)C;q(k.2Y[1]==\'3O\'&&m.1S){m.2s(m.1S).5t();m.1S=G}k.7I=K;q(k.1f&&!m.1S)k.1f.2L();m.4o(19,1J.3o?\'7G\':\'7K\',m.5B);2g{k.18.E.45=\'cg\';k.7q(0,{N:{L:k.x.t,W:k.y.t,T:k.x.1R-k.x.cb+k.x.3l,S:k.y.1R-k.y.cb+k.y.3l},18:{T:0,S:0,L:k.x.t,W:k.y.t}},m.8f)}2i(e){k.5f()}},46:A(o){u B=o.48,4u=(o.8T==\'2G\'&&!/64$/.1b(o.1m));q(1x B==\'82\')B=m.8c(B);q(o.5x)B=m.1a(\'Y\',{2O:o.5x});q(!B||1x B==\'82\')C;B.E.1o=\'43\';o.1E=o.1E||o.48;q(k.2Y[1]==\'3O\'&&k.9N(o,B))C;k.7x();u L=o.L&&/^[0-9]+(F|%)$/.1b(o.L)?o.L:\'2I\';q(/^(T|2M)64$/.1b(o.1m)&&!/^[0-9]+F$/.1b(o.L))L=\'cf\';u Q=m.1a(\'Y\',{24:\'1E\'+m.5J++,1E:o.1E},{1m:\'2l\',1c:\'1q\',L:L,9R:m.17.9Q||\'\',1k:0},4u?m.2G:k.1l,K);q(4u)Q.6s=k.O;Q.2F(B);m.3e(Q,{1k:1,9O:0,9P:0,29:(o.5l===0||o.5l===1g||(o.5l==2&&m.1A))?0:4H});m.3e(Q,o);q(k.9X){k.56(Q);q(!Q.6l||k.6I)m.1H(Q,{1k:Q.1k},Q.29)}m.2y(k.1r,m.5J-1)},56:A(Q){u p=Q.1m||\'7M 3P\',4u=(Q.8T==\'2G\'),6q=Q.9O,6n=Q.9P;q(4u){m.2G.E.1o=\'43\';Q.6s=k.O;q(Q.1V>Q.1Q.1V)Q.E.L=\'2m%\'}I q(Q.1Q!=k.1l)k.1l.2F(Q);q(/T$/.1b(p))Q.E.T=6q+\'F\';q(/3P$/.1b(p))m.V(Q,{T:\'50%\',5k:(6q-1e.4s(Q.1V/2))+\'F\'});q(/2M$/.1b(p))Q.E.2M=-6q+\'F\';q(/^9M$/.1b(p)){m.V(Q,{2M:\'2m%\',9I:k.x.cb+\'F\',S:-k.y.cb+\'F\',4c:-k.y.cb+\'F\',2J:\'2I\'});k.x.14=Q.1V}I q(/^9H$/.1b(p)){m.V(Q,{T:\'2m%\',5k:k.x.cb+\'F\',S:-k.y.cb+\'F\',4c:-k.y.cb+\'F\',2J:\'2I\'});k.x.2T=Q.1V}u 7w=Q.1Q.31;Q.E.W=\'2I\';q(4u&&Q.31>7w)Q.E.W=m.5e?7w+\'F\':\'2m%\';q(/^S/.1b(p))Q.E.S=6n+\'F\';q(/^7M/.1b(p))m.V(Q,{S:\'50%\',7L:(6n-1e.4s(Q.31/2))+\'F\'});q(/^4c/.1b(p))Q.E.4c=-6n+\'F\';q(/^4I$/.1b(p)){m.V(Q,{T:(-k.x.14-k.x.cb)+\'F\',2M:(-k.x.2T-k.x.cb)+\'F\',4c:\'2m%\',9J:k.y.cb+\'F\',L:\'2I\'});k.y.14=Q.31}I q(/^63$/.1b(p)){m.V(Q,{1m:\'7H\',T:(-k.x.14-k.x.cb)+\'F\',2M:(-k.x.2T-k.x.cb)+\'F\',S:\'2m%\',7L:k.y.cb+\'F\',L:\'2I\'});k.y.2T=Q.31;Q.E.1m=\'2l\'}},9S:A(){k.9T([\'6a\',\'ci\'],K);k.a4();q(k.6a&&k.7N)k.6a.Z+=\' P-3c\';q(m.a0)k.9U();M(u i=0;i<m.1r.R;i++){u o=m.1r[i],66=o.7r,2D=o.2w;q((!66&&!2D)||(66&&66==k.65)||(2D&&2D===k.2w)){k.46(o)}}u 61=[];M(u i=0;i<k.1r.R;i++){u o=m.$(\'1E\'+k.1r[i]);q(/64$/.1b(o.1m))k.56(o);I m.2y(61,o)}M(u i=0;i<61.R;i++)k.56(61[i]);k.9X=K},7x:A(){q(!k.1l)k.1l=m.1a(\'Y\',{Z:k.7y},{1m:\'2l\',L:(k.x.H||(k.36?k.L:G)||k.x.1d)+\'F\',W:(k.y.H||k.y.1d)+\'F\',1c:\'1q\',2J:\'1q\',1z:m.1A?4:G},m.2a,K)},4h:A(7U,9F){u 1l=k.1l,x=k.x,y=k.y;m.V(1l,{L:x.H+\'F\',W:y.H+\'F\'});q(7U||9F){M(u i=0;i<k.1r.R;i++){u o=m.$(\'1E\'+k.1r[i]);u 8e=(m.5e||19.88==\'9q\');q(o&&/^(4I|63)$/.1b(o.1m)){q(8e){o.E.L=(1l.1V+2*x.cb+x.14+x.2T)+\'F\'}y[o.1m==\'4I\'?\'14\':\'2T\']=o.31}q(o&&8e&&/^(T|2M)64$/.1b(o.1m)){o.E.W=(1l.31+2*y.cb)+\'F\'}}}q(7U){m.V(k.18,{S:y.14+\'F\'});m.V(1l,{S:(y.14+y.cb)+\'F\'})}},9h:A(){u b=k.1l;b.Z=\'\';m.V(b,{S:(k.y.14+k.y.cb)+\'F\',T:(k.x.14+k.x.cb)+\'F\',2J:\'1I\'});q(m.4x)b.E.1c=\'1I\';k.N.2F(b);M(u i=0;i<k.1r.R;i++){u o=m.$(\'1E\'+k.1r[i]);o.E.1z=o.1E==\'2p\'?5:4;q(!o.6l||k.6I){o.E.1c=\'1I\';m.V(o,{1c:\'1I\',1o:\'\'});m.1H(o,{1k:o.1k},o.29)}}},6G:A(){q(!k.1r.R)C;M(u i=0;i<k.1r.R;i++){u o=m.$(\'1E\'+k.1r[i]);q(o.1Q==m.2G)m.3Q(o)}q(k.1f){u c=k.1f.2p;q(c&&m.2s(c)==k)c.1Q.c9(c)}m.3Q(k.1l)},aG:A(){q(k.1f&&k.1f.2p){k.1f.3T(\'1d-2C\');C}k.6m=m.1a(\'a\',{23:\'aH:m.U[\'+k.O+\'].6g();\',2j:m.17.6u,Z:\'P-1d-2C\'});k.46({48:k.6m,1m:m.aD,6l:K,1k:m.aA})},6g:A(){2g{q(k.6m)m.3Q(k.6m);k.4a();u 2H=k.x.H;k.6T(k.x.1d,k.y.1d);u 6h=k.x.D-(k.x.H-2H)/2;q(6h<m.5k)6h=m.5k;k.7e(6h,k.y.D);k.5j(\'1q\');m.5m(k)}2i(e){k.7c(e)}},5f:A(){k.a.Z=k.a.Z.2e(\'P-3Z-3y\',\'\');k.5j(\'1I\');q(k.X&&k.3w)k.X.5h();m.3Q(k.N);q(!m.2G.67.R)m.2G.E.1o=\'1s\';q(k.3R)m.7h(k.O);m.U[k.O]=G;m.aT()}};m.7a=A(3J,1i){q(m.cj!==1g)m.7i();k.3J=3J;M(u x 2W 1i)k[x]=1i[x];q(k.ck)k.aR();q(k.2r)k.2r=m.ae(k)};m.7a.5g={aR:A(){k.2p=m.1a(\'Y\',{2O:m.aS(m.aQ.2p)},G,m.2a);u 5d=[\'3f\',\'2L\',\'2V\',\'1v\',\'3c\',\'1d-2C\',\'2c\'];k.1t={};u 6W=k;M(u i=0;i<5d.R;i++){k.1t[5d[i]]=m.aL(k.2p,\'1W\',\'P-\'+5d[i]);k.3T(5d[i])}k.1t.2L.E.1o=\'1s\'},aM:A(){q(k.aN||!k.2p)C;u z=m.U[k.3J],4m=z.6e(),1Y=/6f$/;q(4m==0)k.4y(\'2V\');I q(1Y.1b(k.1t.2V.2N(\'a\')[0].Z))k.3T(\'2V\');q(4m+1==m.42.2K[z.2w||\'1s\'].R){k.4y(\'1v\');k.4y(\'3f\')}I q(1Y.1b(k.1t.1v.2N(\'a\')[0].Z)){k.3T(\'1v\');k.3T(\'3f\')}},3T:A(1t){q(!k.1t)C;u aO=k,a=k.1t[1t].2N(\'a\')[0],1Y=/6f$/;a.2E=A(){aO[1t]();C 1g};q(1Y.1b(a.Z))a.Z=a.Z.2e(1Y,\'\')},4y:A(1t){q(!k.1t)C;u a=k.1t[1t].2N(\'a\')[0];a.2E=A(){C 1g};q(!/6f$/.1b(a.Z))a.Z+=\' 6f\'},aJ:A(){q(k.3z)k.2L();I k.3f()},3f:A(ay){q(k.1t){k.1t.3f.E.1o=\'1s\';k.1t.2L.E.1o=\'\'}k.3z=K;q(!ay)m.1v(k.3J)},2L:A(){q(k.1t){k.1t.2L.E.1o=\'1s\';k.1t.3f.E.1o=\'\'}cs(k.3z);k.3z=G},2V:A(){k.2L();m.2V(k.1t.2V)},1v:A(){k.2L();m.1v(k.1t.1v)},3c:A(){},\'1d-2C\':A(){m.2s().6g()},2c:A(){m.2c(k.1t.2c)}};m.ae=A(1f){A 62(z){m.3e(1i||{},{48:41,1E:\'2r\'});q(m.5e)1i.5l=0;z.46(1i);m.V(41.1Q,{2J:\'1q\'})};A 1M(3g){4n(1G,1e.4s(3g*41[3j?\'1V\':\'31\']*0.7))};A 4n(i,7f){q(i===1G)M(u j=0;j<4R.R;j++){q(4R[j]==m.U[1f.3J].a){i=j;5b}}q(i===1G)C;u as=41.2N(\'a\'),3Z=as[i],3A=3Z.1Q,T=3j?\'ai\':\'ac\',2M=3j?\'a8\':\'a9\',L=3j?\'ab\':\'aj\',3N=\'1j\'+T,1V=\'1j\'+L,6o=Y.1Q.1Q[1V],69=6o-1U[1V],4Y=2U(1U.E[3j?\'T\':\'S\'])||0,2u=4Y,cu=20;q(7f!==1G){2u=4Y-7f;q(2u>0)2u=0;q(2u<69)2u=69}I{M(u j=0;j<as.R;j++)as[j].Z=\'\';3Z.Z=\'P-3Z-3y\';u 8d=i>0?as[i-1].1Q[3N]:3A[3N],7X=3A[3N]+3A[1V]+(as[i+1]?as[i+1].1Q[1V]:0);q(7X>6o-4Y)2u=6o-7X;I q(8d<-4Y)2u=-8d}u 89=3A[3N]+(3A[1V]-6t[1V])/2+2u;m.1H(1U,3j?{T:2u}:{S:2u},G,\'7t\');m.1H(6t,3j?{T:89}:{S:89},G,\'7t\');6Y.E.1o=2u<0?\'43\':\'1s\';7k.E.1o=(2u>69)?\'43\':\'1s\'};u 4R=m.42.2K[m.U[1f.3J].2w||\'1s\'],1i=1f.2r,4T=1i.4T||\'an\',71=(4T==\'cq\'),3D=71?[\'Y\',\'7P\',\'1W\',\'22\']:[\'1U\',\'47\',\'3B\',\'2f\'],3j=(4T==\'an\'),41=m.1a(\'Y\',{Z:\'P-2r P-2r-\'+4T,2O:\'<Y 2n="P-2r-cl">\'+\'<\'+3D[0]+\'><\'+3D[1]+\'></\'+3D[1]+\'></\'+3D[0]+\'></Y>\'+\'<Y 2n="P-1M-1w"><Y></Y></Y>\'+\'<Y 2n="P-1M-cm"><Y></Y></Y>\'+\'<Y 2n="P-6t"><Y></Y></Y>\'},{1o:\'1s\'},m.2a),4Q=41.67,Y=4Q[0],6Y=4Q[1],7k=4Q[2],6t=4Q[3],1U=Y.c7,47=41.2N(3D[1])[0],3B;M(u i=0;i<4R.R;i++){q(i==0||!3j)3B=m.1a(3D[2],G,G,47);(A(){u a=4R[i],3A=m.1a(3D[3],G,G,3B),c6=i;m.1a(\'a\',{23:a.23,2E:A(){m.2s(k).4a();C m.6S(a)},2O:m.9f?m.9f(a):a.2O},G,3A)})()}q(!71){6Y.2E=A(){1M(-1)};7k.2E=A(){1M(1)};m.21(47,19.bN!==1G?\'bI\':\'bU\',A(e){u 3g=0;e=e||1J.2b;q(e.8W){3g=e.8W/cw;q(m.3o)3g=-3g}I q(e.8u){3g=-e.8u/3}q(3g)1M(-3g*0.2);q(e.4B)e.4B();e.8v=1g})}C{62:62,4n:4n}};q(m.1A){(A(){2g{19.4w.cU(\'T\')}2i(e){4i(8w.cS,50);C}m.4d()})()}m.21(19,\'cW\',m.4d);m.21(1J,\'7W\',m.4d);m.68=m.17;u cX=m.51;m.21(1J,\'7W\',A(){q(m.6A){u 7d=\'.P 1y\',86=\'45: 6p(\'+m.4v+m.6A+\'), 6r !cD;\';u E=m.1a(\'E\',{16:\'cB/6C\'},G,19.2N(\'cA\')[0]);q(!m.1A){E.2F(19.cO(7d+" {"+86+"}"))}I{u 11=19.al[19.al.R-1];q(1x(11.9K)=="6d")11.9K(7d,86)}}});m.21(1J,\'3u\',A(){m.57();q(m.2G)M(u i=0;i<m.2G.67.R;i++){u 3s=m.2G.67[i],z=m.2s(3s);z.56(3s);q(3s.1E==\'2r\')z.1f.2r.4n()}});m.21(19,\'6c\',A(e){m.6i={x:e.6j,y:e.6k}});m.21(19,\'ag\',m.87);m.21(19,\'8K\',m.87);m.21(19,\'4d\',m.6b);m.21(1J,\'7W\',m.9i);',62,804,'||||||||||||||||||||this||hs||||if||||var|||||exp|function|el|return|pos|style|px|null|size|else|get|true|width|for|wrapper|key|highslide|overlay|length|top|left|expanders|setStyles|height|outline|div|className||last|||p1||type|lang|content|document|createElement|test|visibility|full|Math|slideshow|false|els|options|offset|opacity|overlayBox|position|prop|display|dim|hidden|overlays|none|btn|ss|next|up|typeof|img|zIndex|ie|wsize|outlineType|imgSize|hsId|fx|undefined|animate|visible|window|src|case|scroll|to|imgPad|op|parentNode|tpos|upcoming|lastY|table|offsetWidth|li|lastX|re|loading||addEventListener|span|href|id||match||dimmer|dur|container|event|close|new|replace|td|try|target|catch|title|arr|absolute|100|class|minSize|controls|tgt|thumbstrip|getExpander|easing|tblPos|ratio|slideshowGroup|justify|push|hiddenBy|elem|image|expand|sg|onclick|appendChild|viewport|xSize|auto|overflow|groups|pause|right|getElementsByTagName|innerHTML|max|dragArgs|params|marginMin|p2|parseInt|previous|in|opt|transitions|args|name|offsetHeight||||contentType|useBox||||hasDragged|graphic|move|ucwh|extend|play|delta|func|number|isX|step|tb|elPos|val|opera|iebody|styles|focusKey|node|isImage|resize|custom|outlineWhileAnimating|ySize|anchor|autoplay|cell|tr|timers|tree|end|duration|min|wh|page|expKey|fadeBox|tgtArr|clone|offsetLeft|crossfade|center|discardElement|dimmingOpacity|setPosition|enable|clientSize|now|unit|uaVersion|marginMax|active||dom|anchors|block|pendingOutlines|cursor|createOverlay|tbody|overlayId|start|focus|onLoad|bottom|ready|attribs|images|while|sizeOverlayBox|setTimeout|adj|styleRestoreCursor|self|cur|selectThumb|removeEventListener|fitsize|allowReduce|zIndexCounter|round|tagName|relToVP|graphicsDir|documentElement|safari|disable|stl|moveOnly|preventDefault|isExpanded|blurExp|minWidth|9999px|credits|250|above|restoreCursor|opos|setAttribute|minHeight|numberPosition|trans|slideshows|domCh|group|uclt|mode|padToMinWidth|navigator|fac|getParam|curTblPos|filter||Expander|owner|param|getParams|matches|positionOverlay|getPageSize|all|preloadTheseImages|on|break|allowSizeReduction|buttons|ieLt7|afterClose|prototype|destroy|Outline|doShowHide|marginLeft|fade|setDimmerSize|expOnly|innerHeight|over|scrollTop|body|preloadFullImage|cancelLoading|innerWidth|Id|topmostKey|html|onReady|pageWidth|pageHeight|keyHandler|previousOrNext|afterExpand|changed|complete|cloneNode|oDiv|wrapperKey|idCounter|getPosition|dragHandler|dir|geckoMac|onLoadStarted|RegExp|curAnim|gotoEnd|userAgent|dX|isHsAnchor|toLowerCase|onload|Dimension|lt|scrollLeft|showHideElements|os|add|below|panel|thumbsUserSetId|tId|childNodes|langDefaults|minTblPos|heading|getAnchors|mousemove|object|getAnchorIndex|disabled|doFullExpand|xpos|mouse|clientX|clientY|hideOnMouseOut|fullExpandLabel|offY|overlayWidth|url|offX|pointer|hsKey|marker|fullExpandTitle|distance|endOff|srcElement|ucrb|align|expandCursor|current|css|startOff|numberOfImagesToPreload|hasAlphaImageLoader|destroyOverlays|Text|mouseIsOver|calcExpanded|other|loadingPosXfade|types|getAdjacentAnchor|Click|expandDuration|loadingPos|background|transit|resizeTo|init|overrides|pThis|continuePreloading|scrollUp|Create||floatMode|openerTagNames|clientHeight|oldImg||dY|newImg|names|isReady|Slideshow|margin|error|sel|moveTo|scrollBy|connectOutline|undim|updateAnchors|arrow|scrollDown|mX|mY|getSrc|clones|restoreTitle|changeSize|thumbnailId|startTime|easeOutQuad|done|state|parOff|genOverlayBox|wrapperClassName|update|clientWidth|blur|element|setPos|setSize|dimmingDuration|keypress|relative|isClosing|hasMovedMin|keydown|marginTop|middle|dragByHeading|maxsize|ul|calcBorders|showLoading|parseFloat|origProp|doWrapper|defaultView|load|activeRight|parent|relatedTarget|hasFocused|topZ|string|calcThumb|oPos|garbageBin|dec|mouseClickHandler|compatMode|markerPos|osize|getWrapperKey|getNode|activeLeft|ie6|restoreDuration|nextTitle|pauseText|wrapperMouseHandler|nextText|closeText|closeTitle|fixedControls|contentLoaded|maxWidth|fullExpandText|pauseTitle|moveText|playText|moveTitle|detail|returnValue|arguments|_default|call|easeInQuad|yScroll|png|tag|preloadGraphic|nopad|xScroll|alpha|scrollHeight|from|orig|mouseup|scrollWidth|scrollMaxY|getTime|Date|scrollMaxX|timerId|appendTo|onGraphicLoad|relativeTo|toUpperCase|rb|wheelDelta|offsetParent|detachEvent|allowMultipleInstances|thumb|targetX|targetY|switch|hide|loadingTitle|loadingText|rv|loadingOpacity||captionOverlay|headingOverlay|vis|playTitle|ltr|stripItemFormatter|525|showOverlays|preloadImages|hideIframes|hideSelects|Overlay|getComputedStyle|getPropertyValue|clearsY|clearsX|BackCompat|getAttribute|addOverlay|clickX|Move|Eval|clickY|creditsPosition|previousText|Next|Previous|Play|Pause|nextSibling|spacebar|doPanels|indexOf|rightpanel|marginRight|marginBottom|addRule|focusTopmost|leftpanel|reuseOverlay|offsetX|offsetY|cssDirection|direction|getOverlays|getInline|writeCredits|form|focusTitle|gotOverlays|Close|hand|showCredits|dimmingGeckoFix|Highslide|JS|getNumber|creditsText|creditsTitle|transitionDuration|Right|Bottom|after|Width|Top|border|Thumbstrip|and|mousedown|Safari|Left|Height|fadeInOut|styleSheets|200|horizontal|offsetTop|previousTitle|tmpMin|correctRatio||easingClose|enableKeyListener|show|fitOverlayBox|creditsTarget|wait|initSlideshow|fullExpandOpacity|toString|preloadNext|fullExpandPosition|overlayOptions|creditsHref|createFullExpand|javascript|pow|hitSpace|prepareNextOutline|getElementByClass|checkFirstAndLast|repeat|sls|wrapStep|skin|getControls|replaceLang|reOrder|geckodimmer|dimming|keyCode|pageXOffset|pageYOffset|outlineStartOffset|of|Image|Resize|resizeTitle|click|drag|graphics|keys|Use|esc|homepage|front|bring|cancel|Loading|Expand|actual|the|Go|Powered|zoomin|zoomout|ra|it|maxHeight|headingEval|Macintosh|Gecko|removeAttribute|padding|getElementById|headingText|headingId|_self||com|http|1001|drop|shadow|captionEval|captionText|captionId|currentStyle|mousewheel|allowSimultaneousLoading|onmouseover|isHtml|readyState|onmousewheel|onmouseout|location|flushImgSize|oncontextmenu|blockRightClick|imageCreate|DOMMouseScroll|scale|outlinesDir|fontSize|lineHeight|collapse|outlines|progid|sizingMethod|AlphaImageLoader|Microsoft|DXImageTransform|pI|firstChild|eval|removeChild|500||interval|SELECT|IFRAME|200px|default|abs|caption|dynamicallyUpdateAnchors|useControls|inner|down|split|fit|floor|float|reuse|clearTimeout|preserveContent|mgnRight|borderCollapse|120|attachEvent|toElement|fromElement|HEAD|text|linearTween|important|mouseover|dragSensitivity|htmlE|addSlideshow|registerOverlay|xpand|button|sqrt|hasHtmlExpanders|vendor|createTextNode|clearInterval|splice|KDE|callee|cellSpacing|doScroll|setInterval|DOMContentLoaded|HsExpander'.split('|'),0,{}))
diff --git a/highslide/highslide-with-html.js b/highslide/highslide-with-html.js
new file mode 100644
index 0000000..543c608
--- /dev/null
+++ b/highslide/highslide-with-html.js
@@ -0,0 +1,2449 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default +inline +ajax +iframe +flash
+Author: Torstein Hønsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+var hs = {
+// Language strings
+lang : {
+ cssDirection: 'ltr',
+ loadingText : 'Loading...',
+ loadingTitle : 'Click to cancel',
+ focusTitle : 'Click to bring to front',
+ fullExpandTitle : 'Expand to actual size (f)',
+ creditsText : 'Powered by <i>Highslide JS</i>',
+ creditsTitle : 'Go to the Highslide JS homepage',
+ previousText : 'Previous',
+ nextText : 'Next',
+ moveText : 'Move',
+ closeText : 'Close',
+ closeTitle : 'Close (esc)',
+ resizeTitle : 'Resize',
+ playText : 'Play',
+ playTitle : 'Play slideshow (spacebar)',
+ pauseText : 'Pause',
+ pauseTitle : 'Pause slideshow (spacebar)',
+ previousTitle : 'Previous (arrow left)',
+ nextTitle : 'Next (arrow right)',
+ moveTitle : 'Move',
+ fullExpandText : '1:1',
+ restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
+},
+// See http://highslide.com/ref for examples of settings
+graphicsDir : 'highslide/graphics/',
+expandCursor : 'zoomin.cur', // null disables
+restoreCursor : 'zoomout.cur', // null disables
+expandDuration : 250, // milliseconds
+restoreDuration : 250,
+marginLeft : 15,
+marginRight : 15,
+marginTop : 15,
+marginBottom : 15,
+zIndexCounter : 1001, // adjust to other absolutely positioned elements
+loadingOpacity : 0.75,
+allowMultipleInstances: true,
+numberOfImagesToPreload : 5,
+outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only
+outlineStartOffset : 3, // ends at 10
+padToMinWidth : false, // pad the popup width to make room for wide caption
+fullExpandPosition : 'bottom right',
+fullExpandOpacity : 1,
+showCredits : true, // you can set this to false if you want
+creditsHref : 'http://highslide.com/',
+creditsTarget : '_self',
+enableKeyListener : true,
+openerTagNames : ['a'], // Add more to allow slideshow indexing
+
+allowWidthReduction : false,
+allowHeightReduction : true,
+preserveContent : true, // Preserve changes made to the content and position of HTML popups.
+objectLoadTime : 'before', // Load iframes 'before' or 'after' expansion.
+cacheAjax : true, // Cache ajax popups for instant display. Can be overridden for each popup.
+dragByHeading: true,
+minWidth: 200,
+minHeight: 200,
+allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
+outlineType : 'drop-shadow', // set null to disable outlines
+skin : {
+ contentWrapper:
+ '<div class="highslide-header"><ul>'+
+ '<li class="highslide-previous">'+
+ '<a href="#" title="{hs.lang.previousTitle}" onclick="return hs.previous(this)">'+
+ '<span>{hs.lang.previousText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-next">'+
+ '<a href="#" title="{hs.lang.nextTitle}" onclick="return hs.next(this)">'+
+ '<span>{hs.lang.nextText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-move">'+
+ '<a href="#" title="{hs.lang.moveTitle}" onclick="return false">'+
+ '<span>{hs.lang.moveText}</span></a>'+
+ '</li>'+
+ '<li class="highslide-close">'+
+ '<a href="#" title="{hs.lang.closeTitle}" onclick="return hs.close(this)">'+
+ '<span>{hs.lang.closeText}</span></a>'+
+ '</li>'+
+ '</ul></div>'+
+ '<div class="highslide-body"></div>'+
+ '<div class="highslide-footer"><div>'+
+ '<span class="highslide-resize" title="{hs.lang.resizeTitle}"><span></span></span>'+
+ '</div></div>'
+},
+// END OF YOUR SETTINGS
+
+
+// declare internal properties
+preloadTheseImages : [],
+continuePreloading: true,
+expanders : [],
+overrides : [
+ 'allowSizeReduction',
+ 'useBox',
+ 'outlineType',
+ 'outlineWhileAnimating',
+ 'captionId',
+ 'captionText',
+ 'captionEval',
+ 'captionOverlay',
+ 'headingId',
+ 'headingText',
+ 'headingEval',
+ 'headingOverlay',
+ 'creditsPosition',
+ 'dragByHeading',
+
+ 'width',
+ 'height',
+
+ 'contentId',
+ 'allowWidthReduction',
+ 'allowHeightReduction',
+ 'preserveContent',
+ 'maincontentId',
+ 'maincontentText',
+ 'maincontentEval',
+ 'objectType',
+ 'cacheAjax',
+ 'objectWidth',
+ 'objectHeight',
+ 'objectLoadTime',
+ 'swfOptions',
+ 'wrapperClassName',
+ 'minWidth',
+ 'minHeight',
+ 'maxWidth',
+ 'maxHeight',
+ 'slideshowGroup',
+ 'easing',
+ 'easingClose',
+ 'fadeInOut',
+ 'src'
+],
+overlays : [],
+idCounter : 0,
+oPos : {
+ x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'],
+ y: ['above', 'top', 'middle', 'bottom', 'below']
+},
+mouse: {},
+headingOverlay: {},
+captionOverlay: {},
+swfOptions: { flashvars: {}, params: {}, attributes: {} },
+timers : [],
+
+pendingOutlines : {},
+sleeping : [],
+preloadTheseAjax : [],
+cacheBindings : [],
+cachedGets : {},
+clones : {},
+onReady: [],
+uaVersion: parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]),
+ie : (document.all && !window.opera),
+safari : /Safari/.test(navigator.userAgent),
+geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),
+
+$ : function (id) {
+ if (id) return document.getElementById(id);
+},
+
+push : function (arr, val) {
+ arr[arr.length] = val;
+},
+
+createElement : function (tag, attribs, styles, parent, nopad) {
+ var el = document.createElement(tag);
+ if (attribs) hs.extend(el, attribs);
+ if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0});
+ if (styles) hs.setStyles(el, styles);
+ if (parent) parent.appendChild(el);
+ return el;
+},
+
+extend : function (el, attribs) {
+ for (var x in attribs) el[x] = attribs[x];
+ return el;
+},
+
+setStyles : function (el, styles) {
+ for (var x in styles) {
+ if (hs.ie && x == 'opacity') {
+ if (styles[x] > 0.99) el.style.removeAttribute('filter');
+ else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')';
+ }
+ else el.style[x] = styles[x];
+ }
+},
+animate: function(el, prop, opt) {
+ var start,
+ end,
+ unit;
+ if (typeof opt != 'object' || opt === null) {
+ var args = arguments;
+ opt = {
+ duration: args[2],
+ easing: args[3],
+ complete: args[4]
+ };
+ }
+ if (typeof opt.duration != 'number') opt.duration = 250;
+ opt.easing = Math[opt.easing] || Math.easeInQuad;
+ opt.curAnim = hs.extend({}, prop);
+ for (var name in prop) {
+ var e = new hs.fx(el, opt , name );
+
+ start = parseFloat(hs.css(el, name)) || 0;
+ end = parseFloat(prop[name]);
+ unit = name != 'opacity' ? 'px' : '';
+
+ e.custom( start, end, unit );
+ }
+},
+css: function(el, prop) {
+ if (document.defaultView) {
+ return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop);
+
+ } else {
+ if (prop == 'opacity') prop = 'filter';
+ var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })];
+ if (prop == 'filter')
+ val = val.replace(/alpha\(opacity=([0-9]+)\)/,
+ function (a, b) { return b / 100 });
+ return val === '' ? 1 : val;
+ }
+},
+
+getPageSize : function () {
+ var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat'
+ ? d.documentElement : d.body;
+
+ var width = hs.ie ? iebody.clientWidth :
+ (d.documentElement.clientWidth || self.innerWidth),
+ height = hs.ie ? iebody.clientHeight : self.innerHeight;
+
+ hs.page = {
+ width: width,
+ height: height,
+ scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
+ scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
+ }
+},
+
+getPosition : function(el) {
+ var p = { x: el.offsetLeft, y: el.offsetTop };
+ while (el.offsetParent) {
+ el = el.offsetParent;
+ p.x += el.offsetLeft;
+ p.y += el.offsetTop;
+ if (el != document.body && el != document.documentElement) {
+ p.x -= el.scrollLeft;
+ p.y -= el.scrollTop;
+ }
+ }
+ return p;
+},
+
+expand : function(a, params, custom, type) {
+ if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container);
+ if (typeof a.getParams == 'function') return params;
+ if (type == 'html') {
+ for (var i = 0; i < hs.sleeping.length; i++) {
+ if (hs.sleeping[i] && hs.sleeping[i].a == a) {
+ hs.sleeping[i].awake();
+ hs.sleeping[i] = null;
+ return false;
+ }
+ }
+ hs.hasHtmlExpanders = true;
+ }
+ try {
+ new hs.Expander(a, params, custom, type);
+ return false;
+ } catch (e) { return true; }
+},
+
+htmlExpand : function(a, params, custom) {
+ return hs.expand(a, params, custom, 'html');
+},
+
+getSelfRendered : function() {
+ return hs.createElement('div', {
+ className: 'highslide-html-content',
+ innerHTML: hs.replaceLang(hs.skin.contentWrapper)
+ });
+},
+getElementByClass : function (el, tagName, className) {
+ var els = el.getElementsByTagName(tagName);
+ for (var i = 0; i < els.length; i++) {
+ if ((new RegExp(className)).test(els[i].className)) {
+ return els[i];
+ }
+ }
+ return null;
+},
+replaceLang : function(s) {
+ s = s.replace(/\s/g, ' ');
+ var re = /{hs\.lang\.([^}]+)\}/g,
+ matches = s.match(re),
+ lang;
+ if (matches) for (var i = 0; i < matches.length; i++) {
+ lang = matches[i].replace(re, "$1");
+ if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]);
+ }
+ return s;
+},
+
+
+getCacheBinding : function (a) {
+ for (var i = 0; i < hs.cacheBindings.length; i++) {
+ if (hs.cacheBindings[i][0] == a) {
+ var c = hs.cacheBindings[i][1];
+ hs.cacheBindings[i][1] = c.cloneNode(1);
+ return c;
+ }
+ }
+ return null;
+},
+
+preloadAjax : function (e) {
+ var arr = hs.getAnchors();
+ for (var i = 0; i < arr.htmls.length; i++) {
+ var a = arr.htmls[i];
+ if (hs.getParam(a, 'objectType') == 'ajax' && hs.getParam(a, 'cacheAjax'))
+ hs.push(hs.preloadTheseAjax, a);
+ }
+
+ hs.preloadAjaxElement(0);
+},
+
+preloadAjaxElement : function (i) {
+ if (!hs.preloadTheseAjax[i]) return;
+ var a = hs.preloadTheseAjax[i];
+ var cache = hs.getNode(hs.getParam(a, 'contentId'));
+ if (!cache) cache = hs.getSelfRendered();
+ var ajax = new hs.Ajax(a, cache, 1);
+ ajax.onError = function () { };
+ ajax.onLoad = function () {
+ hs.push(hs.cacheBindings, [a, cache]);
+ hs.preloadAjaxElement(i + 1);
+ };
+ ajax.run();
+},
+
+focusTopmost : function() {
+ var topZ = 0,
+ topmostKey = -1,
+ expanders = hs.expanders,
+ exp,
+ zIndex;
+ for (var i = 0; i < expanders.length; i++) {
+ exp = expanders[i];
+ if (exp) {
+ zIndex = exp.wrapper.style.zIndex;
+ if (zIndex && zIndex > topZ) {
+ topZ = zIndex;
+ topmostKey = i;
+ }
+ }
+ }
+ if (topmostKey == -1) hs.focusKey = -1;
+ else expanders[topmostKey].focus();
+},
+
+getParam : function (a, param) {
+ a.getParams = a.onclick;
+ var p = a.getParams ? a.getParams() : null;
+ a.getParams = null;
+
+ return (p && typeof p[param] != 'undefined') ? p[param] :
+ (typeof hs[param] != 'undefined' ? hs[param] : null);
+},
+
+getSrc : function (a) {
+ var src = hs.getParam(a, 'src');
+ if (src) return src;
+ return a.href;
+},
+
+getNode : function (id) {
+ var node = hs.$(id), clone = hs.clones[id], a = {};
+ if (!node && !clone) return null;
+ if (!clone) {
+ clone = node.cloneNode(true);
+ clone.id = '';
+ hs.clones[id] = clone;
+ return node;
+ } else {
+ return clone.cloneNode(true);
+ }
+},
+
+discardElement : function(d) {
+ if (d) hs.garbageBin.appendChild(d);
+ hs.garbageBin.innerHTML = '';
+},
+transit : function (adj, exp) {
+ var last = exp = exp || hs.getExpander();
+ if (hs.upcoming) return false;
+ else hs.last = last;
+ try {
+ hs.upcoming = adj;
+ adj.onclick();
+ } catch (e){
+ hs.last = hs.upcoming = null;
+ }
+ try {
+ exp.close();
+ } catch (e) {}
+ return false;
+},
+
+previousOrNext : function (el, op) {
+ var exp = hs.getExpander(el);
+ if (exp) {
+ adj = exp.getAdjacentAnchor(op);
+ return hs.transit(adj, exp);
+ } else return false;
+},
+
+previous : function (el) {
+ return hs.previousOrNext(el, -1);
+},
+
+next : function (el) {
+ return hs.previousOrNext(el, 1);
+},
+
+keyHandler : function(e) {
+ if (!e) e = window.event;
+ if (!e.target) e.target = e.srcElement; // ie
+ if (typeof e.target.form != 'undefined') return true; // form element has focus
+ var exp = hs.getExpander();
+
+ var op = null;
+ switch (e.keyCode) {
+ case 70: // f
+ if (exp) exp.doFullExpand();
+ return true;
+ case 32: // Space
+ case 34: // Page Down
+ case 39: // Arrow right
+ case 40: // Arrow down
+ op = 1;
+ break;
+ case 8: // Backspace
+ case 33: // Page Up
+ case 37: // Arrow left
+ case 38: // Arrow up
+ op = -1;
+ break;
+ case 27: // Escape
+ case 13: // Enter
+ op = 0;
+ }
+ if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+ if (!hs.enableKeyListener) return true;
+
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ if (exp) {
+ if (op == 0) {
+ exp.close();
+ } else {
+ hs.previousOrNext(exp.key, op);
+ }
+ return false;
+ }
+ }
+ return true;
+},
+
+
+registerOverlay : function (overlay) {
+ hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } ));
+},
+
+
+getWrapperKey : function (element, expOnly) {
+ var el, re = /^highslide-wrapper-([0-9]+)$/;
+ // 1. look in open expanders
+ el = element;
+ while (el.parentNode) {
+ if (el.id && re.test(el.id)) return el.id.replace(re, "$1");
+ el = el.parentNode;
+ }
+ // 2. look in thumbnail
+ if (!expOnly) {
+ el = element;
+ while (el.parentNode) {
+ if (el.tagName && hs.isHsAnchor(el)) {
+ for (var key = 0; key < hs.expanders.length; key++) {
+ var exp = hs.expanders[key];
+ if (exp && exp.a == el) return key;
+ }
+ }
+ el = el.parentNode;
+ }
+ }
+ return null;
+},
+
+getExpander : function (el, expOnly) {
+ if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null;
+ if (typeof el == 'number') return hs.expanders[el] || null;
+ if (typeof el == 'string') el = hs.$(el);
+ return hs.expanders[hs.getWrapperKey(el, expOnly)] || null;
+},
+
+isHsAnchor : function (a) {
+ return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/));
+},
+
+reOrder : function () {
+ for (var i = 0; i < hs.expanders.length; i++)
+ if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost();
+},
+
+mouseClickHandler : function(e)
+{
+ if (!e) e = window.event;
+ if (e.button > 1) return true;
+ if (!e.target) e.target = e.srcElement;
+
+ var el = e.target;
+ while (el.parentNode
+ && !(/highslide-(image|move|html|resize)/.test(el.className)))
+ {
+ el = el.parentNode;
+ }
+ var exp = hs.getExpander(el);
+ if (exp && (exp.isClosing || !exp.isExpanded)) return true;
+
+ if (exp && e.type == 'mousedown') {
+ if (e.target.form) return true;
+ var match = el.className.match(/highslide-(image|move|resize)/);
+ if (match) {
+ hs.dragArgs = { exp: exp , type: match[1], left: exp.x.pos, width: exp.x.size, top: exp.y.pos,
+ height: exp.y.size, clickX: e.clientX, clickY: e.clientY };
+
+
+ hs.addEventListener(document, 'mousemove', hs.dragHandler);
+ if (e.preventDefault) e.preventDefault(); // FF
+
+ if (/highslide-(image|html)-blur/.test(exp.content.className)) {
+ exp.focus();
+ hs.hasFocused = true;
+ }
+ return false;
+ }
+ else if (/highslide-html/.test(el.className) && hs.focusKey != exp.key) {
+ exp.focus();
+ exp.doShowHide('hidden');
+ }
+ } else if (e.type == 'mouseup') {
+
+ hs.removeEventListener(document, 'mousemove', hs.dragHandler);
+
+ if (hs.dragArgs) {
+ if (hs.styleRestoreCursor && hs.dragArgs.type == 'image')
+ hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor;
+ var hasDragged = hs.dragArgs.hasDragged;
+
+ if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
+ exp.close();
+ }
+ else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
+ hs.dragArgs.exp.doShowHide('hidden');
+ }
+
+ if (hs.dragArgs.exp.releaseMask)
+ hs.dragArgs.exp.releaseMask.style.display = 'none';
+
+ hs.hasFocused = false;
+ hs.dragArgs = null;
+
+ } else if (/highslide-image-blur/.test(el.className)) {
+ el.style.cursor = hs.styleRestoreCursor;
+ }
+ }
+ return false;
+},
+
+dragHandler : function(e)
+{
+ if (!hs.dragArgs) return true;
+ if (!e) e = window.event;
+ var a = hs.dragArgs, exp = a.exp;
+ if (exp.iframe) {
+ if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null,
+ { position: 'absolute', width: exp.x.size+'px', height: exp.y.size+'px',
+ left: exp.x.cb+'px', top: exp.y.cb+'px', zIndex: 4, background: (hs.ie ? 'white' : 'none'),
+ opacity: .01 },
+ exp.wrapper, true);
+ if (exp.releaseMask.style.display == 'none')
+ exp.releaseMask.style.display = '';
+ }
+
+ a.dX = e.clientX - a.clickX;
+ a.dY = e.clientY - a.clickY;
+
+ var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
+ if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0)
+ || (distance > (hs.dragSensitivity || 5));
+
+ if (a.hasDragged && e.clientX > 5 && e.clientY > 5) {
+
+ if (a.type == 'resize') exp.resize(a);
+ else {
+ exp.moveTo(a.left + a.dX, a.top + a.dY);
+ if (a.type == 'image') exp.content.style.cursor = 'move';
+ }
+ }
+ return false;
+},
+
+wrapperMouseHandler : function (e) {
+ try {
+ if (!e) e = window.event;
+ var over = /mouseover/i.test(e.type);
+ if (!e.target) e.target = e.srcElement; // ie
+ if (hs.ie) e.relatedTarget =
+ over ? e.fromElement : e.toElement; // ie
+ var exp = hs.getExpander(e.target);
+ if (!exp.isExpanded) return;
+ if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp
+ || hs.dragArgs) return;
+ for (var i = 0; i < exp.overlays.length; i++) (function() {
+ var o = hs.$('hsId'+ exp.overlays[i]);
+ if (o && o.hideOnMouseOut) {
+ if (over) hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur);
+ }
+ })();
+ } catch (e) {}
+},
+addEventListener : function (el, event, func) {
+ if (el == document && event == 'ready') hs.push(hs.onReady, func);
+ try {
+ el.addEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ el.attachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = func;
+ }
+ }
+},
+
+removeEventListener : function (el, event, func) {
+ try {
+ el.removeEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = null;
+ }
+ }
+},
+
+preloadFullImage : function (i) {
+ if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
+ var img = document.createElement('img');
+ img.onload = function() {
+ img = null;
+ hs.preloadFullImage(i + 1);
+ };
+ img.src = hs.preloadTheseImages[i];
+ }
+},
+preloadImages : function (number) {
+ if (number && typeof number != 'object') hs.numberOfImagesToPreload = number;
+
+ var arr = hs.getAnchors();
+ for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) {
+ hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i]));
+ }
+
+ // preload outlines
+ if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} );
+ else
+
+ hs.preloadFullImage(0);
+
+ // preload cursor
+ if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor });
+},
+
+
+init : function () {
+ if (!hs.container) {
+
+ hs.getPageSize();
+ hs.ieLt7 = hs.ie && hs.uaVersion < 7;
+ hs.ie6SSL = hs.ieLt7 && location.protocol == 'https:';
+ for (var x in hs.langDefaults) {
+ if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x];
+ else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined')
+ hs.lang[x] = hs.langDefaults[x];
+ }
+
+ hs.container = hs.createElement('div', {
+ className: 'highslide-container'
+ }, {
+ position: 'absolute',
+ left: 0,
+ top: 0,
+ width: '100%',
+ zIndex: hs.zIndexCounter,
+ direction: 'ltr'
+ },
+ document.body,
+ true
+ );
+ hs.loading = hs.createElement('a', {
+ className: 'highslide-loading',
+ title: hs.lang.loadingTitle,
+ innerHTML: hs.lang.loadingText,
+ href: 'javascript:;'
+ }, {
+ position: 'absolute',
+ top: '-9999px',
+ opacity: hs.loadingOpacity,
+ zIndex: 1
+ }, hs.container
+ );
+ hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container);
+ hs.clearing = hs.createElement('div', null,
+ { clear: 'both', paddingTop: '1px' }, null, true);
+
+ // http://www.robertpenner.com/easing/
+ Math.linearTween = function (t, b, c, d) {
+ return c*t/d + b;
+ };
+ Math.easeInQuad = function (t, b, c, d) {
+ return c*(t/=d)*t + b;
+ };
+
+ hs.hideSelects = hs.ieLt7;
+ hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE'
+ || (hs.ie && hs.uaVersion < 5.5));
+ }
+},
+ready : function() {
+ if (hs.isReady) return;
+ hs.isReady = true;
+
+ for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i]();
+},
+
+updateAnchors : function() {
+ var el, els, all = [], images = [], htmls = [],groups = {}, re;
+
+ for (var i = 0; i < hs.openerTagNames.length; i++) {
+ els = document.getElementsByTagName(hs.openerTagNames[i]);
+ for (var j = 0; j < els.length; j++) {
+ el = els[j];
+ re = hs.isHsAnchor(el);
+ if (re) {
+ hs.push(all, el);
+ if (re[0] == 'hs.expand') hs.push(images, el);
+ else if (re[0] == 'hs.htmlExpand') hs.push(htmls, el);
+ var g = hs.getParam(el, 'slideshowGroup') || 'none';
+ if (!groups[g]) groups[g] = [];
+ hs.push(groups[g], el);
+ }
+ }
+ }
+ hs.anchors = { all: all, groups: groups, images: images, htmls: htmls };
+ return hs.anchors;
+
+},
+
+getAnchors : function() {
+ return hs.anchors || hs.updateAnchors();
+},
+
+
+close : function(el) {
+ var exp = hs.getExpander(el);
+ if (exp) exp.close();
+ return false;
+}
+}; // end hs object
+hs.fx = function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if (!options.orig) options.orig = {};
+};
+hs.fx.prototype = {
+ update: function(){
+ (hs.fx.step[this.prop] || hs.fx.step._default)(this);
+
+ if (this.options.step)
+ this.options.step.call(this.elem, this.now, this);
+
+ },
+ custom: function(from, to, unit){
+ this.startTime = (new Date()).getTime();
+ this.start = from;
+ this.end = to;
+ this.unit = unit;// || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && hs.timers.push(t) == 1 ) {
+ hs.timerId = setInterval(function(){
+ var timers = hs.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval(hs.timerId);
+ }
+ }, 13);
+ }
+ },
+ step: function(gotoEnd){
+ var t = (new Date()).getTime();
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if (this.options.complete) this.options.complete.call(this.elem);
+ }
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+ this.pos = this.options.easing(n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+ this.update();
+ }
+ return true;
+ }
+
+};
+
+hs.extend( hs.fx, {
+ step: {
+
+ opacity: function(fx){
+ hs.setStyles(fx.elem, { opacity: fx.now });
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+
+hs.Outline = function (outlineType, onLoad) {
+ this.onLoad = onLoad;
+ this.outlineType = outlineType;
+ var v = hs.uaVersion, tr;
+
+ this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v < 7;
+ if (!outlineType) {
+ if (onLoad) onLoad();
+ return;
+ }
+
+ hs.init();
+ this.table = hs.createElement(
+ 'table', {
+ cellSpacing: 0
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ borderCollapse: 'collapse',
+ width: 0
+ },
+ hs.container,
+ true
+ );
+ var tbody = hs.createElement('tbody', null, null, this.table, 1);
+
+ this.td = [];
+ for (var i = 0; i <= 8; i++) {
+ if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true);
+ this.td[i] = hs.createElement('td', null, null, tr, true);
+ var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
+ hs.setStyles(this.td[i], style);
+ }
+ this.td[4].className = outlineType +' highslide-outline';
+
+ this.preloadGraphic();
+};
+
+hs.Outline.prototype = {
+preloadGraphic : function () {
+ var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png";
+
+ var appendTo = hs.safari ? hs.container : null;
+ this.graphic = hs.createElement('img', null, { position: 'absolute',
+ top: '-9999px' }, appendTo, true); // for onload trigger
+
+ var pThis = this;
+ this.graphic.onload = function() { pThis.onGraphicLoad(); };
+
+ this.graphic.src = src;
+},
+
+onGraphicLoad : function () {
+ var o = this.offset = this.graphic.width / 4,
+ pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],
+ dim = { height: (2*o) +'px', width: (2*o) +'px' };
+ for (var i = 0; i <= 8; i++) {
+ if (pos[i]) {
+ if (this.hasAlphaImageLoader) {
+ var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px';
+ var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true);
+ hs.createElement ('div', null, {
+ filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')",
+ position: 'absolute',
+ width: w,
+ height: this.graphic.height +'px',
+ left: (pos[i][0]*o)+'px',
+ top: (pos[i][1]*o)+'px'
+ },
+ div,
+ true);
+ } else {
+ hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'});
+ }
+
+ if (window.opera && (i == 3 || i ==5))
+ hs.createElement('div', null, dim, this.td[i], true);
+
+ hs.setStyles (this.td[i], dim);
+ }
+ }
+ this.graphic = null;
+ if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy();
+ hs.pendingOutlines[this.outlineType] = this;
+ if (this.onLoad) this.onLoad();
+},
+
+setPosition : function (pos, offset, vis, dur, easing) {
+ var exp = this.exp,
+ stl = exp.wrapper.style,
+ offset = offset || 0,
+ pos = pos || {
+ x: exp.x.pos + offset,
+ y: exp.y.pos + offset,
+ w: exp.x.get('wsize') - 2 * offset,
+ h: exp.y.get('wsize') - 2 * offset
+ };
+ if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset)
+ ? 'visible' : 'hidden';
+ hs.setStyles(this.table, {
+ left: (pos.x - this.offset) +'px',
+ top: (pos.y - this.offset) +'px',
+ width: (pos.w + 2 * this.offset) +'px'
+ });
+
+ pos.w -= 2 * this.offset;
+ pos.h -= 2 * this.offset;
+ hs.setStyles (this.td[4], {
+ width: pos.w >= 0 ? pos.w +'px' : 0,
+ height: pos.h >= 0 ? pos.h +'px' : 0
+ });
+ if (this.hasAlphaImageLoader) this.td[3].style.height
+ = this.td[5].style.height = this.td[4].style.height;
+
+},
+
+destroy : function(hide) {
+ if (hide) this.table.style.visibility = 'hidden';
+ else hs.discardElement(this.table);
+}
+};
+
+hs.Dimension = function(exp, dim) {
+ this.exp = exp;
+ this.dim = dim;
+ this.ucwh = dim == 'x' ? 'Width' : 'Height';
+ this.wh = this.ucwh.toLowerCase();
+ this.uclt = dim == 'x' ? 'Left' : 'Top';
+ this.lt = this.uclt.toLowerCase();
+ this.ucrb = dim == 'x' ? 'Right' : 'Bottom';
+ this.rb = this.ucrb.toLowerCase();
+ this.p1 = this.p2 = 0;
+};
+hs.Dimension.prototype = {
+get : function(key) {
+ switch (key) {
+ case 'loadingPos':
+ return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2;
+ case 'wsize':
+ return this.size + 2 * this.cb + this.p1 + this.p2;
+ case 'fitsize':
+ return this.clientSize - this.marginMin - this.marginMax;
+ case 'maxsize':
+ return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ;
+ case 'opos':
+ return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
+ case 'osize':
+ return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0);
+ case 'imgPad':
+ return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0;
+
+ }
+},
+calcBorders: function() {
+ // correct for borders
+ this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2;
+ this.marginMax = hs['margin'+ this.ucrb];
+},
+calcThumb: function() {
+ this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) :
+ this.exp.el['offset'+ this.ucwh];
+ this.tpos = this.exp.tpos[this.dim];
+ this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2;
+ if (this.tpos < 1) {
+ this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt];
+ };
+},
+calcExpanded: function() {
+ var exp = this.exp;
+ this.justify = 'auto';
+
+
+ // size and position
+ this.pos = this.tpos - this.cb + this.tb;
+ this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full);
+ this.minSize = exp.allowSizeReduction ?
+ Math.min(exp['min'+ this.ucwh], this.full) :this.full;
+ if (exp.isImage && exp.useBox) {
+ this.size = exp[this.wh];
+ this.imgSize = this.full;
+ }
+ if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth;
+ this.marginMin = hs['margin'+ this.uclt];
+ this.scroll = hs.page['scroll'+ this.uclt];
+ this.clientSize = hs.page[this.wh];
+},
+setSize: function(i) {
+ var exp = this.exp;
+ if (exp.isImage && (exp.useBox || hs.padToMinWidth)) {
+ this.imgSize = i;
+ this.size = Math.max(this.size, this.imgSize);
+ exp.content.style[this.lt] = this.get('imgPad')+'px';
+ } else
+ this.size = i;
+
+ exp.content.style[this.wh] = i +'px';
+ exp.wrapper.style[this.wh] = this.get('wsize') +'px';
+ if (exp.outline) exp.outline.setPosition();
+ if (exp.releaseMask) exp.releaseMask.style[this.wh] = i +'px';
+ if (exp.isHtml) {
+ var d = exp.scrollerDiv;
+ if (this.sizeDiff === undefined)
+ this.sizeDiff = exp.innerContent['offset'+ this.ucwh] - d['offset'+ this.ucwh];
+ d.style[this.wh] = (this.size - this.sizeDiff) +'px';
+
+ if (this.dim == 'x') exp.mediumContent.style.width = 'auto';
+ if (exp.body) exp.body.style[this.wh] = 'auto';
+ }
+ if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true);
+},
+setPos: function(i) {
+ this.pos = i;
+ this.exp.wrapper.style[this.lt] = i +'px';
+
+ if (this.exp.outline) this.exp.outline.setPosition();
+
+}
+};
+
+hs.Expander = function(a, params, custom, contentType) {
+ if (document.readyState && hs.ie && !hs.isReady) {
+ hs.addEventListener(document, 'ready', function() {
+ new hs.Expander(a, params, custom, contentType);
+ });
+ return;
+ }
+ this.a = a;
+ this.custom = custom;
+ this.contentType = contentType || 'image';
+ this.isHtml = (contentType == 'html');
+ this.isImage = !this.isHtml;
+
+ hs.continuePreloading = false;
+ this.overlays = [];
+ hs.init();
+ var key = this.key = hs.expanders.length;
+ // override inline parameters
+ for (var i = 0; i < hs.overrides.length; i++) {
+ var name = hs.overrides[i];
+ this[name] = params && typeof params[name] != 'undefined' ?
+ params[name] : hs[name];
+ }
+ if (!this.src) this.src = a.href;
+
+ // get thumb
+ var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
+ el = this.thumb = el.getElementsByTagName('img')[0] || el;
+ this.thumbsUserSetId = el.id || a.id;
+
+ // check if already open
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].a == a) {
+ hs.expanders[i].focus();
+ return false;
+ }
+ }
+
+ // cancel other
+ if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
+ hs.expanders[i].cancelLoading();
+ }
+ }
+ hs.expanders[key] = this;
+ if (!hs.allowMultipleInstances && !hs.upcoming) {
+ if (hs.expanders[key-1]) hs.expanders[key-1].close();
+ if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
+ hs.expanders[hs.focusKey].close();
+ }
+
+ // initiate metrics
+ this.el = el;
+ this.tpos = hs.getPosition(el);
+ hs.getPageSize();
+ var x = this.x = new hs.Dimension(this, 'x');
+ x.calcThumb();
+ var y = this.y = new hs.Dimension(this, 'y');
+ y.calcThumb();
+ this.wrapper = hs.createElement(
+ 'div', {
+ id: 'highslide-wrapper-'+ this.key,
+ className: 'highslide-wrapper '+ this.wrapperClassName
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ zIndex: hs.zIndexCounter += 2
+ }, null, true );
+
+ this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
+ if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
+ this.outlineWhileAnimating = 0;
+
+ // get the outline
+ if (!this.outlineType) {
+ this[this.contentType +'Create']();
+
+ } else if (hs.pendingOutlines[this.outlineType]) {
+ this.connectOutline();
+ this[this.contentType +'Create']();
+
+ } else {
+ this.showLoading();
+ var exp = this;
+ new hs.Outline(this.outlineType,
+ function () {
+ exp.connectOutline();
+ exp[exp.contentType +'Create']();
+ }
+ );
+ }
+ return true;
+};
+
+hs.Expander.prototype = {
+error : function(e) {
+ //alert ('Line '+ e.lineNumber +': '+ e.message);
+ window.location.href = this.src;
+},
+
+connectOutline : function() {
+ var outline = this.outline = hs.pendingOutlines[this.outlineType];
+ outline.exp = this;
+ outline.table.style.zIndex = this.wrapper.style.zIndex - 1;
+ hs.pendingOutlines[this.outlineType] = null;
+},
+
+showLoading : function() {
+ if (this.onLoadStarted || this.loading) return;
+
+ this.loading = hs.loading;
+ var exp = this;
+ this.loading.onclick = function() {
+ exp.cancelLoading();
+ };
+ var exp = this,
+ l = this.x.get('loadingPos') +'px',
+ t = this.y.get('loadingPos') +'px';
+ setTimeout(function () {
+ if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })}
+ , 100);
+},
+
+imageCreate : function() {
+ var exp = this;
+
+ var img = document.createElement('img');
+ this.content = img;
+ img.onload = function () {
+ if (hs.expanders[exp.key]) exp.contentLoaded();
+ };
+ if (hs.blockRightClick) img.oncontextmenu = function() { return false; };
+ img.className = 'highslide-image';
+ hs.setStyles(img, {
+ visibility: 'hidden',
+ display: 'block',
+ position: 'absolute',
+ maxWidth: '9999px',
+ zIndex: 3
+ });
+ img.title = hs.lang.restoreTitle;
+ if (hs.safari) hs.container.appendChild(img);
+ if (hs.ie && hs.flushImgSize) img.src = null;
+ img.src = this.src;
+
+ this.showLoading();
+},
+
+htmlCreate : function () {
+
+ this.content = hs.getCacheBinding(this.a);
+ if (!this.content)
+ this.content = hs.getNode(this.contentId);
+ if (!this.content)
+ this.content = hs.getSelfRendered();
+ this.getInline(['maincontent']);
+ if (this.maincontent) {
+ var body = hs.getElementByClass(this.content, 'div', 'highslide-body');
+ if (body) body.appendChild(this.maincontent);
+ this.maincontent.style.display = 'block';
+ }
+
+ var innerContent = this.innerContent = this.content;
+
+ if (/(swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent);
+
+ // the content tree
+ hs.container.appendChild(this.wrapper);
+ hs.setStyles( this.wrapper, {
+ position: 'static',
+ padding: '0 '+ hs.marginRight +'px 0 '+ hs.marginLeft +'px'
+ });
+ this.content = hs.createElement(
+ 'div', {
+ className: 'highslide-html'
+ }, {
+ position: 'relative',
+ zIndex: 3,
+ overflow: 'hidden'
+ },
+ this.wrapper
+ );
+ this.mediumContent = hs.createElement('div', null, null, this.content, 1);
+ this.mediumContent.appendChild(innerContent);
+
+ hs.setStyles (innerContent, {
+ position: 'relative',
+ display: 'block',
+ direction: hs.lang.cssDirection || ''
+ });
+ if (this.width) innerContent.style.width = this.width +'px';
+ if (this.height) hs.setStyles(innerContent, {
+ height: this.height +'px',
+ overflow: 'hidden'
+ });
+ if (innerContent.offsetWidth < this.minWidth)
+ innerContent.style.width = this.minWidth +'px';
+
+
+
+ if (this.objectType == 'ajax' && !hs.getCacheBinding(this.a)) {
+ this.showLoading();
+ var ajax = new hs.Ajax(this.a, innerContent);
+ var exp = this;
+ ajax.onLoad = function () { if (hs.expanders[exp.key]) exp.contentLoaded(); };
+ ajax.onError = function () { location.href = exp.src; };
+ ajax.run();
+ }
+ else
+
+ if (this.objectType == 'iframe' && this.objectLoadTime == 'before') {
+ this.writeExtendedContent();
+ }
+ else
+ this.contentLoaded();
+},
+
+contentLoaded : function() {
+ try {
+ if (!this.content) return;
+ this.content.onload = null;
+ if (this.onLoadStarted) return;
+ else this.onLoadStarted = true;
+
+ var x = this.x, y = this.y;
+
+ if (this.loading) {
+ hs.setStyles(this.loading, { top: '-9999px' });
+ this.loading = null;
+ }
+ if (this.isImage) {
+ x.full = this.content.width;
+ y.full = this.content.height;
+
+ hs.setStyles(this.content, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ this.wrapper.appendChild(this.content);
+ hs.container.appendChild(this.wrapper);
+ } else if (this.htmlGetSize) this.htmlGetSize();
+
+ x.calcBorders();
+ y.calcBorders();
+
+ hs.setStyles (this.wrapper, {
+ left: (x.tpos + x.tb - x.cb) +'px',
+ top: (y.tpos + x.tb - y.cb) +'px'
+ });
+ this.getOverlays();
+
+ var ratio = x.full / y.full;
+
+ x.calcExpanded();
+ this.justify(x);
+
+ y.calcExpanded();
+ this.justify(y);
+ if (this.isHtml) this.htmlSizeOperations();
+ if (this.overlayBox) this.sizeOverlayBox(0, 1);
+
+ if (this.allowSizeReduction) {
+ if (this.isImage)
+ this.correctRatio(ratio);
+ else this.fitOverlayBox();
+ if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
+ this.createFullExpand();
+ if (this.overlays.length == 1) this.sizeOverlayBox();
+ }
+ }
+ this.show();
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+
+setObjContainerSize : function(parent, auto) {
+ var c = hs.getElementByClass(parent, 'DIV', 'highslide-body');
+ if (/(iframe|swf)/.test(this.objectType)) {
+ if (this.objectWidth) c.style.width = this.objectWidth +'px';
+ if (this.objectHeight) c.style.height = this.objectHeight +'px';
+ }
+},
+
+writeExtendedContent : function () {
+ if (this.hasExtendedContent) return;
+ var exp = this;
+ this.body = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
+ if (this.objectType == 'iframe') {
+ this.showLoading();
+ var ruler = hs.clearing.cloneNode(1);
+ this.body.appendChild(ruler);
+ this.newWidth = this.innerContent.offsetWidth;
+ if (!this.objectWidth) this.objectWidth = ruler.offsetWidth;
+ var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight,
+ h = this.objectHeight || hs.page.height - hDiff - hs.marginTop - hs.marginBottom,
+ onload = this.objectLoadTime == 'before' ?
+ ' onload="if (hs.expanders['+ this.key +']) hs.expanders['+ this.key +'].contentLoaded()" ' : '';
+
+ this.body.innerHTML += '<iframe name="hs'+ (new Date()).getTime() +'" frameborder="0" key="'+ this.key +'" '
+ +' allowtransparency="true" style="width:'+ this.objectWidth +'px; height:'+ h +'px" '
+ + onload +' src="'+ this.src +'"></iframe>';
+ this.ruler = this.body.getElementsByTagName('div')[0];
+ this.iframe = this.body.getElementsByTagName('iframe')[0];
+
+ if (this.objectLoadTime == 'after') this.correctIframeSize();
+
+ }
+ if (this.objectType == 'swf') {
+ this.body.id = this.body.id || 'hs-flash-id-' + this.key;
+ var a = this.swfOptions;
+ if (!a.params) a.params = {};
+ if (typeof a.params.wmode == 'undefined') a.params.wmode = 'transparent';
+ if (swfobject) swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight,
+ a.version || '7', a.expressInstallSwfurl, a.flashvars, a.params, a.attributes);
+ }
+ this.hasExtendedContent = true;
+},
+htmlGetSize : function() {
+ if (this.iframe && !this.objectHeight) { // loadtime before
+ this.iframe.style.height = this.body.style.height = this.getIframePageHeight() +'px';
+ }
+ this.innerContent.appendChild(hs.clearing);
+ if (!this.x.full) this.x.full = this.innerContent.offsetWidth;
+ this.y.full = this.innerContent.offsetHeight;
+ this.innerContent.removeChild(hs.clearing);
+ if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug
+ this.newHeight = parseInt(this.innerContent.currentStyle.height);
+ }
+ hs.setStyles( this.wrapper, { position: 'absolute', padding: '0'});
+ hs.setStyles( this.content, { width: this.x.t +'px', height: this.y.t +'px'});
+},
+
+getIframePageHeight : function() {
+ var h;
+ try {
+ var doc = this.iframe.contentDocument || this.iframe.contentWindow.document;
+ var clearing = doc.createElement('div');
+ clearing.style.clear = 'both';
+ doc.body.appendChild(clearing);
+ h = clearing.offsetTop;
+ if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop)
+ + parseInt(doc.body.currentStyle.marginBottom) - 1;
+ } catch (e) { // other domain
+ h = 300;
+ }
+ return h;
+},
+correctIframeSize : function () {
+ var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth;
+ hs.discardElement(this.ruler);
+ if (wDiff < 0) wDiff = 0;
+
+ var hDiff = this.innerContent.offsetHeight - this.iframe.offsetHeight;
+ hs.setStyles(this.iframe, {
+ width: Math.abs(this.x.size - wDiff) +'px',
+ height: Math.abs(this.y.size - hDiff) +'px'
+ });
+ hs.setStyles(this.body, {
+ width: this.iframe.style.width,
+ height: this.iframe.style.height
+ });
+
+ this.scrollingContent = this.iframe;
+ this.scrollerDiv = this.scrollingContent;
+},
+htmlSizeOperations : function () {
+
+ this.setObjContainerSize(this.innerContent);
+
+
+ if (this.objectType == 'swf' && this.objectLoadTime == 'before') this.writeExtendedContent();
+
+ // handle minimum size
+ if (this.x.size < this.x.full && !this.allowWidthReduction) this.x.size = this.x.full;
+ if (this.y.size < this.y.full && !this.allowHeightReduction) this.y.size = this.y.full;
+ this.scrollerDiv = this.innerContent;
+ hs.setStyles(this.mediumContent, {
+ position: 'relative',
+ width: this.x.size +'px'
+ });
+ hs.setStyles(this.innerContent, {
+ border: 'none',
+ width: 'auto',
+ height: 'auto'
+ });
+ var node = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
+ if (node && !/(iframe|swf)/.test(this.objectType)) {
+ var cNode = node; // wrap to get true size
+ node = hs.createElement(cNode.nodeName, null, {overflow: 'hidden'}, null, true);
+ cNode.parentNode.insertBefore(node, cNode);
+ node.appendChild(hs.clearing); // IE6
+ node.appendChild(cNode);
+
+ var wDiff = this.innerContent.offsetWidth - node.offsetWidth;
+ var hDiff = this.innerContent.offsetHeight - node.offsetHeight;
+ node.removeChild(hs.clearing);
+
+ var kdeBugCorr = hs.safari || navigator.vendor == 'KDE' ? 1 : 0; // KDE repainting bug
+ hs.setStyles(node, {
+ width: (this.x.size - wDiff - kdeBugCorr) +'px',
+ height: (this.y.size - hDiff) +'px',
+ overflow: 'auto',
+ position: 'relative'
+ }
+ );
+ if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight) {
+ node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px';
+ }
+ this.scrollingContent = node;
+ this.scrollerDiv = this.scrollingContent;
+ }
+ if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize();
+ if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) this.scrollerDiv = this.content;
+
+ if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) {
+ this.x.size += 17; // room for scrollbars
+ }
+ if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) {
+ setTimeout("try { hs.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",
+ hs.expandDuration);
+ }
+},
+
+justify : function (p, moveOnly) {
+ var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y';
+
+ var hasMovedMin = false;
+
+ var allowReduce = p.exp.allowSizeReduction;
+ p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
+ if (p.pos < p.scroll + p.marginMin) {
+ p.pos = p.scroll + p.marginMin;
+ hasMovedMin = true;
+ }
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+ if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) {
+ if (!moveOnly && hasMovedMin && allowReduce) {
+ p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ } else if (p.get('wsize') < p.get('fitsize')) {
+ p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize');
+ } else { // image larger than viewport
+ p.pos = p.scroll + p.marginMin;
+ if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ }
+ }
+
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+
+
+
+ if (p.pos < p.marginMin) {
+ var tmpMin = p.pos;
+ p.pos = p.marginMin;
+
+ if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin);
+
+ }
+},
+
+correctRatio : function(ratio) {
+ var x = this.x,
+ y = this.y,
+ changed = false,
+ xSize = Math.min(x.full, x.size),
+ ySize = Math.min(y.full, y.size),
+ useBox = (this.useBox || hs.padToMinWidth);
+
+ if (xSize / ySize > ratio) { // width greater
+ xSize = ySize * ratio;
+ if (xSize < x.minSize) { // below minWidth
+ xSize = x.minSize;
+ ySize = xSize / ratio;
+ }
+ changed = true;
+
+ } else if (xSize / ySize < ratio) { // height greater
+ ySize = xSize / ratio;
+ changed = true;
+ }
+
+ if (hs.padToMinWidth && x.full < x.minSize) {
+ x.imgSize = x.full;
+ y.size = y.imgSize = y.full;
+ } else if (this.useBox) {
+ x.imgSize = xSize;
+ y.imgSize = ySize;
+ } else {
+ x.size = xSize;
+ y.size = ySize;
+ }
+ this.fitOverlayBox(useBox ? null : ratio);
+ if (useBox && y.size < y.imgSize) {
+ y.imgSize = y.size;
+ x.imgSize = y.size * ratio;
+ }
+ if (changed || useBox) {
+ x.pos = x.tpos - x.cb + x.tb;
+ x.minSize = x.size;
+ this.justify(x, true);
+
+ y.pos = y.tpos - y.cb + y.tb;
+ y.minSize = y.size;
+ this.justify(y, true);
+ if (this.overlayBox) this.sizeOverlayBox();
+ }
+},
+fitOverlayBox : function(ratio) {
+ var x = this.x, y = this.y;
+ if (this.overlayBox) {
+ while (y.size > this.minHeight && x.size > this.minWidth
+ && y.get('wsize') > y.get('fitsize')) {
+ y.size -= 10;
+ if (ratio) x.size = y.size * ratio;
+ this.sizeOverlayBox(0, 1);
+ }
+ }
+},
+
+show : function () {
+ var x = this.x, y = this.y;
+ this.doShowHide('hidden');
+
+ // Apply size change
+ this.changeSize(
+ 1, {
+ wrapper: {
+ width : x.get('wsize'),
+ height : y.get('wsize'),
+ left: x.pos,
+ top: y.pos
+ },
+ content: {
+ left: x.p1 + x.get('imgPad'),
+ top: y.p1 + y.get('imgPad'),
+ width:x.imgSize ||x.size,
+ height:y.imgSize ||y.size
+ }
+ },
+ hs.expandDuration
+ );
+},
+
+changeSize : function(up, to, dur) {
+
+ if (this.outline && !this.outlineWhileAnimating) {
+ if (up) this.outline.setPosition();
+ else this.outline.destroy(
+ (this.isHtml && this.preserveContent));
+ }
+
+
+ if (!up) this.destroyOverlays();
+
+ var exp = this,
+ x = exp.x,
+ y = exp.y,
+ easing = this.easing;
+ if (!up) easing = this.easingClose || easing;
+ var after = up ?
+ function() {
+
+ if (exp.outline) exp.outline.table.style.visibility = "visible";
+ setTimeout(function() {
+ exp.afterExpand();
+ }, 50);
+ } :
+ function() {
+ exp.afterClose();
+ };
+ if (up) hs.setStyles( this.wrapper, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ if (up && this.isHtml) {
+ hs.setStyles(this.wrapper, {
+ left: (x.tpos - x.cb + x.tb) +'px',
+ top: (y.tpos - y.cb + y.tb) +'px'
+ });
+ }
+ if (this.fadeInOut) {
+ hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 });
+ hs.extend(to.wrapper, { opacity: up });
+ }
+ hs.animate( this.wrapper, to.wrapper, {
+ duration: dur,
+ easing: easing,
+ step: function(val, args) {
+ if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') {
+ var fac = up ? args.pos : 1 - args.pos;
+ var pos = {
+ w: x.t + (x.get('wsize') - x.t) * fac,
+ h: y.t + (y.get('wsize') - y.t) * fac,
+ x: x.tpos + (x.pos - x.tpos) * fac,
+ y: y.tpos + (y.pos - y.tpos) * fac
+ };
+ exp.outline.setPosition(pos, 0, 1);
+ }
+ if (exp.isHtml) {
+ if (args.prop == 'left')
+ exp.mediumContent.style.left = (x.pos - val) +'px';
+ if (args.prop == 'top')
+ exp.mediumContent.style.top = (y.pos - val) +'px';
+ }
+ }
+ });
+ hs.animate( this.content, to.content, dur, easing, after);
+ if (up) {
+ this.wrapper.style.visibility = 'visible';
+ this.content.style.visibility = 'visible';
+ if (this.isHtml) this.innerContent.style.visibility = 'visible';
+ this.a.className += ' highslide-active-anchor';
+ }
+},
+
+
+
+
+afterExpand : function() {
+ this.isExpanded = true;
+ this.focus();
+
+ if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent();
+ if (this.iframe) {
+ try {
+ var exp = this,
+ doc = this.iframe.contentDocument || this.iframe.contentWindow.document;
+ hs.addEventListener(doc, 'mousedown', function () {
+ if (hs.focusKey != exp.key) exp.focus();
+ });
+ } catch(e) {}
+ if (hs.ie && typeof this.isClosing != 'boolean') // first open
+ this.iframe.style.width = (this.objectWidth - 1) +'px'; // hasLayout
+ }
+ if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null;
+ this.prepareNextOutline();
+ var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop;
+ this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize')
+ && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize');
+ if (this.overlayBox) this.showOverlays();
+
+},
+
+
+prepareNextOutline : function() {
+ var key = this.key;
+ var outlineType = this.outlineType;
+ new hs.Outline(outlineType,
+ function () { try { hs.expanders[key].preloadNext(); } catch (e) {} });
+},
+
+
+preloadNext : function() {
+ var next = this.getAdjacentAnchor(1);
+ if (next && next.onclick.toString().match(/hs\.expand/))
+ var img = hs.createElement('img', { src: hs.getSrc(next) });
+},
+
+
+getAdjacentAnchor : function(op) {
+ var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none'];
+
+ /*< ? if ($cfg->slideshow) : ?>s*/
+ if (!as[current + op] && this.slideshow && this.slideshow.repeat) {
+ if (op == 1) return as[0];
+ else if (op == -1) return as[as.length-1];
+ }
+ /*< ? endif ?>s*/
+ return as[current + op] || null;
+},
+
+getAnchorIndex : function() {
+ var arr = hs.getAnchors().groups[this.slideshowGroup || 'none'];
+ if (arr) for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == this.a) return i;
+ }
+ return null;
+},
+
+
+cancelLoading : function() {
+ hs.discardElement (this.wrapper);
+ hs.expanders[this.key] = null;
+ if (this.loading) hs.loading.style.left = '-9999px';
+},
+
+writeCredits : function () {
+ this.credits = hs.createElement('a', {
+ href: hs.creditsHref,
+ target: hs.creditsTarget,
+ className: 'highslide-credits',
+ innerHTML: hs.lang.creditsText,
+ title: hs.lang.creditsTitle
+ });
+ this.createOverlay({
+ overlayId: this.credits,
+ position: this.creditsPosition || 'top left'
+ });
+},
+
+getInline : function(types, addOverlay) {
+ for (var i = 0; i < types.length; i++) {
+ var type = types[i], s = null;
+ if (!this[type +'Id'] && this.thumbsUserSetId)
+ this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId;
+ if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']);
+ if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try {
+ s = eval(this[type +'Eval']);
+ } catch (e) {}
+ if (!this[type] && this[type +'Text']) {
+ s = this[type +'Text'];
+ }
+ if (!this[type] && !s) {
+ var next = this.a.nextSibling;
+ while (next && !hs.isHsAnchor(next)) {
+ if ((new RegExp('highslide-'+ type)).test(next.className || null)) {
+ this[type] = next.cloneNode(1);
+ break;
+ }
+ next = next.nextSibling;
+ }
+ }
+
+ if (!this[type] && s) this[type] = hs.createElement('div',
+ { className: 'highslide-'+ type, innerHTML: s } );
+
+ if (addOverlay && this[type]) {
+ var o = { position: (type == 'heading') ? 'above' : 'below' };
+ for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x];
+ o.overlayId = this[type];
+ this.createOverlay(o);
+ }
+ }
+},
+
+
+// on end move and resize
+doShowHide : function(visibility) {
+ if (hs.hideSelects) this.showHideElements('SELECT', visibility);
+ if (hs.hideIframes) this.showHideElements('IFRAME', visibility);
+ if (hs.geckoMac) this.showHideElements('*', visibility);
+},
+showHideElements : function (tagName, visibility) {
+ var els = document.getElementsByTagName(tagName);
+ var prop = tagName == '*' ? 'overflow' : 'visibility';
+ for (var i = 0; i < els.length; i++) {
+ if (prop == 'visibility' || (document.defaultView.getComputedStyle(
+ els[i], "").getPropertyValue('overflow') == 'auto'
+ || els[i].getAttribute('hidden-by') != null)) {
+ var hiddenBy = els[i].getAttribute('hidden-by');
+ if (visibility == 'visible' && hiddenBy) {
+ hiddenBy = hiddenBy.replace('['+ this.key +']', '');
+ els[i].setAttribute('hidden-by', hiddenBy);
+ if (!hiddenBy) els[i].style[prop] = els[i].origProp;
+ } else if (visibility == 'hidden') { // hide if behind
+ var elPos = hs.getPosition(els[i]);
+ elPos.w = els[i].offsetWidth;
+ elPos.h = els[i].offsetHeight;
+
+
+ var clearsX = (elPos.x + elPos.w < this.x.get('opos')
+ || elPos.x > this.x.get('opos') + this.x.get('osize'));
+ var clearsY = (elPos.y + elPos.h < this.y.get('opos')
+ || elPos.y > this.y.get('opos') + this.y.get('osize'));
+ var wrapperKey = hs.getWrapperKey(els[i]);
+ if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
+ if (!hiddenBy) {
+ els[i].setAttribute('hidden-by', '['+ this.key +']');
+ els[i].origProp = els[i].style[prop];
+ els[i].style[prop] = 'hidden';
+
+ } else if (hiddenBy.indexOf('['+ this.key +']') == -1) {
+ els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']');
+ }
+ } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey)
+ && wrapperKey != this.key) { // on move
+ els[i].setAttribute('hidden-by', '');
+ els[i].style[prop] = els[i].origProp || '';
+ } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) {
+ els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', ''));
+ }
+
+ }
+ }
+ }
+},
+
+focus : function() {
+ this.wrapper.style.zIndex = hs.zIndexCounter += 2;
+ // blur others
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && i == hs.focusKey) {
+ var blurExp = hs.expanders[i];
+ blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur';
+ if (blurExp.isImage) {
+ blurExp.content.style.cursor = hs.ie ? 'hand' : 'pointer';
+ blurExp.content.title = hs.lang.focusTitle;
+ }
+ }
+ }
+
+ // focus this
+ if (this.outline) this.outline.table.style.zIndex
+ = this.wrapper.style.zIndex - 1;
+ this.content.className = 'highslide-'+ this.contentType;
+ if (this.isImage) {
+ this.content.title = hs.lang.restoreTitle;
+
+ if (hs.restoreCursor) {
+ hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer';
+ if (hs.ie && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand';
+ this.content.style.cursor = hs.styleRestoreCursor;
+ }
+ }
+ hs.focusKey = this.key;
+ hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+},
+moveTo: function(x, y) {
+ this.x.setPos(x);
+ this.y.setPos(y);
+},
+resize : function (e) {
+ var w, h, r = e.width / e.height;
+ w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full));
+ if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full;
+ h = this.isHtml ? e.height + e.dY : w / r;
+ if (h < Math.min(this.minHeight, this.y.full)) {
+ h = Math.min(this.minHeight, this.y.full);
+ if (this.isImage) w = h * r;
+ }
+ this.resizeTo(w, h);
+},
+resizeTo: function(w, h) {
+ this.y.setSize(h);
+ this.x.setSize(w);
+},
+
+close : function() {
+ if (this.isClosing || !this.isExpanded) return;
+ this.isClosing = true;
+
+ hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+
+ try {
+ if (this.isHtml) this.htmlPrepareClose();
+ this.content.style.cursor = 'default';
+ this.changeSize(
+ 0, {
+ wrapper: {
+ width : this.x.t,
+ height : this.y.t,
+ left: this.x.tpos - this.x.cb + this.x.tb,
+ top: this.y.tpos - this.y.cb + this.y.tb
+ },
+ content: {
+ left: 0,
+ top: 0,
+ width: this.x.t,
+ height: this.y.t
+ }
+ }, hs.restoreDuration
+ );
+ } catch (e) { this.afterClose(); }
+},
+
+htmlPrepareClose : function() {
+ if (hs.geckoMac) { // bad redraws
+ if (!hs.mask) hs.mask = hs.createElement('div', null,
+ { position: 'absolute' }, hs.container);
+ hs.setStyles(hs.mask, { width: this.x.size +'px', height: this.y.size +'px',
+ left: this.x.pos +'px', top: this.y.pos +'px', display: 'block' });
+ }
+ if (this.objectType == 'swf') try { hs.$(this.body.id).StopPlay(); } catch (e) {}
+
+ if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject();
+ if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent)
+ this.scrollerDiv.style.overflow = 'hidden';
+},
+
+destroyObject : function () {
+ if (hs.ie && this.iframe)
+ try { this.iframe.contentWindow.document.body.innerHTML = ''; } catch (e) {}
+ if (this.objectType == 'swf') swfobject.removeSWF(this.body.id);
+ this.body.innerHTML = '';
+},
+
+sleep : function() {
+ if (this.outline) this.outline.table.style.display = 'none';
+ this.releaseMask = null;
+ this.wrapper.style.display = 'none';
+ hs.push(hs.sleeping, this);
+},
+
+awake : function() {try {
+
+ hs.expanders[this.key] = this;
+
+ if (!hs.allowMultipleInstances &&hs.focusKey != this.key) {
+ try { hs.expanders[hs.focusKey].close(); } catch (e){}
+ }
+
+ var z = hs.zIndexCounter++, stl = { display: '', zIndex: z };
+ hs.setStyles (this.wrapper, stl);
+ this.isClosing = false;
+
+ var o = this.outline || 0;
+ if (o) {
+ if (!this.outlineWhileAnimating) stl.visibility = 'hidden';
+ hs.setStyles (o.table, stl);
+ }
+
+ this.show();
+} catch (e) {}
+
+
+},
+
+createOverlay : function (o) {
+ var el = o.overlayId;
+ if (typeof el == 'string') el = hs.getNode(el);
+ if (o.html) el = hs.createElement('div', { innerHTML: o.html });
+ if (!el || typeof el == 'string') return;
+ el.style.display = 'block';
+ this.genOverlayBox();
+ var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto';
+ if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px';
+ var overlay = hs.createElement(
+ 'div', {
+ id: 'hsId'+ hs.idCounter++,
+ hsId: o.hsId
+ }, {
+ position: 'absolute',
+ visibility: 'hidden',
+ width: width,
+ direction: hs.lang.cssDirection || '',
+ opacity: 0
+ },this.overlayBox,
+ true
+ );
+
+ overlay.appendChild(el);
+ hs.extend(overlay, {
+ opacity: 1,
+ offsetX: 0,
+ offsetY: 0,
+ dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250
+ });
+ hs.extend(overlay, o);
+
+ if (this.gotOverlays) {
+ this.positionOverlay(overlay);
+ if (!overlay.hideOnMouseOut || this.mouseIsOver)
+ hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur);
+ }
+ hs.push(this.overlays, hs.idCounter - 1);
+},
+positionOverlay : function(overlay) {
+ var p = overlay.position || 'middle center',
+ offX = overlay.offsetX,
+ offY = overlay.offsetY;
+ if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay);
+ if (/left$/.test(p)) overlay.style.left = offX +'px';
+
+ if (/center$/.test(p)) hs.setStyles (overlay, {
+ left: '50%',
+ marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px'
+ });
+
+ if (/right$/.test(p)) overlay.style.right = - offX +'px';
+
+ if (/^leftpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ right: '100%',
+ marginRight: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p1 = overlay.offsetWidth;
+
+ } else if (/^rightpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: '100%',
+ marginLeft: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p2 = overlay.offsetWidth;
+ }
+
+ if (/^top/.test(p)) overlay.style.top = offY +'px';
+ if (/^middle/.test(p)) hs.setStyles (overlay, {
+ top: '50%',
+ marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px'
+ });
+ if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px';
+ if (/^above$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ bottom: '100%',
+ marginBottom: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p1 = overlay.offsetHeight;
+
+ } else if (/^below$/.test(p)) {
+ hs.setStyles(overlay, {
+ position: 'relative',
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ top: '100%',
+ marginTop: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p2 = overlay.offsetHeight;
+ overlay.style.position = 'absolute';
+ }
+},
+
+getOverlays : function() {
+ this.getInline(['heading', 'caption'], true);
+ if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move';
+ if (hs.showCredits) this.writeCredits();
+ for (var i = 0; i < hs.overlays.length; i++) {
+ var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup;
+ if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId)
+ || (sg && sg === this.slideshowGroup)) {
+ if (this.isImage || (this.isHtml && o.useOnHtml))
+ this.createOverlay(o);
+ }
+ }
+ var os = [];
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (/panel$/.test(o.position)) this.positionOverlay(o);
+ else hs.push(os, o);
+ }
+ for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]);
+ this.gotOverlays = true;
+},
+genOverlayBox : function() {
+ if (!this.overlayBox) this.overlayBox = hs.createElement (
+ 'div', {
+ className: this.wrapperClassName
+ }, {
+ position : 'absolute',
+ width: (this.x.size || (this.useBox ? this.width : null)
+ || this.x.full) +'px',
+ height: (this.y.size || this.y.full) +'px',
+ visibility : 'hidden',
+ overflow : 'hidden',
+ zIndex : hs.ie ? 4 : null
+ },
+ hs.container,
+ true
+ );
+},
+sizeOverlayBox : function(doWrapper, doPanels) {
+ var overlayBox = this.overlayBox,
+ x = this.x,
+ y = this.y;
+ hs.setStyles( overlayBox, {
+ width: x.size +'px',
+ height: y.size +'px'
+ });
+ if (doWrapper || doPanels) {
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat');
+ if (o && /^(above|below)$/.test(o.position)) {
+ if (ie6) {
+ o.style.width = (overlayBox.offsetWidth + 2 * x.cb
+ + x.p1 + x.p2) +'px';
+ }
+ y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight;
+ }
+ if (o && ie6 && /^(left|right)panel$/.test(o.position)) {
+ o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px';
+ }
+ }
+ }
+ if (doWrapper) {
+ hs.setStyles(this.content, {
+ top: y.p1 +'px'
+ });
+ hs.setStyles(overlayBox, {
+ top: (y.p1 + y.cb) +'px'
+ });
+ }
+},
+
+showOverlays : function() {
+ var b = this.overlayBox;
+ b.className = '';
+ hs.setStyles(b, {
+ top: (this.y.p1 + this.y.cb) +'px',
+ left: (this.x.p1 + this.x.cb) +'px',
+ overflow : 'visible'
+ });
+ if (hs.safari) b.style.visibility = 'visible';
+ this.wrapper.appendChild (b);
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ o.style.zIndex = 4;
+ if (!o.hideOnMouseOut || this.mouseIsOver) {
+ o.style.visibility = 'visible';
+ hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: o.opacity }, o.dur);
+ }
+ }
+},
+
+destroyOverlays : function() {
+ if (!this.overlays.length) return;
+ if (this.isHtml && this.preserveContent) {
+ this.overlayBox.style.top = '-9999px';
+ hs.container.appendChild(this.overlayBox);
+ } else
+ hs.discardElement(this.overlayBox);
+},
+
+
+
+createFullExpand : function () {
+ this.fullExpandLabel = hs.createElement(
+ 'a', {
+ href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();',
+ title: hs.lang.fullExpandTitle,
+ className: 'highslide-full-expand'
+ }
+ );
+
+ this.createOverlay({
+ overlayId: this.fullExpandLabel,
+ position: hs.fullExpandPosition,
+ hideOnMouseOut: true,
+ opacity: hs.fullExpandOpacity
+ });
+},
+
+doFullExpand : function () {
+ try {
+ if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel);
+
+ this.focus();
+ var xSize = this.x.size;
+ this.resizeTo(this.x.full, this.y.full);
+
+ var xpos = this.x.pos - (this.x.size - xSize) / 2;
+ if (xpos < hs.marginLeft) xpos = hs.marginLeft;
+
+ this.moveTo(xpos, this.y.pos);
+ this.doShowHide('hidden');
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+
+afterClose : function () {
+ this.a.className = this.a.className.replace('highslide-active-anchor', '');
+
+ this.doShowHide('visible');
+
+ if (this.isHtml && this.preserveContent) {
+ this.sleep();
+ } else {
+ if (this.outline && this.outlineWhileAnimating) this.outline.destroy();
+
+ hs.discardElement(this.wrapper);
+ }
+ if (hs.mask) hs.mask.style.display = 'none';
+
+ hs.expanders[this.key] = null;
+ hs.reOrder();
+}
+
+};
+
+
+// hs.Ajax object prototype
+hs.Ajax = function (a, content, pre) {
+ this.a = a;
+ this.content = content;
+ this.pre = pre;
+};
+
+hs.Ajax.prototype = {
+run : function () {
+ if (!this.src) this.src = hs.getSrc(this.a);
+ if (this.src.match('#')) {
+ var arr = this.src.split('#');
+ this.src = arr[0];
+ this.id = arr[1];
+ }
+ if (hs.cachedGets[this.src]) {
+ this.cachedGet = hs.cachedGets[this.src];
+ if (this.id) this.getElementContent();
+ else this.loadHTML();
+ return;
+ }
+ try { this.xmlHttp = new XMLHttpRequest(); }
+ catch (e) {
+ try { this.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
+ catch (e) {
+ try { this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
+ catch (e) { this.onError(); }
+ }
+ }
+ var pThis = this;
+ this.xmlHttp.onreadystatechange = function() {
+ if(pThis.xmlHttp.readyState == 4) {
+ if (pThis.id) pThis.getElementContent();
+ else pThis.loadHTML();
+ }
+ };
+ var src = this.src;
+ if (hs.forceAjaxReload)
+ src = src.replace(/$/, (/\?/.test(src) ? '&' : '?') +'dummy='+ (new Date()).getTime());
+ this.xmlHttp.open('GET', src, true);
+ this.xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+ this.xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+ this.xmlHttp.send(null);
+},
+
+getElementContent : function() {
+ hs.init();
+ var attribs = window.opera || hs.ie6SSL ? { src: 'about:blank' } : null;
+
+ this.iframe = hs.createElement('iframe', attribs,
+ { position: 'absolute', top: '-9999px' }, hs.container);
+
+ this.loadHTML();
+},
+
+loadHTML : function() {
+ var s = this.cachedGet || this.xmlHttp.responseText;
+ if (this.pre) hs.cachedGets[this.src] = s;
+ if (!hs.ie || hs.uaVersion >= 5.5) {
+ s = s.replace(/\s/g, ' ').replace(
+ new RegExp('<link[^>]*>', 'gi'), '').replace(
+ new RegExp('<script[^>]*>.*?</script>', 'gi'), '');
+
+ if (this.iframe) {
+ var doc = this.iframe.contentDocument;
+ if (!doc && this.iframe.contentWindow) doc = this.iframe.contentWindow.document;
+ if (!doc) { // Opera
+ var pThis = this;
+ setTimeout(function() { pThis.loadHTML(); }, 25);
+ return;
+ }
+ doc.open();
+ doc.write(s);
+ doc.close();
+ try { s = doc.getElementById(this.id).innerHTML; } catch (e) {
+ try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera
+ }
+ hs.discardElement(this.iframe);
+ } else {
+ s = s.replace(new RegExp('^.*?<body[^>]*>(.*?)</body>.*?$', 'i'), '$1');
+ }
+ }
+ hs.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s;
+ this.onLoad();
+ for (var x in this) this[x] = null;
+}
+};
+if (hs.ie) {
+ (function () {
+ try {
+ document.documentElement.doScroll('left');
+ } catch (e) {
+ setTimeout(arguments.callee, 50);
+ return;
+ }
+ hs.ready();
+ })();
+}
+hs.addEventListener(document, 'DOMContentLoaded', hs.ready);
+hs.addEventListener(window, 'load', hs.ready);
+hs.langDefaults = hs.lang;
+// history
+var HsExpander = hs.Expander;
+
+// set handlers
+hs.addEventListener(window, 'load', function() {
+ if (hs.expandCursor) {
+ var sel = '.highslide img',
+ dec = 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;';
+
+ var style = hs.createElement('style', { type: 'text/css' }, null,
+ document.getElementsByTagName('HEAD')[0]);
+
+ if (!hs.ie) {
+ style.appendChild(document.createTextNode(sel + " {" + dec + "}"));
+ } else {
+ var last = document.styleSheets[document.styleSheets.length - 1];
+ if (typeof(last.addRule) == "object") last.addRule(sel, dec);
+ }
+ }
+});
+hs.addEventListener(window, 'resize', function() {
+ hs.getPageSize();
+});
+hs.addEventListener(document, 'mousemove', function(e) {
+ hs.mouse = { x: e.clientX, y: e.clientY };
+});
+hs.addEventListener(document, 'mousedown', hs.mouseClickHandler);
+hs.addEventListener(document, 'mouseup', hs.mouseClickHandler);
+
+hs.addEventListener(document, 'ready', hs.getAnchors);
+hs.addEventListener(window, 'load', hs.preloadImages);
+hs.addEventListener(window, 'load', hs.preloadAjax); \ No newline at end of file
diff --git a/highslide/highslide-with-html.packed.js b/highslide/highslide-with-html.packed.js
new file mode 100644
index 0000000..720570c
--- /dev/null
+++ b/highslide/highslide-with-html.packed.js
@@ -0,0 +1,28 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default +inline +ajax +iframe +flash +packed
+Author: Torstein Hønsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('u m={1d:{6s:\'98\',8Q:\'aU...\',8U:\'6X 29 aT\',a0:\'6X 29 aO 29 aQ\',9Z:\'aR 29 aY I (f)\',9o:\'b5 by <i>8j 8i</i>\',9f:\'b6 29 b3 8j 8i aZ\',8z:\'8v\',8y:\'8W\',8K:\'8X\',8B:\'8g\',8D:\'8g (b1)\',97:\'aN\',az:\'8e\',aA:\'8e 5P (8b)\',aB:\'87\',aL:\'87 5P (8b)\',8A:\'8v (79 1e)\',8x:\'8W (79 2K)\',8E:\'8X\',bD:\'1:1\',7k:\'6X 29 2f 2u, bH 8S bE 29 3L. bs 79 bg V 1T 8S 6b.\'},4n:\'R/bc/\',6B:\'ba.7g\',4D:\'bb.7g\',6m:61,a2:61,47:15,6G:15,4i:15,69:15,3T:bp,8R:0.75,7u:J,7J:5,3k:2,bq:3,4l:1i,9Y:\'3H 2K\',9k:1,9M:J,9z:\'bn://R.bm/\',9p:\'bk\',8u:J,7t:[\'a\'],5q:1i,6I:J,4c:J,2W:\'4A\',7A:J,7Z:J,3y:8Y,4E:8Y,4w:J,1x:\'bA-aG\',8o:{8q:\'<1h 3a="R-aM"><92>\'+\'<3b 3a="R-6b">\'+\'<a 2r="#" 2q="{m.1d.8A}" 2M="D m.6b(k)">\'+\'<2m>{m.1d.8z}</2m></a>\'+\'</3b>\'+\'<3b 3a="R-1T">\'+\'<a 2r="#" 2q="{m.1d.8x}" 2M="D m.1T(k)">\'+\'<2m>{m.1d.8y}</2m></a>\'+\'</3b>\'+\'<3b 3a="R-3L">\'+\'<a 2r="#" 2q="{m.1d.8E}" 2M="D 1i">\'+\'<2m>{m.1d.8K}</2m></a>\'+\'</3b>\'+\'<3b 3a="R-2f">\'+\'<a 2r="#" 2q="{m.1d.8D}" 2M="D m.2f(k)">\'+\'<2m>{m.1d.8B}</2m></a>\'+\'</3b>\'+\'</92></1h>\'+\'<1h 3a="R-14"></1h>\'+\'<1h 3a="R-bx"><1h>\'+\'<2m 3a="R-3p" 2q="{m.1d.97}"><2m></2m></2m>\'+\'</1h></1h>\'},4z:[],6Q:J,N:[],6R:[\'4w\',\'2F\',\'1x\',\'3k\',\'bL\',\'bI\',\'bz\',\'8f\',\'bl\',\'bj\',\'bo\',\'8n\',\'9g\',\'7Z\',\'K\',\'M\',\'6j\',\'5q\',\'6I\',\'4c\',\'bi\',\'bh\',\'b9\',\'2c\',\'7A\',\'36\',\'3W\',\'2W\',\'6d\',\'7N\',\'3y\',\'4E\',\'8s\',\'bf\',\'41\',\'23\',\'9t\',\'9q\',\'S\'],1P:[],64:0,br:{x:[\'9O\',\'1e\',\'6o\',\'2K\',\'9w\'],y:[\'53\',\'16\',\'73\',\'3H\',\'68\']},5v:{},8n:{},8f:{},6d:{ai:{},1D:{},an:{}},3c:[],3C:{},3B:[],63:[],3S:[],5g:{},6K:{},5i:[],3z:7q((4y.83.5r().2U(/.+(?:8h|bG|bF|1q)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1q:(U.4x&&!1F.35),4Y:/bJ/.19(4y.83),7B:/bC.+8h:1\\.[0-8].+bw/.19(4y.83),$:B(1p){q(1p)D U.6N(1p)},1Y:B(1L,2L){1L[1L.18]=2L},Z:B(8T,3j,3l,4s,8J){u C=U.Z(8T);q(3j)m.3g(C,3j);q(8J)m.P(C,{7e:0,ad:\'2d\',6M:0});q(3l)m.P(C,3l);q(4s)4s.1H(C);D C},3g:B(C,3j){V(u x 3r 3j)C[x]=3j[x];D C},P:B(C,3l){V(u x 3r 3l){q(m.1q&&x==\'1z\'){q(3l[x]>0.99)C.F.b8(\'4j\');L C.F.4j=\'8O(1z=\'+(3l[x]*2y)+\')\'}L C.F[x]=3l[x]}},3N:B(C,1m,2D){u 3t,49,3I;q(1w 2D!=\'7a\'||2D===G){u 2H=9U;2D={3w:2H[2],23:2H[3],7U:2H[4]}}q(1w 2D.3w!=\'3Q\')2D.3w=61;2D.23=1s[2D.23]||1s.96;2D.5a=m.3g({},1m);V(u 2w 3r 1m){u e=1u m.1B(C,2D,2w);3t=7q(m.6c(C,2w))||0;49=7q(1m[2w]);3I=2w!=\'1z\'?\'E\':\'\';e.2I(3t,49,3I)}},6c:B(C,1m){q(U.7r){D U.7r.9m(C,G).9l(1m)}L{q(1m==\'1z\')1m=\'4j\';u 2L=C.4I[1m.1Q(/\\-(\\w)/g,B(a,b){D b.aI()})];q(1m==\'4j\')2L=2L.1Q(/8O\\(1z=([0-9]+)\\)/,B(a,b){D b/2y});D 2L===\'\'?1:2L}},5z:B(){u d=U,w=1F,4S=d.7I&&d.7I!=\'9J\'?d.59:d.14;u K=m.1q?4S.8P:(d.59.8P||57.aD),M=m.1q?4S.ax:57.aw;m.3F={K:K,M:M,5D:m.1q?4S.5D:av,5F:m.1q?4S.5F:ay}},7s:B(C){u p={x:C.8a,y:C.6V};43(C.88){C=C.88;p.x+=C.8a;p.y+=C.6V;q(C!=U.14&&C!=U.59){p.x-=C.5D;p.y-=C.5F}}D p},4T:B(a,1D,2I,T){q(!a)a=m.Z(\'a\',G,{1N:\'2d\'},m.1R);q(1w a.4W==\'B\')D 1D;q(T==\'2E\'){V(u i=0;i<m.3B.18;i++){q(m.3B[i]&&m.3B[i].a==a){m.3B[i].9F();m.3B[i]=G;D 1i}}m.8c=J}1n{1u m.4v(a,1D,2I,T);D 1i}1o(e){D J}},8C:B(a,1D,2I){D m.4T(a,1D,2I,\'2E\')},6e:B(){D m.Z(\'1h\',{1l:\'R-2E-O\',2n:m.8r(m.8o.8q)})},3Y:B(C,4a,1l){u 1f=C.3E(4a);V(u i=0;i<1f.18;i++){q((1u 4q(1l)).19(1f[i].1l)){D 1f[i]}}D G},8r:B(s){s=s.1Q(/\\s/g,\' \');u 2s=/{m\\.1d\\.([^}]+)\\}/g,51=s.2U(2s),1d;q(51)V(u i=0;i<51.18;i++){1d=51[i].1Q(2s,"$1");q(1w m.1d[1d]!=\'2b\')s=s.1Q(51[i],m.1d[1d])}D s},6n:B(a){V(u i=0;i<m.3S.18;i++){q(m.3S[i][0]==a){u c=m.3S[i][1];m.3S[i][1]=c.4J(1);D c}}D G},9B:B(e){u 1L=m.4N();V(u i=0;i<1L.44.18;i++){u a=1L.44[i];q(m.4f(a,\'2c\')==\'2J\'&&m.4f(a,\'7A\'))m.1Y(m.63,a)}m.7i(0)},7i:B(i){q(!m.63[i])D;u a=m.63[i];u 52=m.4m(m.4f(a,\'6j\'));q(!52)52=m.6e();u 2J=1u m.5B(a,52,1);2J.6P=B(){};2J.2N=B(){m.1Y(m.3S,[a,52]);m.7i(i+1)};2J.76()},89:B(){u 7T=0,60=-1,N=m.N,A,1y;V(u i=0;i<N.18;i++){A=N[i];q(A){1y=A.Y.F.1y;q(1y&&1y>7T){7T=1y;60=i}}}q(60==-1)m.2i=-1;L N[60].30()},4f:B(a,4X){a.4W=a.2M;u p=a.4W?a.4W():G;a.4W=G;D(p&&1w p[4X]!=\'2b\')?p[4X]:(1w m[4X]!=\'2b\'?m[4X]:G)},5o:B(a){u S=m.4f(a,\'S\');q(S)D S;D a.2r},4m:B(1p){u 1E=m.$(1p),3M=m.6K[1p],a={};q(!1E&&!3M)D G;q(!3M){3M=1E.4J(J);3M.1p=\'\';m.6K[1p]=3M;D 1E}L{D 3M.4J(J)}},3e:B(d){q(d)m.7o.1H(d);m.7o.2n=\'\'},8l:B(4M,A){u 3v=A=A||m.3m();q(m.3K)D 1i;L m.3v=3v;1n{m.3K=4M;4M.2M()}1o(e){m.3v=m.3K=G}1n{A.2f()}1o(e){}D 1i},5X:B(C,20){u A=m.3m(C);q(A){4M=A.6x(20);D m.8l(4M,A)}L D 1i},6b:B(C){D m.5X(C,-1)},1T:B(C){D m.5X(C,1)},58:B(e){q(!e)e=1F.1X;q(!e.2l)e.2l=e.7F;q(1w e.2l.6i!=\'2b\')D J;u A=m.3m();u 20=G;94(e.aP){1G 70:q(A)A.7X();D J;1G 32:1G 34:1G 39:1G 40:20=1;7P;1G 8:1G 33:1G 37:1G 38:20=-1;7P;1G 27:1G 13:20=0}q(20!==G){m.4L(U,1F.35?\'7z\':\'7y\',m.58);q(!m.8u)D J;q(e.65)e.65();L e.aW=1i;q(A){q(20==0){A.2f()}L{m.5X(A.Q,20)}D 1i}}D J},aV:B(11){m.1Y(m.1P,m.3g(11,{2R:\'2R\'+m.64++}))},7v:B(6H,5S){u C,2s=/^R-Y-([0-9]+)$/;C=6H;43(C.2S){q(C.1p&&2s.19(C.1p))D C.1p.1Q(2s,"$1");C=C.2S}q(!5S){C=6H;43(C.2S){q(C.4a&&m.56(C)){V(u Q=0;Q<m.N.18;Q++){u A=m.N[Q];q(A&&A.a==C)D Q}}C=C.2S}}D G},3m:B(C,5S){q(1w C==\'2b\')D m.N[m.2i]||G;q(1w C==\'3Q\')D m.N[C]||G;q(1w C==\'7S\')C=m.$(C);D m.N[m.7v(C,5S)]||G},56:B(a){D(a.2M&&a.2M.9A().1Q(/\\s/g,\' \').2U(/m.(c7|e)cW/))},at:B(){V(u i=0;i<m.N.18;i++)q(m.N[i]&&m.N[i].4P)m.89()},7p:B(e){q(!e)e=1F.1X;q(e.cV>1)D J;q(!e.2l)e.2l=e.7F;u C=e.2l;43(C.2S&&!(/R-(2u|3L|2E|3p)/.19(C.1l))){C=C.2S}u A=m.3m(C);q(A&&(A.4k||!A.4P))D J;q(A&&e.T==\'6f\'){q(e.2l.6i)D J;u 2U=C.1l.2U(/R-(2u|3L|3p)/);q(2U){m.2e={A:A,T:2U[1],1e:A.x.H,K:A.x.I,16:A.y.H,M:A.y.I,8V:e.5u,8N:e.5N};m.1O(U,\'6S\',m.84);q(e.65)e.65();q(/R-(2u|2E)-7h/.19(A.O.1l)){A.30();m.7c=J}D 1i}L q(/R-2E/.19(C.1l)&&m.2i!=A.Q){A.30();A.45(\'1k\')}}L q(e.T==\'91\'){m.4L(U,\'6S\',m.84);q(m.2e){q(m.3O&&m.2e.T==\'2u\')m.2e.A.O.F.3u=m.3O;u 3h=m.2e.3h;q(!3h&&!m.7c&&!/(3L|3p)/.19(m.2e.T)){A.2f()}L q(3h||(!3h&&m.8c)){m.2e.A.45(\'1k\')}q(m.2e.A.2X)m.2e.A.2X.F.1N=\'2d\';m.7c=1i;m.2e=G}L q(/R-2u-7h/.19(C.1l)){C.F.3u=m.3O}}D 1i},84:B(e){q(!m.2e)D J;q(!e)e=1F.1X;u a=m.2e,A=a.A;q(A.W){q(!A.2X)A.2X=m.Z(\'1h\',G,{1c:\'21\',K:A.x.I+\'E\',M:A.y.I+\'E\',1e:A.x.cb+\'E\',16:A.y.cb+\'E\',1y:4,8L:(m.1q?\'cS\':\'2d\'),1z:.cN},A.Y,J);q(A.2X.F.1N==\'2d\')A.2X.F.1N=\'\'}a.5k=e.5u-a.8V;a.5h=e.5N-a.8N;u 7m=1s.bN(1s.95(a.5k,2)+1s.95(a.5h,2));q(!a.3h)a.3h=(a.T!=\'2u\'&&7m>0)||(7m>(m.d0||5));q(a.3h&&e.5u>5&&e.5N>5){q(a.T==\'3p\')A.3p(a);L{A.7f(a.1e+a.5k,a.16+a.5h);q(a.T==\'2u\')A.O.F.3u=\'3L\'}}D 1i},8p:B(e){1n{q(!e)e=1F.1X;u 5G=/cX/i.19(e.T);q(!e.2l)e.2l=e.7F;q(m.1q)e.7D=5G?e.cM:e.cL;u A=m.3m(e.2l);q(!A.4P)D;q(!A||!e.7D||m.3m(e.7D,J)==A||m.2e)D;V(u i=0;i<A.1P.18;i++)(B(){u o=m.$(\'2R\'+A.1P[i]);q(o&&o.54){q(5G)m.P(o,{1r:\'2o\',1N:\'\'});m.3N(o,{1z:5G?o.1z:0},o.3d)}})()}1o(e){}},1O:B(C,1X,2Q){q(C==U&&1X==\'3A\')m.1Y(m.5i,2Q);1n{C.1O(1X,2Q,1i)}1o(e){1n{C.8k(\'4F\'+1X,2Q);C.cP(\'4F\'+1X,2Q)}1o(e){C[\'4F\'+1X]=2Q}}},4L:B(C,1X,2Q){1n{C.4L(1X,2Q,1i)}1o(e){1n{C.8k(\'4F\'+1X,2Q)}1o(e){C[\'4F\'+1X]=G}}},5j:B(i){q(m.6Q&&m.4z[i]&&m.4z[i]!=\'2b\'){u 1v=U.Z(\'1v\');1v.3s=B(){1v=G;m.5j(i+1)};1v.S=m.4z[i]}},8M:B(3Q){q(3Q&&1w 3Q!=\'7a\')m.7J=3Q;u 1L=m.4N();V(u i=0;i<1L.4b.18&&i<m.7J;i++){m.1Y(m.4z,m.5o(1L.4b[i]))}q(m.1x)1u m.4O(m.1x,B(){m.5j(0)});L m.5j(0);q(m.4D)u 7g=m.Z(\'1v\',{S:m.4n+m.4D})},5n:B(){q(!m.1R){m.5z();m.5W=m.1q&&m.3z<7;m.9e=m.5W&&6A.cI==\'cK:\';V(u x 3r m.5c){q(1w m[x]!=\'2b\')m.1d[x]=m[x];L q(1w m.1d[x]==\'2b\'&&1w m.5c[x]!=\'2b\')m.1d[x]=m.5c[x]}m.1R=m.Z(\'1h\',{1l:\'R-1R\'},{1c:\'21\',1e:0,16:0,K:\'2y%\',1y:m.3T,6w:\'98\'},U.14,J);m.22=m.Z(\'a\',{1l:\'R-22\',2q:m.1d.8U,2n:m.1d.8Q,2r:\'9W:;\'},{1c:\'21\',16:\'-3x\',1z:m.8R,1y:1},m.1R);m.7o=m.Z(\'1h\',G,{1N:\'2d\'},m.1R);m.2C=m.Z(\'1h\',G,{ab:\'aa\',d2:\'d3\'},G,J);1s.d4=B(t,b,c,d){D c*t/d+b};1s.96=B(t,b,c,d){D c*(t/=d)*t+b};m.9i=m.5W;m.9n=((1F.35&&m.3z<9)||4y.ao==\'9a\'||(m.1q&&m.3z<5.5))}},3A:B(){q(m.6U)D;m.6U=J;V(u i=0;i<m.5i.18;i++)m.5i[i]()},8F:B(){u C,1f,4x=[],4b=[],44=[],31={},2s;V(u i=0;i<m.7t.18;i++){1f=U.3E(m.7t[i]);V(u j=0;j<1f.18;j++){C=1f[j];2s=m.56(C);q(2s){m.1Y(4x,C);q(2s[0]==\'m.4T\')m.1Y(4b,C);L q(2s[0]==\'m.8C\')m.1Y(44,C);u g=m.4f(C,\'41\')||\'2d\';q(!31[g])31[g]=[];m.1Y(31[g],C)}}}m.5H={4x:4x,31:31,4b:4b,44:44};D m.5H},4N:B(){D m.5H||m.8F()},2f:B(C){u A=m.3m(C);q(A)A.2f();D 1i}};m.1B=B(2j,1J,1m){k.1J=1J;k.2j=2j;k.1m=1m;q(!1J.93)1J.93={}};m.1B.4R={6u:B(){(m.1B.2Z[k.1m]||m.1B.2Z.8m)(k);q(k.1J.2Z)k.1J.2Z.8t(k.2j,k.3J,k)},2I:B(8Z,29,3I){k.85=(1u 5w()).5x();k.3t=8Z;k.49=29;k.3I=3I;k.3J=k.3t;k.H=k.82=0;u 57=k;B t(5b){D 57.2Z(5b)}t.2j=k.2j;q(t()&&m.3c.1Y(t)==1){m.8d=cG(B(){u 3c=m.3c;V(u i=0;i<3c.18;i++)q(!3c[i]())3c.c6(i--,1);q(!3c.18){c4(m.8d)}},13)}},2Z:B(5b){u t=(1u 5w()).5x();q(5b||t>=k.1J.3w+k.85){k.3J=k.49;k.H=k.82=1;k.6u();k.1J.5a[k.1m]=J;u 7V=J;V(u i 3r k.1J.5a)q(k.1J.5a[i]!==J)7V=1i;q(7V){q(k.1J.7U)k.1J.7U.8t(k.2j)}D 1i}L{u n=t-k.85;k.82=n/k.1J.3w;k.H=k.1J.23(n,0,1,k.1J.3w);k.3J=k.3t+((k.49-k.3t)*k.H);k.6u()}D J}};m.3g(m.1B,{2Z:{1z:B(1B){m.P(1B.2j,{1z:1B.3J})},8m:B(1B){q(1B.2j.F&&1B.2j.F[1B.1m]!=G)1B.2j.F[1B.1m]=1B.3J+1B.3I;L 1B.2j[1B.1m]=1B.3J}}});m.4O=B(1x,2N){k.2N=2N;k.1x=1x;u v=m.3z,5M;k.72=m.1q&&v>=5.5&&v<7;q(!1x){q(2N)2N();D}m.5n();k.2k=m.Z(\'2k\',{cd:0},{1r:\'1k\',1c:\'21\',cc:\'c9\',K:0},m.1R,J);u 6p=m.Z(\'6p\',G,G,k.2k,1);k.28=[];V(u i=0;i<=8;i++){q(i%3==0)5M=m.Z(\'5M\',G,{M:\'1V\'},6p,J);k.28[i]=m.Z(\'28\',G,G,5M,J);u F=i!=4?{c1:0,c0:0}:{1c:\'3G\'};m.P(k.28[i],F)}k.28[4].1l=1x+\' R-1j\';k.8H()};m.4O.4R={8H:B(){u S=m.4n+(m.bS||"bR/")+k.1x+".bQ";u 8I=m.4Y?m.1R:G;k.2P=m.Z(\'1v\',G,{1c:\'21\',16:\'-3x\'},8I,J);u 2Y=k;k.2P.3s=B(){2Y.8G()};k.2P.S=S},8G:B(){u o=k.1t=k.2P.K/4,H=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1K={M:(2*o)+\'E\',K:(2*o)+\'E\'};V(u i=0;i<=8;i++){q(H[i]){q(k.72){u w=(i==1||i==7)?\'2y%\':k.2P.K+\'E\';u 1h=m.Z(\'1h\',G,{K:\'2y%\',M:\'2y%\',1c:\'3G\',24:\'1k\'},k.28[i],J);m.Z(\'1h\',G,{4j:"bP:bT.ap.bU(bZ=bY, S=\'"+k.2P.S+"\')",1c:\'21\',K:w,M:k.2P.M+\'E\',1e:(H[i][0]*o)+\'E\',16:(H[i][1]*o)+\'E\'},1h,J)}L{m.P(k.28[i],{8L:\'6r(\'+k.2P.S+\') \'+(H[i][0]*o)+\'E \'+(H[i][1]*o)+\'E\'})}q(1F.35&&(i==3||i==5))m.Z(\'1h\',G,1K,k.28[i],J);m.P(k.28[i],1K)}}k.2P=G;q(m.3C[k.1x])m.3C[k.1x].5L();m.3C[k.1x]=k;q(k.2N)k.2N()},4t:B(H,1t,8w,3d,23){u A=k.A,4u=A.Y.F,1t=1t||0,H=H||{x:A.x.H+1t,y:A.y.H+1t,w:A.x.1a(\'1M\')-2*1t,h:A.y.1a(\'1M\')-2*1t};q(8w)k.2k.F.1r=(H.h>=4*k.1t)?\'2o\':\'1k\';m.P(k.2k,{1e:(H.x-k.1t)+\'E\',16:(H.y-k.1t)+\'E\',K:(H.w+2*k.1t)+\'E\'});H.w-=2*k.1t;H.h-=2*k.1t;m.P(k.28[4],{K:H.w>=0?H.w+\'E\':0,M:H.h>=0?H.h+\'E\':0});q(k.72)k.28[3].F.M=k.28[5].F.M=k.28[4].F.M},5L:B(90){q(90)k.2k.F.1r=\'1k\';L m.3e(k.2k)}};m.5A=B(A,1K){k.A=A;k.1K=1K;k.2G=1K==\'x\'?\'bV\':\'bW\';k.2t=k.2G.5r();k.4K=1K==\'x\'?\'cf\':\'cg\';k.6O=k.4K.5r();k.6W=1K==\'x\'?\'cz\':\'cy\';k.cx=k.6W.5r();k.1U=k.2V=0};m.5A.4R={1a:B(Q){94(Q){1G\'71\':D k.1C+k.2v+(k.t-m.22[\'1t\'+k.2G])/2;1G\'1M\':D k.I+2*k.cb+k.1U+k.2V;1G\'4d\':D k.5t-k.3q-k.5s;1G\'74\':D k.1a(\'4d\')-2*k.cb-k.1U-k.2V;1G\'4B\':D k.H-(k.A.1j?k.A.1j.1t:0);1G\'7O\':D k.1a(\'1M\')+(k.A.1j?2*k.A.1j.1t:0);1G\'5K\':D k.1W?1s.5U((k.I-k.1W)/2):0}},6E:B(){k.cb=(k.A.O[\'1t\'+k.2G]-k.t)/2;k.5s=m[\'6M\'+k.6W]},7b:B(){k.t=k.A.C[k.2t]?4e(k.A.C[k.2t]):k.A.C[\'1t\'+k.2G];k.1C=k.A.1C[k.1K];k.2v=(k.A.C[\'1t\'+k.2G]-k.t)/2;q(k.1C<1){k.1C=(m.3F[k.2t]/2)+m.3F[\'3o\'+k.4K]}},6F:B(){u A=k.A;k.4g=\'1V\';k.H=k.1C-k.cb+k.2v;k.I=1s.3i(k.1b,A[\'7x\'+k.2G]||k.1b);k.2z=A.4w?1s.3i(A[\'3i\'+k.2G],k.1b):k.1b;q(A.2B&&A.2F){k.I=A[k.2t];k.1W=k.1b}q(k.1K==\'x\'&&m.4l)k.2z=A.3y;k.3q=m[\'6M\'+k.4K];k.3o=m.3F[\'3o\'+k.4K];k.5t=m.3F[k.2t]},7L:B(i){u A=k.A;q(A.2B&&(A.2F||m.4l)){k.1W=i;k.I=1s.7x(k.I,k.1W);A.O.F[k.6O]=k.1a(\'5K\')+\'E\'}L k.I=i;A.O.F[k.2t]=i+\'E\';A.Y.F[k.2t]=k.1a(\'1M\')+\'E\';q(A.1j)A.1j.4t();q(A.2X)A.2X.F[k.2t]=i+\'E\';q(A.1Z){u d=A.2a;q(k.6L===2b)k.6L=A.1g[\'1t\'+k.2G]-d[\'1t\'+k.2G];d.F[k.2t]=(k.I-k.6L)+\'E\';q(k.1K==\'x\')A.3D.F.K=\'1V\';q(A.14)A.14.F[k.2t]=\'1V\'}q(k.1K==\'x\'&&A.1A)A.3V(J)},7w:B(i){k.H=i;k.A.Y.F[k.6O]=i+\'E\';q(k.A.1j)k.A.1j.4t()}};m.4v=B(a,1D,2I,2A){q(U.al&&m.1q&&!m.6U){m.1O(U,\'3A\',B(){1u m.4v(a,1D,2I,2A)});D}k.a=a;k.2I=2I;k.2A=2A||\'2u\';k.1Z=(2A==\'2E\');k.2B=!k.1Z;m.6Q=1i;k.1P=[];m.5n();u Q=k.Q=m.N.18;V(u i=0;i<m.6R.18;i++){u 2w=m.6R[i];k[2w]=1D&&1w 1D[2w]!=\'2b\'?1D[2w]:m[2w]}q(!k.S)k.S=a.2r;u C=(1D&&1D.78)?m.$(1D.78):a;C=k.86=C.3E(\'1v\')[0]||C;k.5R=C.1p||a.1p;V(u i=0;i<m.N.18;i++){q(m.N[i]&&m.N[i].a==a){m.N[i].30();D 1i}}q(!m.cE)V(u i=0;i<m.N.18;i++){q(m.N[i]&&m.N[i].86!=C&&!m.N[i].55){m.N[i].7Y()}}m.N[Q]=k;q(!m.7u&&!m.3K){q(m.N[Q-1])m.N[Q-1].2f();q(1w m.2i!=\'2b\'&&m.N[m.2i])m.N[m.2i].2f()}k.C=C;k.1C=m.7s(C);m.5z();u x=k.x=1u m.5A(k,\'x\');x.7b();u y=k.y=1u m.5A(k,\'y\');y.7b();k.Y=m.Z(\'1h\',{1p:\'R-Y-\'+k.Q,1l:\'R-Y \'+k.7N},{1r:\'1k\',1c:\'21\',1y:m.3T+=2},G,J);k.Y.cD=k.Y.cC=m.8p;q(k.2A==\'2u\'&&k.3k==2)k.3k=0;q(!k.1x){k[k.2A+\'77\']()}L q(m.3C[k.1x]){k.6Y();k[k.2A+\'77\']()}L{k.4o();u A=k;1u m.4O(k.1x,B(){A.6Y();A[A.2A+\'77\']()})}D J};m.4v.4R={6h:B(e){1F.6A.2r=k.S},6Y:B(){u 1j=k.1j=m.3C[k.1x];1j.A=k;1j.2k.F.1y=k.Y.F.1y-1;m.3C[k.1x]=G},4o:B(){q(k.55||k.22)D;k.22=m.22;u A=k;k.22.2M=B(){A.7Y()};u A=k,l=k.x.1a(\'71\')+\'E\',t=k.y.1a(\'71\')+\'E\';4C(B(){q(A.22)m.P(A.22,{1e:l,16:t,1y:m.3T++})},2y)},cl:B(){u A=k;u 1v=U.Z(\'1v\');k.O=1v;1v.3s=B(){q(m.N[A.Q])A.4h()};q(m.ck)1v.cj=B(){D 1i};1v.1l=\'R-2u\';m.P(1v,{1r:\'1k\',1N:\'4r\',1c:\'21\',8s:\'3x\',1y:3});1v.2q=m.1d.7k;q(m.4Y)m.1R.1H(1v);q(m.1q&&m.cm)1v.S=G;1v.S=k.S;k.4o()},cn:B(){k.O=m.6n(k.a);q(!k.O)k.O=m.4m(k.6j);q(!k.O)k.O=m.6e();k.6D([\'5y\']);q(k.5y){u 14=m.3Y(k.O,\'1h\',\'R-14\');q(14)14.1H(k.5y);k.5y.F.1N=\'4r\'}u 1g=k.1g=k.O;q(/(3f|W)/.19(k.2c))k.6J(1g);m.1R.1H(k.Y);m.P(k.Y,{1c:\'cq\',7e:\'0 \'+m.6G+\'E 0 \'+m.47+\'E\'});k.O=m.Z(\'1h\',{1l:\'R-2E\'},{1c:\'3G\',1y:3,24:\'1k\'},k.Y);k.3D=m.Z(\'1h\',G,G,k.O,1);k.3D.1H(1g);m.P(1g,{1c:\'3G\',1N:\'4r\',6w:m.1d.6s||\'\'});q(k.K)1g.F.K=k.K+\'E\';q(k.M)m.P(1g,{M:k.M+\'E\',24:\'1k\'});q(1g.26<k.3y)1g.F.K=k.3y+\'E\';q(k.2c==\'2J\'&&!m.6n(k.a)){k.4o();u 2J=1u m.5B(k.a,1g);u A=k;2J.2N=B(){q(m.N[A.Q])A.4h()};2J.6P=B(){6A.2r=A.S};2J.76()}L q(k.2c==\'W\'&&k.2W==\'4A\'){k.5J()}L k.4h()},4h:B(){1n{q(!k.O)D;k.O.3s=G;q(k.55)D;L k.55=J;u x=k.x,y=k.y;q(k.22){m.P(k.22,{16:\'-3x\'});k.22=G}q(k.2B){x.1b=k.O.K;y.1b=k.O.M;m.P(k.O,{K:x.t+\'E\',M:y.t+\'E\'});k.Y.1H(k.O);m.1R.1H(k.Y)}L q(k.6T)k.6T();x.6E();y.6E();m.P(k.Y,{1e:(x.1C+x.2v-x.cb)+\'E\',16:(y.1C+x.2v-y.cb)+\'E\'});k.9R();u 2g=x.1b/y.1b;x.6F();k.4g(x);y.6F();k.4g(y);q(k.1Z)k.ac();q(k.1A)k.3V(0,1);q(k.4w){q(k.2B)k.aq(2g);L k.6k();q(k.2B&&k.x.1b>(k.x.1W||k.x.I)){k.9V();q(k.1P.18==1)k.3V()}}k.7W()}1o(e){k.6h(e)}},6J:B(4s,1V){u c=m.3Y(4s,\'5Z\',\'R-14\');q(/(W|3f)/.19(k.2c)){q(k.36)c.F.K=k.36+\'E\';q(k.3W)c.F.M=k.3W+\'E\'}},5J:B(){q(k.am)D;u A=k;k.14=m.3Y(k.1g,\'5Z\',\'R-14\');q(k.2c==\'W\'){k.4o();u 3Z=m.2C.4J(1);k.14.1H(3Z);k.cp=k.1g.26;q(!k.36)k.36=3Z.26;u 3P=k.1g.1I-k.14.1I,h=k.3W||m.3F.M-3P-m.4i-m.69,3s=k.2W==\'4A\'?\' 3s="q (m.N[\'+k.Q+\']) m.N[\'+k.Q+\'].4h()" \':\'\';k.14.2n+=\'<W 2w="m\'+(1u 5w()).5x()+\'" co="0" Q="\'+k.Q+\'" \'+\' cr="J" F="K:\'+k.36+\'E; M:\'+h+\'E" \'+3s+\' S="\'+k.S+\'"></W>\';k.3Z=k.14.3E(\'1h\')[0];k.W=k.14.3E(\'W\')[0];q(k.2W==\'4G\')k.7d()}q(k.2c==\'3f\'){k.14.1p=k.14.1p||\'m-cs-1p-\'+k.Q;u a=k.6d;q(!a.1D)a.1D={};q(1w a.1D.aj==\'2b\')a.1D.aj=\'ci\';q(7l)7l.ch(k.S,k.14.1p,k.36,k.3W,a.ct||\'7\',a.cu,a.ai,a.1D,a.an)}k.am=J},6T:B(){q(k.W&&!k.3W){k.W.F.M=k.14.F.M=k.ag()+\'E\'}k.1g.1H(m.2C);q(!k.x.1b)k.x.1b=k.1g.26;k.y.1b=k.1g.1I;k.1g.ae(m.2C);q(m.1q&&k.ah>4e(k.1g.4I.M)){k.ah=4e(k.1g.4I.M)}m.P(k.Y,{1c:\'21\',7e:\'0\'});m.P(k.O,{K:k.x.t+\'E\',M:k.y.t+\'E\'})},ag:B(){u h;1n{u 1S=k.W.7K||k.W.4Z.U;u 2C=1S.Z(\'1h\');2C.F.ab=\'aa\';1S.14.1H(2C);h=2C.6V;q(m.1q)h+=4e(1S.14.4I.4i)+4e(1S.14.4I.69)-1}1o(e){h=cF}D h},7d:B(){u 3R=k.1g.26-k.3Z.26;m.3e(k.3Z);q(3R<0)3R=0;u 3P=k.1g.1I-k.W.1I;m.P(k.W,{K:1s.7H(k.x.I-3R)+\'E\',M:1s.7H(k.y.I-3P)+\'E\'});m.P(k.14,{K:k.W.F.K,M:k.W.F.M});k.3X=k.W;k.2a=k.3X},ac:B(){k.6J(k.1g);q(k.2c==\'3f\'&&k.2W==\'4A\')k.5J();q(k.x.I<k.x.1b&&!k.5q)k.x.I=k.x.1b;q(k.y.I<k.y.1b&&!k.6I)k.y.I=k.y.1b;k.2a=k.1g;m.P(k.3D,{1c:\'3G\',K:k.x.I+\'E\'});m.P(k.1g,{ad:\'2d\',K:\'1V\',M:\'1V\'});u 1E=m.3Y(k.1g,\'5Z\',\'R-14\');q(1E&&!/(W|3f)/.19(k.2c)){u 3U=1E;1E=m.Z(3U.cB,G,{24:\'1k\'},G,J);3U.2S.cA(1E,3U);1E.1H(m.2C);1E.1H(3U);u 3R=k.1g.26-1E.26;u 3P=k.1g.1I-1E.1I;1E.ae(m.2C);u 5p=m.4Y||4y.ao==\'9a\'?1:0;m.P(1E,{K:(k.x.I-3R-5p)+\'E\',M:(k.y.I-3P)+\'E\',24:\'1V\',1c:\'3G\'});q(5p&&3U.1I>1E.1I){1E.F.K=(4e(1E.F.K)+5p)+\'E\'}k.3X=1E;k.2a=k.3X}q(k.W&&k.2W==\'4A\')k.7d();q(!k.3X&&k.y.I<k.3D.1I)k.2a=k.O;q(k.2a==k.O&&!k.5q&&!/(W|3f)/.19(k.2c)){k.x.I+=17}q(k.2a&&k.2a.1I>k.2a.2S.1I){4C("1n { m.N["+k.Q+"].2a.F.24 = \'1V\'; } 1o(e) {}",m.6m)}},4g:B(p,48){u cv,bX=p.2l,1K=p==k.x?\'x\':\'y\';u 6Z=1i;u 46=p.A.4w;p.H=1s.5U(p.H-((p.1a(\'1M\')-p.t)/2));q(p.H<p.3o+p.3q){p.H=p.3o+p.3q;6Z=J}q(!48&&p.I<p.2z){p.I=p.2z;46=1i}q(p.H+p.1a(\'1M\')>p.3o+p.5t-p.5s){q(!48&&6Z&&46){p.I=p.1a(1K==\'y\'?\'4d\':\'74\')}L q(p.1a(\'1M\')<p.1a(\'4d\')){p.H=p.3o+p.5t-p.5s-p.1a(\'1M\')}L{p.H=p.3o+p.3q;q(!48&&46)p.I=p.1a(1K==\'y\'?\'4d\':\'74\')}}q(!48&&p.I<p.2z){p.I=p.2z;46=1i}q(p.H<p.3q){u ar=p.H;p.H=p.3q;q(46&&!48)p.I=p.I-(p.H-ar)}},aq:B(2g){u x=k.x,y=k.y,5C=1i,2p=1s.3i(x.1b,x.I),3n=1s.3i(y.1b,y.I),2F=(k.2F||m.4l);q(2p/3n>2g){ 2p=3n*2g;q(2p<x.2z){2p=x.2z;3n=2p/2g}5C=J}L q(2p/3n<2g){ 3n=2p/2g;5C=J}q(m.4l&&x.1b<x.2z){x.1W=x.1b;y.I=y.1W=y.1b}L q(k.2F){x.1W=2p;y.1W=3n}L{x.I=2p;y.I=3n}k.6k(2F?G:2g);q(2F&&y.I<y.1W){y.1W=y.I;x.1W=y.I*2g}q(5C||2F){x.H=x.1C-x.cb+x.2v;x.2z=x.I;k.4g(x,J);y.H=y.1C-y.cb+y.2v;y.2z=y.I;k.4g(y,J);q(k.1A)k.3V()}},6k:B(2g){u x=k.x,y=k.y;q(k.1A){43(y.I>k.4E&&x.I>k.3y&&y.1a(\'1M\')>y.1a(\'4d\')){y.I-=10;q(2g)x.I=y.I*2g;k.3V(0,1)}}},7W:B(){u x=k.x,y=k.y;k.45(\'1k\');k.7E(1,{Y:{K:x.1a(\'1M\'),M:y.1a(\'1M\'),1e:x.H,16:y.H},O:{1e:x.1U+x.1a(\'5K\'),16:y.1U+y.1a(\'5K\'),K:x.1W||x.I,M:y.1W||y.I}},m.6m)},7E:B(2x,29,3d){q(k.1j&&!k.3k){q(2x)k.1j.4t();L k.1j.5L((k.1Z&&k.4c))}q(!2x)k.a5();u A=k,x=A.x,y=A.y,23=k.23;q(!2x)23=k.9t||23;u 4G=2x?B(){q(A.1j)A.1j.2k.F.1r="2o";4C(B(){A.a8()},50)}:B(){A.6g()};q(2x)m.P(k.Y,{K:x.t+\'E\',M:y.t+\'E\'});q(2x&&k.1Z){m.P(k.Y,{1e:(x.1C-x.cb+x.2v)+\'E\',16:(y.1C-y.cb+y.2v)+\'E\'})}q(k.9q){m.P(k.Y,{1z:2x?0:1});m.3g(29.Y,{1z:2x})}m.3N(k.Y,29.Y,{3w:3d,23:23,2Z:B(2L,2H){q(A.1j&&A.3k&&2H.1m==\'16\'){u 4p=2x?2H.H:1-2H.H;u H={w:x.t+(x.1a(\'1M\')-x.t)*4p,h:y.t+(y.1a(\'1M\')-y.t)*4p,x:x.1C+(x.H-x.1C)*4p,y:y.1C+(y.H-y.1C)*4p};A.1j.4t(H,0,1)}q(A.1Z){q(2H.1m==\'1e\')A.3D.F.1e=(x.H-2L)+\'E\';q(2H.1m==\'16\')A.3D.F.16=(y.H-2L)+\'E\'}}});m.3N(k.O,29.O,3d,23,4G);q(2x){k.Y.F.1r=\'2o\';k.O.F.1r=\'2o\';q(k.1Z)k.1g.F.1r=\'2o\';k.a.1l+=\' R-9r-9s\'}},a8:B(){k.4P=J;k.30();q(k.1Z&&k.2W==\'4G\')k.5J();q(k.W){1n{u A=k,1S=k.W.7K||k.W.4Z.U;m.1O(1S,\'6f\',B(){q(m.2i!=A.Q)A.30()})}1o(e){}q(m.1q&&1w k.4k!=\'cH\')k.W.F.K=(k.36-1)+\'E\'}q(m.3K&&m.3K==k.a)m.3K=G;k.9x();u p=m.3F,6y=m.5v.x+p.5D,6t=m.5v.y+p.5F;k.7j=k.x.H<6y&&6y<k.x.H+k.x.1a(\'1M\')&&k.y.H<6t&&6t<k.y.H+k.y.1a(\'1M\');q(k.1A)k.a4()},9x:B(){u Q=k.Q;u 1x=k.1x;1u m.4O(1x,B(){1n{m.N[Q].9C()}1o(e){}})},9C:B(){u 1T=k.6x(1);q(1T&&1T.2M.9A().2U(/m\\.4T/))u 1v=m.Z(\'1v\',{S:m.5o(1T)})},6x:B(20){u 81=k.9y(),as=m.5H.31[k.41||\'2d\'];q(!as[81+20]&&k.5P&&k.5P.c3){q(20==1)D as[0];L q(20==-1)D as[as.18-1]}D as[81+20]||G},9y:B(){u 1L=m.4N().31[k.41||\'2d\'];q(1L)V(u i=0;i<1L.18;i++){q(1L[i]==k.a)D i}D G},7Y:B(){m.3e(k.Y);m.N[k.Q]=G;q(k.22)m.22.F.1e=\'-3x\'},9L:B(){k.7Q=m.Z(\'a\',{2r:m.9z,2l:m.9p,1l:\'R-7Q\',2n:m.1d.9o,2q:m.1d.9f});k.4U({5d:k.7Q,1c:k.9g||\'16 1e\'})},6D:B(7R,9c){V(u i=0;i<7R.18;i++){u T=7R[i],s=G;q(!k[T+\'5Q\']&&k.5R)k[T+\'5Q\']=T+\'-V-\'+k.5R;q(k[T+\'5Q\'])k[T]=m.4m(k[T+\'5Q\']);q(!k[T]&&!k[T+\'80\']&&k[T+\'9d\'])1n{s=c5(k[T+\'9d\'])}1o(e){}q(!k[T]&&k[T+\'80\']){s=k[T+\'80\']}q(!k[T]&&!s){u 1T=k.a.9b;43(1T&&!m.56(1T)){q((1u 4q(\'R-\'+T)).19(1T.1l||G)){k[T]=1T.4J(1);7P}1T=1T.9b}}q(!k[T]&&s)k[T]=m.Z(\'1h\',{1l:\'R-\'+T,2n:s});q(9c&&k[T]){u o={1c:(T==\'6a\')?\'53\':\'68\'};V(u x 3r k[T+\'9h\'])o[x]=k[T+\'9h\'][x];o.5d=k[T];k.4U(o)}}},45:B(1r){q(m.9i)k.5l(\'cJ\',1r);q(m.9n)k.5l(\'d1\',1r);q(m.7B)k.5l(\'*\',1r)},5l:B(4a,1r){u 1f=U.3E(4a);u 1m=4a==\'*\'?\'24\':\'1r\';V(u i=0;i<1f.18;i++){q(1m==\'1r\'||(U.7r.9m(1f[i],"").9l(\'24\')==\'1V\'||1f[i].9j(\'1k-by\')!=G)){u 2h=1f[i].9j(\'1k-by\');q(1r==\'2o\'&&2h){2h=2h.1Q(\'[\'+k.Q+\']\',\'\');1f[i].4H(\'1k-by\',2h);q(!2h)1f[i].F[1m]=1f[i].7n}L q(1r==\'1k\'){u 2T=m.7s(1f[i]);2T.w=1f[i].26;2T.h=1f[i].1I;u 9D=(2T.x+2T.w<k.x.1a(\'4B\')||2T.x>k.x.1a(\'4B\')+k.x.1a(\'7O\'));u 9E=(2T.y+2T.h<k.y.1a(\'4B\')||2T.y>k.y.1a(\'4B\')+k.y.1a(\'7O\'));u 5e=m.7v(1f[i]);q(!9D&&!9E&&5e!=k.Q){q(!2h){1f[i].4H(\'1k-by\',\'[\'+k.Q+\']\');1f[i].7n=1f[i].F[1m];1f[i].F[1m]=\'1k\'}L q(2h.9X(\'[\'+k.Q+\']\')==-1){1f[i].4H(\'1k-by\',2h+\'[\'+k.Q+\']\')}}L q((2h==\'[\'+k.Q+\']\'||m.2i==5e)&&5e!=k.Q){1f[i].4H(\'1k-by\',\'\');1f[i].F[1m]=1f[i].7n||\'\'}L q(2h&&2h.9X(\'[\'+k.Q+\']\')>-1){1f[i].4H(\'1k-by\',2h.1Q(\'[\'+k.Q+\']\',\'\'))}}}}},30:B(){k.Y.F.1y=m.3T+=2;V(u i=0;i<m.N.18;i++){q(m.N[i]&&i==m.2i){u 42=m.N[i];42.O.1l+=\' R-\'+42.2A+\'-7h\';q(42.2B){42.O.F.3u=m.1q?\'a6\':\'5O\';42.O.2q=m.1d.a0}}}q(k.1j)k.1j.2k.F.1y=k.Y.F.1y-1;k.O.1l=\'R-\'+k.2A;q(k.2B){k.O.2q=m.1d.7k;q(m.4D){m.3O=1F.35?\'5O\':\'6r(\'+m.4n+m.4D+\'), 5O\';q(m.1q&&m.3z<6)m.3O=\'a6\';k.O.F.3u=m.3O}}m.2i=k.Q;m.1O(U,1F.35?\'7z\':\'7y\',m.58)},7f:B(x,y){k.x.7w(x);k.y.7w(y)},3p:B(e){u w,h,r=e.K/e.M;w=1s.7x(e.K+e.5k,1s.3i(k.3y,k.x.1b));q(k.2B&&1s.7H(w-k.x.1b)<12)w=k.x.1b;h=k.1Z?e.M+e.5h:w/r;q(h<1s.3i(k.4E,k.y.1b)){h=1s.3i(k.4E,k.y.1b);q(k.2B)w=h*r}k.6v(w,h)},6v:B(w,h){k.y.7L(h);k.x.7L(w)},2f:B(){q(k.4k||!k.4P)D;k.4k=J;m.4L(U,1F.35?\'7z\':\'7y\',m.58);1n{q(k.1Z)k.a3();k.O.F.3u=\'cO\';k.7E(0,{Y:{K:k.x.t,M:k.y.t,1e:k.x.1C-k.x.cb+k.x.2v,16:k.y.1C-k.y.cb+k.y.2v},O:{1e:0,16:0,K:k.x.t,M:k.y.t}},m.a2)}1o(e){k.6g()}},a3:B(){q(m.7B){q(!m.4Q)m.4Q=m.Z(\'1h\',G,{1c:\'21\'},m.1R);m.P(m.4Q,{K:k.x.I+\'E\',M:k.y.I+\'E\',1e:k.x.H+\'E\',16:k.y.H+\'E\',1N:\'4r\'})}q(k.2c==\'3f\')1n{m.$(k.14.1p).cT()}1o(e){}q(k.2W==\'4G\'&&!k.4c)k.9K();q(k.2a&&k.2a!=k.3X)k.2a.F.24=\'1k\'},9K:B(){q(m.1q&&k.W)1n{k.W.4Z.U.14.2n=\'\'}1o(e){}q(k.2c==\'3f\')7l.cY(k.14.1p);k.14.2n=\'\'},9v:B(){q(k.1j)k.1j.2k.F.1N=\'2d\';k.2X=G;k.Y.F.1N=\'2d\';m.1Y(m.3B,k)},9F:B(){1n{m.N[k.Q]=k;q(!m.7u&&m.2i!=k.Q){1n{m.N[m.2i].2f()}1o(e){}}u z=m.3T++,4u={1N:\'\',1y:z};m.P(k.Y,4u);k.4k=1i;u o=k.1j||0;q(o){q(!k.3k)4u.1r=\'1k\';m.P(o.2k,4u)}k.7W()}1o(e){}},4U:B(o){u C=o.5d;q(1w C==\'7S\')C=m.4m(C);q(o.2E)C=m.Z(\'1h\',{2n:o.2E});q(!C||1w C==\'7S\')D;C.F.1N=\'4r\';k.9H();u K=o.K&&/^[0-9]+(E|%)$/.19(o.K)?o.K:\'1V\';q(/^(1e|2K)7C$/.19(o.1c)&&!/^[0-9]+E$/.19(o.K))K=\'cR\';u 11=m.Z(\'1h\',{1p:\'2R\'+m.64++,2R:o.2R},{1c:\'21\',1r:\'1k\',K:K,6w:m.1d.6s||\'\',1z:0},k.1A,J);11.1H(C);m.3g(11,{1z:1,9P:0,9N:0,3d:(o.6z===0||o.6z===1i||(o.6z==2&&m.1q))?0:61});m.3g(11,o);q(k.9G){k.62(11);q(!11.54||k.7j)m.3N(11,{1z:11.1z},11.3d)}m.1Y(k.1P,m.64-1)},62:B(11){u p=11.1c||\'73 6o\',5T=11.9P,5V=11.9N;q(11.2S!=k.1A)k.1A.1H(11);q(/1e$/.19(p))11.F.1e=5T+\'E\';q(/6o$/.19(p))m.P(11,{1e:\'50%\',47:(5T-1s.5U(11.26/2))+\'E\'});q(/2K$/.19(p))11.F.2K=-5T+\'E\';q(/^9O$/.19(p)){m.P(11,{2K:\'2y%\',6G:k.x.cb+\'E\',16:-k.y.cb+\'E\',3H:-k.y.cb+\'E\',24:\'1V\'});k.x.1U=11.26}L q(/^9w$/.19(p)){m.P(11,{1e:\'2y%\',47:k.x.cb+\'E\',16:-k.y.cb+\'E\',3H:-k.y.cb+\'E\',24:\'1V\'});k.x.2V=11.26}q(/^16/.19(p))11.F.16=5V+\'E\';q(/^73/.19(p))m.P(11,{16:\'50%\',4i:(5V-1s.5U(11.1I/2))+\'E\'});q(/^3H/.19(p))11.F.3H=-5V+\'E\';q(/^53$/.19(p)){m.P(11,{1e:(-k.x.1U-k.x.cb)+\'E\',2K:(-k.x.2V-k.x.cb)+\'E\',3H:\'2y%\',69:k.y.cb+\'E\',K:\'1V\'});k.y.1U=11.1I}L q(/^68$/.19(p)){m.P(11,{1c:\'3G\',1e:(-k.x.1U-k.x.cb)+\'E\',2K:(-k.x.2V-k.x.cb)+\'E\',16:\'2y%\',4i:k.y.cb+\'E\',K:\'1V\'});k.y.2V=11.1I;11.F.1c=\'21\'}},9R:B(){k.6D([\'6a\',\'aX\'],J);q(k.6a&&k.7Z)k.6a.1l+=\' R-3L\';q(m.9M)k.9L();V(u i=0;i<m.1P.18;i++){u o=m.1P[i],5Y=o.78,66=o.41;q((!5Y&&!66)||(5Y&&5Y==k.5R)||(66&&66===k.41)){q(k.2B||(k.1Z&&o.b4))k.4U(o)}}u 67=[];V(u i=0;i<k.1P.18;i++){u o=m.$(\'2R\'+k.1P[i]);q(/7C$/.19(o.1c))k.62(o);L m.1Y(67,o)}V(u i=0;i<67.18;i++)k.62(67[i]);k.9G=J},9H:B(){q(!k.1A)k.1A=m.Z(\'1h\',{1l:k.7N},{1c:\'21\',K:(k.x.I||(k.2F?k.K:G)||k.x.1b)+\'E\',M:(k.y.I||k.y.1b)+\'E\',1r:\'1k\',24:\'1k\',1y:m.1q?4:G},m.1R,J)},3V:B(7M,9I){u 1A=k.1A,x=k.x,y=k.y;m.P(1A,{K:x.I+\'E\',M:y.I+\'E\'});q(7M||9I){V(u i=0;i<k.1P.18;i++){u o=m.$(\'2R\'+k.1P[i]);u 7G=(m.5W||U.7I==\'9J\');q(o&&/^(53|68)$/.19(o.1c)){q(7G){o.F.K=(1A.26+2*x.cb+x.1U+x.2V)+\'E\'}y[o.1c==\'53\'?\'1U\':\'2V\']=o.1I}q(o&&7G&&/^(1e|2K)7C$/.19(o.1c)){o.F.M=(1A.1I+2*y.cb)+\'E\'}}}q(7M){m.P(k.O,{16:y.1U+\'E\'});m.P(1A,{16:(y.1U+y.cb)+\'E\'})}},a4:B(){u b=k.1A;b.1l=\'\';m.P(b,{16:(k.y.1U+k.y.cb)+\'E\',1e:(k.x.1U+k.x.cb)+\'E\',24:\'2o\'});q(m.4Y)b.F.1r=\'2o\';k.Y.1H(b);V(u i=0;i<k.1P.18;i++){u o=m.$(\'2R\'+k.1P[i]);o.F.1y=4;q(!o.54||k.7j){o.F.1r=\'2o\';m.P(o,{1r:\'2o\',1N:\'\'});m.3N(o,{1z:o.1z},o.3d)}}},a5:B(){q(!k.1P.18)D;q(k.1Z&&k.4c){k.1A.F.16=\'-3x\';m.1R.1H(k.1A)}L m.3e(k.1A)},9V:B(){k.5f=m.Z(\'a\',{2r:\'9W:m.N[\'+k.Q+\'].7X();\',2q:m.1d.9Z,1l:\'R-1b-4T\'});k.4U({5d:k.5f,1c:m.9Y,54:J,1z:m.9k})},7X:B(){1n{q(k.5f)m.3e(k.5f);k.30();u 2p=k.x.I;k.6v(k.x.1b,k.y.1b);u 5E=k.x.H-(k.x.I-2p)/2;q(5E<m.47)5E=m.47;k.7f(5E,k.y.H);k.45(\'1k\')}1o(e){k.6h(e)}},6g:B(){k.a.1l=k.a.1l.1Q(\'R-9r-9s\',\'\');k.45(\'2o\');q(k.1Z&&k.4c){k.9v()}L{q(k.1j&&k.3k)k.1j.5L();m.3e(k.Y)}q(m.4Q)m.4Q.F.1N=\'2d\';m.N[k.Q]=G;m.at()}};m.5B=B(a,O,5m){k.a=a;k.O=O;k.5m=5m};m.5B.4R={76:B(){q(!k.S)k.S=m.5o(k.a);q(k.S.2U(\'#\')){u 1L=k.S.bd(\'#\');k.S=1L[0];k.1p=1L[1]}q(m.5g[k.S]){k.a1=m.5g[k.S];q(k.1p)k.6C();L k.4V();D}1n{k.2O=1u a7()}1o(e){1n{k.2O=1u af("bK.a9")}1o(e){1n{k.2O=1u af("ap.a9")}1o(e){k.6P()}}}u 2Y=k;k.2O.bM=B(){q(2Y.2O.al==4){q(2Y.1p)2Y.6C();L 2Y.4V()}};u S=k.S;q(m.b0)S=S.1Q(/$/,(/\\?/.19(S)?\'&\':\'?\')+\'b2=\'+(1u 5w()).5x());k.2O.9Q(\'cw\',S,J);k.2O.9u(\'X-be-bu\',\'a7\');k.2O.9u(\'aE-aJ\',\'aF/x-aH-6i-bt\');k.2O.bv(G)},6C:B(){m.5n();u 3j=1F.35||m.9e?{S:\'bB:b7\'}:G;k.W=m.Z(\'W\',3j,{1c:\'21\',16:\'-3x\'},m.1R);k.4V()},4V:B(){u s=k.a1||k.2O.aC;q(k.5m)m.5g[k.S]=s;q(!m.1q||m.3z>=5.5){s=s.1Q(/\\s/g,\' \').1Q(1u 4q(\'<aK[^>]*>\',\'9S\'),\'\').1Q(1u 4q(\'<9T[^>]*>.*?</9T>\',\'9S\'),\'\');q(k.W){u 1S=k.W.7K;q(!1S&&k.W.4Z)1S=k.W.4Z.U;q(!1S){u 2Y=k;4C(B(){2Y.4V()},25);D}1S.9Q();1S.aS(s);1S.2f();1n{s=1S.6N(k.1p).2n}1o(e){1n{s=k.W.U.6N(k.1p).2n}1o(e){}}m.3e(k.W)}L{s=s.1Q(1u 4q(\'^.*?<14[^>]*>(.*?)</14>.*?$\',\'i\'),\'$1\')}}m.3Y(k.O,\'5Z\',\'R-14\').2n=s;k.2N();V(u x 3r k)k[x]=G}};q(m.1q){(B(){1n{U.59.cQ(\'1e\')}1o(e){4C(9U.cU,50);D}m.3A()})()}m.1O(U,\'cZ\',m.3A);m.1O(1F,\'5I\',m.3A);m.5c=m.1d;u c2=m.4v;m.1O(1F,\'5I\',B(){q(m.6B){u 6l=\'.R 1v\',6q=\'3u: 6r(\'+m.4n+m.6B+\'), 5O !c8;\';u F=m.Z(\'F\',{T:\'ce/6c\'},G,U.3E(\'ca\')[0]);q(!m.1q){F.1H(U.bO(6l+" {"+6q+"}"))}L{u 3v=U.au[U.au.18-1];q(1w(3v.ak)=="7a")3v.ak(6l,6q)}}});m.1O(1F,\'3p\',B(){m.5z()});m.1O(U,\'6S\',B(e){m.5v={x:e.5u,y:e.5N}});m.1O(U,\'6f\',m.7p);m.1O(U,\'91\',m.7p);m.1O(U,\'3A\',m.4N);m.1O(1F,\'5I\',m.8M);m.1O(1F,\'5I\',m.9B);',62,811,'||||||||||||||||||||this||hs||||if||||var||||||exp|function|el|return|px|style|null|pos|size|true|width|else|height|expanders|content|setStyles|key|highslide|src|type|document|for|iframe||wrapper|createElement||overlay|||body||top||length|test|get|full|position|lang|left|els|innerContent|div|false|outline|hidden|className|prop|try|catch|id|ie|visibility|Math|offset|new|img|typeof|outlineType|zIndex|opacity|overlayBox|fx|tpos|params|node|window|case|appendChild|offsetHeight|options|dim|arr|wsize|display|addEventListener|overlays|replace|container|doc|next|p1|auto|imgSize|event|push|isHtml|op|absolute|loading|easing|overflow||offsetWidth||td|to|scrollerDiv|undefined|objectType|none|dragArgs|close|ratio|hiddenBy|focusKey|elem|table|target|span|innerHTML|visible|xSize|title|href|re|wh|image|tb|name|up|100|minSize|contentType|isImage|clearing|opt|html|useBox|ucwh|args|custom|ajax|right|val|onclick|onLoad|xmlHttp|graphic|func|hsId|parentNode|elPos|match|p2|objectLoadTime|releaseMask|pThis|step|focus|groups||||opera|objectWidth||||class|li|timers|dur|discardElement|swf|extend|hasDragged|min|attribs|outlineWhileAnimating|styles|getExpander|ySize|scroll|resize|marginMin|in|onload|start|cursor|last|duration|9999px|minWidth|uaVersion|ready|sleeping|pendingOutlines|mediumContent|getElementsByTagName|page|relative|bottom|unit|now|upcoming|move|clone|animate|styleRestoreCursor|hDiff|number|wDiff|cacheBindings|zIndexCounter|cNode|sizeOverlayBox|objectHeight|scrollingContent|getElementByClass|ruler||slideshowGroup|blurExp|while|htmls|doShowHide|allowReduce|marginLeft|moveOnly|end|tagName|images|preserveContent|fitsize|parseInt|getParam|justify|contentLoaded|marginTop|filter|isClosing|padToMinWidth|getNode|graphicsDir|showLoading|fac|RegExp|block|parent|setPosition|stl|Expander|allowSizeReduction|all|navigator|preloadTheseImages|before|opos|setTimeout|restoreCursor|minHeight|on|after|setAttribute|currentStyle|cloneNode|uclt|removeEventListener|adj|getAnchors|Outline|isExpanded|mask|prototype|iebody|expand|createOverlay|loadHTML|getParams|param|safari|contentWindow||matches|cache|above|hideOnMouseOut|onLoadStarted|isHsAnchor|self|keyHandler|documentElement|curAnim|gotoEnd|langDefaults|overlayId|wrapperKey|fullExpandLabel|cachedGets|dY|onReady|preloadFullImage|dX|showHideElements|pre|init|getSrc|kdeBugCorr|allowWidthReduction|toLowerCase|marginMax|clientSize|clientX|mouse|Date|getTime|maincontent|getPageSize|Dimension|Ajax|changed|scrollLeft|xpos|scrollTop|over|anchors|load|writeExtendedContent|imgPad|destroy|tr|clientY|pointer|slideshow|Id|thumbsUserSetId|expOnly|offX|round|offY|ieLt7|previousOrNext|tId|DIV|topmostKey|250|positionOverlay|preloadTheseAjax|idCounter|preventDefault|sg|os|below|marginBottom|heading|previous|css|swfOptions|getSelfRendered|mousedown|afterClose|error|form|contentId|fitOverlayBox|sel|expandDuration|getCacheBinding|center|tbody|dec|url|cssDirection|mY|update|resizeTo|direction|getAdjacentAnchor|mX|fade|location|expandCursor|getElementContent|getInline|calcBorders|calcExpanded|marginRight|element|allowHeightReduction|setObjContainerSize|clones|sizeDiff|margin|getElementById|lt|onError|continuePreloading|overrides|mousemove|htmlGetSize|isReady|offsetTop|ucrb|Click|connectOutline|hasMovedMin||loadingPos|hasAlphaImageLoader|middle|maxsize||run|Create|thumbnailId|arrow|object|calcThumb|hasFocused|correctIframeSize|padding|moveTo|cur|blur|preloadAjaxElement|mouseIsOver|restoreTitle|swfobject|distance|origProp|garbageBin|mouseClickHandler|parseFloat|defaultView|getPosition|openerTagNames|allowMultipleInstances|getWrapperKey|setPos|max|keydown|keypress|cacheAjax|geckoMac|panel|relatedTarget|changeSize|srcElement|ie6|abs|compatMode|numberOfImagesToPreload|contentDocument|setSize|doWrapper|wrapperClassName|osize|break|credits|types|string|topZ|complete|done|show|doFullExpand|cancelLoading|dragByHeading|Text|current|state|userAgent|dragHandler|startTime|thumb|Pause|offsetParent|focusTopmost|offsetLeft|spacebar|hasHtmlExpanders|timerId|Play|captionOverlay|Close|rv|JS|Highslide|detachEvent|transit|_default|headingOverlay|skin|wrapperMouseHandler|contentWrapper|replaceLang|maxWidth|call|enableKeyListener|Previous|vis|nextTitle|nextText|previousText|previousTitle|closeText|htmlExpand|closeTitle|moveTitle|updateAnchors|onGraphicLoad|preloadGraphic|appendTo|nopad|moveText|background|preloadImages|clickY|alpha|clientWidth|loadingText|loadingOpacity|and|tag|loadingTitle|clickX|Next|Move|200|from|hide|mouseup|ul|orig|switch|pow|easeInQuad|resizeTitle|ltr||KDE|nextSibling|addOverlay|Eval|ie6SSL|creditsTitle|creditsPosition|Overlay|hideSelects|getAttribute|fullExpandOpacity|getPropertyValue|getComputedStyle|hideIframes|creditsText|creditsTarget|fadeInOut|active|anchor|easingClose|setRequestHeader|sleep|rightpanel|prepareNextOutline|getAnchorIndex|creditsHref|toString|preloadAjax|preloadNext|clearsX|clearsY|awake|gotOverlays|genOverlayBox|doPanels|BackCompat|destroyObject|writeCredits|showCredits|offsetY|leftpanel|offsetX|open|getOverlays|gi|script|arguments|createFullExpand|javascript|indexOf|fullExpandPosition|fullExpandTitle|focusTitle|cachedGet|restoreDuration|htmlPrepareClose|showOverlays|destroyOverlays|hand|XMLHttpRequest|afterExpand|XMLHTTP|both|clear|htmlSizeOperations|border|removeChild|ActiveXObject|getIframePageHeight|newHeight|flashvars|wmode|addRule|readyState|hasExtendedContent|attributes|vendor|Microsoft|correctRatio|tmpMin||reOrder|styleSheets|pageXOffset|innerHeight|clientHeight|pageYOffset|playText|playTitle|pauseText|responseText|innerWidth|Content|application|shadow|www|toUpperCase|Type|link|pauseTitle|header|Resize|bring|keyCode|front|Expand|write|cancel|Loading|registerOverlay|returnValue|caption|actual|homepage|forceAjaxReload|esc|dummy|the|useOnHtml|Powered|Go|blank|removeAttribute|maincontentEval|zoomin|zoomout|graphics|split|Requested|maxHeight|keys|maincontentText|maincontentId|headingText|_self|headingId|com|http|headingEval|1001|outlineStartOffset|oPos|Use|urlencoded|With|send|Gecko|footer||captionEval|drop|about|Macintosh|fullExpandText|drag|ra|it|click|captionText|Safari|Msxml2|captionId|onreadystatechange|sqrt|createTextNode|progid|png|outlines|outlinesDir|DXImageTransform|AlphaImageLoader|Width|Height|tgt|scale|sizingMethod|fontSize|lineHeight|HsExpander|repeat|clearInterval|eval|splice|htmlE|important|collapse|HEAD||borderCollapse|cellSpacing|text|Left|Top|embedSWF|transparent|oncontextmenu|blockRightClick|imageCreate|flushImgSize|htmlCreate|frameborder|newWidth|static|allowtransparency|flash|version|expressInstallSwfurl|tgtArr|GET|rb|Bottom|Right|insertBefore|nodeName|onmouseout|onmouseover|allowSimultaneousLoading|300|setInterval|boolean|protocol|SELECT|https|toElement|fromElement|01|default|attachEvent|doScroll|200px|white|StopPlay|callee|button|xpand|mouseover|removeSWF|DOMContentLoaded|dragSensitivity|IFRAME|paddingTop|1px|linearTween'.split('|'),0,{}))
diff --git a/highslide/highslide.css b/highslide/highslide.css
new file mode 100644
index 0000000..7adc169
--- /dev/null
+++ b/highslide/highslide.css
@@ -0,0 +1,877 @@
+
+.highslide-container div {
+ font-family: Verdana, Helvetica;
+ font-size: 10pt;
+}
+.highslide-container table {
+ background: none;
+}
+.highslide {
+ outline: none;
+ text-decoration: none;
+}
+.highslide img {
+/* border: 2px solid silver; */
+ border: none;
+}
+.highslide:hover img {
+ border-color: gray;
+}
+.highslide-active-anchor img {
+ visibility: hidden;
+}
+.highslide-gallery .highslide-active-anchor img {
+ border-color: black;
+ visibility: visible;
+ cursor: default;
+}
+.highslide-image {
+ border-width: 2px;
+ border-style: solid;
+ border-color: white;
+ background: gray;
+}
+.highslide-wrapper, .highslide-outline {
+ background: white;
+}
+.glossy-dark {
+ background: #111;
+}
+
+.highslide-image-blur {
+}
+.highslide-number {
+ font-weight: bold;
+ color: gray;
+ font-size: .9em;
+}
+.highslide-caption {
+ display: none;
+ font-size: 1em;
+ padding: 5px;
+ /*background: white;*/
+}
+.highslide-heading {
+ display: none;
+ font-weight: bold;
+ margin: 0.4em;
+}
+.highslide-dimming {
+ position: absolute;
+ background: black;
+}
+a.highslide-full-expand {
+ background: url(graphics/fullexpand.gif) no-repeat;
+ display: block;
+ margin: 0 10px 10px 0;
+ width: 34px;
+ height: 34px;
+}
+.highslide-loading {
+ display: block;
+ color: black;
+ font-size: 9px;
+ font-weight: bold;
+ text-transform: uppercase;
+ text-decoration: none;
+ padding: 3px;
+ border: 1px solid white;
+ background-color: white;
+ padding-left: 22px;
+ background-image: url(graphics/loader.white.gif);
+ background-repeat: no-repeat;
+ background-position: 3px 1px;
+}
+a.highslide-credits,
+a.highslide-credits i {
+ padding: 2px;
+ color: silver;
+ text-decoration: none;
+ font-size: 10px;
+}
+a.highslide-credits:hover,
+a.highslide-credits:hover i {
+ color: white;
+ background-color: gray;
+}
+.highslide-move, .highslide-move * {
+ cursor: move;
+}
+
+.highslide-viewport {
+ display: none;
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ background: none;
+ left: 0;
+ top: 0;
+}
+.highslide-overlay {
+ display: none;
+}
+.hidden-container {
+ display: none;
+}
+/* Example of a semitransparent, offset closebutton */
+.closebutton {
+ position: relative;
+ top: -15px;
+ left: 15px;
+ width: 30px;
+ height: 30px;
+ cursor: pointer;
+ background: url(graphics/close.png);
+ /* NOTE! For IE6, you also need to update the highslide-ie6.css file. */
+}
+
+/*****************************************************************************/
+/* Thumbnail boxes for the galleries. */
+/* Remove these if you are not using a gallery. */
+/*****************************************************************************/
+.highslide-gallery ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+.highslide-gallery ul li {
+ display: block;
+ position: relative;
+ float: left;
+ width: 106px;
+ height: 106px;
+ border: 1px solid silver;
+ background: #ededed;
+ margin: 2px;
+ line-height: 0;
+ overflow: hidden;
+}
+.highslide-gallery ul a {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+}
+.highslide-gallery ul img {
+ position: relative;
+ top: -50%;
+ left: -50%;
+}
+html>/**/body .highslide-gallery ul li {
+ display: table;
+ text-align: center;
+}
+html>/**/body .highslide-gallery ul li {
+ text-align: center;
+}
+html>/**/body .highslide-gallery ul a {
+ position: static;
+ display: table-cell;
+ vertical-align: middle;
+}
+html>/**/body .highslide-gallery ul img {
+ position: static;
+}
+
+/*****************************************************************************/
+/* Controls for the galleries. */
+/* Remove these if you are not using a gallery */
+/*****************************************************************************/
+.highslide-controls {
+ width: 195px;
+ height: 40px;
+ background: url(graphics/controlbar-white.gif) 0 -90px no-repeat;
+ margin: 20px 15px 10px 0;
+}
+.highslide-controls ul {
+ position: relative;
+ left: 15px;
+ height: 40px;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ background: url(graphics/controlbar-white.gif) right -90px no-repeat;
+
+}
+.highslide-controls li {
+ float: left;
+ padding: 5px 0;
+ margin:0;
+}
+.highslide-controls a {
+ background-image: url(graphics/controlbar-white.gif);
+ display: block;
+ float: left;
+ height: 30px;
+ width: 30px;
+ outline: none;
+}
+.highslide-controls a.disabled {
+ cursor: default;
+}
+.highslide-controls a.disabled span {
+ cursor: default;
+}
+.highslide-controls a span {
+ /* hide the text for these graphic buttons */
+ display: none;
+ cursor: pointer;
+}
+
+
+/* The CSS sprites for the controlbar - see http://www.google.com/search?q=css+sprites */
+.highslide-controls .highslide-previous a {
+ background-position: 0 0;
+}
+.highslide-controls .highslide-previous a:hover {
+ background-position: 0 -30px;
+}
+.highslide-controls .highslide-previous a.disabled {
+ background-position: 0 -60px !important;
+}
+.highslide-controls .highslide-play a {
+ background-position: -30px 0;
+}
+.highslide-controls .highslide-play a:hover {
+ background-position: -30px -30px;
+}
+.highslide-controls .highslide-play a.disabled {
+ background-position: -30px -60px !important;
+}
+.highslide-controls .highslide-pause a {
+ background-position: -60px 0;
+}
+.highslide-controls .highslide-pause a:hover {
+ background-position: -60px -30px;
+}
+.highslide-controls .highslide-next a {
+ background-position: -90px 0;
+}
+.highslide-controls .highslide-next a:hover {
+ background-position: -90px -30px;
+}
+.highslide-controls .highslide-next a.disabled {
+ background-position: -90px -60px !important;
+}
+.highslide-controls .highslide-move a {
+ background-position: -120px 0;
+}
+.highslide-controls .highslide-move a:hover {
+ background-position: -120px -30px;
+}
+.highslide-controls .highslide-full-expand a {
+ background-position: -150px 0;
+}
+.highslide-controls .highslide-full-expand a:hover {
+ background-position: -150px -30px;
+}
+.highslide-controls .highslide-full-expand a.disabled {
+ background-position: -150px -60px !important;
+}
+.highslide-controls .highslide-close a {
+ background-position: -180px 0;
+}
+.highslide-controls .highslide-close a:hover {
+ background-position: -180px -30px;
+}
+
+/*****************************************************************************/
+/* Styles for the HTML popups */
+/* Remove these if you are not using Highslide HTML */
+/*****************************************************************************/
+.highslide-maincontent {
+ display: none;
+}
+.highslide-html {
+ background-color: white;
+}
+.highslide-html-content {
+ display: none;
+ width: 400px;
+ padding: 0 5px 5px 5px;
+}
+.highslide-header {
+ padding-bottom: 5px;
+}
+.highslide-header ul {
+ margin: 0;
+ padding: 0;
+ text-align: right;
+}
+.highslide-header ul li {
+ display: inline;
+ padding-left: 1em;
+}
+.highslide-header ul li.highslide-previous, .highslide-header ul li.highslide-next {
+ display: none;
+}
+.highslide-header a {
+ font-weight: bold;
+ color: gray;
+ text-transform: uppercase;
+ text-decoration: none;
+}
+.highslide-header a:hover {
+ color: black;
+}
+.highslide-header .highslide-move a {
+ cursor: move;
+}
+.highslide-footer {
+ height: 16px;
+}
+.highslide-footer .highslide-resize {
+ display: block;
+ float: right;
+ margin-top: 5px;
+ height: 11px;
+ width: 11px;
+ background: url(graphics/resize.gif) no-repeat;
+}
+.highslide-footer .highslide-resize span {
+ display: none;
+}
+.highslide-body {
+}
+.highslide-resize {
+ cursor: nw-resize;
+}
+
+/*****************************************************************************/
+/* Styles for the Individual wrapper class names. */
+/* See www.highslide.com/ref/hs.wrapperClassName */
+/* You can safely remove the class name themes you don't use */
+/*****************************************************************************/
+
+/* hs.wrapperClassName = 'draggable-header' */
+.draggable-header .highslide-header {
+ height: 18px;
+ border-bottom: 1px solid #dddddd;
+}
+.draggable-header .highslide-heading {
+ position: absolute;
+ margin: 2px 0.4em;
+}
+
+.draggable-header .highslide-header .highslide-move {
+ cursor: move;
+ display: block;
+ height: 16px;
+ position: absolute;
+ right: 24px;
+ top: 0;
+ width: 100%;
+ z-index: 1;
+}
+.draggable-header .highslide-header .highslide-move * {
+ display: none;
+}
+.draggable-header .highslide-header .highslide-close {
+ position: absolute;
+ right: 2px;
+ top: 2px;
+ z-index: 2;
+ padding: 0;
+}
+.draggable-header .highslide-header .highslide-close a {
+ display: block;
+ height: 16px;
+ width: 16px;
+ background-image: url(graphics/closeX.png);
+}
+.draggable-header .highslide-header .highslide-close a:hover {
+ background-position: 0 16px;
+}
+.draggable-header .highslide-header .highslide-close span {
+ display: none;
+}
+.draggable-header .highslide-maincontent {
+ padding-top: 1em;
+}
+
+/* hs.wrapperClassName = 'titlebar' */
+.titlebar .highslide-header {
+ height: 18px;
+ border-bottom: 1px solid #dddddd;
+}
+.titlebar .highslide-heading {
+ position: absolute;
+ margin: 1px 0.4em;
+ color: #666666;
+}
+
+.titlebar .highslide-header .highslide-move {
+ cursor: move;
+ display: block;
+ height: 16px;
+ position: absolute;
+ right: 24px;
+ top: 0;
+ width: 100%;
+ z-index: 1;
+}
+.titlebar .highslide-header .highslide-move * {
+ display: none;
+}
+.titlebar .highslide-header li {
+ position: relative;
+ top: 3px;
+ z-index: 2;
+ padding: 0 0 0 1em;
+}
+.titlebar .highslide-maincontent {
+ padding-top: 1em;
+}
+
+/* hs.wrapperClassName = 'no-footer' */
+.no-footer .highslide-footer {
+ display: none;
+}
+
+/* hs.wrapperClassName = 'wide-border' */
+.wide-border {
+ background: white;
+}
+.wide-border .highslide-image {
+ border-width: 10px;
+}
+.wide-border .highslide-caption {
+ padding: 0 10px 10px 10px;
+}
+
+/* hs.wrapperClassName = 'borderless' */
+.borderless .highslide-image {
+ border: none;
+}
+.borderless .highslide-caption {
+ border-bottom: 1px solid white;
+ border-top: 1px solid white;
+ background: silver;
+}
+
+/* hs.wrapperClassName = 'outer-glow' */
+.outer-glow {
+ background: #444;
+}
+.outer-glow .highslide-image {
+ border: 5px solid #444444;
+}
+.outer-glow .highslide-caption {
+ border: 5px solid #444444;
+ border-top: none;
+ padding: 5px;
+ background-color: gray;
+}
+
+/* hs.wrapperClassName = 'colored-border' */
+.colored-border {
+ background: white;
+}
+.colored-border .highslide-image {
+ border: 2px solid green;
+}
+.colored-border .highslide-caption {
+ border: 2px solid green;
+ border-top: none;
+}
+
+/* hs.wrapperClassName = 'dark' */
+.dark {
+ background: #111;
+}
+.dark .highslide-image {
+ border-color: black black #202020 black;
+ background: gray;
+}
+.dark .highslide-caption {
+ color: white;
+ background: #111;
+}
+.dark .highslide-controls,
+.dark .highslide-controls ul,
+.dark .highslide-controls a {
+ background-image: url(graphics/controlbar-black-border.gif);
+}
+
+/* hs.wrapperClassName = 'floating-caption' */
+.floating-caption .highslide-caption {
+ position: absolute;
+ padding: 1em 0 0 0;
+ background: none;
+ color: white;
+ border: none;
+ font-weight: bold;
+}
+
+/* hs.wrapperClassName = 'controls-in-heading' */
+.controls-in-heading .highslide-heading {
+ color: gray;
+ font-weight: bold;
+ height: 20px;
+ overflow: hidden;
+ cursor: default;
+ padding: 0 0 0 22px;
+ margin: 0;
+ background: url(graphics/icon.gif) no-repeat 0 1px;
+}
+.controls-in-heading .highslide-controls {
+ width: 105px;
+ height: 20px;
+ position: relative;
+ margin: 0;
+ top: -23px;
+ left: 7px;
+ background: none;
+}
+.controls-in-heading .highslide-controls ul {
+ position: static;
+ height: 20px;
+ background: none;
+}
+.controls-in-heading .highslide-controls li {
+ padding: 0;
+}
+.controls-in-heading .highslide-controls a {
+ background-image: url(graphics/controlbar-white-small.gif);
+ height: 20px;
+ width: 20px;
+}
+
+.controls-in-heading .highslide-controls .highslide-move {
+ display: none;
+}
+
+.controls-in-heading .highslide-controls .highslide-previous a {
+ background-position: 0 0;
+}
+.controls-in-heading .highslide-controls .highslide-previous a:hover {
+ background-position: 0 -20px;
+}
+.controls-in-heading .highslide-controls .highslide-previous a.disabled {
+ background-position: 0 -40px !important;
+}
+.controls-in-heading .highslide-controls .highslide-play a {
+ background-position: -20px 0;
+}
+.controls-in-heading .highslide-controls .highslide-play a:hover {
+ background-position: -20px -20px;
+}
+.controls-in-heading .highslide-controls .highslide-play a.disabled {
+ background-position: -20px -40px !important;
+}
+.controls-in-heading .highslide-controls .highslide-pause a {
+ background-position: -40px 0;
+}
+.controls-in-heading .highslide-controls .highslide-pause a:hover {
+ background-position: -40px -20px;
+}
+.controls-in-heading .highslide-controls .highslide-next a {
+ background-position: -60px 0;
+}
+.controls-in-heading .highslide-controls .highslide-next a:hover {
+ background-position: -60px -20px;
+}
+.controls-in-heading .highslide-controls .highslide-next a.disabled {
+ background-position: -60px -40px !important;
+}
+.controls-in-heading .highslide-controls .highslide-full-expand a {
+ background-position: -100px 0;
+}
+.controls-in-heading .highslide-controls .highslide-full-expand a:hover {
+ background-position: -100px -20px;
+}
+.controls-in-heading .highslide-controls .highslide-full-expand a.disabled {
+ background-position: -100px -40px !important;
+}
+.controls-in-heading .highslide-controls .highslide-close a {
+ background-position: -120px 0;
+}
+.controls-in-heading .highslide-controls .highslide-close a:hover {
+ background-position: -120px -20px;
+}
+
+/*****************************************************************************/
+/* Styles for text based controls. */
+/* You can safely remove this if you don't use text based controls */
+/*****************************************************************************/
+
+.text-controls .highslide-controls {
+ width: auto;
+ height: auto;
+ margin: 0;
+ text-align: center;
+ background: none;
+}
+.text-controls ul {
+ position: static;
+ background: none;
+ height: auto;
+ left: 0;
+}
+.text-controls .highslide-move {
+ display: none;
+}
+.text-controls li {
+ background-image: url(graphics/controlbar-text-buttons.png);
+ background-position: right top !important;
+ padding: 0;
+ margin-left: 15px;
+ display: block;
+ width: auto;
+}
+.text-controls a {
+ background: url(graphics/controlbar-text-buttons.png) no-repeat;
+ background-position: left top !important;
+ position: relative;
+ left: -10px;
+ display: block;
+ width: auto;
+ height: auto;
+ text-decoration: none !important;
+}
+.text-controls a span {
+ background: url(graphics/controlbar-text-buttons.png) no-repeat;
+ margin: 1px 2px 1px 10px;
+ display: block;
+ min-width: 4em;
+ height: 18px;
+ line-height: 18px;
+ padding: 1px 0 1px 18px;
+ color: #333;
+ font-family: "Trebuchet MS", Arial, sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+ white-space: nowrap;
+}
+.text-controls .highslide-next {
+ margin-right: 1em;
+}
+.text-controls .highslide-full-expand a span {
+ min-width: 0;
+ margin: 1px 0;
+ padding: 1px 0 1px 10px;
+}
+.text-controls .highslide-close a span {
+ min-width: 0;
+}
+.text-controls a:hover span {
+ color: black;
+}
+.text-controls a.disabled span {
+ color: #999;
+}
+
+.text-controls .highslide-previous span {
+ background-position: 0 -40px;
+}
+.text-controls .highslide-previous a.disabled {
+ background-position: left top !important;
+}
+.text-controls .highslide-previous a.disabled span {
+ background-position: 0 -140px;
+}
+.text-controls .highslide-play span {
+ background-position: 0 -60px;
+}
+.text-controls .highslide-play a.disabled {
+ background-position: left top !important;
+}
+.text-controls .highslide-play a.disabled span {
+ background-position: 0 -160px;
+}
+.text-controls .highslide-pause span {
+ background-position: 0 -80px;
+}
+.text-controls .highslide-next span {
+ background-position: 0 -100px;
+}
+.text-controls .highslide-next a.disabled {
+ background-position: left top !important;
+}
+.text-controls .highslide-next a.disabled span {
+ background-position: 0 -200px;
+}
+.text-controls .highslide-full-expand span {
+ background: none;
+}
+.text-controls .highslide-full-expand a.disabled {
+ background-position: left top !important;
+}
+.text-controls .highslide-close span {
+ background-position: 0 -120px;
+}
+
+
+/*****************************************************************************/
+/* Styles for the thumbstrip. */
+/* See www.highslide.com/ref/hs.addSlideshow */
+/* You can safely remove this if you don't use a thumbstrip */
+/*****************************************************************************/
+
+.highslide-thumbstrip {
+ height: 100%;
+}
+.highslide-thumbstrip div {
+ overflow: hidden;
+}
+.highslide-thumbstrip table {
+ position: relative;
+ padding: 0;
+ border-collapse: collapse;
+}
+.highslide-thumbstrip td {
+ padding: 1px;
+ /*text-align: center;*/
+}
+.highslide-thumbstrip a {
+ outline: none;
+}
+.highslide-thumbstrip img {
+ display: block;
+ border: 1px solid gray;
+ margin: 0 auto;
+}
+.highslide-thumbstrip .highslide-active-anchor img {
+ visibility: visible;
+}
+.highslide-thumbstrip .highslide-marker {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-width: 0;
+ border-style: solid;
+ border-color: transparent; /* change this to actual background color in highslide-ie6.css */
+}
+.highslide-thumbstrip-horizontal div {
+ width: auto;
+ /* width: 100% breaks in small strips in IE */
+}
+.highslide-thumbstrip-horizontal .highslide-scroll-up {
+ display: none;
+ position: absolute;
+ top: 3px;
+ left: 3px;
+ width: 25px;
+ height: 42px;
+}
+.highslide-thumbstrip-horizontal .highslide-scroll-up div {
+ margin-bottom: 10px;
+ cursor: pointer;
+ background: url(graphics/scrollarrows.png) left center no-repeat;
+ height: 42px;
+}
+.highslide-thumbstrip-horizontal .highslide-scroll-down {
+ display: none;
+ position: absolute;
+ top: 3px;
+ right: 3px;
+ width: 25px;
+ height: 42px;
+}
+.highslide-thumbstrip-horizontal .highslide-scroll-down div {
+ margin-bottom: 10px;
+ cursor: pointer;
+ background: url(graphics/scrollarrows.png) center right no-repeat;
+ height: 42px;
+}
+.highslide-thumbstrip-horizontal table {
+ margin: 2px 0 10px 0;
+}
+.highslide-viewport .highslide-thumbstrip-horizontal table {
+ margin-left: 10px;
+}
+.highslide-thumbstrip-horizontal img {
+ width: auto;
+ height: 40px;
+}
+.highslide-thumbstrip-horizontal .highslide-marker {
+ top: 47px;
+ border-left-width: 6px;
+ border-right-width: 6px;
+ border-bottom: 6px solid gray;
+}
+.highslide-viewport .highslide-thumbstrip-horizontal .highslide-marker {
+ margin-left: 10px;
+}
+.dark .highslide-thumbstrip-horizontal .highslide-marker, .highslide-viewport .highslide-thumbstrip-horizontal .highslide-marker {
+ border-bottom-color: white !important;
+}
+.highslide-thumbstrip-vertical div {
+ height: 100%;
+}
+.highslide-thumbstrip-vertical a {
+ display: block;
+}
+.highslide-thumbstrip-vertical .highslide-scroll-up {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 25px;
+}
+.highslide-thumbstrip-vertical .highslide-scroll-up div {
+ margin-left: 10px;
+ cursor: pointer;
+ background: url(graphics/scrollarrows.png) top center no-repeat;
+ height: 25px;
+}
+.highslide-thumbstrip-vertical .highslide-scroll-down {
+ display: none;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 25px;
+}
+.highslide-thumbstrip-vertical .highslide-scroll-down div {
+ margin-left: 10px;
+ cursor: pointer;
+ background: url(graphics/scrollarrows.png) bottom center no-repeat;
+ height: 25px;
+}
+.highslide-thumbstrip-vertical table {
+ margin: 10px 0 0 10px;
+}
+.highslide-thumbstrip-vertical img {
+ max-width: 60px;
+}
+.highslide-thumbstrip-vertical .highslide-marker {
+ left: 0;
+ margin-top: 8px;
+ border-top-width: 6px;
+ border-bottom-width: 6px;
+ border-left: 6px solid gray;
+}
+.dark .highslide-thumbstrip-vertical .highslide-marker, .highslide-viewport .highslide-thumbstrip-vertical .highslide-marker {
+ border-left-color: white;
+}
+
+.highslide-viewport .highslide-thumbstrip-float {
+ overflow: auto;
+}
+.highslide-thumbstrip-float ul {
+ margin: 2px 0;
+ padding: 0;
+}
+.highslide-thumbstrip-float li {
+ display: block;
+ height: 60px;
+ margin: 0 2px;
+ list-style: none;
+ float: left;
+}
+.highslide-thumbstrip-float img {
+ display: inline;
+ border-color: silver;
+ max-height: 56px;
+}
+.highslide-thumbstrip-float .highslide-active-anchor img {
+ border-color: black;
+}
+.highslide-thumbstrip-float .highslide-scroll-up div, .highslide-thumbstrip-float .highslide-scroll-down div {
+ display: none;
+}
+.highslide-thumbstrip-float .highslide-marker {
+ display: none;
+} \ No newline at end of file
diff --git a/highslide/highslide.js b/highslide/highslide.js
new file mode 100644
index 0000000..43419b6
--- /dev/null
+++ b/highslide/highslide.js
@@ -0,0 +1,1872 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default
+Author: Torstein H�nsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+var hs = {
+// Language strings
+lang : {
+ cssDirection: 'ltr',
+ loadingText : 'Loading...',
+ loadingTitle : 'Click to cancel',
+ focusTitle : 'Click to bring to front',
+ fullExpandTitle : 'Expand to actual size (f)',
+ creditsText : 'Powered by <i>Highslide JS</i>',
+ creditsTitle : 'Go to the Highslide JS homepage',
+ restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
+},
+// See http://highslide.com/ref for examples of settings
+graphicsDir : 'highslide/graphics/',
+expandCursor : 'zoomin.cur', // null disables
+restoreCursor : 'zoomout.cur', // null disables
+expandDuration : 250, // milliseconds
+restoreDuration : 250,
+marginLeft : 15,
+marginRight : 15,
+marginTop : 15,
+marginBottom : 15,
+zIndexCounter : 1001, // adjust to other absolutely positioned elements
+loadingOpacity : 0.75,
+allowMultipleInstances: true,
+numberOfImagesToPreload : 5,
+outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only
+outlineStartOffset : 3, // ends at 10
+padToMinWidth : false, // pad the popup width to make room for wide caption
+fullExpandPosition : 'bottom right',
+fullExpandOpacity : 1,
+showCredits : true, // you can set this to false if you want
+creditsHref : 'http://highslide.com/',
+creditsTarget : '_self',
+enableKeyListener : true,
+openerTagNames : ['a'], // Add more to allow slideshow indexing
+
+dragByHeading: true,
+minWidth: 200,
+minHeight: 200,
+allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
+outlineType : 'drop-shadow', // set null to disable outlines
+// END OF YOUR SETTINGS
+
+
+// declare internal properties
+preloadTheseImages : [],
+continuePreloading: true,
+expanders : [],
+overrides : [
+ 'allowSizeReduction',
+ 'useBox',
+ 'outlineType',
+ 'outlineWhileAnimating',
+ 'captionId',
+ 'captionText',
+ 'captionEval',
+ 'captionOverlay',
+ 'headingId',
+ 'headingText',
+ 'headingEval',
+ 'headingOverlay',
+ 'creditsPosition',
+ 'dragByHeading',
+
+ 'width',
+ 'height',
+
+ 'wrapperClassName',
+ 'minWidth',
+ 'minHeight',
+ 'maxWidth',
+ 'maxHeight',
+ 'slideshowGroup',
+ 'easing',
+ 'easingClose',
+ 'fadeInOut',
+ 'src'
+],
+overlays : [],
+idCounter : 0,
+oPos : {
+ x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'],
+ y: ['above', 'top', 'middle', 'bottom', 'below']
+},
+mouse: {},
+headingOverlay: {},
+captionOverlay: {},
+timers : [],
+
+pendingOutlines : {},
+clones : {},
+onReady: [],
+uaVersion: parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]),
+ie : (document.all && !window.opera),
+safari : /Safari/.test(navigator.userAgent),
+geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),
+
+$ : function (id) {
+ if (id) return document.getElementById(id);
+},
+
+push : function (arr, val) {
+ arr[arr.length] = val;
+},
+
+createElement : function (tag, attribs, styles, parent, nopad) {
+ var el = document.createElement(tag);
+ if (attribs) hs.extend(el, attribs);
+ if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0});
+ if (styles) hs.setStyles(el, styles);
+ if (parent) parent.appendChild(el);
+ return el;
+},
+
+extend : function (el, attribs) {
+ for (var x in attribs) el[x] = attribs[x];
+ return el;
+},
+
+setStyles : function (el, styles) {
+ for (var x in styles) {
+ if (hs.ie && x == 'opacity') {
+ if (styles[x] > 0.99) el.style.removeAttribute('filter');
+ else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')';
+ }
+ else el.style[x] = styles[x];
+ }
+},
+animate: function(el, prop, opt) {
+ var start,
+ end,
+ unit;
+ if (typeof opt != 'object' || opt === null) {
+ var args = arguments;
+ opt = {
+ duration: args[2],
+ easing: args[3],
+ complete: args[4]
+ };
+ }
+ if (typeof opt.duration != 'number') opt.duration = 250;
+ opt.easing = Math[opt.easing] || Math.easeInQuad;
+ opt.curAnim = hs.extend({}, prop);
+ for (var name in prop) {
+ var e = new hs.fx(el, opt , name );
+
+ start = parseFloat(hs.css(el, name)) || 0;
+ end = parseFloat(prop[name]);
+ unit = name != 'opacity' ? 'px' : '';
+
+ e.custom( start, end, unit );
+ }
+},
+css: function(el, prop) {
+ if (document.defaultView) {
+ return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop);
+
+ } else {
+ if (prop == 'opacity') prop = 'filter';
+ var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })];
+ if (prop == 'filter')
+ val = val.replace(/alpha\(opacity=([0-9]+)\)/,
+ function (a, b) { return b / 100 });
+ return val === '' ? 1 : val;
+ }
+},
+
+getPageSize : function () {
+ var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat'
+ ? d.documentElement : d.body;
+
+ var width = hs.ie ? iebody.clientWidth :
+ (d.documentElement.clientWidth || self.innerWidth),
+ height = hs.ie ? iebody.clientHeight : self.innerHeight;
+
+ hs.page = {
+ width: width,
+ height: height,
+ scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
+ scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
+ }
+},
+
+getPosition : function(el) {
+ var p = { x: el.offsetLeft, y: el.offsetTop };
+ while (el.offsetParent) {
+ el = el.offsetParent;
+ p.x += el.offsetLeft;
+ p.y += el.offsetTop;
+ if (el != document.body && el != document.documentElement) {
+ p.x -= el.scrollLeft;
+ p.y -= el.scrollTop;
+ }
+ }
+ return p;
+},
+
+expand : function(a, params, custom, type) {
+ if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container);
+ if (typeof a.getParams == 'function') return params;
+ try {
+ new hs.Expander(a, params, custom);
+ return false;
+ } catch (e) { return true; }
+},
+
+
+focusTopmost : function() {
+ var topZ = 0,
+ topmostKey = -1,
+ expanders = hs.expanders,
+ exp,
+ zIndex;
+ for (var i = 0; i < expanders.length; i++) {
+ exp = expanders[i];
+ if (exp) {
+ zIndex = exp.wrapper.style.zIndex;
+ if (zIndex && zIndex > topZ) {
+ topZ = zIndex;
+ topmostKey = i;
+ }
+ }
+ }
+ if (topmostKey == -1) hs.focusKey = -1;
+ else expanders[topmostKey].focus();
+},
+
+getParam : function (a, param) {
+ a.getParams = a.onclick;
+ var p = a.getParams ? a.getParams() : null;
+ a.getParams = null;
+
+ return (p && typeof p[param] != 'undefined') ? p[param] :
+ (typeof hs[param] != 'undefined' ? hs[param] : null);
+},
+
+getSrc : function (a) {
+ var src = hs.getParam(a, 'src');
+ if (src) return src;
+ return a.href;
+},
+
+getNode : function (id) {
+ var node = hs.$(id), clone = hs.clones[id], a = {};
+ if (!node && !clone) return null;
+ if (!clone) {
+ clone = node.cloneNode(true);
+ clone.id = '';
+ hs.clones[id] = clone;
+ return node;
+ } else {
+ return clone.cloneNode(true);
+ }
+},
+
+discardElement : function(d) {
+ if (d) hs.garbageBin.appendChild(d);
+ hs.garbageBin.innerHTML = '';
+},
+transit : function (adj, exp) {
+ var last = exp = exp || hs.getExpander();
+ if (hs.upcoming) return false;
+ else hs.last = last;
+ try {
+ hs.upcoming = adj;
+ adj.onclick();
+ } catch (e){
+ hs.last = hs.upcoming = null;
+ }
+ try {
+ exp.close();
+ } catch (e) {}
+ return false;
+},
+
+previousOrNext : function (el, op) {
+ var exp = hs.getExpander(el);
+ if (exp) {
+ adj = exp.getAdjacentAnchor(op);
+ return hs.transit(adj, exp);
+ } else return false;
+},
+
+previous : function (el) {
+ return hs.previousOrNext(el, -1);
+},
+
+next : function (el) {
+ return hs.previousOrNext(el, 1);
+},
+
+keyHandler : function(e) {
+ if (!e) e = window.event;
+ if (!e.target) e.target = e.srcElement; // ie
+ if (typeof e.target.form != 'undefined') return true; // form element has focus
+ var exp = hs.getExpander();
+
+ var op = null;
+ switch (e.keyCode) {
+ case 70: // f
+ if (exp) exp.doFullExpand();
+ return true;
+ case 32: // Space
+ case 34: // Page Down
+ case 39: // Arrow right
+ case 40: // Arrow down
+ op = 1;
+ break;
+ case 8: // Backspace
+ case 33: // Page Up
+ case 37: // Arrow left
+ case 38: // Arrow up
+ op = -1;
+ break;
+ case 27: // Escape
+ case 13: // Enter
+ op = 0;
+ }
+ if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+ if (!hs.enableKeyListener) return true;
+
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ if (exp) {
+ if (op == 0) {
+ exp.close();
+ } else {
+ hs.previousOrNext(exp.key, op);
+ }
+ return false;
+ }
+ }
+ return true;
+},
+
+
+registerOverlay : function (overlay) {
+ hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } ));
+},
+
+
+getWrapperKey : function (element, expOnly) {
+ var el, re = /^highslide-wrapper-([0-9]+)$/;
+ // 1. look in open expanders
+ el = element;
+ while (el.parentNode) {
+ if (el.id && re.test(el.id)) return el.id.replace(re, "$1");
+ el = el.parentNode;
+ }
+ // 2. look in thumbnail
+ if (!expOnly) {
+ el = element;
+ while (el.parentNode) {
+ if (el.tagName && hs.isHsAnchor(el)) {
+ for (var key = 0; key < hs.expanders.length; key++) {
+ var exp = hs.expanders[key];
+ if (exp && exp.a == el) return key;
+ }
+ }
+ el = el.parentNode;
+ }
+ }
+ return null;
+},
+
+getExpander : function (el, expOnly) {
+ if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null;
+ if (typeof el == 'number') return hs.expanders[el] || null;
+ if (typeof el == 'string') el = hs.$(el);
+ return hs.expanders[hs.getWrapperKey(el, expOnly)] || null;
+},
+
+isHsAnchor : function (a) {
+ return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/));
+},
+
+reOrder : function () {
+ for (var i = 0; i < hs.expanders.length; i++)
+ if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost();
+},
+
+mouseClickHandler : function(e)
+{
+ if (!e) e = window.event;
+ if (e.button > 1) return true;
+ if (!e.target) e.target = e.srcElement;
+
+ var el = e.target;
+ while (el.parentNode
+ && !(/highslide-(image|move|html|resize)/.test(el.className)))
+ {
+ el = el.parentNode;
+ }
+ var exp = hs.getExpander(el);
+ if (exp && (exp.isClosing || !exp.isExpanded)) return true;
+
+ if (exp && e.type == 'mousedown') {
+ if (e.target.form) return true;
+ var match = el.className.match(/highslide-(image|move|resize)/);
+ if (match) {
+ hs.dragArgs = { exp: exp , type: match[1], left: exp.x.pos, width: exp.x.size, top: exp.y.pos,
+ height: exp.y.size, clickX: e.clientX, clickY: e.clientY };
+
+
+ hs.addEventListener(document, 'mousemove', hs.dragHandler);
+ if (e.preventDefault) e.preventDefault(); // FF
+
+ if (/highslide-(image|html)-blur/.test(exp.content.className)) {
+ exp.focus();
+ hs.hasFocused = true;
+ }
+ return false;
+ }
+ } else if (e.type == 'mouseup') {
+
+ hs.removeEventListener(document, 'mousemove', hs.dragHandler);
+
+ if (hs.dragArgs) {
+ if (hs.styleRestoreCursor && hs.dragArgs.type == 'image')
+ hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor;
+ var hasDragged = hs.dragArgs.hasDragged;
+
+ if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
+ exp.close();
+ }
+ else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
+ hs.dragArgs.exp.doShowHide('hidden');
+ }
+
+ hs.hasFocused = false;
+ hs.dragArgs = null;
+
+ } else if (/highslide-image-blur/.test(el.className)) {
+ el.style.cursor = hs.styleRestoreCursor;
+ }
+ }
+ return false;
+},
+
+dragHandler : function(e)
+{
+ if (!hs.dragArgs) return true;
+ if (!e) e = window.event;
+ var a = hs.dragArgs, exp = a.exp;
+
+ a.dX = e.clientX - a.clickX;
+ a.dY = e.clientY - a.clickY;
+
+ var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
+ if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0)
+ || (distance > (hs.dragSensitivity || 5));
+
+ if (a.hasDragged && e.clientX > 5 && e.clientY > 5) {
+
+ if (a.type == 'resize') exp.resize(a);
+ else {
+ exp.moveTo(a.left + a.dX, a.top + a.dY);
+ if (a.type == 'image') exp.content.style.cursor = 'move';
+ }
+ }
+ return false;
+},
+
+wrapperMouseHandler : function (e) {
+ try {
+ if (!e) e = window.event;
+ var over = /mouseover/i.test(e.type);
+ if (!e.target) e.target = e.srcElement; // ie
+ if (hs.ie) e.relatedTarget =
+ over ? e.fromElement : e.toElement; // ie
+ var exp = hs.getExpander(e.target);
+ if (!exp.isExpanded) return;
+ if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp
+ || hs.dragArgs) return;
+ for (var i = 0; i < exp.overlays.length; i++) (function() {
+ var o = hs.$('hsId'+ exp.overlays[i]);
+ if (o && o.hideOnMouseOut) {
+ if (over) hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur);
+ }
+ })();
+ } catch (e) {}
+},
+addEventListener : function (el, event, func) {
+ if (el == document && event == 'ready') hs.push(hs.onReady, func);
+ try {
+ el.addEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ el.attachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = func;
+ }
+ }
+},
+
+removeEventListener : function (el, event, func) {
+ try {
+ el.removeEventListener(event, func, false);
+ } catch (e) {
+ try {
+ el.detachEvent('on'+ event, func);
+ } catch (e) {
+ el['on'+ event] = null;
+ }
+ }
+},
+
+preloadFullImage : function (i) {
+ if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
+ var img = document.createElement('img');
+ img.onload = function() {
+ img = null;
+ hs.preloadFullImage(i + 1);
+ };
+ img.src = hs.preloadTheseImages[i];
+ }
+},
+preloadImages : function (number) {
+ if (number && typeof number != 'object') hs.numberOfImagesToPreload = number;
+
+ var arr = hs.getAnchors();
+ for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) {
+ hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i]));
+ }
+
+ // preload outlines
+ if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} );
+ else
+
+ hs.preloadFullImage(0);
+
+ // preload cursor
+ if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor });
+},
+
+
+init : function () {
+ if (!hs.container) {
+
+ hs.getPageSize();
+ hs.ieLt7 = hs.ie && hs.uaVersion < 7;
+ for (var x in hs.langDefaults) {
+ if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x];
+ else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined')
+ hs.lang[x] = hs.langDefaults[x];
+ }
+
+ hs.container = hs.createElement('div', {
+ className: 'highslide-container'
+ }, {
+ position: 'absolute',
+ left: 0,
+ top: 0,
+ width: '100%',
+ zIndex: hs.zIndexCounter,
+ direction: 'ltr'
+ },
+ document.body,
+ true
+ );
+ hs.loading = hs.createElement('a', {
+ className: 'highslide-loading',
+ title: hs.lang.loadingTitle,
+ innerHTML: hs.lang.loadingText,
+ href: 'javascript:;'
+ }, {
+ position: 'absolute',
+ top: '-9999px',
+ opacity: hs.loadingOpacity,
+ zIndex: 1
+ }, hs.container
+ );
+ hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container);
+
+ // http://www.robertpenner.com/easing/
+ Math.linearTween = function (t, b, c, d) {
+ return c*t/d + b;
+ };
+ Math.easeInQuad = function (t, b, c, d) {
+ return c*(t/=d)*t + b;
+ };
+
+ hs.hideSelects = hs.ieLt7;
+ hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE'
+ || (hs.ie && hs.uaVersion < 5.5));
+ }
+},
+ready : function() {
+ if (hs.isReady) return;
+ hs.isReady = true;
+
+ for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i]();
+},
+
+updateAnchors : function() {
+ var el, els, all = [], images = [],groups = {}, re;
+
+ for (var i = 0; i < hs.openerTagNames.length; i++) {
+ els = document.getElementsByTagName(hs.openerTagNames[i]);
+ for (var j = 0; j < els.length; j++) {
+ el = els[j];
+ re = hs.isHsAnchor(el);
+ if (re) {
+ hs.push(all, el);
+ if (re[0] == 'hs.expand') hs.push(images, el);
+ var g = hs.getParam(el, 'slideshowGroup') || 'none';
+ if (!groups[g]) groups[g] = [];
+ hs.push(groups[g], el);
+ }
+ }
+ }
+ hs.anchors = { all: all, groups: groups, images: images };
+ return hs.anchors;
+
+},
+
+getAnchors : function() {
+ return hs.anchors || hs.updateAnchors();
+},
+
+
+close : function(el) {
+ var exp = hs.getExpander(el);
+ if (exp) exp.close();
+ return false;
+}
+}; // end hs object
+hs.fx = function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if (!options.orig) options.orig = {};
+};
+hs.fx.prototype = {
+ update: function(){
+ (hs.fx.step[this.prop] || hs.fx.step._default)(this);
+
+ if (this.options.step)
+ this.options.step.call(this.elem, this.now, this);
+
+ },
+ custom: function(from, to, unit){
+ this.startTime = (new Date()).getTime();
+ this.start = from;
+ this.end = to;
+ this.unit = unit;// || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && hs.timers.push(t) == 1 ) {
+ hs.timerId = setInterval(function(){
+ var timers = hs.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval(hs.timerId);
+ }
+ }, 13);
+ }
+ },
+ step: function(gotoEnd){
+ var t = (new Date()).getTime();
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if (this.options.complete) this.options.complete.call(this.elem);
+ }
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+ this.pos = this.options.easing(n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+ this.update();
+ }
+ return true;
+ }
+
+};
+
+hs.extend( hs.fx, {
+ step: {
+
+ opacity: function(fx){
+ hs.setStyles(fx.elem, { opacity: fx.now });
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+
+hs.Outline = function (outlineType, onLoad) {
+ this.onLoad = onLoad;
+ this.outlineType = outlineType;
+ var v = hs.uaVersion, tr;
+
+ this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v < 7;
+ if (!outlineType) {
+ if (onLoad) onLoad();
+ return;
+ }
+
+ hs.init();
+ this.table = hs.createElement(
+ 'table', {
+ cellSpacing: 0
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ borderCollapse: 'collapse',
+ width: 0
+ },
+ hs.container,
+ true
+ );
+ var tbody = hs.createElement('tbody', null, null, this.table, 1);
+
+ this.td = [];
+ for (var i = 0; i <= 8; i++) {
+ if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true);
+ this.td[i] = hs.createElement('td', null, null, tr, true);
+ var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
+ hs.setStyles(this.td[i], style);
+ }
+ this.td[4].className = outlineType +' highslide-outline';
+
+ this.preloadGraphic();
+};
+
+hs.Outline.prototype = {
+preloadGraphic : function () {
+ var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png";
+
+ var appendTo = hs.safari ? hs.container : null;
+ this.graphic = hs.createElement('img', null, { position: 'absolute',
+ top: '-9999px' }, appendTo, true); // for onload trigger
+
+ var pThis = this;
+ this.graphic.onload = function() { pThis.onGraphicLoad(); };
+
+ this.graphic.src = src;
+},
+
+onGraphicLoad : function () {
+ var o = this.offset = this.graphic.width / 4,
+ pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],
+ dim = { height: (2*o) +'px', width: (2*o) +'px' };
+ for (var i = 0; i <= 8; i++) {
+ if (pos[i]) {
+ if (this.hasAlphaImageLoader) {
+ var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px';
+ var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true);
+ hs.createElement ('div', null, {
+ filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')",
+ position: 'absolute',
+ width: w,
+ height: this.graphic.height +'px',
+ left: (pos[i][0]*o)+'px',
+ top: (pos[i][1]*o)+'px'
+ },
+ div,
+ true);
+ } else {
+ hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'});
+ }
+
+ if (window.opera && (i == 3 || i ==5))
+ hs.createElement('div', null, dim, this.td[i], true);
+
+ hs.setStyles (this.td[i], dim);
+ }
+ }
+ this.graphic = null;
+ if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy();
+ hs.pendingOutlines[this.outlineType] = this;
+ if (this.onLoad) this.onLoad();
+},
+
+setPosition : function (pos, offset, vis, dur, easing) {
+ var exp = this.exp,
+ stl = exp.wrapper.style,
+ offset = offset || 0,
+ pos = pos || {
+ x: exp.x.pos + offset,
+ y: exp.y.pos + offset,
+ w: exp.x.get('wsize') - 2 * offset,
+ h: exp.y.get('wsize') - 2 * offset
+ };
+ if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset)
+ ? 'visible' : 'hidden';
+ hs.setStyles(this.table, {
+ left: (pos.x - this.offset) +'px',
+ top: (pos.y - this.offset) +'px',
+ width: (pos.w + 2 * this.offset) +'px'
+ });
+
+ pos.w -= 2 * this.offset;
+ pos.h -= 2 * this.offset;
+ hs.setStyles (this.td[4], {
+ width: pos.w >= 0 ? pos.w +'px' : 0,
+ height: pos.h >= 0 ? pos.h +'px' : 0
+ });
+ if (this.hasAlphaImageLoader) this.td[3].style.height
+ = this.td[5].style.height = this.td[4].style.height;
+
+},
+
+destroy : function(hide) {
+ if (hide) this.table.style.visibility = 'hidden';
+ else hs.discardElement(this.table);
+}
+};
+
+hs.Dimension = function(exp, dim) {
+ this.exp = exp;
+ this.dim = dim;
+ this.ucwh = dim == 'x' ? 'Width' : 'Height';
+ this.wh = this.ucwh.toLowerCase();
+ this.uclt = dim == 'x' ? 'Left' : 'Top';
+ this.lt = this.uclt.toLowerCase();
+ this.ucrb = dim == 'x' ? 'Right' : 'Bottom';
+ this.rb = this.ucrb.toLowerCase();
+ this.p1 = this.p2 = 0;
+};
+hs.Dimension.prototype = {
+get : function(key) {
+ switch (key) {
+ case 'loadingPos':
+ return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2;
+ case 'wsize':
+ return this.size + 2 * this.cb + this.p1 + this.p2;
+ case 'fitsize':
+ return this.clientSize - this.marginMin - this.marginMax;
+ case 'maxsize':
+ return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ;
+ case 'opos':
+ return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
+ case 'osize':
+ return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0);
+ case 'imgPad':
+ return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0;
+
+ }
+},
+calcBorders: function() {
+ // correct for borders
+ this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2;
+ this.marginMax = hs['margin'+ this.ucrb];
+},
+calcThumb: function() {
+ this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) :
+ this.exp.el['offset'+ this.ucwh];
+ this.tpos = this.exp.tpos[this.dim];
+ this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2;
+ if (this.tpos < 1) {
+ this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt];
+ };
+},
+calcExpanded: function() {
+ var exp = this.exp;
+ this.justify = 'auto';
+
+
+ // size and position
+ this.pos = this.tpos - this.cb + this.tb;
+ this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full);
+ this.minSize = exp.allowSizeReduction ?
+ Math.min(exp['min'+ this.ucwh], this.full) :this.full;
+ if (exp.isImage && exp.useBox) {
+ this.size = exp[this.wh];
+ this.imgSize = this.full;
+ }
+ if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth;
+ this.marginMin = hs['margin'+ this.uclt];
+ this.scroll = hs.page['scroll'+ this.uclt];
+ this.clientSize = hs.page[this.wh];
+},
+setSize: function(i) {
+ var exp = this.exp;
+ if (exp.isImage && (exp.useBox || hs.padToMinWidth)) {
+ this.imgSize = i;
+ this.size = Math.max(this.size, this.imgSize);
+ exp.content.style[this.lt] = this.get('imgPad')+'px';
+ } else
+ this.size = i;
+
+ exp.content.style[this.wh] = i +'px';
+ exp.wrapper.style[this.wh] = this.get('wsize') +'px';
+ if (exp.outline) exp.outline.setPosition();
+ if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true);
+},
+setPos: function(i) {
+ this.pos = i;
+ this.exp.wrapper.style[this.lt] = i +'px';
+
+ if (this.exp.outline) this.exp.outline.setPosition();
+
+}
+};
+
+hs.Expander = function(a, params, custom, contentType) {
+ if (document.readyState && hs.ie && !hs.isReady) {
+ hs.addEventListener(document, 'ready', function() {
+ new hs.Expander(a, params, custom, contentType);
+ });
+ return;
+ }
+ this.a = a;
+ this.custom = custom;
+ this.contentType = contentType || 'image';
+ this.isImage = !this.isHtml;
+
+ hs.continuePreloading = false;
+ this.overlays = [];
+ hs.init();
+ var key = this.key = hs.expanders.length;
+ // override inline parameters
+ for (var i = 0; i < hs.overrides.length; i++) {
+ var name = hs.overrides[i];
+ this[name] = params && typeof params[name] != 'undefined' ?
+ params[name] : hs[name];
+ }
+ if (!this.src) this.src = a.href;
+
+ // get thumb
+ var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
+ el = this.thumb = el.getElementsByTagName('img')[0] || el;
+ this.thumbsUserSetId = el.id || a.id;
+
+ // check if already open
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].a == a) {
+ hs.expanders[i].focus();
+ return false;
+ }
+ }
+
+ // cancel other
+ if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
+ hs.expanders[i].cancelLoading();
+ }
+ }
+ hs.expanders[key] = this;
+ if (!hs.allowMultipleInstances && !hs.upcoming) {
+ if (hs.expanders[key-1]) hs.expanders[key-1].close();
+ if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
+ hs.expanders[hs.focusKey].close();
+ }
+
+ // initiate metrics
+ this.el = el;
+ this.tpos = hs.getPosition(el);
+ hs.getPageSize();
+ var x = this.x = new hs.Dimension(this, 'x');
+ x.calcThumb();
+ var y = this.y = new hs.Dimension(this, 'y');
+ y.calcThumb();
+ this.wrapper = hs.createElement(
+ 'div', {
+ id: 'highslide-wrapper-'+ this.key,
+ className: 'highslide-wrapper '+ this.wrapperClassName
+ }, {
+ visibility: 'hidden',
+ position: 'absolute',
+ zIndex: hs.zIndexCounter += 2
+ }, null, true );
+
+ this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
+ if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
+ this.outlineWhileAnimating = 0;
+
+ // get the outline
+ if (!this.outlineType) {
+ this[this.contentType +'Create']();
+
+ } else if (hs.pendingOutlines[this.outlineType]) {
+ this.connectOutline();
+ this[this.contentType +'Create']();
+
+ } else {
+ this.showLoading();
+ var exp = this;
+ new hs.Outline(this.outlineType,
+ function () {
+ exp.connectOutline();
+ exp[exp.contentType +'Create']();
+ }
+ );
+ }
+ return true;
+};
+
+hs.Expander.prototype = {
+error : function(e) {
+ //alert ('Line '+ e.lineNumber +': '+ e.message);
+ window.location.href = this.src;
+},
+
+connectOutline : function() {
+ var outline = this.outline = hs.pendingOutlines[this.outlineType];
+ outline.exp = this;
+ outline.table.style.zIndex = this.wrapper.style.zIndex - 1;
+ hs.pendingOutlines[this.outlineType] = null;
+},
+
+showLoading : function() {
+ if (this.onLoadStarted || this.loading) return;
+
+ this.loading = hs.loading;
+ var exp = this;
+ this.loading.onclick = function() {
+ exp.cancelLoading();
+ };
+ var exp = this,
+ l = this.x.get('loadingPos') +'px',
+ t = this.y.get('loadingPos') +'px';
+ setTimeout(function () {
+ if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })}
+ , 100);
+},
+
+imageCreate : function() {
+ var exp = this;
+
+ var img = document.createElement('img');
+ this.content = img;
+ img.onload = function () {
+ if (hs.expanders[exp.key]) exp.contentLoaded();
+ };
+ if (hs.blockRightClick) img.oncontextmenu = function() { return false; };
+ img.className = 'highslide-image';
+ hs.setStyles(img, {
+ visibility: 'hidden',
+ display: 'block',
+ position: 'absolute',
+ maxWidth: '9999px',
+ zIndex: 3
+ });
+// img.title = hs.lang.restoreTitle;
+ if (hs.safari) hs.container.appendChild(img);
+ if (hs.ie && hs.flushImgSize) img.src = null;
+ img.src = this.src;
+
+ this.showLoading();
+},
+
+contentLoaded : function() {
+ try {
+ if (!this.content) return;
+ this.content.onload = null;
+ if (this.onLoadStarted) return;
+ else this.onLoadStarted = true;
+
+ var x = this.x, y = this.y;
+
+ if (this.loading) {
+ hs.setStyles(this.loading, { top: '-9999px' });
+ this.loading = null;
+ }
+ x.full = this.content.width;
+ y.full = this.content.height;
+
+ hs.setStyles(this.content, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ this.wrapper.appendChild(this.content);
+ hs.container.appendChild(this.wrapper);
+
+ x.calcBorders();
+ y.calcBorders();
+
+ hs.setStyles (this.wrapper, {
+ left: (x.tpos + x.tb - x.cb) +'px',
+ top: (y.tpos + x.tb - y.cb) +'px'
+ });
+ this.getOverlays();
+
+ var ratio = x.full / y.full;
+
+ x.calcExpanded();
+ this.justify(x);
+
+ y.calcExpanded();
+ this.justify(y);
+ if (this.overlayBox) this.sizeOverlayBox(0, 1);
+
+ if (this.allowSizeReduction) {
+ this.correctRatio(ratio);
+ if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
+ this.createFullExpand();
+ if (this.overlays.length == 1) this.sizeOverlayBox();
+ }
+ }
+ this.show();
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+justify : function (p, moveOnly) {
+ var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y';
+
+ var hasMovedMin = false;
+
+ var allowReduce = p.exp.allowSizeReduction;
+ p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
+ if (p.pos < p.scroll + p.marginMin) {
+ p.pos = p.scroll + p.marginMin;
+ hasMovedMin = true;
+ }
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+ if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) {
+ if (!moveOnly && hasMovedMin && allowReduce) {
+ p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ } else if (p.get('wsize') < p.get('fitsize')) {
+ p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize');
+ } else { // image larger than viewport
+ p.pos = p.scroll + p.marginMin;
+ if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
+ }
+ }
+
+ if (!moveOnly && p.size < p.minSize) {
+ p.size = p.minSize;
+ allowReduce = false;
+ }
+
+
+
+ if (p.pos < p.marginMin) {
+ var tmpMin = p.pos;
+ p.pos = p.marginMin;
+
+ if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin);
+
+ }
+},
+
+correctRatio : function(ratio) {
+ var x = this.x,
+ y = this.y,
+ changed = false,
+ xSize = Math.min(x.full, x.size),
+ ySize = Math.min(y.full, y.size),
+ useBox = (this.useBox || hs.padToMinWidth);
+
+ if (xSize / ySize > ratio) { // width greater
+ xSize = ySize * ratio;
+ if (xSize < x.minSize) { // below minWidth
+ xSize = x.minSize;
+ ySize = xSize / ratio;
+ }
+ changed = true;
+
+ } else if (xSize / ySize < ratio) { // height greater
+ ySize = xSize / ratio;
+ changed = true;
+ }
+
+ if (hs.padToMinWidth && x.full < x.minSize) {
+ x.imgSize = x.full;
+ y.size = y.imgSize = y.full;
+ } else if (this.useBox) {
+ x.imgSize = xSize;
+ y.imgSize = ySize;
+ } else {
+ x.size = xSize;
+ y.size = ySize;
+ }
+ this.fitOverlayBox(useBox ? null : ratio);
+ if (useBox && y.size < y.imgSize) {
+ y.imgSize = y.size;
+ x.imgSize = y.size * ratio;
+ }
+ if (changed || useBox) {
+ x.pos = x.tpos - x.cb + x.tb;
+ x.minSize = x.size;
+ this.justify(x, true);
+
+ y.pos = y.tpos - y.cb + y.tb;
+ y.minSize = y.size;
+ this.justify(y, true);
+ if (this.overlayBox) this.sizeOverlayBox();
+ }
+},
+fitOverlayBox : function(ratio) {
+ var x = this.x, y = this.y;
+ if (this.overlayBox) {
+ while (y.size > this.minHeight && x.size > this.minWidth
+ && y.get('wsize') > y.get('fitsize')) {
+ y.size -= 10;
+ if (ratio) x.size = y.size * ratio;
+ this.sizeOverlayBox(0, 1);
+ }
+ }
+},
+
+show : function () {
+ var x = this.x, y = this.y;
+ this.doShowHide('hidden');
+
+ // Apply size change
+ this.changeSize(
+ 1, {
+ wrapper: {
+ width : x.get('wsize'),
+ height : y.get('wsize'),
+ left: x.pos,
+ top: y.pos
+ },
+ content: {
+ left: x.p1 + x.get('imgPad'),
+ top: y.p1 + y.get('imgPad'),
+ width:x.imgSize ||x.size,
+ height:y.imgSize ||y.size
+ }
+ },
+ hs.expandDuration
+ );
+},
+
+changeSize : function(up, to, dur) {
+
+ if (this.outline && !this.outlineWhileAnimating) {
+ if (up) this.outline.setPosition();
+ else this.outline.destroy();
+ }
+
+
+ if (!up) this.destroyOverlays();
+
+ var exp = this,
+ x = exp.x,
+ y = exp.y,
+ easing = this.easing;
+ if (!up) easing = this.easingClose || easing;
+ var after = up ?
+ function() {
+
+ if (exp.outline) exp.outline.table.style.visibility = "visible";
+ setTimeout(function() {
+ exp.afterExpand();
+ }, 50);
+ } :
+ function() {
+ exp.afterClose();
+ };
+ if (up) hs.setStyles( this.wrapper, {
+ width: x.t +'px',
+ height: y.t +'px'
+ });
+ if (this.fadeInOut) {
+ hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 });
+ hs.extend(to.wrapper, { opacity: up });
+ }
+ hs.animate( this.wrapper, to.wrapper, {
+ duration: dur,
+ easing: easing,
+ step: function(val, args) {
+ if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') {
+ var fac = up ? args.pos : 1 - args.pos;
+ var pos = {
+ w: x.t + (x.get('wsize') - x.t) * fac,
+ h: y.t + (y.get('wsize') - y.t) * fac,
+ x: x.tpos + (x.pos - x.tpos) * fac,
+ y: y.tpos + (y.pos - y.tpos) * fac
+ };
+ exp.outline.setPosition(pos, 0, 1);
+ }
+ }
+ });
+ hs.animate( this.content, to.content, dur, easing, after);
+ if (up) {
+ this.wrapper.style.visibility = 'visible';
+ this.content.style.visibility = 'visible';
+ this.a.className += ' highslide-active-anchor';
+ }
+},
+
+
+
+
+afterExpand : function() {
+ this.isExpanded = true;
+ this.focus();
+ if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null;
+ this.prepareNextOutline();
+ var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop;
+ this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize')
+ && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize');
+ if (this.overlayBox) this.showOverlays();
+
+},
+
+
+prepareNextOutline : function() {
+ var key = this.key;
+ var outlineType = this.outlineType;
+ new hs.Outline(outlineType,
+ function () { try { hs.expanders[key].preloadNext(); } catch (e) {} });
+},
+
+
+preloadNext : function() {
+ var next = this.getAdjacentAnchor(1);
+ if (next && next.onclick.toString().match(/hs\.expand/))
+ var img = hs.createElement('img', { src: hs.getSrc(next) });
+},
+
+
+getAdjacentAnchor : function(op) {
+ var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none'];
+
+ /*< ? if ($cfg->slideshow) : ?>s*/
+ if (!as[current + op] && this.slideshow && this.slideshow.repeat) {
+ if (op == 1) return as[0];
+ else if (op == -1) return as[as.length-1];
+ }
+ /*< ? endif ?>s*/
+ return as[current + op] || null;
+},
+
+getAnchorIndex : function() {
+ var arr = hs.getAnchors().groups[this.slideshowGroup || 'none'];
+ if (arr) for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == this.a) return i;
+ }
+ return null;
+},
+
+
+cancelLoading : function() {
+ hs.discardElement (this.wrapper);
+ hs.expanders[this.key] = null;
+ if (this.loading) hs.loading.style.left = '-9999px';
+},
+
+writeCredits : function () {
+ this.credits = hs.createElement('a', {
+ href: hs.creditsHref,
+ target: hs.creditsTarget,
+ className: 'highslide-credits',
+ innerHTML: hs.lang.creditsText,
+ title: hs.lang.creditsTitle
+ });
+ this.createOverlay({
+ overlayId: this.credits,
+ position: this.creditsPosition || 'top left'
+ });
+},
+
+getInline : function(types, addOverlay) {
+ for (var i = 0; i < types.length; i++) {
+ var type = types[i], s = null;
+ if (!this[type +'Id'] && this.thumbsUserSetId)
+ this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId;
+ if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']);
+ if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try {
+ s = eval(this[type +'Eval']);
+ } catch (e) {}
+ if (!this[type] && this[type +'Text']) {
+ s = this[type +'Text'];
+ }
+ if (!this[type] && !s) {
+ var next = this.a.nextSibling;
+ while (next && !hs.isHsAnchor(next)) {
+ if ((new RegExp('highslide-'+ type)).test(next.className || null)) {
+ this[type] = next.cloneNode(1);
+ break;
+ }
+ next = next.nextSibling;
+ }
+ }
+
+ if (!this[type] && s) this[type] = hs.createElement('div',
+ { className: 'highslide-'+ type, innerHTML: s } );
+
+ if (addOverlay && this[type]) {
+ var o = { position: (type == 'heading') ? 'above' : 'below' };
+ for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x];
+ o.overlayId = this[type];
+ this.createOverlay(o);
+ }
+ }
+},
+
+
+// on end move and resize
+doShowHide : function(visibility) {
+ if (hs.hideSelects) this.showHideElements('SELECT', visibility);
+ if (hs.hideIframes) this.showHideElements('IFRAME', visibility);
+ if (hs.geckoMac) this.showHideElements('*', visibility);
+},
+showHideElements : function (tagName, visibility) {
+ var els = document.getElementsByTagName(tagName);
+ var prop = tagName == '*' ? 'overflow' : 'visibility';
+ for (var i = 0; i < els.length; i++) {
+ if (prop == 'visibility' || (document.defaultView.getComputedStyle(
+ els[i], "").getPropertyValue('overflow') == 'auto'
+ || els[i].getAttribute('hidden-by') != null)) {
+ var hiddenBy = els[i].getAttribute('hidden-by');
+ if (visibility == 'visible' && hiddenBy) {
+ hiddenBy = hiddenBy.replace('['+ this.key +']', '');
+ els[i].setAttribute('hidden-by', hiddenBy);
+ if (!hiddenBy) els[i].style[prop] = els[i].origProp;
+ } else if (visibility == 'hidden') { // hide if behind
+ var elPos = hs.getPosition(els[i]);
+ elPos.w = els[i].offsetWidth;
+ elPos.h = els[i].offsetHeight;
+
+
+ var clearsX = (elPos.x + elPos.w < this.x.get('opos')
+ || elPos.x > this.x.get('opos') + this.x.get('osize'));
+ var clearsY = (elPos.y + elPos.h < this.y.get('opos')
+ || elPos.y > this.y.get('opos') + this.y.get('osize'));
+ var wrapperKey = hs.getWrapperKey(els[i]);
+ if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
+ if (!hiddenBy) {
+ els[i].setAttribute('hidden-by', '['+ this.key +']');
+ els[i].origProp = els[i].style[prop];
+ els[i].style[prop] = 'hidden';
+
+ } else if (hiddenBy.indexOf('['+ this.key +']') == -1) {
+ els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']');
+ }
+ } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey)
+ && wrapperKey != this.key) { // on move
+ els[i].setAttribute('hidden-by', '');
+ els[i].style[prop] = els[i].origProp || '';
+ } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) {
+ els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', ''));
+ }
+
+ }
+ }
+ }
+},
+
+focus : function() {
+ this.wrapper.style.zIndex = hs.zIndexCounter += 2;
+ // blur others
+ for (var i = 0; i < hs.expanders.length; i++) {
+ if (hs.expanders[i] && i == hs.focusKey) {
+ var blurExp = hs.expanders[i];
+ blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur';
+ blurExp.content.style.cursor = hs.ie ? 'hand' : 'pointer';
+ blurExp.content.title = hs.lang.focusTitle;
+ }
+ }
+
+ // focus this
+ if (this.outline) this.outline.table.style.zIndex
+ = this.wrapper.style.zIndex - 1;
+ this.content.className = 'highslide-'+ this.contentType;
+// this.content.title = hs.lang.restoreTitle;
+
+ if (hs.restoreCursor) {
+ hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer';
+ if (hs.ie && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand';
+ this.content.style.cursor = hs.styleRestoreCursor;
+ }
+
+ hs.focusKey = this.key;
+ hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+},
+moveTo: function(x, y) {
+ this.x.setPos(x);
+ this.y.setPos(y);
+},
+resize : function (e) {
+ var w, h, r = e.width / e.height;
+ w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full));
+ if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full;
+ h = w / r;
+ if (h < Math.min(this.minHeight, this.y.full)) {
+ h = Math.min(this.minHeight, this.y.full);
+ if (this.isImage) w = h * r;
+ }
+ this.resizeTo(w, h);
+},
+resizeTo: function(w, h) {
+ this.y.setSize(h);
+ this.x.setSize(w);
+},
+
+close : function() {
+ if (this.isClosing || !this.isExpanded) return;
+ this.isClosing = true;
+
+ hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
+
+ try {
+ this.content.style.cursor = 'default';
+ this.changeSize(
+ 0, {
+ wrapper: {
+ width : this.x.t,
+ height : this.y.t,
+ left: this.x.tpos - this.x.cb + this.x.tb,
+ top: this.y.tpos - this.y.cb + this.y.tb
+ },
+ content: {
+ left: 0,
+ top: 0,
+ width: this.x.t,
+ height: this.y.t
+ }
+ }, hs.restoreDuration
+ );
+ } catch (e) { this.afterClose(); }
+},
+
+createOverlay : function (o) {
+ var el = o.overlayId;
+ if (typeof el == 'string') el = hs.getNode(el);
+ if (o.html) el = hs.createElement('div', { innerHTML: o.html });
+ if (!el || typeof el == 'string') return;
+ el.style.display = 'block';
+ this.genOverlayBox();
+ var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto';
+ if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px';
+ var overlay = hs.createElement(
+ 'div', {
+ id: 'hsId'+ hs.idCounter++,
+ hsId: o.hsId
+ }, {
+ position: 'absolute',
+ visibility: 'hidden',
+ width: width,
+ direction: hs.lang.cssDirection || '',
+ opacity: 0
+ },this.overlayBox,
+ true
+ );
+
+ overlay.appendChild(el);
+ hs.extend(overlay, {
+ opacity: 1,
+ offsetX: 0,
+ offsetY: 0,
+ dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250
+ });
+ hs.extend(overlay, o);
+
+ if (this.gotOverlays) {
+ this.positionOverlay(overlay);
+ if (!overlay.hideOnMouseOut || this.mouseIsOver)
+ hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur);
+ }
+ hs.push(this.overlays, hs.idCounter - 1);
+},
+positionOverlay : function(overlay) {
+ var p = overlay.position || 'middle center',
+ offX = overlay.offsetX,
+ offY = overlay.offsetY;
+ if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay);
+ if (/left$/.test(p)) overlay.style.left = offX +'px';
+
+ if (/center$/.test(p)) hs.setStyles (overlay, {
+ left: '50%',
+ marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px'
+ });
+
+ if (/right$/.test(p)) overlay.style.right = - offX +'px';
+
+ if (/^leftpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ right: '100%',
+ marginRight: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p1 = overlay.offsetWidth;
+
+ } else if (/^rightpanel$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: '100%',
+ marginLeft: this.x.cb +'px',
+ top: - this.y.cb +'px',
+ bottom: - this.y.cb +'px',
+ overflow: 'auto'
+ });
+ this.x.p2 = overlay.offsetWidth;
+ }
+
+ if (/^top/.test(p)) overlay.style.top = offY +'px';
+ if (/^middle/.test(p)) hs.setStyles (overlay, {
+ top: '50%',
+ marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px'
+ });
+ if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px';
+ if (/^above$/.test(p)) {
+ hs.setStyles(overlay, {
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ bottom: '100%',
+ marginBottom: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p1 = overlay.offsetHeight;
+
+ } else if (/^below$/.test(p)) {
+ hs.setStyles(overlay, {
+ position: 'relative',
+ left: (- this.x.p1 - this.x.cb) +'px',
+ right: (- this.x.p2 - this.x.cb) +'px',
+ top: '100%',
+ marginTop: this.y.cb +'px',
+ width: 'auto'
+ });
+ this.y.p2 = overlay.offsetHeight;
+ overlay.style.position = 'absolute';
+ }
+},
+
+getOverlays : function() {
+ this.getInline(['heading', 'caption'], true);
+ if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move';
+ if (hs.showCredits) this.writeCredits();
+ for (var i = 0; i < hs.overlays.length; i++) {
+ var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup;
+ if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId)
+ || (sg && sg === this.slideshowGroup)) {
+ this.createOverlay(o);
+ }
+ }
+ var os = [];
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ if (/panel$/.test(o.position)) this.positionOverlay(o);
+ else hs.push(os, o);
+ }
+ for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]);
+ this.gotOverlays = true;
+},
+genOverlayBox : function() {
+ if (!this.overlayBox) this.overlayBox = hs.createElement (
+ 'div', {
+ className: this.wrapperClassName
+ }, {
+ position : 'absolute',
+ width: (this.x.size || (this.useBox ? this.width : null)
+ || this.x.full) +'px',
+ height: (this.y.size || this.y.full) +'px',
+ visibility : 'hidden',
+ overflow : 'hidden',
+ zIndex : hs.ie ? 4 : null
+ },
+ hs.container,
+ true
+ );
+},
+sizeOverlayBox : function(doWrapper, doPanels) {
+ var overlayBox = this.overlayBox,
+ x = this.x,
+ y = this.y;
+ hs.setStyles( overlayBox, {
+ width: x.size +'px',
+ height: y.size +'px'
+ });
+ if (doWrapper || doPanels) {
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat');
+ if (o && /^(above|below)$/.test(o.position)) {
+ if (ie6) {
+ o.style.width = (overlayBox.offsetWidth + 2 * x.cb
+ + x.p1 + x.p2) +'px';
+ }
+ y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight;
+ }
+ if (o && ie6 && /^(left|right)panel$/.test(o.position)) {
+ o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px';
+ }
+ }
+ }
+ if (doWrapper) {
+ hs.setStyles(this.content, {
+ top: y.p1 +'px'
+ });
+ hs.setStyles(overlayBox, {
+ top: (y.p1 + y.cb) +'px'
+ });
+ }
+},
+
+showOverlays : function() {
+ var b = this.overlayBox;
+ b.className = '';
+ hs.setStyles(b, {
+ top: (this.y.p1 + this.y.cb) +'px',
+ left: (this.x.p1 + this.x.cb) +'px',
+ overflow : 'visible'
+ });
+ if (hs.safari) b.style.visibility = 'visible';
+ this.wrapper.appendChild (b);
+ for (var i = 0; i < this.overlays.length; i++) {
+ var o = hs.$('hsId'+ this.overlays[i]);
+ o.style.zIndex = 4;
+ if (!o.hideOnMouseOut || this.mouseIsOver) {
+ o.style.visibility = 'visible';
+ hs.setStyles(o, { visibility: 'visible', display: '' });
+ hs.animate(o, { opacity: o.opacity }, o.dur);
+ }
+ }
+},
+
+destroyOverlays : function() {
+ if (!this.overlays.length) return;
+ hs.discardElement(this.overlayBox);
+},
+
+
+
+createFullExpand : function () {
+ this.fullExpandLabel = hs.createElement(
+ 'a', {
+ href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();',
+ title: hs.lang.fullExpandTitle,
+ className: 'highslide-full-expand'
+ }
+ );
+
+ this.createOverlay({
+ overlayId: this.fullExpandLabel,
+ position: hs.fullExpandPosition,
+ hideOnMouseOut: true,
+ opacity: hs.fullExpandOpacity
+ });
+},
+
+doFullExpand : function () {
+ try {
+ if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel);
+
+ this.focus();
+ var xSize = this.x.size;
+ this.resizeTo(this.x.full, this.y.full);
+
+ var xpos = this.x.pos - (this.x.size - xSize) / 2;
+ if (xpos < hs.marginLeft) xpos = hs.marginLeft;
+
+ this.moveTo(xpos, this.y.pos);
+ this.doShowHide('hidden');
+
+ } catch (e) {
+ this.error(e);
+ }
+},
+
+
+afterClose : function () {
+ this.a.className = this.a.className.replace('highslide-active-anchor', '');
+
+ this.doShowHide('visible');
+ if (this.outline && this.outlineWhileAnimating) this.outline.destroy();
+
+ hs.discardElement(this.wrapper);
+
+ hs.expanders[this.key] = null;
+ hs.reOrder();
+}
+
+};
+if (hs.ie) {
+ (function () {
+ try {
+ document.documentElement.doScroll('left');
+ } catch (e) {
+ setTimeout(arguments.callee, 50);
+ return;
+ }
+ hs.ready();
+ })();
+}
+hs.addEventListener(document, 'DOMContentLoaded', hs.ready);
+hs.addEventListener(window, 'load', hs.ready);
+hs.langDefaults = hs.lang;
+// history
+var HsExpander = hs.Expander;
+
+// set handlers
+hs.addEventListener(window, 'load', function() {
+ if (hs.expandCursor) {
+ var sel = '.highslide img',
+ dec = 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;';
+
+ var style = hs.createElement('style', { type: 'text/css' }, null,
+ document.getElementsByTagName('HEAD')[0]);
+
+ if (!hs.ie) {
+ style.appendChild(document.createTextNode(sel + " {" + dec + "}"));
+ } else {
+ var last = document.styleSheets[document.styleSheets.length - 1];
+ if (typeof(last.addRule) == "object") last.addRule(sel, dec);
+ }
+ }
+});
+hs.addEventListener(window, 'resize', function() {
+ hs.getPageSize();
+});
+hs.addEventListener(document, 'mousemove', function(e) {
+ hs.mouse = { x: e.clientX, y: e.clientY };
+});
+hs.addEventListener(document, 'mousedown', hs.mouseClickHandler);
+hs.addEventListener(document, 'mouseup', hs.mouseClickHandler);
+
+hs.addEventListener(document, 'ready', hs.getAnchors);
+hs.addEventListener(window, 'load', hs.preloadImages); \ No newline at end of file
diff --git a/highslide/highslide.packed.js b/highslide/highslide.packed.js
new file mode 100644
index 0000000..73904a5
--- /dev/null
+++ b/highslide/highslide.packed.js
@@ -0,0 +1,28 @@
+/******************************************************************************
+Name: Highslide JS
+Version: 4.1.5 (June 26 2009)
+Config: default +packed
+Author: Torstein Hønsi
+Support: http://highslide.com/support
+
+Licence:
+Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
+License (http://creativecommons.org/licenses/by-nc/2.5/).
+
+You are free:
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+
+Under the following conditions:
+ * Attribution. You must attribute the work in the manner specified by the
+ author or licensor.
+ * Noncommercial. You may not use this work for commercial purposes.
+
+* For any reuse or distribution, you must make clear to others the license
+ terms of this work.
+* Any of these conditions can be waived if you get permission from the
+ copyright holder.
+
+Your fair use and other rights are in no way affected by the above.
+******************************************************************************/
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('u m={1B:{89:\'6S\',6H:\'8N...\',6M:\'5A 1K 8M\',7u:\'5A 1K 8L 1K 8K\',84:\'8P 1K 8Q I (f)\',8f:\'8V 2s <i>6U 6V</i>\',7L:\'8W 1K 8H 6U 6V 8z\',64:\'5A 1K 2i 1W, 8G 7g 8F 1K 3i. 8E 8A 8D R 1M 7g 76.\'},3A:\'1c/8C/\',5t:\'8v.6f\',3O:\'8T.6f\',8o:4J,88:4J,3B:15,7R:15,5V:15,7U:15,3U:9w,6Q:0.75,8u:G,5N:5,2D:2,8Y:3,3M:19,85:\'2F 2e\',7M:1,7W:G,7B:\'9i://1c.9j/\',7F:\'9p\',74:G,5S:[\'a\'],51:G,3w:6P,3P:6P,3u:G,1i:\'9u-9v\',3F:[],6e:G,K:[],5r:[\'3u\',\'25\',\'1i\',\'2D\',\'9t\',\'9s\',\'9q\',\'79\',\'9g\',\'94\',\'8Z\',\'6Z\',\'7K\',\'51\',\'L\',\'14\',\'5g\',\'3w\',\'3P\',\'8l\',\'91\',\'2Y\',\'1I\',\'7k\',\'8i\',\'1k\'],1w:[],4G:0,96:{x:[\'80\',\'18\',\'6A\',\'2e\',\'7O\'],y:[\'3T\',\'Y\',\'6p\',\'2F\',\'4K\']},4x:{},6Z:{},79:{},2m:[],2L:{},5n:{},43:[],36:6a((4v.55.4n().2W(/.+(?:6F|9e|98|1m)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1m:(O.3G&&!1s.2P),4D:/9a/.17(4v.55),7l:/9b.+6F:1\\.[0-8].+9d/.17(4v.55),$:A(1x){q(1x)C O.90(1x)},28:A(29,2z){29[29.S]=2z},X:A(6T,35,2n,6y,6D){u B=O.X(6T);q(35)m.2p(B,35);q(6D)m.T(B,{93:0,95:\'3e\',5l:0});q(2n)m.T(B,2n);q(6y)6y.2j(B);C B},2p:A(B,35){R(u x 31 35)B[x]=35[x];C B},T:A(B,2n){R(u x 31 2n){q(m.1m&&x==\'1n\'){q(2n[x]>0.99)B.F.9r(\'3Z\');J B.F.3Z=\'7e(1n=\'+(2n[x]*1T)+\')\'}J B.F[x]=2n[x]}},3m:A(B,Z,26){u 2G,3h,2H;q(1q 26!=\'6s\'||26===H){u 2y=8q;26={2R:2y[2],1I:2y[3],6j:2y[4]}}q(1q 26.2R!=\'3c\')26.2R=4J;26.1I=1f[26.1I]||1f.6C;26.4q=m.2p({},Z);R(u 23 31 Z){u e=1V m.1l(B,26,23);2G=6a(m.53(B,23))||0;3h=6a(Z[23]);2H=23!=\'1n\'?\'E\':\'\';e.2x(2G,3h,2H)}},53:A(B,Z){q(O.60){C O.60.7m(B,H).7s(Z)}J{q(Z==\'1n\')Z=\'3Z\';u 2z=B.9o[Z.2U(/\\-(\\w)/g,A(a,b){C b.9h()})];q(Z==\'3Z\')2z=2z.2U(/7e\\(1n=([0-9]+)\\)/,A(a,b){C b/1T});C 2z===\'\'?1:2z}},4P:A(){u d=O,w=1s,3Y=d.5L&&d.5L!=\'7S\'?d.4c:d.66;u L=m.1m?3Y.6B:(d.4c.6B||47.9k),14=m.1m?3Y.9l:47.9n;m.2Z={L:L,14:14,4g:m.1m?3Y.4g:9m,4h:m.1m?3Y.4h:8x}},5T:A(B){u p={x:B.7c,y:B.6L};3g(B.7d){B=B.7d;p.x+=B.7c;p.y+=B.6L;q(B!=O.66&&B!=O.4c){p.x-=B.4g;p.y-=B.4h}}C p},46:A(a,1X,2x,M){q(!a)a=m.X(\'a\',H,{3n:\'3e\'},m.1U);q(1q a.3S==\'A\')C 1X;1H{1V m.3J(a,1X,2x);C 19}1C(e){C G}},72:A(){u 5u=0,4T=-1,K=m.K,z,1r;R(u i=0;i<K.S;i++){z=K[i];q(z){1r=z.U.F.1r;q(1r&&1r>5u){5u=1r;4T=i}}}q(4T==-1)m.2B=-1;J K[4T].3t()},5Z:A(a,3K){a.3S=a.30;u p=a.3S?a.3S():H;a.3S=H;C(p&&1q p[3K]!=\'22\')?p[3K]:(1q m[3K]!=\'22\'?m[3K]:H)},57:A(a){u 1k=m.5Z(a,\'1k\');q(1k)C 1k;C a.3s},5O:A(1x){u 4B=m.$(1x),2K=m.5n[1x],a={};q(!4B&&!2K)C H;q(!2K){2K=4B.6h(G);2K.1x=\'\';m.5n[1x]=2K;C 4B}J{C 2K.6h(G)}},3f:A(d){q(d)m.65.2j(d);m.65.3E=\'\'},6W:A(3x,z){u 2Q=z=z||m.2q();q(m.2I)C 19;J m.2Q=2Q;1H{m.2I=3x;3x.30()}1C(e){m.2Q=m.2I=H}1H{z.2i()}1C(e){}C 19},4I:A(B,1F){u z=m.2q(B);q(z){3x=z.56(1F);C m.6W(3x,z)}J C 19},76:A(B){C m.4I(B,-1)},1M:A(B){C m.4I(B,1)},4S:A(e){q(!e)e=1s.1E;q(!e.1R)e.1R=e.6n;q(1q e.1R.6G!=\'22\')C G;u z=m.2q();u 1F=H;7j(e.8y){1p 70:q(z)z.5h();C G;1p 32:1p 34:1p 39:1p 40:1F=1;5W;1p 8:1p 33:1p 37:1p 38:1F=-1;5W;1p 27:1p 13:1F=0}q(1F!==H){m.3H(O,1s.2P?\'6b\':\'6c\',m.4S);q(!m.74)C G;q(e.4V)e.4V();J e.8X=19;q(z){q(1F==0){z.2i()}J{m.4I(z.Q,1F)}C 19}}C G},8U:A(N){m.28(m.1w,m.2p(N,{2b:\'2b\'+m.4G++}))},5Q:A(58,4z){u B,2N=/^1c-U-([0-9]+)$/;B=58;3g(B.2E){q(B.1x&&2N.17(B.1x))C B.1x.2U(2N,"$1");B=B.2E}q(!4z){B=58;3g(B.2E){q(B.4m&&m.4s(B)){R(u Q=0;Q<m.K.S;Q++){u z=m.K[Q];q(z&&z.a==B)C Q}}B=B.2E}}C H},2q:A(B,4z){q(1q B==\'22\')C m.K[m.2B]||H;q(1q B==\'3c\')C m.K[B]||H;q(1q B==\'5U\')B=m.$(B);C m.K[m.5Q(B,4z)]||H},4s:A(a){C(a.30&&a.30.7D().2U(/\\s/g,\' \').2W(/m.(8J|e)8I/))},7J:A(){R(u i=0;i<m.K.S;i++)q(m.K[i]&&m.K[i].3X)m.72()},5X:A(e){q(!e)e=1s.1E;q(e.8O>1)C G;q(!e.1R)e.1R=e.6n;u B=e.1R;3g(B.2E&&!(/1c-(1W|3i|4w|2O)/.17(B.1h))){B=B.2E}u z=m.2q(B);q(z&&(z.6d||!z.3X))C G;q(z&&e.M==\'7Z\'){q(e.1R.6G)C G;u 2W=B.1h.2W(/1c-(1W|3i|2O)/);q(2W){m.1S={z:z,M:2W[1],18:z.x.D,L:z.x.I,Y:z.y.D,14:z.y.I,6R:e.4L,6O:e.4N};m.1D(O,\'5K\',m.5M);q(e.4V)e.4V();q(/1c-(1W|4w)-6g/.17(z.W.1h)){z.3t();m.54=G}C 19}}J q(e.M==\'7P\'){m.3H(O,\'5K\',m.5M);q(m.1S){q(m.3a&&m.1S.M==\'1W\')m.1S.z.W.F.2M=m.3a;u 2o=m.1S.2o;q(!2o&&!m.54&&!/(3i|2O)/.17(m.1S.M)){z.2i()}J q(2o||(!2o&&m.9W)){m.1S.z.3D(\'1g\')}m.54=19;m.1S=H}J q(/1c-1W-6g/.17(B.1h)){B.F.2M=m.3a}}C 19},5M:A(e){q(!m.1S)C G;q(!e)e=1s.1E;u a=m.1S,z=a.z;a.41=e.4L-a.6R;a.6o=e.4N-a.6O;u 6u=1f.ab(1f.6E(a.41,2)+1f.6E(a.6o,2));q(!a.2o)a.2o=(a.M!=\'1W\'&&6u>0)||(6u>(m.ae||5));q(a.2o&&e.4L>5&&e.4N>5){q(a.M==\'2O\')z.2O(a);J{z.5Y(a.18+a.41,a.Y+a.6o);q(a.M==\'1W\')z.W.F.2M=\'3i\'}}C 19},8j:A(e){1H{q(!e)e=1s.1E;u 4H=/ag/i.17(e.M);q(!e.1R)e.1R=e.6n;q(m.1m)e.6w=4H?e.9x:e.aa;u z=m.2q(e.1R);q(!z.3X)C;q(!z||!e.6w||m.2q(e.6w,G)==z||m.1S)C;R(u i=0;i<z.1w.S;i++)(A(){u o=m.$(\'2b\'+z.1w[i]);q(o&&o.4y){q(4H)m.T(o,{1b:\'1Y\',3n:\'\'});m.3m(o,{1n:4H?o.1n:0},o.2A)}})()}1C(e){}},1D:A(B,1E,2c){q(B==O&&1E==\'2X\')m.28(m.43,2c);1H{B.1D(1E,2c,19)}1C(e){1H{B.77(\'3I\'+1E,2c);B.a9(\'3I\'+1E,2c)}1C(e){B[\'3I\'+1E]=2c}}},3H:A(B,1E,2c){1H{B.3H(1E,2c,19)}1C(e){1H{B.77(\'3I\'+1E,2c)}1C(e){B[\'3I\'+1E]=H}}},4O:A(i){q(m.6e&&m.3F[i]&&m.3F[i]!=\'22\'){u 1e=O.X(\'1e\');1e.4k=A(){1e=H;m.4O(i+1)};1e.1k=m.3F[i]}},8e:A(3c){q(3c&&1q 3c!=\'6s\')m.5N=3c;u 29=m.45();R(u i=0;i<29.3d.S&&i<m.5N;i++){m.28(m.3F,m.57(29.3d[i]))}q(m.1i)1V m.3Q(m.1i,A(){m.4O(0)});J m.4O(0);q(m.3O)u 6f=m.X(\'1e\',{1k:m.3A+m.3O})},5s:A(){q(!m.1U){m.4P();m.5e=m.1m&&m.36<7;R(u x 31 m.4b){q(1q m[x]!=\'22\')m.1B[x]=m[x];J q(1q m.1B[x]==\'22\'&&1q m.4b[x]!=\'22\')m.1B[x]=m.4b[x]}m.1U=m.X(\'1O\',{1h:\'1c-1U\'},{1d:\'20\',18:0,Y:0,L:\'1T%\',1r:m.3U,8b:\'6S\'},O.66,G);m.1G=m.X(\'a\',{1h:\'1c-1G\',3r:m.1B.6M,3E:m.1B.6H,3s:\'82:;\'},{1d:\'20\',Y:\'-3V\',1n:m.6Q,1r:1},m.1U);m.65=m.X(\'1O\',H,{3n:\'3e\'},m.1U);1f.9I=A(t,b,c,d){C c*t/d+b};1f.6C=A(t,b,c,d){C c*(t/=d)*t+b};m.7q=m.5e;m.7o=((1s.2P&&m.36<9)||4v.9L==\'9E\'||(m.1m&&m.36<5.5))}},2X:A(){q(m.5v)C;m.5v=G;R(u i=0;i<m.43.S;i++)m.43[i]()},73:A(){u B,11,3G=[],3d=[],2l={},2N;R(u i=0;i<m.5S.S;i++){11=O.4d(m.5S[i]);R(u j=0;j<11.S;j++){B=11[j];2N=m.4s(B);q(2N){m.28(3G,B);q(2N[0]==\'m.46\')m.28(3d,B);u g=m.5Z(B,\'2Y\')||\'3e\';q(!2l[g])2l[g]=[];m.28(2l[g],B)}}}m.49={3G:3G,2l:2l,3d:3d};C m.49},45:A(){C m.49||m.73()},2i:A(B){u z=m.2q(B);q(z)z.2i();C 19}};m.1l=A(1Q,1u,Z){k.1u=1u;k.1Q=1Q;k.Z=Z;q(!1u.71)1u.71={}};m.1l.4u={5B:A(){(m.1l.2t[k.Z]||m.1l.2t.6K)(k);q(k.1u.2t)k.1u.2t.7f(k.1Q,k.2V,k)},2x:A(6X,1K,2H){k.6k=(1V 7i()).7h();k.2G=6X;k.3h=1K;k.2H=2H;k.2V=k.2G;k.D=k.6q=0;u 47=k;A t(4r){C 47.2t(4r)}t.1Q=k.1Q;q(t()&&m.2m.28(t)==1){m.6Y=9C(A(){u 2m=m.2m;R(u i=0;i<2m.S;i++)q(!2m[i]())2m.9M(i--,1);q(!2m.S){9N(m.6Y)}},13)}},2t:A(4r){u t=(1V 7i()).7h();q(4r||t>=k.1u.2R+k.6k){k.2V=k.3h;k.D=k.6q=1;k.5B();k.1u.4q[k.Z]=G;u 6l=G;R(u i 31 k.1u.4q)q(k.1u.4q[i]!==G)6l=19;q(6l){q(k.1u.6j)k.1u.6j.7f(k.1Q)}C 19}J{u n=t-k.6k;k.6q=n/k.1u.2R;k.D=k.1u.1I(n,0,1,k.1u.2R);k.2V=k.2G+((k.3h-k.2G)*k.D);k.5B()}C G}};m.2p(m.1l,{2t:{1n:A(1l){m.T(1l.1Q,{1n:1l.2V})},6K:A(1l){q(1l.1Q.F&&1l.1Q.F[1l.Z]!=H)1l.1Q.F[1l.Z]=1l.2V+1l.2H;J 1l.1Q[1l.Z]=1l.2V}}});m.3Q=A(1i,2T){k.2T=2T;k.1i=1i;u v=m.36,4e;k.5J=m.1m&&v>=5.5&&v<7;q(!1i){q(2T)2T();C}m.5s();k.21=m.X(\'21\',{9U:0},{1b:\'1g\',1d:\'20\',9P:\'9O\',L:0},m.1U,G);u 59=m.X(\'59\',H,H,k.21,1);k.1L=[];R(u i=0;i<=8;i++){q(i%3==0)4e=m.X(\'4e\',H,{14:\'2v\'},59,G);k.1L[i]=m.X(\'1L\',H,H,4e,G);u F=i!=4?{9Q:0,9R:0}:{1d:\'6t\'};m.T(k.1L[i],F)}k.1L[4].1h=1i+\' 1c-1a\';k.6N()};m.3Q.4u={6N:A(){u 1k=m.3A+(m.9T||"9S/")+k.1i+".9G";u 6I=m.4D?m.1U:H;k.2h=m.X(\'1e\',H,{1d:\'20\',Y:\'-3V\'},6I,G);u 6J=k;k.2h.4k=A(){6J.7a()};k.2h.1k=1k},7a:A(){u o=k.1j=k.2h.L/4,D=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1A={14:(2*o)+\'E\',L:(2*o)+\'E\'};R(u i=0;i<=8;i++){q(D[i]){q(k.5J){u w=(i==1||i==7)?\'1T%\':k.2h.L+\'E\';u 1O=m.X(\'1O\',H,{L:\'1T%\',14:\'1T%\',1d:\'6t\',2S:\'1g\'},k.1L[i],G);m.X(\'1O\',H,{3Z:"9Y:9X.9D.9y(9z=9F, 1k=\'"+k.2h.1k+"\')",1d:\'20\',L:w,14:k.2h.14+\'E\',18:(D[i][0]*o)+\'E\',Y:(D[i][1]*o)+\'E\'},1O,G)}J{m.T(k.1L[i],{9K:\'5p(\'+k.2h.1k+\') \'+(D[i][0]*o)+\'E \'+(D[i][1]*o)+\'E\'})}q(1s.2P&&(i==3||i==5))m.X(\'1O\',H,1A,k.1L[i],G);m.T(k.1L[i],1A)}}k.2h=H;q(m.2L[k.1i])m.2L[k.1i].4i();m.2L[k.1i]=k;q(k.2T)k.2T()},3v:A(D,1j,78,2A,1I){u z=k.z,9H=z.U.F,1j=1j||0,D=D||{x:z.x.D+1j,y:z.y.D+1j,w:z.x.P(\'1v\')-2*1j,h:z.y.P(\'1v\')-2*1j};q(78)k.21.F.1b=(D.h>=4*k.1j)?\'1Y\':\'1g\';m.T(k.21,{18:(D.x-k.1j)+\'E\',Y:(D.y-k.1j)+\'E\',L:(D.w+2*k.1j)+\'E\'});D.w-=2*k.1j;D.h-=2*k.1j;m.T(k.1L[4],{L:D.w>=0?D.w+\'E\':0,14:D.h>=0?D.h+\'E\':0});q(k.5J)k.1L[3].F.14=k.1L[5].F.14=k.1L[4].F.14},4i:A(7b){q(7b)k.21.F.1b=\'1g\';J m.3f(k.21)}};m.42=A(z,1A){k.z=z;k.1A=1A;k.2k=1A==\'x\'?\'am\':\'ao\';k.2C=k.2k.4n();k.3C=1A==\'x\'?\'an\':\'aj\';k.5q=k.3C.4n();k.5G=1A==\'x\'?\'ak\':\'ap\';k.aq=k.5G.4n();k.1y=k.2f=0};m.42.4u={P:A(Q){7j(Q){1p\'5H\':C k.1t+k.2d+(k.t-m.1G[\'1j\'+k.2k])/2;1p\'1v\':C k.I+2*k.V+k.1y+k.2f;1p\'3k\':C k.4p-k.2J-k.4t;1p\'5i\':C k.P(\'3k\')-2*k.V-k.1y-k.2f;1p\'3W\':C k.D-(k.z.1a?k.z.1a.1j:0);1p\'5P\':C k.P(\'1v\')+(k.z.1a?2*k.z.1a.1j:0);1p\'48\':C k.1z?1f.4R((k.I-k.1z)/2):0}},5F:A(){k.V=(k.z.W[\'1j\'+k.2k]-k.t)/2;k.4t=m[\'5l\'+k.5G]},5k:A(){k.t=k.z.B[k.2C]?a8(k.z.B[k.2C]):k.z.B[\'1j\'+k.2k];k.1t=k.z.1t[k.1A];k.2d=(k.z.B[\'1j\'+k.2k]-k.t)/2;q(k.1t<1){k.1t=(m.2Z[k.2C]/2)+m.2Z[\'2r\'+k.3C]}},5E:A(){u z=k.z;k.3j=\'2v\';k.D=k.1t-k.V+k.2d;k.I=1f.2w(k.16,z[\'67\'+k.2k]||k.16);k.1Z=z.3u?1f.2w(z[\'2w\'+k.2k],k.16):k.16;q(z.3b&&z.25){k.I=z[k.2C];k.1z=k.16}q(k.1A==\'x\'&&m.3M)k.1Z=z.3w;k.2J=m[\'5l\'+k.3C];k.2r=m.2Z[\'2r\'+k.3C];k.4p=m.2Z[k.2C]},63:A(i){u z=k.z;q(z.3b&&(z.25||m.3M)){k.1z=i;k.I=1f.67(k.I,k.1z);z.W.F[k.5q]=k.P(\'48\')+\'E\'}J k.I=i;z.W.F[k.2C]=i+\'E\';z.U.F[k.2C]=k.P(\'1v\')+\'E\';q(z.1a)z.1a.3v();q(k.1A==\'x\'&&z.1o)z.3p(G)},68:A(i){k.D=i;k.z.U.F[k.5q]=i+\'E\';q(k.z.1a)k.z.1a.3v()}};m.3J=A(a,1X,2x,24){q(O.a4&&m.1m&&!m.5v){m.1D(O,\'2X\',A(){1V m.3J(a,1X,2x,24)});C}k.a=a;k.2x=2x;k.24=24||\'1W\';k.3b=!k.af;m.6e=19;k.1w=[];m.5s();u Q=k.Q=m.K.S;R(u i=0;i<m.5r.S;i++){u 23=m.5r[i];k[23]=1X&&1q 1X[23]!=\'22\'?1X[23]:m[23]}q(!k.1k)k.1k=a.3s;u B=(1X&&1X.5f)?m.$(1X.5f):a;B=k.8p=B.4d(\'1e\')[0]||B;k.4Y=B.1x||a.1x;R(u i=0;i<m.K.S;i++){q(m.K[i]&&m.K[i].a==a){m.K[i].3t();C 19}}q(!m.ad)R(u i=0;i<m.K.S;i++){q(m.K[i]&&m.K[i].8p!=B&&!m.K[i].4o){m.K[i].6v()}}m.K[Q]=k;q(!m.8u&&!m.2I){q(m.K[Q-1])m.K[Q-1].2i();q(1q m.2B!=\'22\'&&m.K[m.2B])m.K[m.2B].2i()}k.B=B;k.1t=m.5T(B);m.4P();u x=k.x=1V m.42(k,\'x\');x.5k();u y=k.y=1V m.42(k,\'y\');y.5k();k.U=m.X(\'1O\',{1x:\'1c-U-\'+k.Q,1h:\'1c-U \'+k.5g},{1b:\'1g\',1d:\'20\',1r:m.3U+=2},H,G);k.U.a3=k.U.a5=m.8j;q(k.24==\'1W\'&&k.2D==2)k.2D=0;q(!k.1i){k[k.24+\'5m\']()}J q(m.2L[k.1i]){k.5w();k[k.24+\'5m\']()}J{k.5I();u z=k;1V m.3Q(k.1i,A(){z.5w();z[z.24+\'5m\']()})}C G};m.3J.4u={5R:A(e){1s.a6.3s=k.1k},5w:A(){u 1a=k.1a=m.2L[k.1i];1a.z=k;1a.21.F.1r=k.U.F.1r-1;m.2L[k.1i]=H},5I:A(){q(k.4o||k.1G)C;k.1G=m.1G;u z=k;k.1G.30=A(){z.6v()};u z=k,l=k.x.P(\'5H\')+\'E\',t=k.y.P(\'5H\')+\'E\';52(A(){q(z.1G)m.T(z.1G,{18:l,Y:t,1r:m.3U++})},1T)},ai:A(){u z=k;u 1e=O.X(\'1e\');k.W=1e;1e.4k=A(){q(m.K[z.Q])z.8t()};q(m.a7)1e.ah=A(){C 19};1e.1h=\'1c-1W\';m.T(1e,{1b:\'1g\',3n:\'8d\',1d:\'20\',8l:\'3V\',1r:3});1e.3r=m.1B.64;q(m.4D)m.1U.2j(1e);q(m.1m&&m.ar)1e.1k=H;1e.1k=k.1k;k.5I()},8t:A(){1H{q(!k.W)C;k.W.4k=H;q(k.4o)C;J k.4o=G;u x=k.x,y=k.y;q(k.1G){m.T(k.1G,{Y:\'-3V\'});k.1G=H}x.16=k.W.L;y.16=k.W.14;m.T(k.W,{L:x.t+\'E\',14:y.t+\'E\'});k.U.2j(k.W);m.1U.2j(k.U);x.5F();y.5F();m.T(k.U,{18:(x.1t+x.2d-x.V)+\'E\',Y:(y.1t+x.2d-y.V)+\'E\'});k.7Y();u 1N=x.16/y.16;x.5E();k.3j(x);y.5E();k.3j(y);q(k.1o)k.3p(0,1);q(k.3u){k.8g(1N);q(k.3b&&k.x.16>(k.x.1z||k.x.I)){k.83();q(k.1w.S==1)k.3p()}}k.8k()}1C(e){k.5R(e)}},3j:A(p,3q){u a1,9J=p.1R,1A=p==k.x?\'x\':\'y\';u 5z=19;u 3l=p.z.3u;p.D=1f.4R(p.D-((p.P(\'1v\')-p.t)/2));q(p.D<p.2r+p.2J){p.D=p.2r+p.2J;5z=G}q(!3q&&p.I<p.1Z){p.I=p.1Z;3l=19}q(p.D+p.P(\'1v\')>p.2r+p.4p-p.4t){q(!3q&&5z&&3l){p.I=p.P(1A==\'y\'?\'3k\':\'5i\')}J q(p.P(\'1v\')<p.P(\'3k\')){p.D=p.2r+p.4p-p.4t-p.P(\'1v\')}J{p.D=p.2r+p.2J;q(!3q&&3l)p.I=p.P(1A==\'y\'?\'3k\':\'5i\')}}q(!3q&&p.I<p.1Z){p.I=p.1Z;3l=19}q(p.D<p.2J){u 8r=p.D;p.D=p.2J;q(3l&&!3q)p.I=p.I-(p.D-8r)}},8g:A(1N){u x=k.x,y=k.y,4a=19,1P=1f.2w(x.16,x.I),2u=1f.2w(y.16,y.I),25=(k.25||m.3M);q(1P/2u>1N){ 1P=2u*1N;q(1P<x.1Z){1P=x.1Z;2u=1P/1N}4a=G}J q(1P/2u<1N){ 2u=1P/1N;4a=G}q(m.3M&&x.16<x.1Z){x.1z=x.16;y.I=y.1z=y.16}J q(k.25){x.1z=1P;y.1z=2u}J{x.I=1P;y.I=2u}k.8m(25?H:1N);q(25&&y.I<y.1z){y.1z=y.I;x.1z=y.I*1N}q(4a||25){x.D=x.1t-x.V+x.2d;x.1Z=x.I;k.3j(x,G);y.D=y.1t-y.V+y.2d;y.1Z=y.I;k.3j(y,G);q(k.1o)k.3p()}},8m:A(1N){u x=k.x,y=k.y;q(k.1o){3g(y.I>k.3P&&x.I>k.3w&&y.P(\'1v\')>y.P(\'3k\')){y.I-=10;q(1N)x.I=y.I*1N;k.3p(0,1)}}},8k:A(){u x=k.x,y=k.y;k.3D(\'1g\');k.61(1,{U:{L:x.P(\'1v\'),14:y.P(\'1v\'),18:x.D,Y:y.D},W:{18:x.1y+x.P(\'48\'),Y:y.1y+y.P(\'48\'),L:x.1z||x.I,14:y.1z||y.I}},m.8o)},61:A(2a,1K,2A){q(k.1a&&!k.2D){q(2a)k.1a.3v();J k.1a.4i()}q(!2a)k.87();u z=k,x=z.x,y=z.y,1I=k.1I;q(!2a)1I=k.7k||1I;u 8n=2a?A(){q(z.1a)z.1a.21.F.1b="1Y";52(A(){z.8s()},50)}:A(){z.69()};q(2a)m.T(k.U,{L:x.t+\'E\',14:y.t+\'E\'});q(k.8i){m.T(k.U,{1n:2a?0:1});m.2p(1K.U,{1n:2a})}m.3m(k.U,1K.U,{2R:2A,1I:1I,2t:A(2z,2y){q(z.1a&&z.2D&&2y.Z==\'Y\'){u 3y=2a?2y.D:1-2y.D;u D={w:x.t+(x.P(\'1v\')-x.t)*3y,h:y.t+(y.P(\'1v\')-y.t)*3y,x:x.1t+(x.D-x.1t)*3y,y:y.1t+(y.D-y.1t)*3y};z.1a.3v(D,0,1)}}});m.3m(k.W,1K.W,2A,1I,8n);q(2a){k.U.F.1b=\'1Y\';k.W.F.1b=\'1Y\';k.a.1h+=\' 1c-7n-7y\'}},8s:A(){k.3X=G;k.3t();q(m.2I&&m.2I==k.a)m.2I=H;k.8h();u p=m.2Z,5b=m.4x.x+p.4g,5d=m.4x.y+p.4h;k.5o=k.x.D<5b&&5b<k.x.D+k.x.P(\'1v\')&&k.y.D<5d&&5d<k.y.D+k.y.P(\'1v\');q(k.1o)k.8c()},8h:A(){u Q=k.Q;u 1i=k.1i;1V m.3Q(1i,A(){1H{m.K[Q].7E()}1C(e){}})},7E:A(){u 1M=k.56(1);q(1M&&1M.30.7D().2W(/m\\.46/))u 1e=m.X(\'1e\',{1k:m.57(1M)})},56:A(1F){u 6r=k.7A(),as=m.49.2l[k.2Y||\'3e\'];q(!as[6r+1F]&&k.7C&&k.7C.9V){q(1F==1)C as[0];J q(1F==-1)C as[as.S-1]}C as[6r+1F]||H},7A:A(){u 29=m.45().2l[k.2Y||\'3e\'];q(29)R(u i=0;i<29.S;i++){q(29[i]==k.a)C i}C H},6v:A(){m.3f(k.U);m.K[k.Q]=H;q(k.1G)m.1G.F.18=\'-3V\'},7G:A(){k.6x=m.X(\'a\',{3s:m.7B,1R:m.7F,1h:\'1c-6x\',3E:m.1B.8f,3r:m.1B.7L});k.3R({4X:k.6x,1d:k.7K||\'Y 18\'})},7X:A(6m,7z){R(u i=0;i<6m.S;i++){u M=6m[i],s=H;q(!k[M+\'4j\']&&k.4Y)k[M+\'4j\']=M+\'-R-\'+k.4Y;q(k[M+\'4j\'])k[M]=m.5O(k[M+\'4j\']);q(!k[M]&&!k[M+\'6z\']&&k[M+\'7H\'])1H{s=a0(k[M+\'7H\'])}1C(e){}q(!k[M]&&k[M+\'6z\']){s=k[M+\'6z\']}q(!k[M]&&!s){u 1M=k.a.7I;3g(1M&&!m.4s(1M)){q((1V 9Z(\'1c-\'+M)).17(1M.1h||H)){k[M]=1M.6h(1);5W}1M=1M.7I}}q(!k[M]&&s)k[M]=m.X(\'1O\',{1h:\'1c-\'+M,3E:s});q(7z&&k[M]){u o={1d:(M==\'4U\')?\'3T\':\'4K\'};R(u x 31 k[M+\'7p\'])o[x]=k[M+\'7p\'][x];o.4X=k[M];k.3R(o)}}},3D:A(1b){q(m.7q)k.4l(\'9B\',1b);q(m.7o)k.4l(\'9A\',1b);q(m.7l)k.4l(\'*\',1b)},4l:A(4m,1b){u 11=O.4d(4m);u Z=4m==\'*\'?\'2S\':\'1b\';R(u i=0;i<11.S;i++){q(Z==\'1b\'||(O.60.7m(11[i],"").7s(\'2S\')==\'2v\'||11[i].7x(\'1g-2s\')!=H)){u 1J=11[i].7x(\'1g-2s\');q(1b==\'1Y\'&&1J){1J=1J.2U(\'[\'+k.Q+\']\',\'\');11[i].3z(\'1g-2s\',1J);q(!1J)11[i].F[Z]=11[i].62}J q(1b==\'1g\'){u 2g=m.5T(11[i]);2g.w=11[i].3N;2g.h=11[i].3o;u 7w=(2g.x+2g.w<k.x.P(\'3W\')||2g.x>k.x.P(\'3W\')+k.x.P(\'5P\'));u 7v=(2g.y+2g.h<k.y.P(\'3W\')||2g.y>k.y.P(\'3W\')+k.y.P(\'5P\'));u 44=m.5Q(11[i]);q(!7w&&!7v&&44!=k.Q){q(!1J){11[i].3z(\'1g-2s\',\'[\'+k.Q+\']\');11[i].62=11[i].F[Z];11[i].F[Z]=\'1g\'}J q(1J.7t(\'[\'+k.Q+\']\')==-1){11[i].3z(\'1g-2s\',1J+\'[\'+k.Q+\']\')}}J q((1J==\'[\'+k.Q+\']\'||m.2B==44)&&44!=k.Q){11[i].3z(\'1g-2s\',\'\');11[i].F[Z]=11[i].62||\'\'}J q(1J&&1J.7t(\'[\'+k.Q+\']\')>-1){11[i].3z(\'1g-2s\',1J.2U(\'[\'+k.Q+\']\',\'\'))}}}}},3t:A(){k.U.F.1r=m.3U+=2;R(u i=0;i<m.K.S;i++){q(m.K[i]&&i==m.2B){u 3L=m.K[i];3L.W.1h+=\' 1c-\'+3L.24+\'-6g\';3L.W.F.2M=m.1m?\'7N\':\'4f\';3L.W.3r=m.1B.7u}}q(k.1a)k.1a.21.F.1r=k.U.F.1r-1;k.W.1h=\'1c-\'+k.24;k.W.3r=m.1B.64;q(m.3O){m.3a=1s.2P?\'4f\':\'5p(\'+m.3A+m.3O+\'), 4f\';q(m.1m&&m.36<6)m.3a=\'7N\';k.W.F.2M=m.3a}m.2B=k.Q;m.1D(O,1s.2P?\'6b\':\'6c\',m.4S)},5Y:A(x,y){k.x.68(x);k.y.68(y)},2O:A(e){u w,h,r=e.L/e.14;w=1f.67(e.L+e.41,1f.2w(k.3w,k.x.16));q(k.3b&&1f.a2(w-k.x.16)<12)w=k.x.16;h=w/r;q(h<1f.2w(k.3P,k.y.16)){h=1f.2w(k.3P,k.y.16);q(k.3b)w=h*r}k.5c(w,h)},5c:A(w,h){k.y.63(h);k.x.63(w)},2i:A(){q(k.6d||!k.3X)C;k.6d=G;m.3H(O,1s.2P?\'6b\':\'6c\',m.4S);1H{k.W.F.2M=\'at\';k.61(0,{U:{L:k.x.t,14:k.y.t,18:k.x.1t-k.x.V+k.x.2d,Y:k.y.1t-k.y.V+k.y.2d},W:{18:0,Y:0,L:k.x.t,14:k.y.t}},m.88)}1C(e){k.69()}},3R:A(o){u B=o.4X;q(1q B==\'5U\')B=m.5O(B);q(o.4w)B=m.X(\'1O\',{3E:o.4w});q(!B||1q B==\'5U\')C;B.F.3n=\'8d\';k.7T();u L=o.L&&/^[0-9]+(E|%)$/.17(o.L)?o.L:\'2v\';q(/^(18|2e)5D$/.17(o.1d)&&!/^[0-9]+E$/.17(o.L))L=\'al\';u N=m.X(\'1O\',{1x:\'2b\'+m.4G++,2b:o.2b},{1d:\'20\',1b:\'1g\',L:L,8b:m.1B.89||\'\',1n:0},k.1o,G);N.2j(B);m.2p(N,{1n:1,8a:0,81:0,2A:(o.6i===0||o.6i===19||(o.6i==2&&m.1m))?0:4J});m.2p(N,o);q(k.7V){k.4C(N);q(!N.4y||k.5o)m.3m(N,{1n:N.1n},N.2A)}m.28(k.1w,m.4G-1)},4C:A(N){u p=N.1d||\'6p 6A\',4E=N.8a,4Q=N.81;q(N.2E!=k.1o)k.1o.2j(N);q(/18$/.17(p))N.F.18=4E+\'E\';q(/6A$/.17(p))m.T(N,{18:\'50%\',3B:(4E-1f.4R(N.3N/2))+\'E\'});q(/2e$/.17(p))N.F.2e=-4E+\'E\';q(/^80$/.17(p)){m.T(N,{2e:\'1T%\',7R:k.x.V+\'E\',Y:-k.y.V+\'E\',2F:-k.y.V+\'E\',2S:\'2v\'});k.x.1y=N.3N}J q(/^7O$/.17(p)){m.T(N,{18:\'1T%\',3B:k.x.V+\'E\',Y:-k.y.V+\'E\',2F:-k.y.V+\'E\',2S:\'2v\'});k.x.2f=N.3N}q(/^Y/.17(p))N.F.Y=4Q+\'E\';q(/^6p/.17(p))m.T(N,{Y:\'50%\',5V:(4Q-1f.4R(N.3o/2))+\'E\'});q(/^2F/.17(p))N.F.2F=-4Q+\'E\';q(/^3T$/.17(p)){m.T(N,{18:(-k.x.1y-k.x.V)+\'E\',2e:(-k.x.2f-k.x.V)+\'E\',2F:\'1T%\',7U:k.y.V+\'E\',L:\'2v\'});k.y.1y=N.3o}J q(/^4K$/.17(p)){m.T(N,{1d:\'6t\',18:(-k.x.1y-k.x.V)+\'E\',2e:(-k.x.2f-k.x.V)+\'E\',Y:\'1T%\',5V:k.y.V+\'E\',L:\'2v\'});k.y.2f=N.3o;N.F.1d=\'20\'}},7Y:A(){k.7X([\'4U\',\'ac\'],G);q(k.4U&&k.51)k.4U.1h+=\' 1c-3i\';q(m.7W)k.7G();R(u i=0;i<m.1w.S;i++){u o=m.1w[i],4W=o.5f,4Z=o.2Y;q((!4W&&!4Z)||(4W&&4W==k.4Y)||(4Z&&4Z===k.2Y)){k.3R(o)}}u 4A=[];R(u i=0;i<k.1w.S;i++){u o=m.$(\'2b\'+k.1w[i]);q(/5D$/.17(o.1d))k.4C(o);J m.28(4A,o)}R(u i=0;i<4A.S;i++)k.4C(4A[i]);k.7V=G},7T:A(){q(!k.1o)k.1o=m.X(\'1O\',{1h:k.5g},{1d:\'20\',L:(k.x.I||(k.25?k.L:H)||k.x.16)+\'E\',14:(k.y.I||k.y.16)+\'E\',1b:\'1g\',2S:\'1g\',1r:m.1m?4:H},m.1U,G)},3p:A(5y,7Q){u 1o=k.1o,x=k.x,y=k.y;m.T(1o,{L:x.I+\'E\',14:y.I+\'E\'});q(5y||7Q){R(u i=0;i<k.1w.S;i++){u o=m.$(\'2b\'+k.1w[i]);u 5C=(m.5e||O.5L==\'7S\');q(o&&/^(3T|4K)$/.17(o.1d)){q(5C){o.F.L=(1o.3N+2*x.V+x.1y+x.2f)+\'E\'}y[o.1d==\'3T\'?\'1y\':\'2f\']=o.3o}q(o&&5C&&/^(18|2e)5D$/.17(o.1d)){o.F.14=(1o.3o+2*y.V)+\'E\'}}}q(5y){m.T(k.W,{Y:y.1y+\'E\'});m.T(1o,{Y:(y.1y+y.V)+\'E\'})}},8c:A(){u b=k.1o;b.1h=\'\';m.T(b,{Y:(k.y.1y+k.y.V)+\'E\',18:(k.x.1y+k.x.V)+\'E\',2S:\'1Y\'});q(m.4D)b.F.1b=\'1Y\';k.U.2j(b);R(u i=0;i<k.1w.S;i++){u o=m.$(\'2b\'+k.1w[i]);o.F.1r=4;q(!o.4y||k.5o){o.F.1b=\'1Y\';m.T(o,{1b:\'1Y\',3n:\'\'});m.3m(o,{1n:o.1n},o.2A)}}},87:A(){q(!k.1w.S)C;m.3f(k.1o)},83:A(){k.4M=m.X(\'a\',{3s:\'82:m.K[\'+k.Q+\'].5h();\',3r:m.1B.84,1h:\'1c-16-46\'});k.3R({4X:k.4M,1d:m.85,4y:G,1n:m.7M})},5h:A(){1H{q(k.4M)m.3f(k.4M);k.3t();u 1P=k.x.I;k.5c(k.x.16,k.y.16);u 4F=k.x.D-(k.x.I-1P)/2;q(4F<m.3B)4F=m.3B;k.5Y(4F,k.y.D);k.3D(\'1g\')}1C(e){k.5R(e)}},69:A(){k.a.1h=k.a.1h.2U(\'1c-7n-7y\',\'\');k.3D(\'1Y\');q(k.1a&&k.2D)k.1a.4i();m.3f(k.U);m.K[k.Q]=H;m.7J()}};q(m.1m){(A(){1H{O.4c.9c(\'18\')}1C(e){52(8q.97,50);C}m.2X()})()}m.1D(O,\'8B\',m.2X);m.1D(1s,\'5a\',m.2X);m.4b=m.1B;u 8w=m.3J;m.1D(1s,\'5a\',A(){q(m.5t){u 5x=\'.1c 1e\',5j=\'2M: 5p(\'+m.3A+m.5t+\'), 4f !8R;\';u F=m.X(\'F\',{M:\'8S/53\'},H,O.4d(\'92\')[0]);q(!m.1m){F.2j(O.9f(5x+" {"+5j+"}"))}J{u 2Q=O.7r[O.7r.S-1];q(1q(2Q.86)=="6s")2Q.86(5x,5j)}}});m.1D(1s,\'2O\',A(){m.4P()});m.1D(O,\'5K\',A(e){m.4x={x:e.4L,y:e.4N}});m.1D(O,\'7Z\',m.5X);m.1D(O,\'7P\',m.5X);m.1D(O,\'2X\',m.45);m.1D(1s,\'5a\',m.8e);',62,650,'||||||||||||||||||||this||hs||||if||||var|||||exp|function|el|return|pos|px|style|true|null|size|else|expanders|width|type|overlay|document|get|key|for|length|setStyles|wrapper|cb|content|createElement|top|prop||els|||height||full|test|left|false|outline|visibility|highslide|position|img|Math|hidden|className|outlineType|offset|src|fx|ie|opacity|overlayBox|case|typeof|zIndex|window|tpos|options|wsize|overlays|id|p1|imgSize|dim|lang|catch|addEventListener|event|op|loading|try|easing|hiddenBy|to|td|next|ratio|div|xSize|elem|target|dragArgs|100|container|new|image|params|visible|minSize|absolute|table|undefined|name|contentType|useBox|opt||push|arr|up|hsId|func|tb|right|p2|elPos|graphic|close|appendChild|ucwh|groups|timers|styles|hasDragged|extend|getExpander|scroll|by|step|ySize|auto|min|custom|args|val|dur|focusKey|wh|outlineWhileAnimating|parentNode|bottom|start|unit|upcoming|marginMin|clone|pendingOutlines|cursor|re|resize|opera|last|duration|overflow|onLoad|replace|now|match|ready|slideshowGroup|page|onclick|in||||attribs|uaVersion||||styleRestoreCursor|isImage|number|images|none|discardElement|while|end|move|justify|fitsize|allowReduce|animate|display|offsetHeight|sizeOverlayBox|moveOnly|title|href|focus|allowSizeReduction|setPosition|minWidth|adj|fac|setAttribute|graphicsDir|marginLeft|uclt|doShowHide|innerHTML|preloadTheseImages|all|removeEventListener|on|Expander|param|blurExp|padToMinWidth|offsetWidth|restoreCursor|minHeight|Outline|createOverlay|getParams|above|zIndexCounter|9999px|opos|isExpanded|iebody|filter||dX|Dimension|onReady|wrapperKey|getAnchors|expand|self|imgPad|anchors|changed|langDefaults|documentElement|getElementsByTagName|tr|pointer|scrollLeft|scrollTop|destroy|Id|onload|showHideElements|tagName|toLowerCase|onLoadStarted|clientSize|curAnim|gotoEnd|isHsAnchor|marginMax|prototype|navigator|html|mouse|hideOnMouseOut|expOnly|os|node|positionOverlay|safari|offX|xpos|idCounter|over|previousOrNext|250|below|clientX|fullExpandLabel|clientY|preloadFullImage|getPageSize|offY|round|keyHandler|topmostKey|heading|preventDefault|tId|overlayId|thumbsUserSetId|sg||dragByHeading|setTimeout|css|hasFocused|userAgent|getAdjacentAnchor|getSrc|element|tbody|load|mX|resizeTo|mY|ieLt7|thumbnailId|wrapperClassName|doFullExpand|maxsize|dec|calcThumb|margin|Create|clones|mouseIsOver|url|lt|overrides|init|expandCursor|topZ|isReady|connectOutline|sel|doWrapper|hasMovedMin|Click|update|ie6|panel|calcExpanded|calcBorders|ucrb|loadingPos|showLoading|hasAlphaImageLoader|mousemove|compatMode|dragHandler|numberOfImagesToPreload|getNode|osize|getWrapperKey|error|openerTagNames|getPosition|string|marginTop|break|mouseClickHandler|moveTo|getParam|defaultView|changeSize|origProp|setSize|restoreTitle|garbageBin|body|max|setPos|afterClose|parseFloat|keypress|keydown|isClosing|continuePreloading|cur|blur|cloneNode|fade|complete|startTime|done|types|srcElement|dY|middle|state|current|object|relative|distance|cancelLoading|relatedTarget|credits|parent|Text|center|clientWidth|easeInQuad|nopad|pow|rv|form|loadingText|appendTo|pThis|_default|offsetTop|loadingTitle|preloadGraphic|clickY|200|loadingOpacity|clickX|ltr|tag|Highslide|JS|transit|from|timerId|headingOverlay||orig|focusTopmost|updateAnchors|enableKeyListener||previous|detachEvent|vis|captionOverlay|onGraphicLoad|hide|offsetLeft|offsetParent|alpha|call|and|getTime|Date|switch|easingClose|geckoMac|getComputedStyle|active|hideIframes|Overlay|hideSelects|styleSheets|getPropertyValue|indexOf|focusTitle|clearsY|clearsX|getAttribute|anchor|addOverlay|getAnchorIndex|creditsHref|slideshow|toString|preloadNext|creditsTarget|writeCredits|Eval|nextSibling|reOrder|creditsPosition|creditsTitle|fullExpandOpacity|hand|rightpanel|mouseup|doPanels|marginRight|BackCompat|genOverlayBox|marginBottom|gotOverlays|showCredits|getInline|getOverlays|mousedown|leftpanel|offsetY|javascript|createFullExpand|fullExpandTitle|fullExpandPosition|addRule|destroyOverlays|restoreDuration|cssDirection|offsetX|direction|showOverlays|block|preloadImages|creditsText|correctRatio|prepareNextOutline|fadeInOut|wrapperMouseHandler|show|maxWidth|fitOverlayBox|after|expandDuration|thumb|arguments|tmpMin|afterExpand|contentLoaded|allowMultipleInstances|zoomin|HsExpander|pageYOffset|keyCode|homepage|arrow|DOMContentLoaded|graphics|keys|Use|drag|click|the|xpand|htmlE|front|bring|cancel|Loading|button|Expand|actual|important|text|zoomout|registerOverlay|Powered|Go|returnValue|outlineStartOffset|headingEval|getElementById|maxHeight|HEAD|padding|headingText|border|oPos|callee|ra||Safari|Macintosh|doScroll|Gecko|it|createTextNode|headingId|toUpperCase|http|com|innerWidth|clientHeight|pageXOffset|innerHeight|currentStyle|_self|captionEval|removeAttribute|captionText|captionId|drop|shadow|1001|fromElement|AlphaImageLoader|sizingMethod|IFRAME|SELECT|setInterval|Microsoft|KDE|scale|png|stl|linearTween|tgt|background|vendor|splice|clearInterval|collapse|borderCollapse|lineHeight|fontSize|outlines|outlinesDir|cellSpacing|repeat|hasHtmlExpanders|DXImageTransform|progid|RegExp|eval|tgtArr|abs|onmouseover|readyState|onmouseout|location|blockRightClick|parseInt|attachEvent|toElement|sqrt|caption|allowSimultaneousLoading|dragSensitivity|isHtml|mouseover|oncontextmenu|imageCreate|Top|Right|200px|Width|Left|Height|Bottom|rb|flushImgSize||default'.split('|'),0,{}))
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..034016a
--- /dev/null
+++ b/index.php
@@ -0,0 +1,71 @@
+<?php
+// (c) 2014 Trinity Desktop Project
+// All Rights Reserved
+// Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+include("globals.php");
+include("tde-head-and-foot.php");
+doHeader("Trinity Desktop Environment", "Home", "_");
+
+include ("media/news-javascript.php");
+
+// Override for main page
+$newscollapsedlines = 10000;
+?>
+
+<P><H2>Efficient. Productive.</H2>
+The Trinity Desktop Environment (TDE) project is a computer desktop environment for Unix-like operating systems
+with a primary goal of retaining the function and form of traditional desktop computers.
+<P CLASS="spacer">
+<P><SPAN CLASS="snapwrapper">
+ <A HREF="media/screenshots/large/tde4.png"><IMG ALT="Introductory Screenshot" SRC="media/screenshots/large/tde4_mainpage.png" CLASS="snap" ID="introsnap"></A>
+</SPAN>
+<P STYLE="text-align:center"><A HREF="screenshots.php">More Screenshots</A>
+<P CLASS="spacer">
+<A HREF="rss.php"><IMG ALT="RSS Feed" SRC="media/tde-rss.png" ID="rssicon"></A><H2>Latest News</H2>
+<?php
+if ($handle = opendir('./news/')) {
+ $filenames = array();
+ while ($file = readdir($handle)) {
+ $filenames[] = $file;
+ }
+ rsort($filenames);
+
+ $file=$filenames[0];
+ if ($file != "." && $file != "..") {
+ echo "<h3>$file: ";
+
+ $data = file_get_contents("news/$file"); //read the file
+ $data = str_replace("http://", "https://", $data); //force https images and links
+ $convert = explode("\n", $data); //create array separate by new line
+ for ($i=0;$i<count($convert);$i++) {
+ echo $convert[$i]. '<br>'; //write value by index
+ if ($i == 0) {
+ echo "</h3>";
+ }
+ if ($i == $newscollapsedlines) {
+ echo '<div id="hiddennews-' . $file . '" style="display: none">';
+ }
+ }
+ if (count($convert) > $newscollapsedlines) {
+ echo '</div>';
+ echo '<noscript><div class="floatleft"><a href=\'/newsentry.php?entry=' . $file . '\'>Read entire entry on separate page</a><BR>Javascript is not available or turned off</div></noscript>';
+ echo '<div class="floatleft"><a id="hiddennews-toggler-' . $file . '" href="javascript:toggle(\'hiddennews-' . $file . '\',\'hiddennews-toggler-' . $file . '\');" >show all text of this entry</a></div>';
+ echo '<div class="floatright"><a href=\'/newsentry.php?entry=' . $file . '\'>permalink</a></div>';
+ echo '<div style="clear: both;"></div>';
+ }
+ else {
+ echo '<div class="floatright"><a href=\'/newsentry.php?entry=' . $file . '\'>permalink</a></div>';
+ echo '<div style="clear: both;"></div>';
+ }
+ }
+ echo "<div class=\"clearall\"></div><br><br>";
+ echo "<p class=\"spacer\">";
+ echo '<div class="floatright"><div class="plain"> <a href="news.php">click here for older news</a> </div></div>';
+ closedir($handle);
+}
+?>
+
+<?php
+ doFooter();
+?>
diff --git a/mailing_lists/index.php b/mailing_lists/index.php
new file mode 100644
index 0000000..c565536
--- /dev/null
+++ b/mailing_lists/index.php
@@ -0,0 +1,78 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Mailing Lists", "Support", "Mailing Lists");
+?>
+
+<p><strong>General discussion ("high" traffic): trinity-users</strong><br>
+ To send a message to the list, send it to <a href="mailto:trinity-users@lists.pearsoncomputing.net">trinity-users@lists.pearsoncomputing.net</a><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-users-subscribe@lists.pearsoncomputing.net">trinity-users-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-users-unsubscribe@lists.pearsoncomputing.net">trinity-users-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web archive: <a href="http://trinity-users.pearsoncomputing.net">http://trinity-users.pearsoncomputing.net</a>
+</p>
+<p><strong>Trinity project announcements (low traffic): trinity-announce</strong><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-announce-subscribe@lists.pearsoncomputing.net">trinity-announce-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-announce-unsubscribe@lists.pearsoncomputing.net">trinity-announce-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web Archive: <a href="http://trinity-announce.pearsoncomputing.net">http://trinity-announce.pearsoncomputing.net</a>
+</p>
+<p><strong>Trinity developers list (moderate traffic): trinity-devel</strong><br>
+ To send a message to the list, send it to <a href="mailto:trinity-devel@lists.pearsoncomputing.net">trinity-devel@lists.pearsoncomputing.net</a><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-devel-subscribe@lists.pearsoncomputing.net">trinity-devel-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-devel-unsubscribe@lists.pearsoncomputing.net">trinity-devel-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web archive: <a href="http://trinity-devel.pearsoncomputing.net">http://trinity-devel.pearsoncomputing.net</a>
+</p>
+ <p><strong>Trinity automated commit notification list ("high" traffic): trinity-commits</strong><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-commits-subscribe@lists.pearsoncomputing.net">trinity-commits-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-commits-unsubscribe@lists.pearsoncomputing.net">trinity-commits-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web archive: <a href="http://trinity-commits.pearsoncomputing.net">http://trinity-commits.pearsoncomputing.net</a>
+</p>
+
+<a name="top-posting">
+<h3>Mailing List Etiquette</h3>
+</a>
+<p>When you reply to a message on these lists, please avoid top-posting as in this example:</p>
+<pre>
+ <code>
+ HAL has been deprecated in newer kernel releases, so
+ it should be deprecated in Trinity as well.
+
+ Tim
+
+ -----Original Message-----
+ From: Curious [mailto:curious@example.com]
+ Sent: Tuesday, January 6, 2010 2:54 AM
+ To: Tim
+ Cc: trinity-devel@lists.pearsoncomputing.net
+ Subject: Re: HAL usage
+
+ Should HAL be used in upcoming Trinity releases instead
+ of the newer udev/upower interface?
+
+ This might be easier than a full rewrite of HAL-dependent
+ code.
+
+ Sincerely,
+
+ I. M. Curious
+ </code>
+</pre>
+
+<p>Instead, please add your reply to the <strong>bottom</strong> of the original thread, or interleave your response
+ with snippets of the original message.
+<P>This is an example of why top posting is considered impolite (as seen on linux-kernel):</p>
+<pre>
+ <code>
+ A: Because it messes up the order in which people normally
+ read text.
+ Q: Why is top-posting such a bad thing?
+ A: Top-posting.
+ Q: What is the most annoying thing in e-mail?
+ </code>
+</pre>
+
+<?php
+ doFooter();
+?>
diff --git a/mailinglist.php b/mailinglist.php
new file mode 100644
index 0000000..c565536
--- /dev/null
+++ b/mailinglist.php
@@ -0,0 +1,78 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Mailing Lists", "Support", "Mailing Lists");
+?>
+
+<p><strong>General discussion ("high" traffic): trinity-users</strong><br>
+ To send a message to the list, send it to <a href="mailto:trinity-users@lists.pearsoncomputing.net">trinity-users@lists.pearsoncomputing.net</a><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-users-subscribe@lists.pearsoncomputing.net">trinity-users-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-users-unsubscribe@lists.pearsoncomputing.net">trinity-users-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web archive: <a href="http://trinity-users.pearsoncomputing.net">http://trinity-users.pearsoncomputing.net</a>
+</p>
+<p><strong>Trinity project announcements (low traffic): trinity-announce</strong><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-announce-subscribe@lists.pearsoncomputing.net">trinity-announce-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-announce-unsubscribe@lists.pearsoncomputing.net">trinity-announce-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web Archive: <a href="http://trinity-announce.pearsoncomputing.net">http://trinity-announce.pearsoncomputing.net</a>
+</p>
+<p><strong>Trinity developers list (moderate traffic): trinity-devel</strong><br>
+ To send a message to the list, send it to <a href="mailto:trinity-devel@lists.pearsoncomputing.net">trinity-devel@lists.pearsoncomputing.net</a><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-devel-subscribe@lists.pearsoncomputing.net">trinity-devel-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-devel-unsubscribe@lists.pearsoncomputing.net">trinity-devel-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web archive: <a href="http://trinity-devel.pearsoncomputing.net">http://trinity-devel.pearsoncomputing.net</a>
+</p>
+ <p><strong>Trinity automated commit notification list ("high" traffic): trinity-commits</strong><br>
+ To subscribe, send an empty Email to <a href="mailto:trinity-commits-subscribe@lists.pearsoncomputing.net">trinity-commits-subscribe@lists.pearsoncomputing.net</a><br>
+ To unsubscribe, send an empty Email to <a href="mailto:trinity-commits-unsubscribe@lists.pearsoncomputing.net">trinity-commits-unsubscribe@lists.pearsoncomputing.net</a><br>
+ Web archive: <a href="http://trinity-commits.pearsoncomputing.net">http://trinity-commits.pearsoncomputing.net</a>
+</p>
+
+<a name="top-posting">
+<h3>Mailing List Etiquette</h3>
+</a>
+<p>When you reply to a message on these lists, please avoid top-posting as in this example:</p>
+<pre>
+ <code>
+ HAL has been deprecated in newer kernel releases, so
+ it should be deprecated in Trinity as well.
+
+ Tim
+
+ -----Original Message-----
+ From: Curious [mailto:curious@example.com]
+ Sent: Tuesday, January 6, 2010 2:54 AM
+ To: Tim
+ Cc: trinity-devel@lists.pearsoncomputing.net
+ Subject: Re: HAL usage
+
+ Should HAL be used in upcoming Trinity releases instead
+ of the newer udev/upower interface?
+
+ This might be easier than a full rewrite of HAL-dependent
+ code.
+
+ Sincerely,
+
+ I. M. Curious
+ </code>
+</pre>
+
+<p>Instead, please add your reply to the <strong>bottom</strong> of the original thread, or interleave your response
+ with snippets of the original message.
+<P>This is an example of why top posting is considered impolite (as seen on linux-kernel):</p>
+<pre>
+ <code>
+ A: Because it messes up the order in which people normally
+ read text.
+ Q: Why is top-posting such a bad thing?
+ A: Top-posting.
+ Q: What is the most annoying thing in e-mail?
+ </code>
+</pre>
+
+<?php
+ doFooter();
+?>
diff --git a/mainstyle.css b/mainstyle.css
new file mode 100644
index 0000000..cef4f30
--- /dev/null
+++ b/mainstyle.css
@@ -0,0 +1,164 @@
+BODY {background-color:white;
+ /*font-family:"Times New Roman", "Libre Serif", serif; font-size:12pt;*/
+ /*font-family:"Arial", "Libre Sans", sans-serif; font-size:10pt;*/
+ /*font-family:Verdana, sans-serif; font-size:14pt;*/
+ color:black;
+ height:100%;
+ margin:0px;
+ padding:0px;
+ background-image:url(media/back.png);
+ background-repeat:repeat-y;
+ background-position:top left;
+ }
+IMG {border-width:0px}
+H1 {color:white;
+ font-size:30pt;
+ text-shadow: black 0px 0px 5px;}
+H2 {font-weight:bold;
+ font-size:larger}
+H3 {font-weight:bold;
+ font-size:100%}
+PRE {border:1px solid #001c7b;
+ background-color:#cfe1f6;
+ white-space:pre-line;
+ padding:2px}
+.spacer {margin-top:3ex}
+A:link {color:#001c7b;
+ text-decoration:none;
+ font-weight:bold}
+A:visited {color:#001c7b;
+ text-decoration:none;
+ font-weight:bold}
+A:hover {color:#001c7b;
+ text-decoration:underline;
+ font-weight:bold}
+
+#all-wrapper{margin:0px;
+ padding:0px;
+ }
+#banner {height:150px;
+ width:100%;
+ background-color:#01306f;
+ background-image:url(media/bannerchunk.png);
+ background-repeat:repeat-x;
+ background-position:bottom left;
+ font-family:"Arial", "Libre Sans", sans-serif; font-size:11pt;}
+#bannerimg {position:absolute;
+ top:0px;
+ right:0px;
+ border:0px;
+ margin:0px;
+ z-index:3}
+#logowrap {position:relative;
+ top:-12px;
+ left:85px;
+ width:200px;
+ z-index:4}
+#logo {position:relative;
+ top:27px;
+ left:-62px;
+ height:125px;
+ width:125px}
+#titlewrap {position:relative;
+ top:-120px;
+ text-align:left;
+ margin-left:25ex;
+ margin-right:4ex;
+ height:131px;
+ z-index:6}
+#titlenotif {position:absolute;
+ top:120px;
+ right:50px;
+ z-index:6;
+ }
+#title {position:relative;
+ z-index:6;
+ top:15px;
+ }
+#sidebar {background-color:#1f4ca4;
+ width:170px;
+ font-family:"Arial", "Libre Sans", sans-serif; font-size:11pt;
+ }
+#sidetext {position:absolute;
+ top:150px;
+ width:150px;
+ padding-bottom:4ex;
+ padding-right:10px;
+ padding-left:10px;
+ overflow:visible;
+ background-color:#01306f;
+ background-image:url(media/gradient2.png);
+ background-repeat:repeat-x;
+ background-position:bottom left;
+ }
+.navhead {font-size:larger;
+ font-weight:bold;
+ font-style:italic;
+ margin-left:1ex;
+ margin-top:1ex;
+ margin-bottom:0px}
+.nav {font-weight:bold;
+ margin-left:3ex;
+ margin-top:0px;
+ margin-bottom:0px;
+ padding:0px}
+.nav A:link {color:white}
+.nav A:visited {color:white}
+.nav A:hover {color:white}
+.navhead A:link {color:#cfe1f6}
+.navhead A:visited {color:#cfe1f6}
+.navhead A:hover {color:#cfe1f6}
+.notifhead {font-size:smaller;
+ font-weight:normal;
+ margin-left:1ex;
+ margin-top:1ex;
+ margin-bottom:0px}
+.notifhead A:link {color:lime}
+.notifhead A:visited {color:lime}
+.notifhead A:hover {color:lime}
+#curpage {border:solid 1px white}
+#main {width:100%;}
+#intermediate {background-color:white;
+ margin-left:170px;
+ }
+#textblock {padding:4ex;
+ margin-right:auto;
+ margin-left:auto;
+/* max-width:125ex;*/
+ }
+.snapwrapper {position:relative;
+ left:50%;
+ height:320px;
+ width:420px;}
+.snap {height:225px;
+ width:366px;
+ z-index:6;
+ box-shadow: 10px 10px 10px 5px rgba(0,0,0,0.4)}
+/*.snapshadow {width:400px;
+ height:30px;
+ position:relative;
+ left:-200px;}*/
+#introsnap {position:relative;
+ left:-183px;
+ text-align:center}
+#rssicon {height:1.25em;
+ width:1.25em;
+ float:left;
+ padding-right:5px}
+#copyright {font-size:x-small}
+
+.floatleft {float: left}
+.floatright {float: right}
+.clearall {clear: both}
+.hidden {display: none;
+ overflow:hide}
+
+.tmain {padding-right:2ex}
+
+/*patches table*/
+.patchtable TR TD {vertical-align:top}
+.patchtable TR TH {text-align:left;
+ font-weight:bold;
+ vertical-align:top}
+.patchtable {width:100%;}
+/*.patchtable TR TD:last-child {width:50%;}*/
diff --git a/media/back.png b/media/back.png
new file mode 100644
index 0000000..095a7b5
--- /dev/null
+++ b/media/back.png
Binary files differ
diff --git a/media/bannerchunk.png b/media/bannerchunk.png
new file mode 100644
index 0000000..f439973
--- /dev/null
+++ b/media/bannerchunk.png
Binary files differ
diff --git a/media/bannerswoosh.png b/media/bannerswoosh.png
new file mode 100644
index 0000000..6af9ea9
--- /dev/null
+++ b/media/bannerswoosh.png
Binary files differ
diff --git a/media/gradient2.png b/media/gradient2.png
new file mode 100644
index 0000000..b06ae5a
--- /dev/null
+++ b/media/gradient2.png
Binary files differ
diff --git a/media/news-javascript.php b/media/news-javascript.php
new file mode 100644
index 0000000..60cf8ad
--- /dev/null
+++ b/media/news-javascript.php
@@ -0,0 +1,20 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Calvin Morrison
+?>
+
+<script type="text/javascript">
+ function toggle(showHideDiv, switchTextDiv) {
+ var ele = document.getElementById(showHideDiv);
+ var text = document.getElementById(switchTextDiv);
+ if(ele.style.display == "block") {
+ ele.style.display = "none";
+ text.innerHTML = "show all text of this entry";
+ }
+ else {
+ ele.style.display = "block";
+ text.innerHTML = "shrink entry";
+ }
+ }
+</script> \ No newline at end of file
diff --git a/media/rsync_logo.jpg b/media/rsync_logo.jpg
new file mode 100644
index 0000000..70e7cba
--- /dev/null
+++ b/media/rsync_logo.jpg
Binary files differ
diff --git a/media/screenshots/large/tde1.png b/media/screenshots/large/tde1.png
new file mode 100644
index 0000000..f566168
--- /dev/null
+++ b/media/screenshots/large/tde1.png
Binary files differ
diff --git a/media/screenshots/large/tde2.png b/media/screenshots/large/tde2.png
new file mode 100644
index 0000000..74b40fa
--- /dev/null
+++ b/media/screenshots/large/tde2.png
Binary files differ
diff --git a/media/screenshots/large/tde3.png b/media/screenshots/large/tde3.png
new file mode 100644
index 0000000..a929719
--- /dev/null
+++ b/media/screenshots/large/tde3.png
Binary files differ
diff --git a/media/screenshots/large/tde4.png b/media/screenshots/large/tde4.png
new file mode 100644
index 0000000..0300e2d
--- /dev/null
+++ b/media/screenshots/large/tde4.png
Binary files differ
diff --git a/media/screenshots/large/tde4_mainpage.png b/media/screenshots/large/tde4_mainpage.png
new file mode 100644
index 0000000..a0b2354
--- /dev/null
+++ b/media/screenshots/large/tde4_mainpage.png
Binary files differ
diff --git a/media/screenshots/large/tde5.png b/media/screenshots/large/tde5.png
new file mode 100644
index 0000000..b172605
--- /dev/null
+++ b/media/screenshots/large/tde5.png
Binary files differ
diff --git a/media/screenshots/small/tde1.png b/media/screenshots/small/tde1.png
new file mode 100644
index 0000000..d31f7e4
--- /dev/null
+++ b/media/screenshots/small/tde1.png
Binary files differ
diff --git a/media/screenshots/small/tde2.png b/media/screenshots/small/tde2.png
new file mode 100644
index 0000000..9b4604c
--- /dev/null
+++ b/media/screenshots/small/tde2.png
Binary files differ
diff --git a/media/screenshots/small/tde3.png b/media/screenshots/small/tde3.png
new file mode 100644
index 0000000..ae44d57
--- /dev/null
+++ b/media/screenshots/small/tde3.png
Binary files differ
diff --git a/media/screenshots/small/tde4.png b/media/screenshots/small/tde4.png
new file mode 100644
index 0000000..7a300cf
--- /dev/null
+++ b/media/screenshots/small/tde4.png
Binary files differ
diff --git a/media/screenshots/small/tde5.png b/media/screenshots/small/tde5.png
new file mode 100644
index 0000000..466359d
--- /dev/null
+++ b/media/screenshots/small/tde5.png
Binary files differ
diff --git a/media/tde-logo.png b/media/tde-logo.png
new file mode 100755
index 0000000..22ad9f3
--- /dev/null
+++ b/media/tde-logo.png
Binary files differ
diff --git a/media/tde-rss.png b/media/tde-rss.png
new file mode 100644
index 0000000..74a27f6
--- /dev/null
+++ b/media/tde-rss.png
Binary files differ
diff --git a/media/tde-rss.svgz b/media/tde-rss.svgz
new file mode 100644
index 0000000..343b3d0
--- /dev/null
+++ b/media/tde-rss.svgz
Binary files differ
diff --git a/mirrors.php b/mirrors.php
new file mode 100644
index 0000000..c38478f
--- /dev/null
+++ b/mirrors.php
@@ -0,0 +1,54 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("TDE Team", "Development", "TDE Team");
+?>
+
+ The Trinity Development Team would like to thank everyone listed below for their assistance. These individuals have freely offered their time and effort to make Trinity better. Without their support Trinity would not exist in its current form.
+ </p>
+ <p>
+ If we have forgotten to add your name to the list, please contact us via <a href="mailinglist.php">the trinity-devel mailing list</a>.
+ </p>
+
+<h3> Trinity Developers</h3>
+<table class="table" STYLE="border:1px solid #001c7b;">
+<tr STYLE="background-color:#cfe1f6"><td class="th">Name</td><td class="th">Contributing Area(s)</td></tr>
+<tr><td class="tmain">Timothy Pearson</td><td>Project administrator<br>Primary developer<br>Build farm administrator<br>Debian/Ubuntu packaging maintainer</td></tr>
+<tr><td class="tmain">Sl&aacute;vek Banko</td><td>SRU development, management, and builds</td></tr>
+<tr><td class="tmain">Francois Andriot</td><td>Redhat/Fedora packaging maintainer</td></tr>
+<tr><td class="tmain">"Woodsman"</td><td>Vanilla build testing and repair<br>Slackware build scripts maintainer<br>Documentation reviewer<br>Testing and quality assurance</td></tr>
+<tr><td class="tmain">Michele Calgaro</td><td>Developer<br>Documentation reviewer<br>Debian/testing and quality assurance</td></tr>
+</table>
+
+<h3>Content Distribution</h3>
+<table class="table" STYLE="border:1px solid #001c7b">
+<tr STYLE="background-color:#cfe1f6">
+ <td class="th">Name</td>
+ <td class="th">Contributing Area(s)</td>
+</tr>
+<tr><td>Mike Bird (Yosemite Network)</td><td><a href="http://tde-mirror.yosemite.net/trinity/">Mirror 1 [United States]</a><a href="rsync://tde-mirror.yosemite.net/trinity/"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+<tr><td><a href="http://www.mirrorservice.org/">UK Mirror Service</a></td><td><a href="http://www.mirrorservice.org/sites/trinitydesktop.org/trinity/">Mirror 2 [United Kingdom]</a><a href="rsync://rsync.mirrorservice.org/trinitydesktop.org/trinity/"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+<tr><td>Nathaniel Taylor</td><td><a href="http://mirror.ntmm.org/trinity/">Mirror 3 [Sweden]</a><a href="rsync://mirror.ntmm.org"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+<tr><td valign=top><a href=http://www.dotriver.eu/>DotRiver</a></td><td><a href="http://depot-trinity.dotriver.eu/">Mirror 4 [France]</a><br><a href=http://ftp.rezopole.net/tde/>Mirror 5 [France] <font color=red>[Last sync 1/20/2012]</font></a></td></tr>
+<tr><td>Ivan Ganchev</td><td><a href="http://bg1.mirror.trinitydesktop.org/trinity/">Mirror 6 [Bulgaria]</a></td></tr>
+<tr><td><a href="http://www.netlinux.org.uk/">NetLinux</a></td><td><a href="http://trinity.netlinux.org.uk/">Mirror 7 [United Kingdom] <font color=red>[Not syncing]</font></a></td></tr>
+<tr><td><a href="http://blogs.fau.de/ftp/">Friedrich-Alexander-Universit&auml;t Erlangen-N&uuml;rnberg</a></td><td><a href="http://ftp.fau.de/trinity/">Mirror 8 [Germany]</a><a href="rsync://ftp.fau.de/trinity/"><image src="media/rsync_logo.jpg" width=30 border=0></a></td></tr>
+</table>
+<p>
+<a href="/mirrorstatus.php">Active mirror list</a>
+
+
+<h3>Web Team</h3>
+<table class="table" STYLE="border:1px solid #001c7b;">
+<tr STYLE="background-color:#cfe1f6"><td class="th">Name</td><td class="th">Contributing Area(s)</td></tr>
+<tr><td class="tmain">E. Liddell</td><td>Design</td></tr>
+<tr><td class="tmain">Timothy Pearson</td><td>Maintenance</td></tr>
+</table>
+<p>
+
+<p>
+<a href="./past_contributors.php">Past Contributors</a><BR>Gone, but not forgotten...thank you for your previous support!
+<p>
+
+<?php
+ doFooter();
+?>
diff --git a/news.php b/news.php
new file mode 100644
index 0000000..ef25704
--- /dev/null
+++ b/news.php
@@ -0,0 +1,63 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ include("globals.php");
+ include("header.php");
+ include("footer.php");
+ doHeader("Trinity News", "Main", "News");
+
+ include ("media/news-javascript.php");
+?>
+
+<?php
+
+if ($handle = opendir('./news/')) {
+ $filenames = array();
+ while ($file = readdir($handle)) {
+ $filenames[] = $file;
+ }
+ rsort($filenames);
+
+ foreach($filenames as $file) {
+ // sort($handle, SORT_NUMERIC);
+ if (($file != ".") && ($file != "..") && ($file{0} != '.')) {
+ echo "<h3>$file: ";
+
+ $data = file_get_contents("news/$file"); //read the file
+ $data = str_replace("http://", "https://", $data); //force https images and links
+ $convert = explode("\n", $data); //create array separate by new line
+ for ($i=0;$i<count($convert);$i++) {
+ echo $convert[$i]. '<br>'; //write value by index
+ if ($i == 0){
+ echo "</h3>";
+ }
+ if ($i == $newscollapsedlines) {
+ echo '<div id="hiddennews-' . $file . '" style="display: none">';
+ }
+ }
+ if (count($convert) > $newscollapsedlines) {
+ echo '</div>';
+ echo '<noscript><div class="floatleft"><a href=\'/newsentry.php?entry=' . $file . '\'>Read entire entry on separate page</a><BR>Javascript is not available or turned off</div></noscript>';
+ echo '<div class="floatleft"><a id="hiddennews-toggler-' . $file . '" href="javascript:toggle(\'hiddennews-' . $file . '\',\'hiddennews-toggler-' . $file . '\');" >show all text of this entry</a></div>';
+ echo '<div class="floatright"><a href=\'/newsentry.php?entry=' . $file . '\'>permalink</a></div>';
+ echo '<div style="clear: both;"></div>';
+ }
+ else {
+ echo '<div class="floatright"><a href=\'/newsentry.php?entry=' . $file . '\'>permalink</a></div>';
+ echo '<div style="clear: both;"></div>';
+ }
+ echo "<div class=\"clearall\"></div><br><br>";
+ echo "<p class=\"spacer\">";
+ }
+ }
+ echo "<br>";
+ closedir($handle);
+}
+
+?>
+
+<?php
+ doFooter();
+?>
diff --git a/newsentry.php b/newsentry.php
new file mode 100644
index 0000000..c4fe2f4
--- /dev/null
+++ b/newsentry.php
@@ -0,0 +1,81 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ include("globals.php");
+ include("header.php");
+ include("footer.php");
+ doHeader("Trinity News", "Main", "News");
+?>
+
+<?php
+
+function writeNewsEntry($file, $prefix) {
+ // sort($handle, SORT_NUMERIC);
+ if (($file != ".") && ($file != "..") && ($file{0} != '.')) {
+ echo '<div class="news">';
+ echo "<h3>$file: ";
+
+ $data = file_get_contents($prefix . "/$file"); //read the file
+ $convert = explode("\n", $data); //create array separate by new line
+ for ($i=0;$i<count($convert);$i++) {
+ echo $convert[$i]. '<br>'; //write value by index
+ if ($i == 0){
+ echo "</h3>";
+ }
+ }
+ echo '</div>';
+ }
+}
+
+if ($handle = opendir('./news/')) {
+$filenames = array();
+while ($file = readdir($handle)) {
+ $filenames[] = $file;
+}
+rsort($filenames);
+
+$entryfound = 0;
+foreach($filenames as $file) {
+ if ($file == $_GET["entry"]) {
+ writeNewsEntry($file, 'news');
+ $entryfound = 1;
+ }
+}
+closedir($handle);
+
+if ($entryfound == 0) {
+ if ($handle = opendir('./rssentries/')) {
+ $filenames = array();
+ while ($file = readdir($handle)) {
+ $filenames[] = $file;
+ }
+ rsort($filenames);
+
+ $entryfound = 0;
+ foreach($filenames as $file) {
+ if ($file == $_GET["entry"]) {
+ writeNewsEntry($file, 'rssentries');
+ $entryfound = 1;
+ }
+ }
+ closedir($handle);
+
+ if ($entryfound == 0) {
+ echo '<font color="red">Requested news entry not found!</font>';
+ echo "<p>";
+ }
+ }
+}
+
+echo '<a href="/news.php">Go back to News</a>';
+echo "<p>";
+}
+?>
+
+<?php
+ doFooter();
+?>
+
+
diff --git a/ocs/karamba-providers.xml b/ocs/karamba-providers.xml
new file mode 100644
index 0000000..b4456ee
--- /dev/null
+++ b/ocs/karamba-providers.xml
@@ -0,0 +1,22 @@
+<providers>
+
+<provider>
+ <id>opendesktop</id>
+ <location>https://api.opendesktop.org/v1/</location>
+ <name>openDesktop.org</name>
+ <icon></icon>
+ <termsofuse>https://opendesktop.org/terms/</termsofuse>
+ <register>https://opendesktop.org/usermanager/new.php</register>
+ <services>
+ <person ocsversion="1.3" />
+ <friend ocsversion="1.3" />
+ <message ocsversion="1.3" />
+ <activity ocsversion="1.3" />
+ <content ocsversion="1.3" />
+ <fan ocsversion="1.3" />
+ <knowledgebase ocsversion="1.3" />
+ <event ocsversion="1.3" />
+ </services>
+</provider>
+
+</providers>
diff --git a/ocs/providers.xml b/ocs/providers.xml
new file mode 100644
index 0000000..b4456ee
--- /dev/null
+++ b/ocs/providers.xml
@@ -0,0 +1,22 @@
+<providers>
+
+<provider>
+ <id>opendesktop</id>
+ <location>https://api.opendesktop.org/v1/</location>
+ <name>openDesktop.org</name>
+ <icon></icon>
+ <termsofuse>https://opendesktop.org/terms/</termsofuse>
+ <register>https://opendesktop.org/usermanager/new.php</register>
+ <services>
+ <person ocsversion="1.3" />
+ <friend ocsversion="1.3" />
+ <message ocsversion="1.3" />
+ <activity ocsversion="1.3" />
+ <content ocsversion="1.3" />
+ <fan ocsversion="1.3" />
+ <knowledgebase ocsversion="1.3" />
+ <event ocsversion="1.3" />
+ </services>
+</provider>
+
+</providers>
diff --git a/past_contributors.php b/past_contributors.php
new file mode 100644
index 0000000..b13abfa
--- /dev/null
+++ b/past_contributors.php
@@ -0,0 +1,37 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Past Contributors to Trinity", "Development", "TDE Team");
+?>
+<p>The Trinity Development Team would like to thank everyone listed below for their help. These
+individuals have, in the past, freely offered their time and effort to make Trinity better. Without their
+support Trinity would not exist in its current form.</p>
+<p>If we have forgotten to add your name to the list, please contact us via <a href="mailinglist.php">the
+trinity-devel mailing list</a>.</p>
+
+
+<h3> Trinity Developers</h3>
+<table class="table" STYLE="border:1px solid #001c7b;">
+<tr STYLE="background-color:#cfe1f6"><td class="th">Name</td><td class="th">Contributing Area(s)</td></tr>
+<tr><td class="tmain">Serghei Amelian</td><td>General functionality enhancements<br>CMake build system developer/maintainer</td></tr>
+</table>
+
+<h3>Content Distribution</h3>
+<table class="table" STYLE="border:1px solid #001c7b;">
+<tr STYLE="background-color:#cfe1f6"><td class="th">Name</td><td class="th">Contributing Area(s)</td></tr>
+<tr><td>University of Idaho</td><td>Mirror 1 [United States]</td></tr>
+<tr><td>Jens Dunzweiler</td><td>Mirror 2 [Germany]</td></tr>
+<tr><td>Inga Muste</td><td>Kubuntu LiveCD mirror</td></tr>
+</table>
+
+<h3>Web Team</h3>
+<table class="table" STYLE="border:1px solid #001c7b;">
+<tr STYLE="background-color:#cfe1f6"><td class="th">Name</td><td class="th">Contributing Area(s)</td></tr>
+<tr><td class="tmain">Calvin Morrison</td><td>Website design</td></tr>
+<tr><td class="tmain">Inga Muste</td><td>Website design</td></tr>
+</table>
+
+
+
+<?php
+ doFooter();
+?>
diff --git a/relatedprojects.php b/relatedprojects.php
new file mode 100644
index 0000000..ffa03d1
--- /dev/null
+++ b/relatedprojects.php
@@ -0,0 +1,31 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Related Projects", "Development", "Related Projects");
+?>
+
+ <p>
+ These are projects related to the Trinity Desktop Environment. They have either been
+ developed specifically for Trinity, or have been patched to work correctly with Trinity.
+ </p>
+
+ <h3>libcaldav</h3>
+ <p>
+ Trinity utilizes a patched version of libcaldav from <a href="http://sourceforge.net/projects/libcaldav/">libcaldav's Sourceforge site.</a><P>
+ libcaldev is a client library that adds support for the CalDAV protocol (rfc4791). The
+ object is to have a library which fully implements the protocol so that it is easy
+ to integrate CalDAV support into any PIM application. The latest patched sources
+ and Debian binaries are available from our GIT system: <a href="https://git.trinitydesktop.org/cgit/libcaldav/">Go there now!</a>
+ </p>
+
+ <h3>libcarddav</h3>
+ <p>
+ Libcarddav is a portable CardDAV client implementation originally developed for the Trinity
+ PIM suite. It incorporates full list, get, add, modify, and delete functionality per the
+ latest CardDAV standards. Build dependencies are minimal, requiring only libcurl. The latest
+ sources and Debian binaries are available on our GIT system:
+ <a href="https://git.trinitydesktop.org/cgit/libcarddav/">Go there now!</a>
+ </p>
+
+<?php
+ doFooter();
+?>
diff --git a/releases.php b/releases.php
new file mode 100644
index 0000000..393ce10
--- /dev/null
+++ b/releases.php
@@ -0,0 +1,54 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Elizabeth Liddell
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Releases", "Get Trinity", "Packages");
+?>
+
+<p>The Trinity Desktop Environment follows an unscheduled "release when ready" system, which depends on
+the number of required changes to the core and how many open bugs we have, rather than picking a
+calendar date. We try to get stable releases out every few months, and major releases once or twice a year.
+This page details our currently active releases. For tentative information on future releases, please read
+the <a href="https://wiki.trinitydesktop.org/Project_RoadMap">Project Roadmap</a>.
+</p>
+<p><b>Select an official release version below to get release notes and download links</b><br><BR><BR>
+ <table STYLE="border-width:0px">
+ <tr>
+ <td><B>Version</B></td>
+ <td><B>Date</B></td>
+ </tr>
+ <tr>
+ <td STYLE="padding-right:5ex"><a href="releases/R14.0.1">&rarr; R14.0.1 [Current]</a></td>
+ <td>08/30/2015</td>
+ </tr>
+ <tr>
+ <td STYLE="padding-right:5ex"><a href="releases/R14.0.0">&rarr; R14.0.0</a></td>
+ <td>12/16/2014</td>
+ </tr>
+ <tr>
+ <td STYLE="padding-right:5ex"><a href="releases/3.5.13.2">&rarr; 3.5.13.2</a></td>
+ <td>07/21/2013</td>
+ </tr>
+ <tr>
+ <td><a href="releases/3.5.13.1">&rarr; 3.5.13.1</a></td>
+ <td>10/11/2012</td>
+ </tr>
+ <tr>
+ <td><a href="releases/3.5.13">&rarr; 3.5.13</a></td>
+ <td>11/01/2011</td>
+ </tr>
+ <tr>
+ <td><a href="releases/3.5.12">&rarr; 3.5.12</a></td>
+ <td>10/03/2010</td>
+ </tr>
+ <tr>
+ <td><a href="releases/3.5.11">&rarr; 3.5.11</a></td>
+ <td>04/29/2010</td>
+ </tr>
+ </table>
+
+<?php
+ doFooter();
+?>
diff --git a/releases/3.5.11/index.php b/releases/3.5.11/index.php
new file mode 100644
index 0000000..7ea38c5
--- /dev/null
+++ b/releases/3.5.11/index.php
@@ -0,0 +1,22 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Elizabeth Liddell
+
+ $path = '../../';
+ set_include_path(get_include_path() . PATH_SEPARATOR . $path);
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Releases", "Get Trinity", "Packages");
+?>
+
+<H3>Trinity v3.5.11 Release Information</H3><P>
+<A HREF="https://wiki.trinitydesktop.org/Release_Notes_For_3.5.11" TARGET="_top">What's New in Trinity 3.5.11</A>
+<P>
+<A HREF="http://apt.pearsoncomputing.net/install.html">Official Installation Instructions for Ubuntu Lucid</A>
+<P>
+<A HREF="http://ppa2.quickbuild.pearsoncomputing.net/redirect.php?file=releases/3.5.11/kde_trinity_3_5_11.tar.bz">Download Source Tarball (~650MB compressed/~1.3GB deflated)</A>
+
+<?php
+ doFooter();
+?>
diff --git a/releases/3.5.12/index.php b/releases/3.5.12/index.php
new file mode 100644
index 0000000..e47af80
--- /dev/null
+++ b/releases/3.5.12/index.php
@@ -0,0 +1,24 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Elizabeth Liddell
+
+ $path = '../../';
+ set_include_path(get_include_path() . PATH_SEPARATOR . $path);
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Releases", "Get Trinity", "Packages");
+?>
+
+<H3>Trinity v3.5.12 Release Information</H3><P>
+<A HREF="https://wiki.trinitydesktop.org/Release_Notes_For_3.5.12" TARGET="_top">What's New in Trinity 3.5.12</A>
+<P>
+<A HREF="https://wiki.trinitydesktop.org/DebianInstall">Official Installation Instructions for Debian</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/UbuntuInstall">Official Installation Instructions for Ubuntu</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/SlackwareInstall">Official Installation Instructions for Slackware</A>
+<P>
+<A HREF="http://ppa2.quickbuild.pearsoncomputing.net/redirect.php?file=releases/3.5.12/downloads.html" TARGET="_top">Download Source Tarballs</A>
+
+<?php
+ doFooter();
+?>
diff --git a/releases/3.5.13.1/index.php b/releases/3.5.13.1/index.php
new file mode 100644
index 0000000..de37cf5
--- /dev/null
+++ b/releases/3.5.13.1/index.php
@@ -0,0 +1,26 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Elizabeth Liddell
+
+ $path = '../../';
+ set_include_path(get_include_path() . PATH_SEPARATOR . $path);
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Releases", "Get Trinity", "Packages");
+?>
+
+<TITLE>Trinity v3.5.13.1 Release Information</TITLE>
+<H3>Trinity v3.5.13.1 Release Information</H3><P>
+<A HREF="https://wiki.trinitydesktop.org/Release_Notes_For_3.5.13.1" TARGET="_top">What's New in Trinity 3.5.13.1</A>
+<P>
+<A HREF="https://wiki.trinitydesktop.org/DebianInstall">Official Installation Instructions for Debian</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/UbuntuInstall">Official Installation Instructions for Ubuntu</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/RedHatInstall">Official Installation Instructions for RedHat</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/FedoraInstall">Official Installation Instructions for Fedora</A><BR>
+<P>
+<A HREF="http://ppa2.quickbuild.pearsoncomputing.net/redirect.php?file=releases/3.5.13.1/downloads.html" TARGET="_top">Download Source Tarballs</A>
+
+<?php
+ doFooter();
+?>
diff --git a/releases/3.5.13.2/index.php b/releases/3.5.13.2/index.php
new file mode 100644
index 0000000..6e62ead
--- /dev/null
+++ b/releases/3.5.13.2/index.php
@@ -0,0 +1,26 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Elizabeth Liddell
+
+ $path = '../../';
+ set_include_path(get_include_path() . PATH_SEPARATOR . $path);
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Releases", "Get Trinity", "Packages");
+?>
+
+<TITLE>Trinity v3.5.13.2 Release Information</TITLE>
+<H3>Trinity v3.5.13.2 Release Information</H3><P>
+<A HREF="https://wiki.trinitydesktop.org/Release_Notes_For_3.5.13.2" TARGET="_top">What's New in Trinity 3.5.13.2</A>
+<P>
+<A HREF="https://wiki.trinitydesktop.org/DebianInstall">Official Installation Instructions for Debian</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/UbuntuInstall">Official Installation Instructions for Ubuntu</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/RedHatInstall">Official Installation Instructions for RedHat</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/FedoraInstall">Official Installation Instructions for Fedora</A><BR>
+<P>
+<A HREF="http://ppa2.quickbuild.pearsoncomputing.net/redirect.php?file=releases/3.5.13.2/downloads.html" TARGET="_top">Download Source Tarballs</A>
+
+<?php
+ doFooter();
+?>
diff --git a/releases/3.5.13/index.php b/releases/3.5.13/index.php
new file mode 100644
index 0000000..224b508
--- /dev/null
+++ b/releases/3.5.13/index.php
@@ -0,0 +1,26 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Elizabeth Liddell
+
+ $path = '../../';
+ set_include_path(get_include_path() . PATH_SEPARATOR . $path);
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Releases", "Get Trinity", "Packages");
+?>
+
+<TITLE>Trinity v3.5.13 Release Information</TITLE>
+<H3>Trinity v3.5.13 Release Information</H3><P>
+<A HREF="https://wiki.trinitydesktop.org/Release_Notes_For_3.5.13" TARGET="_top">What's New in Trinity 3.5.13</A>
+<P>
+<A HREF="https://wiki.trinitydesktop.org/DebianInstall">Official Installation Instructions for Debian</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/UbuntuInstall">Official Installation Instructions for Ubuntu</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/RedHatInstall">Official Installation Instructions for RedHat</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/FedoraInstall">Official Installation Instructions for Fedora</A><BR>
+<P>
+<A HREF="http://ppa2.quickbuild.pearsoncomputing.net/redirect.php?file=releases/3.5.13/downloads.html" TARGET="_top">Download Source Tarballs</A>
+
+<?php
+ doFooter();
+?>
diff --git a/releases/R14.0.0/index.php b/releases/R14.0.0/index.php
new file mode 100644
index 0000000..62e60f0
--- /dev/null
+++ b/releases/R14.0.0/index.php
@@ -0,0 +1,26 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Timothy Pearson and Elizabeth Liddell
+
+ $path = '../../';
+ set_include_path(get_include_path() . PATH_SEPARATOR . $path);
+
+ include("tde-head-and-foot.php");
+ doHeader("Trinity Releases", "Get Trinity", "Packages");
+?>
+
+<TITLE>Trinity R14.0.0 Release Information</TITLE>
+<H3>Trinity R14.0.0 Release Information</H3><P>
+<A HREF="https://wiki.trinitydesktop.org/Release_Notes_For_R14.0.0" TARGET="_top">What's New in Trinity R14.0.0</A>
+<P>
+<A HREF="https://wiki.trinitydesktop.org/DebianInstall">Official Installation Instructions for Debian</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/UbuntuInstall">Official Installation Instructions for Ubuntu</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/RedHatInstall">Official Installation Instructions for RedHat</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/FedoraInstall">Official Installation Instructions for Fedora</A><BR>
+<P>
+<A HREF="http://ppa2.quickbuild.pearsoncomputing.net/redirect.php?file=releases/R14.0.0/downloads.html" TARGET="_top">Download Source Tarballs</A>
+
+<?php
+ doFooter();
+?>
diff --git a/releases/R14.0.1/index.html b/releases/R14.0.1/index.html
new file mode 100644
index 0000000..dc47591
--- /dev/null
+++ b/releases/R14.0.1/index.html
@@ -0,0 +1,12 @@
+<BODY LINK=blue VLINK=blue ALINK=blue BGCOLOR=white TEXT=black>
+<TITLE>Trinity R14.0.1 Release Information</TITLE>
+<H3>Trinity R14.0.1 Release Information</H3><P>
+<A HREF="https://wiki.trinitydesktop.org/Release_Notes_For_R14.0.1" TARGET="_top">What's New in Trinity R14.0.1</A>
+<P>
+<A HREF="https://wiki.trinitydesktop.org/DebianInstall">Official Installation Instructions for Debian</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/UbuntuInstall">Official Installation Instructions for Ubuntu</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/RedHatInstall">Official Installation Instructions for RedHat</A><BR>
+<A HREF="https://wiki.trinitydesktop.org/FedoraInstall">Official Installation Instructions for Fedora</A><BR>
+<P>
+<A HREF="http://ppa2.quickbuild.pearsoncomputing.net/redirect.php?file=releases/R14.0.1/downloads.html" TARGET="_top">Download Source Tarballs</A>
+</BODY>
diff --git a/reskin.pl b/reskin.pl
new file mode 100644
index 0000000..6ff74aa
--- /dev/null
+++ b/reskin.pl
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+use File::Copy;
+
+#get target directory and list the files
+my $nav = $ARGV[0];
+my $topdir = $ARGV[1];
+my $dir = $ARGV[2];
+my $outdir = $ARGV[3];
+opendir $dirhandle, $dir or die "Couldn't open dir $dir: $!";
+my @files = readdir $dirhandle; #list of files in $dir
+closedir $dirhandle;
+@files = sort(@files);
+
+#for each .html file in the target, do:
+foreach $file (@files) {
+ if ($file =~ /([^\/]+).html$/) {
+ my $infile = "$dir/$file";
+ my $outfile = "$outdir/$1.php";
+
+ print("$file -> $1.php\n");
+
+ open $filehandle, "<", $infile or die "Couldn't read file: $!";
+ open $outfile, ">", $outfile or die "Couldn't write file: $!";
+
+ while ($line = <$filehandle>) {
+ $line =~ s/\.html/\.php/g;
+ $line =~ s/\<\/?span[^\>]*?\>//g;
+ $line =~ /<h1>(.*?)<\/h1>/i;
+ $head = $1;
+ $line =~ s/style\=\"[^"]*\"//g;
+ $line =~ s/\<div/\n\<p/gi;
+ $line =~ s/\<\/div>//gi;
+ $line =~ s/<html><head><title>.*?\<table width="100%" class="header"\>/<?php\n include("$topdir\/tde-head-and-foot.php");\n doHeader("$head", "Documentation", "$nav", "$topdir\/");\n?>\n<STYLE>\n .question {font-weight:bold;}\n TD {padding-top:10px}\n<\/STYLE>\n\<table width="100%" class="header"\>/gi;
+ $line =~ s/<\/body><\/html>/\n<?php\n doFooter();\n?>\n/gi;
+ $line =~ s/[\x80-\xff]//g;
+ $line =~ s/h1[^\>]*?\>/h2\>/gi;
+ $line =~ s/\<\/div\>/\n\<\/div\>/gi;
+ $line =~ s/Chapter(\d+)\./Chapter $1. /gi;
+ print $outfile "$line\n";
+ }
+
+ close $filehandle;
+ close $outfile;
+ }
+ elsif ($file =~ /([^\/]+).png$/) {
+ print("copying image $file\n");
+ copy("$dir/$file", "$outdir/$file");
+ }
+}
diff --git a/rss.php b/rss.php
new file mode 100755
index 0000000..f2baab8
--- /dev/null
+++ b/rss.php
@@ -0,0 +1,77 @@
+<?php
+
+// (c) 2014 Timothy Pearson
+// All Rights Reserved
+
+function processDir($dirname, $phpfile) {
+ if ($handle = opendir("./" . $dirname . "/")) {
+
+ $filenames = array();
+ while ($file = readdir($handle)) {
+ $filenames[] = $file;
+ }
+ rsort($filenames);
+
+ foreach($filenames as $file) {
+ // sort($handle, SORT_NUMERIC);
+ if (($file != ".") && ($file != "..") && ($file{0} != '.')) {
+ echo " <item>\n";
+ $datestring = $file;
+ $datestring = str_replace(".", "-", $datestring);
+ $datetime = strtotime($datestring);
+ $datestring = date(DATE_RSS, $datetime);
+ echo " <pubDate>$datestring</pubDate>\n";
+
+ $data = file_get_contents($dirname . "/$file"); //read the file
+ $convert = explode("\n", $data); //create array separate by new line
+ for ($i=0;$i<count($convert);$i++) {
+ $title = " <title>";
+ if ($i != 0) {
+ $linestring = strip_tags($convert[$i]);
+ $linestring = str_replace("<", "&lt;", $linestring);
+ $linestring = str_replace(">", "&gt;", $linestring);
+ echo $linestring. "<br>\n"; //write value by index
+ }
+ else {
+ $title = $title . strip_tags($convert[$i]) . "</title>\n";
+ echo $title;
+ echo " <description><![CDATA[\n";
+ }
+// if ($i == $newscollapsedlines) {
+// echo '<div id="hiddennews-' . $file . '" style="display: none">';
+// }
+ }
+ echo " ]]></description>\n";
+// if (count($convert) > $newscollapsedlines) {
+ echo " <link>http://www.trinitydesktop.org/newsentry.php?entry=" . $file . "</link>\n";
+ echo " <guid isPermaLink=\"true\">http://www.trinitydesktop.org/newsentry.php?entry=" . $file . "</guid>\n";
+// }
+ echo " </item>\n";
+ }
+ }
+
+ closedir($handle);
+ }
+}
+
+header('Content-type: application/rss+xml');
+
+/*echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";*/
+echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
+echo "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
+echo " <channel>\n";
+echo " <atom:link href=\"http://www.trinitydesktop.org/rss.php\" rel=\"self\" type=\"application/rss+xml\" />\n";
+echo " <title>Trinity Desktop Environment News</title>\n";
+echo " <link>http://www.trinitydesktop.org/</link>\n";
+echo " <description>News of the Trinity Desktop Environment, a full-featured professional desktop for Linux.</description>\n";
+echo " <language>en</language>\n";
+
+processDir('news', 'newsentry.php');
+processDir('rssentries', 'rssentry.php');
+
+echo " </channel>\n";
+echo "</rss>\n";
+
+?>
+
+
diff --git a/screenshots.css b/screenshots.css
new file mode 100644
index 0000000..52c8ed5
--- /dev/null
+++ b/screenshots.css
@@ -0,0 +1,7 @@
+ .sc_img_holder {float: left;
+ margin: 5px 5px 5px 0px;
+ padding: 5px 5px 5px 0px;}
+ .sc_img {clear: both;
+ margin-bottom: 5px;}
+ .sc_txt {display: inline;
+ text-align: center;} \ No newline at end of file
diff --git a/screenshots.js b/screenshots.js
new file mode 100644
index 0000000..89b75a0
--- /dev/null
+++ b/screenshots.js
@@ -0,0 +1,15 @@
+ hs.registerOverlay({
+ html: '<div class="closebutton" onclick="return hs.close(this)" title="Close"></div>',
+ position: 'top right',
+ fade: 2 // fading the semi-transparent overlay looks bad in IE
+ });
+
+ hs.wrapperClassName = 'borderless';
+ hs.graphicsDir = 'highslide/graphics/';
+ hs.align = 'center';
+ hs.transitions = ['expand', 'crossfade'];
+ hs.outlineType = 'rounded-white';
+ hs.fadeInOut = true;
+ hs.showCredits = false;
+ hs.numberPosition = 'caption';
+ hs.dimmingOpacity = 0.75;
diff --git a/screenshots.php b/screenshots.php
new file mode 100644
index 0000000..612e79e
--- /dev/null
+++ b/screenshots.php
@@ -0,0 +1,59 @@
+<?php
+// (c) 2014 Trinity Desktop Project
+// All Rights Reserved
+// Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+include("tde-head-and-foot.php");
+doHeader("TDE Screenshots", "Main", "Screenshots");
+?>
+
+<p>
+This page contains screenshots of the latest Trinity release running under various Linux distributions. If you have a particularly interesting Trinity desktop and would like to see it displayed here, please <a href="mailinglist.php">contact us</a>.
+</p>
+<p>
+
+<script type="text/javascript" src="highslide/highslide.js"></script>
+<script type="text/javascript" src="screenshots.js"></script>
+
+<DIV>
+ <div class="sc_img_holder">
+ <div class="sc_img">
+ <a href="media/screenshots/large/tde1.png" class="highslide" onClick="return hs.expand(this, { captionText: '' })"><img alt="" src="media/screenshots/small/tde1.png"></a>
+ </div>
+ <div class="sc_txt">
+ </div>
+ </div>
+ <div class="sc_img_holder">
+ <div class="sc_img">
+ <a href="media/screenshots/large/tde2.png" class="highslide" onClick="return hs.expand(this, { captionText: '' })"><img alt="" src="media/screenshots/small/tde2.png"></a>
+ </div>
+ <div class="sc_txt">
+ </div>
+ </div>
+ <div class="sc_img_holder">
+ <div class="sc_img">
+ <a href="media/screenshots/large/tde3.png" class="highslide" onClick="return hs.expand(this, { captionText: '' })"><img alt="" src="media/screenshots/small/tde3.png"></a>
+ </div>
+ <div class="sc_txt">
+ </div>
+ </div>
+ <div class="sc_img_holder">
+ <div class="sc_img">
+ <a href="media/screenshots/large/tde4.png" class="highslide" onClick="return hs.expand(this, { captionText: '' })"><img alt="" src="media/screenshots/small/tde4.png"></a>
+ </div>
+ <div class="sc_txt">
+ </div>
+ </div>
+ <div class="sc_img_holder">
+ <div class="sc_img">
+ <a href="media/screenshots/large/tde5.png" class="highslide" onClick="return hs.expand(this, { captionText: '' })"><img alt="" src="media/screenshots/small/tde5.png"></a>
+ </div>
+ <div class="sc_txt">
+ </div>
+ </div>
+</DIV>
+<div CLASS="clearall"></div>
+<P>
+<?php
+ doFooter();
+?>
diff --git a/secret_whispers_0f_a_n3w_p0w3r.png b/secret_whispers_0f_a_n3w_p0w3r.png
new file mode 100644
index 0000000..0cd2f1c
--- /dev/null
+++ b/secret_whispers_0f_a_n3w_p0w3r.png
Binary files differ
diff --git a/support.php b/support.php
new file mode 100644
index 0000000..5a2f7e5
--- /dev/null
+++ b/support.php
@@ -0,0 +1,25 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("Getting Help", "Support", "_");
+?>
+
+<p>Feel free to contact us with questions, comments or problems. We are looking for developers, so
+if you are interested, please let us know. The best way to get in touch with the Trinity project is
+through one of the options below:</p>
+
+<h3>Internet Relay Chat</h3>
+<p>network: chat.freenode.net<br>
+channel: <a href="irc://irc.freenode.net/#trinity-desktop">#trinity-desktop</a>
+<p>This channel is publicly logged. A full channel log can be accessed <a href="http://trinitydesktop.org/irc/logs.html">here</a>.</p>
+
+<h3>Mailing Lists</h3>
+<p>You can contact the project users and developers via one or more of our <a href="mailinglist.php">mailing lists</a>.</p>
+
+<h3>Bugs</h3>
+<p> Bugs should be reported to our bug tracker which is available
+<a href="http://bugs.pearsoncomputing.net/buglist.cgi?quicksearch=ALL">here</a>.</p>
+
+
+<?php
+ doFooter();
+?>
diff --git a/tde-head-and-foot.php b/tde-head-and-foot.php
new file mode 100644
index 0000000..e344bf9
--- /dev/null
+++ b/tde-head-and-foot.php
@@ -0,0 +1,8 @@
+<?php
+ // (c) 2014 Trinity Desktop Project
+ // All Rights Reserved
+ // Authors: Elizabeth Liddell, Timothy Pearson, and Calvin Morrison
+
+ include("header.php");
+ include("footer.php");
+?>
diff --git a/template.php b/template.php
new file mode 100644
index 0000000..0d5a36e
--- /dev/null
+++ b/template.php
@@ -0,0 +1,8 @@
+<?php
+ include("tde-head-and-foot.php");
+ doHeader("[title]", "[nav section]", "[nav link]");
+?>
+
+<?php
+ doFooter();
+?>