From: <Сохранено Windows Internet Explorer 8> Subject: Jadex BDI Agent System - Overview (About.Overview) Date: Wed, 16 Sep 2009 09:54:09 +0300 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_001E_01CA36B3.A332ECF0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 This is a multi-part message in MIME format. ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/Overview Jadex BDI Agent = System - Overview (About.Overview)

O= verview


About= :=20 O= verview=20

Mission Statement

Intelligent agents are a modelling paradigm, based on the notion of = agents=20 with mental states. The Jadex reasoning engine follows the Belief Desire = Intention (BDI) model and facilitates e= asy=20 intelligent agent construction with sound software = engineering=20 foundations. It allows for programming intelligent software agents in = X= ML and=20 Java and can be deployed on different kinds of middleware = such as=20 JADE.

To enable the creation of intelligent agents several different = constituent=20 parts have to be assembled. It is necessary to provide an agent = architecture=20 that at least takes into account agent-internal, agent society and = artificial=20 intelligence (AI) concepts. It is a property of agent research that = interesting=20 research results in various isolated areas exist, but that these results = are not=20 integrated into superordinated architectures. Therefore until now no = standards=20 can address the construction of intelligent agents in all facets.

Summary

The Jadex research project is conducted by the Distributed Systems = and=20 Information Systems Group at the University of Hamburg. = The=20 developed software framework is available under GNUs LGPL license, and = is=20 continuously evolving. The project's file releases are kindly hosted by = the=20 SourceForge.net portal.=20 The projects web presence is based on a wiki and thus allows Jadex users = to=20 contribute in various ways. The reasoning engine has been put into = practice in=20 the context of several = research,=20 teaching, and industrial application scenarios some of which = are=20 described here in the web.

Related Projects

The Jadex BDI agent systems relies on Jadex = Rules,=20 which is a lightweight small forward chaining rule engine.

    
last modified by Lars = Braubach on 04/02/2009 at = 13:57=20
Search
  =20
Navigation
About
  • Co= ntact
  • F= eatures
  • News<= /A>
  • Overview
  • Peo= ple
Download
  • Add=20 Ons
  • Available=20 Packages
  • License
Internal
  • Meetings
  • Thesis=20 Abstracts
  • Thesis=20 Topics
Usages
  • = Examples
  • = Projects
Resources
  • Agent=20 Companies
  • Build=20 Process
  • FA= Q
  • Get=20 Involved
  • Online=20 Documentation
  • Publications
  • Teaching
User Guide
  • 01=20 Introduction (old)
Users=20 Currently Online
Guests online: 26
View=20 Registered Users
Quick=20 Links
  • Download=20 Jadex
  • Browse=20 Documentation
  • Read = Latest=20 News
  • Get=20 Involved
  • SourceForge.net=20 Page

Creator: Admi= n=20 on 2009/01/16 12:51
Copyright (C) 2002-2009 Lars Braubach, Alexander = Pokahr -=20 University of Hamburg

------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://jadex.informatik.uni-hamburg.de/bin/download/XWiki/DefaultSkin/jadexlogoshadow.png iVBORw0KGgoAAAANSUhEUgAAASwAAAB2CAMAAABFwV5iAAAAKnRFWHRDcmVhdGlvbiBUaW1lAERp IDMgRmViIDIwMDkgMTc6MzI6NTYgKzAxMDDAXQpuAAAAB3RJTUUH2QIDECMIPcRH6gAAAAlwSFlz AAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAIZUExURff4/fb3/fX2/PTz8O/v7/Ty7PPu 4/Pt4fLs2/Dp1O/mze/lye/kxu7jwe3gue3es+zcruzbrOvYouvXn+rVmerUlenRjunQjOnOhufO hOfLe+7u7unp6eHh4d7e3tzc3Nvb2+fn59/f3+Xl5ezs7Orq6tra2s/Pz8nJycbGxsTExM7OztjY 2NnZ2cfHx8zMzNTU1Ovr68vLy9LS0sDAwLe3t7W1tbOzs76+vs3Nzbu7u9bW1tXV1ePj46ysrKqq qqioqNDQ0LGxsaenp6SkpMLCwq6urrm5uaKiori4uNTb8JubmwkhcWpqaunPiJqamhgYGAAAAAsL CwICAktLS52dnX5+fo6Ojg8PDxISElJSUjExMZ+fn1tbWwUFBZmZmWtraxkZGVNTU29vbyAgIIiI iGFhYTg4OCYmJnFxcQgICEdHRzY2Nnx8fBUVFRwcHDQ0NG1tbTw8PHp6emRkZHNzc4CAgCcnJ09P TzIyMoqKinh4eGdnZ5OTk19fXz09PVFRUXV1dS4uLk1NTZeXl11dXZGRkZWVlerSk2VlZSMjIysr K0BAQFVVVevZpIKCgllZWUVFRYSEhEFBQezbquvWmklJSTo6OoaGhuzcrevWm+zaqO7iwO7jwu/l x+/my/DnziIiIikpKTs7OywsLBsbGz8/P1dXVx4eHhQUFENDQ0hISJiYmBERESUlJYyMjDAwMDc3 N1ZWVg+iSqEAABtrSURBVHja7ZyLe9vWdcDZkVufa7cla7OBAEiABEESFMEXCBIkSPApztNikLZk JY4y2apSK6ofkx1bamyZtpxOTj3b8WZ7W9LObR5r2q7d/sKdixdJ8AVJiVN/H4+/T6age+7F/eHc 1zkHdLlmMpOZzGQmM5nJTGYyk5nMZCYzmclMZjKTmcxkJjP5cmVT1aT5XBvV21S/6r4fWGawDiAz WAcQA1bruTb6gsPKPNdGX3BYgtsD8rwaNWGhRt1fNYEDiAGrQVMEgfufEy4DVhAnSAIPvji4DFjV VHKOjXL087lxA5ZPYedYxRf8qhk4FgPWfCSfyYhxAnsujRqwlHRLaKUV/IUxLQPWSbEiy0Iklngu jRqw2FZDbrRY4rnNlUcVE1ZTLpeyden5DAkDVlgoVUtCmHzhYLXkarmSfr6wIlmAlY28eLAyXx0s 3/OZKL8AcQCLJsl6s0mS9MBVsqkJObl6kuSbzSRpK+UIVpAkw80mT05oIdQ0hZt8G1a5ox3rJsHC Kk/v3GqrPWnfenBfNv7Y1S91x9SbPH3p4Vqfqrr2aGEp7AxWc2d981S/7t3H9yujHiO/bJbYECd1 ctuq6emXBEt+vKKOks6Tp9wUWPjWhZGq6ql7tWmwhJujm1WvPsWHaVnPY6PigFXn+pFYjYXVPa9O kM3mBFjibmeCaruLTYC1NbHZJ7K9Ldqi1amN6SF9dWqRo8E6tqxOkc2HY2Dht6eptrvjYNXOT9N9 wo+nNT+a1bQCR4TF35p2zz2xw1pcca5rg0XvOtDp7I83nFEweqw2jsxqFCx+qln1yTlPIJEIWDul /QOo2mDRa860Htt64O5NSR8M7dj6WOVdbiyQCAYTAeyw56thWEOsNlZf//Tmp384vjHq1s/iPo7z 4YkxrM4/u3jt9sVno4fXACw7q/bqs81/unnz4sVPjtuMdd3WBex160+LNhfGACuMJmKSJHE+6rDe lSFYxR6rzq3Lr+aTFCmlQkk2HKnXG/NPH3w8OHtfUuYiETZFaR3u9q4v/2ZRZgtUrKDkWChRz8i/ vfK27THU+2H1sdrY3WrRRZJLheJas/X8e+v9zS7YzadHa4vu58BbDwlYBQmFRZVF4jwV+IJg3bG6 u0iihyFF5+pivpURsobUFn7X1+GFeksQ8mHOC3WRlgk8lF0eLx5TkpG02OypVnY+7YeVrpQtWOes q3drHtRsiB1sVr5s7fg6rUHL8OAPe7SKvb/1xsiy4vL6cukW1JbJRxTqkGcGO6yc+QR3aUBFpth6 PpNtyHIJpIwE/p9/q9fhdzPwx2w6hbb3N83HeNLlDuJSNCK2hIpNd7FvMDcb1ZoBy+K8suTy2Jot Gaq1a6biH6jgAK4E87lV6Y2iSWKAlZ9JilmoTs7m2UO77eywzFYvwXmD4tl0Kwt3XK7a5A3r3i43 StVyQ1QAVtK4dL4A/Y2FInmhAap23b1fW7owCk1Yj41Lp/KuBF5AzTZGNHvZ1HzKFQeMwyv10cKx IVZufwyxqlZLjWa4UDzsyd0GSzHq33a5/Uy0Dqi0W9aebElGoj3qqrW5WIcOV3VYD4xLDReG83Mi oNJVy6aqrFnJB1a3QNWA5bWmMZeXDNWb0KxGp6eqt2s+pI/DqcF5xy89sKq9o9HqsVrjgBWbh0cD rFqRw7Oyw9oxBgPnpjlWFBCqMtxuo5LNCkIm08pkBBj3lcZJc9isQ4cNWMZseseFUUq9VZGRaklu NAxVQ7fRsEYTqBqwXjWuPHB5mThqVgOFmtVVNWXQLR03H0hdGaTlZXrW/n8E5spbw32N0lhVdFZH sCvr3FQ1YD3Rf73p8qJngforN2BOFNP1SJhlk/Eki9antJj/jQmrZsLKG1dSGK7A4ldCva0ILaQa mQNV0J3TdGtmN2oWrHvGMyKCPjRcwCKBlKYb1lQ1ZdDNPzVUF4W0bZr2+nq0PieEfla0xaoZlugj eM9W9SoFHVbUMBg5QMaN+oV8nY2mJI4hKQrHcYoiGU5KRfdMWPMmLGM9u+Wm+bqgYc620uG4UpAY H4F0KYrwMVxBiX9swpo3YRlDZhOjciIaLmW5khEjcUWK6aq6MseHIsYNnpCFemrQRry+BYvW/1qs blEeGCMmq7kjsTJhZXRYFf23NlZUtJuGtSMSlYgiHQxgKLCoRRexQJAuMm27ZT3UL7yTYOZawKrU yKTZFIPT3gSGdN1IF8MSXhr/iR0WbVzYopU0mobLsiCySoyivQFdVVcO+GnqV3rJu2U5o+9XehIk f6LaZTvQxyp/RFYuw2+U1GEZI+RWkIvABWAlJiU8OOJ44MZu9cGSESxj9ivhIbGCVshMRCHpwIib 81Ttw3DOuPDs4vb260i2t7cvXtwcJcbEeAoayOeowdqHaSFWksGqkmePyMr0lhiwfmiMeehwA4yj IsZ9444Gn9thGTYqxiIC4pyJ8PiYjXLEPsGX1ANLrYriK4Om5UoQWwPniydBjVXDYMUdkRWv13re gLWl//qACUOHy3KTZbzjNI2dfm81NMZlSNE4Z9MKPm6fXDT6UjJh/f7gsF6tVhv5KG7rfYJY6qP1 diJQlOb6WB0xQLmkV/sjDVa2fkn/9RKvn0TqBXqspjGfXy6ZsIw7ZFhUlZyPTzhTGEVlc5/1Ewd0 bLJTRVG0IY90wPcHq0gnQ5F8uKmxgn17zH/UYK7hqVtndVjGhvFmLo9GUnNSh43Vfl82N6XGbCLq x+N6wT9WlTR6ky0ZsH56cFi/raKRULAbPvZ2X5llOVlv6azE5NFZmWv2m2xG6+F1/de3NHYVkR9v WOZ8vl8pG7Du6hdqaBTKGXZCJkDT6Aw0osPKHBzWPDQr5xXbDfZ8W5ps7Gn7W7ROMaNZnb7jnFXY MFh+TtC8JcZquGZ4mmITXBmGS+VdtMNo9K2Gv9eMMh8qjlc9bfQlb8JSpsOxCzJouRW35Uls20pt LJU1u4qPnHux++cPkvP4UK/zFhnWYYlGI42sbh3jVw/cKPluxoRl+BxeQ7HthsiPH4XWIVJsVHUX DWZcWF/aefp05/fv7b167OQEOfbmT5e0+U6w3eH2ENONHY2VbwQrbl/buW46ZWWOhwVGMyUhHDO2 XVdgfkfPbTws89yxAGx0WMZ8d0qYGts2Y4I9f5ZhpidgTMOeQM7CgXCSCHDwRCvp4AxP3zURdZ5a B/2VxUZ+9Jpu3sUxh7CMkdNhJXTfYErUZ/qVj9G808xNSAYy72ahacIijCs7JbRUcONHcMXsSD1r wjIOKqeQvSBcpqthjJRKVWNDy/Rg9YVxXmXSFq3O/To/cn9lunVX6o5YmR7zM7S2N0KmNG9cuo9g RcfPO9ZhuAfLZYRZ/kdbKibAujoMq2VcuaNBqFXHyfx944POtH9W7XO3twJkUrAclJ0daeQ6hZme 1+XsAVh1onjO7HLAqKF9bKJl4e0RsBaNSw80yxqb6dU77vZgmTvazns6q/IY+Vx91rX+WILjoWVZ vBUD38i7aSmSKf3MorU4entsRQw65xJTtvacFQw9g/nQ/K5vW8wa7u7JmSQ1pg7OMg51IWPBMh9V Z3/UDsiUxd4Wu88Hb4LeuK9NWo3KKJFPoCK/Oyvrv2YF0Tod9mU95F1eJgnHwZpFyxbGsGTTKvCj 6xM2SS7unnXPGyEaNuxoftdmALPVjS0hTI7eKx3r86O/K5irYW/SV9+qicro1gcCqdZqCH8wDaPz 2jHknkmPkL1nRpl2V/u9HombA6zPhQysfHHNZTKVVrAvI2P57PzoTJz6uat9t/xbjIqjsQRTFnpO e9YfPjnbGrGk8YsDSR+9fVZfj9WVz69LI27PlmvSlC0ffG/WV1c+ezMd5SWbKKcfWSU6JwuFAooA EgaD8EAYh4kbPrFGT+XsSP8oPxgKbW+vd6/v1VB6Fd9syntP9x/dHSxxyUUX0AkFNuxaiMaKHWjq uw+6i6CeJJPN2t5i98FuWx2U/Yblg3e5xP6qn11b6C7tCdByU9hb6i7cvGtTVYVewGIwPtv55Z2d JVj1IvF4XJTl+XfWP+2v+SwN4vcGE4bvqNcsCk2gMA464siCmLY82OqNkbQiq+pB5LIryLBoryQL YUZfWh4fSF/ug9Xn+XYiaFfVC987jvxf9gSCwUDvbYM+ViE9jKO5+jL1KK/0XM03Rs7yjvIrDNn4 sStI5nRnnRgyF7/fOK9AvVyu9cE6GC3L66DrXnam9a47QOM4bS1gzZ67ndfc7WYYh6foYqyP1kiv ANZ1mslyjfD4fVEtoCYLEc6aoXZOTdc12uiL7mgS+nS6qrm2lGsDsFxvTs04UtULFbeXKoRCBZLW 1WrWSrU24G4PF4qY2+Mle7Qejjzb0/UHTnA9yWNeSmL14GMFDKs3qqUHncm6V2uGP6vnKTUf1ekp 2TCdMyHjU9UGy0XemNJs+0oAo5loXRTrSUkbV2NZGS7kIGnlI6ifj6KFUdHGZ7+e3OzVbspLE1IO BTTRytFimb5tJEYK+5+M7+7r85j37BhYLjq08+n4Z9X+LJcw4xM1OyyMEN59NlZVPX8OD9AEz4pC oyGg6IPLNT/ASpobDuMkiEs9WqP2QkEf7Mr29nf/e3Rfn719RcQJRlLYel5oaKtsJjLoFIUVUrj+ 4P32sPapE+/xOOWTFvpgNfphYUQ8L3dHtv3sskzhRCxlwpq3wXL5Yeu9d+P1EbNAe/NShi5SsVQy jeK3sNbBkc/9gcVqO4FY6W7RwTBOgug5YrelEacwLVwNFlO7vrPV3b9z+2fbz47/cvtX167tn70u pAopJRRnI+l8Ro/Ow7mhrgx6GDy4kkbBv5NPz9448fb2x8c/2d7+9NqN+9U5UFZybDh97rgmC0Ow UHwW3XTt+uLl124/2V6DlrdPXLtyPRviU0oUGhZ11ePDsDzFlBZzPL1z7vKJ29vbx59tP/7s0uIP a6IkFXglCrotLbSPYsuc9+SqKbuIleFCtodxgNZxU074hmnBqpDsi4JnhUwzL6Jtcb1eh5+ilsxT 0XMvynKlVR+KLgSoUFqrYFBdV0ZZRA09HaE2DMutDQcteo/C2S1QFVHLSBU1bOZ81IaGoUuL/Gc0 Y0fh7EzTvGldO4+cM6hZtDFIDTxeD13osbKFcRJaX1DYV0iHRuRmuWGVq2cqWmqGlnIgy40GnLhQ klQFPslmbky51BDEucLwJiSgJyyUBtUtZT1fpKQ5S2ywXCj+BPOK9iQsVSSa7oBqzf46CtCKGHkh WpIF0tRzuyqaMtJFeUOR1MAte4qFSGtsGAf60qNFjDjiJyh+TgRcVuJO/+ndvIQyCvKREDPq6BTA C2xfBaOUoRsVGOx2WEALVqx8L2vIrquZXBblNNTgRDr47g6GS33NDjodzGYz6aRUHM0KhXGGQ15T acEaq4TFlp4SVrblSZU1c2lkW2IkKuGJka4YD+0zKijZ0qyQewRGSR4GCMoeKTWGzs0JXIrD6lGR h3VL2uAU03Uxg6L8Q2+FoWbnjPvuv20jdwndM5si/YNjEOarCpSWx4Vx0DhBOUGwMKSVUVmS7kSR UWBKhJGeNUaPKQ2UzJPJi5GkEsODY505AVRBXWxq+v3aSDkdzqUKyhzQasDKZHe5e/yUFA2n9bb7 W4aGW2KdDfF8Li005EaTHXIEQbOpZERsZlCCUl+rKHmpCTuslI8enDX8KE8JSsKMMi6Mg2iBvcow gsP8yHMiHAwoLhVlw3Vtbs2jNKdMptXMoxyiMBtNxSh6ot9Lq0CJz0W0ad3Uhi1hhI3yDE7TVAGM oCkObNJMXF7cVwhpbRuqmi40nFQkskjTTC7dzOTrStE9utkc22tWazVdj8zlFI6ibZbhKUosPJYM VBb1jfOjYXgKhkkG1oyIQo3xTHoSsDvxcRKs2qFoLplkk8l4LqSkCpyPKtLTPIR6BbA1kkA9h7Kz QDuq8BJDFf0BD/QKl0LJZEga/awwP2q7AC0jVdCNhhTUMI1yTeCkpcTZuEImxjbLSLzWrHnPEkPg I+4ZBm4qh+qPFqjxcRKsGIP2WGhRGpOE4fF4UKK8Hzk1irglyMURRMPPYxj4aDGiA+VyGmr41ndN +fDDDz/66Ds///YvfvGLn3/0oXblo5//ly7fsN8ASjJCTVMUSrSiUQaS0Vt3goZr9Fj/s9uDoRvX VHEcTNHb72sY4AAPBUnRPykN2ROk9bugB+fov3MkULD4945kC4r+5986kf8Y13HPqO9wcPJdElpu lntK7H1M/SPaG27SMSzaOax/PSAs/h6S/e79k9DMGSTdD0pwvXqv2rvRzJkzuam4QJQzi71fjnUv oYoXx762uXiPd1LpQWEdwLL+/YCwmupqt9u9s7umrkZ9aht9fqJu7Li6/S9Hra2oT5x0qNWLHIfO d27dgdputzunx5TePNAXETmGhX/RlvVvfbCM/i2pd0h1Ve/ocqfSD2tH7W6q+kuE5fXdm1tPN/dc 9NbN3TtLMFHvP9m5/Uj7VNm8Cifp27rOPTOGjO00xc1d9Inb3OTo7r0nm4/v7bhctzfb6lWoqLn/ 6PZCBcx689HD21t099HtS/XDw4LBS375sOjH6r7PgAV0bvfBwtorwaZ6AX18qD7ZWdhW1S65oT7a ubexUgP76DzYWV9bkV3c3iV1bc94tbKrPuztgK+qH2j8HrnOq3eu399/f/mYq7a3pl7aS+6rG4vn 3lfvogyne90LK+iHWj40LNrvTzmD1fX7/f/iCNbLUNKrZaG2wBg2N69uoDdbYiYsVr3aB2sdveG1 qd53uQToFMhdtXtTfQAf6moH/oDeaKJXNvrNFAjvr3Subj681/0gj/SWXS6p0+GD6kZvJUTDkFPV CHzcVRcAFoaCVujHo0PD4ni+7gzWOZ7nX3IE65+hZEFCMaoMGMPe3uIbuyttQTJhyermFfWKcZdK p8MhDm3a9Y56GV3ZV7t31TWUaNtRw8YAfV9lB+YsF3rzf2/vvfXz6gmX62fqdTCsdaTaeX/33v4x E9a82kH1XFCvambNoR+SbsWHgjUnillnsM7CAeBlR7B+gPwxkZwvCLD0/nmuqydC6iqGEsOxdfXG OfUcWuNhM7Crbuhc3vDsqNdQ2Ztq95Z6e0+T4qb+rV7af1ZlfbsD/7Iax+KdC8lOG41LunVyb+mW esdQaaidpfeuX//pnqyZNYN+WAZ+CFhio1F1BusSHCa/7wwWOsJl0FtiRv9i2X9St1h1tQi7yvhl 9XzoLIr7+f20v6peaDWbzZbQ7oiRjY2WyyNsqFfeUa/GXK7atXnosqDDEtBwQ5V5YH8bIE9so++R C7A7K23Y5K6rqyraVuSWYA+S+Im6bagEltV3cS+39UZKsiyrcARYmWr1tDNY/wiHfmew/kFzkeWj uDujrqyurrZVdWWhEFE7x48fX1FPnRFxgEWRPobh1tQfmlPXW4WTP1JPqdDvc4lzbfhv420e21Qb GFgjjMYEVkGwPH6CixWxHy+rG6soELRWhgdQaKsXaDDbMyvqMtRwXg4EAptqxeXOX1TbbfX8YjCK zFpRVwPBuLqaSCQCmOcQsIRa7aQzWMh5/ANnsLQABspfDILZZIR0JAzHZl+5On/6dDOipHx0XGYp SQmFklXZmJKZ6nxO4XOCSL6hLsFRNl2Jo2OJUObRuSxTVfCiJOcTWBAOogo6KTOsUJlLKzE43dKh FfVNKBX00IpcmSvg6GjUlH0YRvsiZUGCw1Ks3ICfcoUipapMordqBp0WzmBl5x3DmncMa742kOwZ IJQQ76MIToknc7lcigp60Okbzr1RMx8PwyUlt3hiCacap5YjBEXFUgpICqUzSBxXSEk+CjGgaYrP hQwtD82g0zxNv6a+Dkc+kqK9NMEwvpgkxXzwWzBBx0Lo5R+J1/ImuBjHQ42FVAo+kgPOTqew5o85 hTXvGBbQkjNJ00EeIJVcKkb4ClHNY8EjZ7CHluKRSDymd9tNx4DMq8fVtto5IXIkjnMhNhyeY0Op lBJSlGi0QNBFIubDaWRZhOExCOJgJHixKFfnKAq91E4wwIlBbDiGxP0JP6lEFakQSuYUrR4lGuKl VDSEngEx5JwIxOrZcm1+otSqlTRfLEpOSsrNHEVTKO9tclE7rGiKIXwSgpXL8ZQBKxw2YQWoVEiR JKVezYMZwa6jGItG6ul6OK4ooWg0mgtxxYSX4jgUjU9JZsUeP44DK5yIcT6KBLOBfxxBMZKWX0PS iSBVUApcIQ7UEahQNIfsTFEkhisw9B8lLIxIKQUSDcNcHHqeIrweT5CSoslkiAlahiUxTEFRYLzw BWRZcfSW/FwO+g/GpaRIrwejGYBFE5LlYHcnaFhgi7hPKsQo3JeC6sECadzHSVKhwOHBRDFWiJFg pUkFqknxUL+PYqAByicNw8I0WLXJ/UJJekVaclCyKuc1WCh7vTalZG/OggmJlwgUlYX75RWeKcKu geDQ3KG7wtHkAzN1keKgi2AUMGRTbCTMJmEMwfTCxKQYDF23n/LhXi/uoyxPaIIGy0IVSyQwKsTZ aIzGMCgX4yQEC4M5DOY6CT0EqMeHKqIpBkYz5SO8w7BQwnZtoqA3knRY00rW0ItFACuab0wtKTct WG4/wfjQm5kESVAEEyNx5ArUXHX6LAvDiaITGBakKZIgGI7jpBDM/trMQ1DIdnCvG4Vfin5AUewt ZHAFBCqm6ABGx6Jx9OUSyCFNkAxDwW4iQBfpIPBlYMKHVnEK9wdpvOgHk6SHnISYby4jG18SMEZK JVmISDQdCzsomRUV3I8r2hv/k0tWxKjlWPcgL61fOzEmgshh6w2irzgJWN/JghmfPAmvn8bJGFdQ NEc7yldLYB4soP8ZQ7sjD9brpRsLer1eqBj5mRNUgdfc727M69d2EoYKlEIVwd4KS6BdWwD9wIYd qh4qmu59icRoETJinPR7iZyDkvmwRCdoKZyfUlQQ8gOZE7oTU4M3xenpwfxAC6YcphhA76+6pojb KuShTUvV2hvUnF6RC0WIYA2OTJQw+iZX2MDFppeci/NUwpOg+PjctKLJ1GG/wASD0ULAwDrwV3pg QQfBl0ni8eIE6ZsopP4dwU5KknoICiYFknRU8nC0gl4YNF/J90uiV7gni8dz0JLTix7t26UdDZqZ PF/52tf+pCdum3g8fzokf6bL13vyDZt885vfGpJv6/Kdnvy5Xb773e/Z5S90+cue/NWgvPTSSy/b 5a91+X5PfjAor7zyyt/YxcmxbDIsz3hYXx8P65vjYX1nAqwRrJzAOjirUbAcnWEB1otsWIeCdVjD mgzrhTSsl780wwJYf8SG9b0vzbBeOSSs2QQ/m+BnE/xsgn+hJvjZpOWUl2s2aR1kgp9NWl8QrBfS sL68Scs125UeaDV8oYfhc92U/j/jkNgTyY4AAAAAAABJRU5ErkJggg== ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://jadex.informatik.uni-hamburg.de/skins/albatross/go.png iVBORw0KGgoAAAANSUhEUgAAABYAAAAOCAMAAAAc7xz/AAAAA3NCSVQICAjb4U/gAAAAPFBMVEU4 a5yZwOZMkNLz+PwygMzM4PJASlRyqNyz0OyMuOJloNk/iM/m8Pk2cqxZmNb////Z6PZ/sN+myOm/ 2O9p/OY0AAAAFHRSTlP///////8A/////////////////13F4M0AAAAJcEhZcwAACxIAAAsSAdLd fvwAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAAFnRFWHRDcmVh dGlvbiBUaW1lADI4LzExLzA2A6hFmgAAAHtJREFUGJV1kMsOxCAIRUVp8VUvbf//X0eJTRd2WHjM ySWIbne8lNvdsVrm4yNreTt9otQGic5Xn8BWkTurQsvUHqFHpXnUwglx6oTLOo0FYWoCMYA8yP02 tWDjrMiCm7lBn5GKOHQniUIeXWJAuL1R5X33us6f5b+/6gevVweLoT0OjwAAAABJRU5ErkJggg== ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/microformats.css ADDRESS.vcard { DISPLAY: inline } .memberlist .vcard { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 4px; MARGIN-BOTTOM: 1em } .memberlist .vcard H5 { PADDING-BOTTOM: 0px; MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: = 0px } .memberlist .vcard .photo { MARGIN-TOP: 6px; MARGIN-BOTTOM: 0px; FLOAT: left; MARGIN-RIGHT: 8px } .memberlist .vcard .nophoto { MARGIN-TOP: 6px; MARGIN-BOTTOM: 0px; FLOAT: left; MARGIN-RIGHT: 8px } DT.label LABEL { PADDING-BOTTOM: 0px; FONT-VARIANT: small-caps; PADDING-LEFT: 2px; = PADDING-RIGHT: 2px; COLOR: #999; PADDING-TOP: 0px } .vevent H4 { LINE-HEIGHT: 1.1em; COLOR: #000; FONT-SIZE: 130%; FONT-WEIGHT: bold } .vevent .eventinfo { PADDING-LEFT: 24px } .vevent ABBR.dtstart { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } .vevent ABBR.dtend { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } .vevent .timeplace { BORDER-BOTTOM: #ddd 1px solid; FONT-STYLE: italic } .vcard .fdaad { MARGIN-BOTTOM: -1em } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/fullscreenEdit.css #show-dialog-btn { Z-INDEX: 12312; POSITION: absolute; WIDTH: 15px; BACKGROUND: = url(images/fullscreen/fullscreen22.gif) no-repeat right top; FLOAT: = right; HEIGHT: 15px; TOP: 3px; CURSOR: pointer; RIGHT: 20px } #xwikieditcontent { POSITION: relative } HTML > BODY #show-dialog-btn { TOP: 1px; RIGHT: 1px } .leftmenu2 { MIN-HEIGHT: 15px } #fullscreen-dlg { Z-INDEX: 30000; POSITION: absolute; PADDING-BOTTOM: 0px; = BACKGROUND-COLOR: #ffd; PADDING-LEFT: 0px; BOTTOM: 0px; PADDING-RIGHT: = 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; PADDING-TOP: = 0px; LEFT: 0px } #fullscreen-dlg-head { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: = 5px; FONT: bold 12px tahoma, verdana, helvetica, "sans serif"; = WHITE-SPACE: nowrap; BACKGROUND: url(images/fullscreen/hd-sprite.gif) = navy repeat-x 0px -82px; COLOR: #fff; OVERFLOW: hidden; PADDING-TOP: 5px } #fullscreen-dlg-body { BORDER-BOTTOM: #6593cf 1px solid; POSITION: absolute; BORDER-LEFT: = #6593cf 1px solid; BACKGROUND-COLOR: #9cbbe9; WIDTH: 100%; BOTTOM: 0px; = COLOR: #fff; OVERFLOW: hidden; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: = #6593cf 1px solid; LEFT: 0px } * HTML #fullscreen-dlg-body { POSITION: relative; BOTTOM: 0px; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; = LEFT: 0px } #fullscreen-dlg-body-tab-wiki { BORDER-BOTTOM: #6593cf 1px solid; POSITION: absolute; TEXT-ALIGN: = center; BORDER-LEFT: #6593cf 1px solid; BACKGROUND-COLOR: #fff; MARGIN: = 10px auto 0px; BOTTOM: 30px; BORDER-TOP: #6593cf 1px solid; TOP: 20px; = RIGHT: 4px; BORDER-RIGHT: #6593cf 1px solid; LEFT: 4px } #fullscreen-dlg-body-tab-wysiwyg { BORDER-BOTTOM: #6593cf 1px solid; POSITION: absolute; TEXT-ALIGN: = center; BORDER-LEFT: #6593cf 1px solid; BACKGROUND-COLOR: #fff; MARGIN: = 10px auto 0px; BOTTOM: 30px; BORDER-TOP: #6593cf 1px solid; TOP: 20px; = RIGHT: 4px; BORDER-RIGHT: #6593cf 1px solid; LEFT: 4px } * HTML #fullscreen-dlg-body-tab-wiki { POSITION: relative; WIDTH: 99%; BOTTOM: 0px; HEIGHT: 90%; TOP: 0px; = RIGHT: 0px; LEFT: 0.5% } * HTML #fullscreen-dlg-body-tab-wysiwyg { POSITION: relative; WIDTH: 99%; BOTTOM: 0px; HEIGHT: 88%; TOP: 0px; = RIGHT: 0px; LEFT: 0.5% } #fullscreen-dlg-body-tab-wiki TEXTAREA { POSITION: absolute; WIDTH: 99.5% !important; BOTTOM: 0px; HEIGHT: 95% = !important; TOP: 20px; RIGHT: 0px; LEFT: 0px } #fullscreen-dlg-body-tab-wysiwyg TEXTAREA { POSITION: absolute; WIDTH: 99.5% !important; BOTTOM: 0px; HEIGHT: 99% = !important; TOP: 20px; RIGHT: 0px; LEFT: 0px } * HTML #fullscreen-dlg-body-tab-wysiwyg TEXTAREA { POSITION: static; WIDTH: 100% !important; HEIGHT: 100% !important } * HTML #fullscreen-dlg-body-tab-wiki TEXTAREA { POSITION: static; WIDTH: 100% !important; HEIGHT: 96.5% !important } #fullscreen-dlg-body-tab-wysiwyg TD { TEXT-ALIGN: center } #fullscreen-dlg-body-tab-wiki TD { TEXT-ALIGN: center } * HTML #parentswapDiv IFRAME { POSITION: static; WIDTH: 100% !important; HEIGHT: 99.6% !important } #parentswapDiv { TEXT-ALIGN: center; WIDTH: 100%; HEIGHT: 100% } #swapDiv { WIDTH: 100%; HEIGHT: 100% } .backBtn { Z-INDEX: 30001; POSITION: absolute; WIDTH: 75px; BOTTOM: 5px; = BACKGROUND: url(images/fullscreen/button.gif) no-repeat; HEIGHT: 20px; = CURSOR: pointer; LEFT: 5px } #closeBtn { POSITION: absolute; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1px; MARGIN: 0px; = PADDING-LEFT: 0px; WIDTH: 20px; PADDING-RIGHT: 0px; BACKGROUND: = url(images/fullscreen/close.gif) no-repeat center 50%; HEIGHT: 20px; = FONT-SIZE: 1px; TOP: 0px; CURSOR: pointer; RIGHT: 0px; PADDING-TOP: 0px } .btnText { TEXT-ALIGN: center; FONT: 12px "sans serif", tahoma, verdana, = helvetica; COLOR: #fff; PADDING-TOP: 1px } .titleText { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 2px; PADDING-LEFT: 0px; WIDTH: = 15px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 15px; CURSOR: default; = PADDING-TOP: 0px } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/css/table/table.css .grid { MARGIN: 2px 0px 5px; WIDTH: 90%; BORDER-COLLAPSE: collapse } .grid TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc = 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; = FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; BACKGROUND: #f0f0f0; = FONT-SIZE: 11px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid; PADDING-TOP: 2px } .grid TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: = #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .gridHover { BACKGROUND-COLOR: #f9f9f9 } .btnflt { VERTICAL-ALIGN: middle } INPUT.flt { BACKGROUND-IMAGE: url(icons/table/filter.gif); BORDER-BOTTOM: #ccc 1px = solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f5f5; MARGIN: = 0px -3px; WIDTH: 100%; BACKGROUND-REPEAT: no-repeat; = BACKGROUND-POSITION: left center; VERTICAL-ALIGN: middle; BORDER-TOP: = #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } SELECT.flt { BACKGROUND-IMAGE: url(icons/table/filter.gif); BORDER-BOTTOM: #ccc 1px = solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f5f5; MARGIN: = 0px -3px; WIDTH: 100%; BACKGROUND-REPEAT: no-repeat; = BACKGROUND-POSITION: left center; VERTICAL-ALIGN: middle; BORDER-TOP: = #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } INPUT.flt_s { BACKGROUND-IMAGE: url(icons/table/filter.gif); BORDER-BOTTOM: #ccc 1px = solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f5f5; = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left center; = VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc = 1px solid } SELECT.flt_s { BACKGROUND-IMAGE: url(icons/table/filter.gif); BORDER-BOTTOM: #ccc 1px = solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f5f5; = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left center; = VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc = 1px solid } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/usersandgroups.css DIV.scrollbar { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 25px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; = PADDING-TOP: 0px; LEFT: -10px } DIV.inscrollbar { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 1px; = PADDING-RIGHT: 0px; HEIGHT: 3000px; PADDING-TOP: 0px } .display { BORDER-BOTTOM: #e8e8e8 1px solid; BORDER-LEFT: #e8e8e8 1px solid; = WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #e8e8e8 1px solid; = BORDER-RIGHT: #e8e8e8 1px solid } .display TD { BORDER-BOTTOM: #e8e8e8 1px solid; BORDER-LEFT: #e8e8e8 1px solid; = PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: = #e8e8e8 1px solid; BORDER-RIGHT: #e8e8e8 1px solid; PADDING-TOP: 3px } #showLimits { PADDING-BOTTOM: 5px; FONT-SIZE: 12px; PADDING-TOP: 5px } .icon-manage { PADDING-RIGHT: 10px; CURSOR: pointer } .icon-manageg { PADDING-RIGHT: 10px } #ajax-loader { Z-INDEX: 1000000000; BORDER-BOTTOM: #999 1px solid; POSITION: absolute; = BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 8px; BACKGROUND-COLOR: = #fff; TEXT-INDENT: 5px; MARGIN: 0px; PADDING-LEFT: 8px; WIDTH: 220px; = PADDING-RIGHT: 8px; DISPLAY: none; FONT-SIZE: 11px; BORDER-TOP: #999 1px = solid; TOP: 50%; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 8px; LEFT: = 35% } .theader { BACKGROUND-COLOR: #ccc; COLOR: #fff; FONT-SIZE: 1em; FONT-WEIGHT: bold } #table-filters { BACKGROUND-COLOR: #efefef } .filter { WIDTH: 70% } .theader TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; = PADDING-TOP: 3px } #userstable { BORDER-BOTTOM: #fff 5px solid; POSITION: relative; BORDER-LEFT: #fff = 5px solid; MARGIN: 0px; WIDTH: 100%; BORDER-TOP: #fff 5px solid; = BORDER-RIGHT: #fff 5px solid; LEFT: 0px } #groupstable { BORDER-BOTTOM: #fff 5px solid; POSITION: relative; BORDER-LEFT: #fff = 5px solid; MARGIN: 0px; WIDTH: 100%; BORDER-TOP: #fff 5px solid; = BORDER-RIGHT: #fff 5px solid; LEFT: 0px } #usersandgroupstable { BORDER-BOTTOM: #fff 5px solid; POSITION: relative; BORDER-LEFT: #fff = 5px solid; MARGIN: 0px; WIDTH: 100%; BORDER-TOP: #fff 5px solid; = BORDER-RIGHT: #fff 5px solid; LEFT: 0px } #alldocstable { BORDER-BOTTOM: #fff 5px solid; POSITION: relative; BORDER-LEFT: #fff = 5px solid; MARGIN: 0px; WIDTH: 100%; BORDER-TOP: #fff 5px solid; = BORDER-RIGHT: #fff 5px solid; LEFT: 0px } #memberstable { WIDTH: 500px; MARGIN-BOTTOM: 5px } #specialusersandgroups { BORDER-BOTTOM: #7c7c7c 1px solid; BORDER-LEFT: #7c7c7c 1px solid; = WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #7c7c7c 1px solid; = BORDER-RIGHT: #7c7c7c 1px solid } #specialusersandgroups TD { BORDER-BOTTOM: #7c7c7c 1px solid; BORDER-LEFT: #7c7c7c 1px solid; = BORDER-TOP: #7c7c7c 1px solid; BORDER-RIGHT: #7c7c7c 1px solid } .manage { TEXT-ALIGN: center; WIDTH: 15% } .hmanage { PADDING-LEFT: 10px; WIDTH: 15% } .rights { TEXT-ALIGN: center; PADDING-LEFT: 0px !important; WIDTH: 9%; = PADDING-TOP: 4px } .spacerights#usersandgroupstable .rights { WIDTH: 12% !important } .rights#usersandgroupstable .rights { WIDTH: 15% !important } .spaceName { PADDING-BOTTOM: 10px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 10px } #tdAddNewUserOrGroup { PADDING-TOP: 11px } #tdAddNewUserOrGroup A { BORDER-BOTTOM: #94ad12 1px solid; BORDER-LEFT: #94ad12 1px solid; = PADDING-BOTTOM: 3px; LINE-HEIGHT: 24px; MARGIN: 0px; MIN-HEIGHT: 24px = !important; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: inline; = WHITE-SPACE: nowrap; BACKGROUND: url(images/buttons3.png) repeat-x left = 25%; COLOR: #fff; FONT-SIZE: 12px; BORDER-TOP: #94ad12 1px solid; = FONT-WEIGHT: bold; BORDER-RIGHT: #94ad12 1px solid; PADDING-TOP: 3px } #errMsg { COLOR: #dd7700; FONT-SIZE: 12px; FONT-WEIGHT: bold } #XWikiGuestSpecial { BACKGROUND-COLOR: #fff; COLOR: #000 } .suorg { PADDING-LEFT: 10px; PADDING-TOP: 4px } .username { PADDING-LEFT: 10px } #addNewMember { MARGIN-TOP: 5px } .addlabel { FONT-WEIGHT: bold } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/suggest/ajaxSuggest.css BODY { POSITION: relative } DIV.ajaxsuggest { BACKGROUND-IMAGE: url(suggest_img/as_pointer.gif); Z-INDEX: 100013; = POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: = 50% top; PADDING-TOP: 10px } DIV.ajaxsuggest DIV.as_header { BACKGROUND-IMAGE: url(suggest_img/ul_corner_tr.gif); POSITION: = relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: right top; HEIGHT: = 6px; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.ajaxsuggest DIV.as_footer { BACKGROUND-IMAGE: url(suggest_img/ul_corner_tr.gif); POSITION: = relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: right top; HEIGHT: = 6px; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.ajaxsuggest DIV.as_footer { BACKGROUND-IMAGE: url(suggest_img/ul_corner_br.gif) } DIV.ajaxsuggest DIV.as_header DIV.as_corner { BACKGROUND-IMAGE: url(suggest_img/ul_corner_tl.gif); POSITION: = absolute; WIDTH: 6px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: = left top; HEIGHT: 6px; TOP: 0px; LEFT: 0px } DIV.ajaxsuggest DIV.as_footer DIV.as_corner { BACKGROUND-IMAGE: url(suggest_img/ul_corner_tl.gif); POSITION: = absolute; WIDTH: 6px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: = left top; HEIGHT: 6px; TOP: 0px; LEFT: 0px } DIV.ajaxsuggest DIV.as_footer DIV.as_corner { BACKGROUND-IMAGE: url(suggest_img/ul_corner_bl.gif) } DIV.ajaxsuggest DIV.as_header DIV.as_bar { BACKGROUND-COLOR: #333; HEIGHT: 6px; OVERFLOW: hidden } DIV.ajaxsuggest DIV.as_footer DIV.as_bar { BACKGROUND-COLOR: #333; HEIGHT: 6px; OVERFLOW: hidden } DIV.ajaxsuggest UL { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #333; LIST-STYLE-TYPE: none; = MARGIN: 0px 0px -4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: = hidden; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.ajaxsuggest UL LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 4px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #ccc; PADDING-TOP: 0px } DIV.ajaxsuggest UL LI A { POSITION: relative; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; = PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; = COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.ajaxsuggest UL LI A:hover { BACKGROUND-COLOR: #444 } DIV.ajaxsuggest UL LI.as_highlight A:hover { BACKGROUND-COLOR: #1b5ccd } DIV.ajaxsuggest UL LI A SPAN { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: = block; FONT-WEIGHT: bold; PADDING-TOP: 3px } DIV.ajaxsuggest UL LI A SPAN SMALL { COLOR: #fff; FONT-WEIGHT: normal } DIV.ajaxsuggest UL LI.as_highlight A SPAN SMALL { COLOR: #ccc } DIV.ajaxsuggest UL LI.as_highlight A { BACKGROUND-IMAGE: url(suggest_img/hl_corner_br.gif); BACKGROUND-COLOR: = #1b5ccd; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: right = bottom; COLOR: #fff } DIV.ajaxsuggest UL LI.as_highlight A SPAN { BACKGROUND-IMAGE: url(suggest_img/hl_corner_bl.gif); BACKGROUND-REPEAT: = no-repeat; BACKGROUND-POSITION: left bottom } DIV.ajaxsuggest UL LI A .tl { POSITION: absolute; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 6px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: no-repeat; = HEIGHT: 6px; TOP: 0px; PADDING-TOP: 0px } DIV.ajaxsuggest UL LI A .tr { POSITION: absolute; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 6px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: no-repeat; = HEIGHT: 6px; TOP: 0px; PADDING-TOP: 0px } DIV.ajaxsuggest UL LI A .tr { RIGHT: 0px } DIV.ajaxsuggest UL LI.as_highlight A .tl { BACKGROUND-IMAGE: url(suggest_img/hl_corner_tl.gif); = BACKGROUND-POSITION: left bottom; LEFT: 0px } DIV.ajaxsuggest UL LI.as_highlight A .tr { BACKGROUND-IMAGE: url(suggest_img/hl_corner_tr.gif); = BACKGROUND-POSITION: right bottom; RIGHT: 0px } DIV.ajaxsuggest UL EM { FONT-STYLE: normal; COLOR: #6eade7 } DIV.ajaxsuggest UL LI.as_warning { TEXT-ALIGN: center; FONT-WEIGHT: bold } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/rss.css .rssfeed { BORDER-BOTTOM: #003366 1px dotted; BORDER-LEFT: #003366 1px dotted; = PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 30%; PADDING-RIGHT: = 10px; BORDER-TOP: #003366 1px dotted; BORDER-RIGHT: #003366 1px dotted; = PADDING-TOP: 10px } .rsschanneltitle { TEXT-ALIGN: center; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #bdde7b; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; MARGIN-BOTTOM: 10px; FONT-SIZE: = 14px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .rssitemtitle { MARGIN-BOTTOM: 5px } .rssitem { MARGIN-BOTTOM: 10px } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/view/About/toucan.css HTML { HEIGHT: 100% } BODY { HEIGHT: 100% } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } TBODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } TFOOT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } THEAD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: = inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; = PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: = sans-serif; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } .wikimodel-emptyline { HEIGHT: 1em } A { COLOR: #39397f; TEXT-DECORATION: none } A:link { COLOR: #39397f; TEXT-DECORATION: none } A:active { COLOR: #39397f; TEXT-DECORATION: none } A:visited { COLOR: #39397f; TEXT-DECORATION: none } A:hover { COLOR: #00007e; TEXT-DECORATION: underline } :focus { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px } BODY { LINE-HEIGHT: 1em; BACKGROUND: white; COLOR: black } OL { MARGIN-LEFT: 2em } UL { LIST-STYLE-TYPE: circle; MARGIN-LEFT: 2em } CAPTION { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-LEFT-WIDTH: 0px; FONT-WEIGHT: normal } TH { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-LEFT-WIDTH: 0px; FONT-WEIGHT: normal } TD { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-LEFT-WIDTH: 0px; FONT-WEIGHT: normal } BLOCKQUOTE { BORDER-LEFT: #ddddcc 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1em; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #fafaf6 0px 0px; QUOTES: = none; PADDING-TOP: 0.3em } .clearfloats { MARGIN: 0px 300px; HEIGHT: 1px; CLEAR: both } BODY.hideleft .clearfloat { MARGIN: 0px 300px 0px 30px } BODY.hideright .clearfloat { MARGIN: 0px 30px 0px 300px } BODY.hidelefthideright .clearfloat { MARGIN: 0px 30px } BODY.loginbody#body .clearfloats { DISPLAY: none } BODY.editbody .clearfloats { MARGIN-RIGHT: 300px } .hidden { DISPLAY: none !important } .invisible { VISIBILITY: hidden !important } .loading { BACKGROUND-IMAGE: url(icons/spinner.gif); BACKGROUND-REPEAT: no-repeat; = BACKGROUND-POSITION: center center } A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } .xwikirenderingerror { BORDER-BOTTOM: #555555 1px; BORDER-LEFT: #555555 1px; PADDING-BOTTOM: = 3px; BACKGROUND-COLOR: #ff5555; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = BORDER-TOP: #555555 1px; BORDER-RIGHT: #555555 1px; PADDING-TOP: 3px } .main PRE P { MARGIN: 0px } TT { FONT-FAMILY: monospace } TT.wikimodel-verbatim { FONT-FAMILY: sans-serif } EM { FONT-STYLE: italic } STRONG { FONT-WEIGHT: bold } .strong { FONT-WEIGHT: bold } #doctitle { LINE-HEIGHT: 1.1em; MARGIN: 0px 0px 30px; FONT-SIZE: 2.8em } H1 SPAN { POSITION: relative; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #000; = PADDING-TOP: 0px } H2 SPAN { POSITION: relative; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #000; = PADDING-TOP: 0px } H3 SPAN { POSITION: relative; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #000; = PADDING-TOP: 0px } H4 SPAN { POSITION: relative; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #000; = PADDING-TOP: 0px } H1 SPAN SPAN { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; = COLOR: #000; PADDING-TOP: 0px } H2 SPAN SPAN { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; = COLOR: #000; PADDING-TOP: 0px } H3 SPAN SPAN { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; = COLOR: #000; PADDING-TOP: 0px } H4 SPAN SPAN { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: inherit; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; = COLOR: #000; PADDING-TOP: 0px } BODY#mceSpanFonts H1 SPAN { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: = inherit; MARGIN: 10px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = DISPLAY: block; COLOR: #000; PADDING-TOP: 0px } BODY#mceSpanFonts H2 SPAN { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: = inherit; MARGIN: 10px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = DISPLAY: block; COLOR: #000; PADDING-TOP: 0px } BODY#mceSpanFonts H3 SPAN { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: = inherit; MARGIN: 10px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = DISPLAY: block; COLOR: #000; PADDING-TOP: 0px } BODY#mceSpanFonts H4 SPAN { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: = inherit; MARGIN: 10px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = DISPLAY: block; COLOR: #000; PADDING-TOP: 0px } H1 { LINE-HEIGHT: 1.1em; MARGIN: 20px 0px 15px; LETTER-SPACING: -1px; = FONT-SIZE: 2.1em; FONT-WEIGHT: normal } H2 { LINE-HEIGHT: 1.1em; FONT-STYLE: normal; MARGIN: 15px 0px 10px; = FONT-SIZE: 1.7em; FONT-WEIGHT: normal } H3 { LINE-HEIGHT: 1.1em; MARGIN: 10px 0px 5px; FONT-SIZE: 1.5em; = FONT-WEIGHT: normal } H4 { LINE-HEIGHT: 1.1em; MARGIN: 10px 0px 5px; FONT-SIZE: 1.3em; = FONT-WEIGHT: normal; LEFT: 0px } H5 { LINE-HEIGHT: 1.1em; FONT-STYLE: normal; MARGIN: 8px 0px 5px; FONT-SIZE: = 1.2em; FONT-WEIGHT: normal } SPAN.edit_section { BORDER-BOTTOM: red 1px solid; POSITION: relative; BORDER-LEFT: red 1px = solid; LINE-HEIGHT: 24px; MARGIN-TOP: -20px !important; DISPLAY: block; = MARGIN-BOTTOM: -1em; BACKGROUND: #ccc; HEIGHT: 24px; VISIBILITY: hidden; = OVERFLOW: hidden; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .edit_section A { BORDER-BOTTOM: blue 0px solid; POSITION: absolute; BORDER-LEFT: blue = 0px solid; LINE-HEIGHT: 24px; MARGIN: 0px -52px 0px 0px; PADDING-LEFT: = 50px; BACKGROUND: url(images/black-edit.png) no-repeat left top; = VISIBILITY: visible; OVERFLOW: hidden; BORDER-TOP: blue 0px solid; TOP: = 0px; RIGHT: 0px; BORDER-RIGHT: blue 0px solid } .quote { BACKGROUND-COLOR: inherit; FONT-STYLE: italic; FONT-FAMILY: inherit; = COLOR: inherit; FONT-SIZE: inherit } #xwikimaincontainerinner .box { BORDER-BOTTOM: #555555 1px dotted; BORDER-LEFT: #555555 1px dotted; = PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #f1f7ff; MARGIN: 1em 0px; = PADDING-LEFT: 1px; PADDING-RIGHT: 1px; OVERFLOW: auto; BORDER-TOP: = #555555 1px dotted; BORDER-RIGHT: #555555 1px dotted; PADDING-TOP: 0px } #xwikimaincontainerinner .code { BORDER-BOTTOM: #555555 1px dotted; BORDER-LEFT: #555555 1px dotted; = PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #f1f7ff; MARGIN: 1em 0px; = PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-FAMILY: courier, courier = new, monospace; WHITE-SPACE: pre; OVERFLOW: auto; BORDER-TOP: #555555 = 1px dotted; BORDER-RIGHT: #555555 1px dotted; PADDING-TOP: 0px } #xwikimaincontainerinner .code PRE { FONT-FAMILY: courier, courier new, monospace } .java-keyword { BACKGROUND-COLOR: inherit; COLOR: #0000aa; FONT-WEIGHT: bold } .java-object { BACKGROUND-COLOR: inherit; COLOR: #000088 } .java-quote { BACKGROUND-COLOR: inherit; COLOR: #00aa00 } .xml-keyword { FONT-WEIGHT: bold } .xml-tag { BACKGROUND-COLOR: inherit; COLOR: #0000aa } TABLE TD { BORDER-SPACING: 0; BORDER-COLLAPSE: separate; CLEAR: both } .mceContentBody TABLE { FONT-SIZE: 1em } .main TABLE { FONT-SIZE: 1em } .mceContentBody CAPTION { PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0px; PADDING-LEFT: 0px; = CAPTION-SIDE: top; PADDING-RIGHT: 0px; LETTER-SPACING: 0.1em; FONT-SIZE: = 0.94em; PADDING-TOP: 0px } .main CAPTION { PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0px; PADDING-LEFT: 0px; = CAPTION-SIDE: top; PADDING-RIGHT: 0px; LETTER-SPACING: 0.1em; FONT-SIZE: = 0.94em; PADDING-TOP: 0px } .mceContentBody TABLE TR TD { VERTICAL-ALIGN: middle } .main TABLE TR TD { VERTICAL-ALIGN: middle } .mceContentBody TABLE TR TD EM { FONT-STYLE: italic; FONT-SIZE: 0.9em } .main TABLE TR TD EM { FONT-STYLE: italic; FONT-SIZE: 0.9em } .mceContentBody TR.odd TD { =09 } .main TR.odd TD { =09 } .mceContentBody TD { BORDER-BOTTOM: #e5eff8 0px solid; BORDER-LEFT: #e5eff8 0px solid; = BORDER-TOP: #e5eff8 0px solid; BORDER-RIGHT: #e5eff8 0px solid } .main TD { BORDER-BOTTOM: #e5eff8 0px solid; BORDER-LEFT: #e5eff8 0px solid; = BORDER-TOP: #e5eff8 0px solid; BORDER-RIGHT: #e5eff8 0px solid } .mceContentBody TR.table-head TD { BORDER-BOTTOM: #e5eff8 0px solid; TEXT-ALIGN: center; BORDER-LEFT: = #e5eff8 0px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.5em; = PADDING-RIGHT: 0.5em; FONT: bold 1.2em/1.4em Arial, Helvetica, = sans-serif; BACKGROUND: #f4f9fe; BORDER-TOP: #e5eff8 0px solid; = BORDER-RIGHT: #e5eff8 0px solid; PADDING-TOP: 0.3em } .main TH { BORDER-BOTTOM: #e5eff8 0px solid; TEXT-ALIGN: center; BORDER-LEFT: = #e5eff8 0px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.5em; = PADDING-RIGHT: 0.5em; FONT: bold 1.2em/1.4em Arial, Helvetica, = sans-serif; BACKGROUND: #f4f9fe; BORDER-TOP: #e5eff8 0px solid; = BORDER-RIGHT: #e5eff8 0px solid; PADDING-TOP: 0.3em } TABLE.xwikilogintable TH { BACKGROUND-COLOR: transparent } .main TFOOT TH { TEXT-ALIGN: center; BACKGROUND: #f4f9fe } .main TFOOT TH STRONG { MARGIN: 0.5em 0.5em 0.5em 0px; FONT: bold 1.2em "Century Gothic", = "Trebuchet MS", Arial, Helvetica, sans-serif; COLOR: #66a3d3 } .main TFOOT TH EM { FONT-STYLE: normal; COLOR: #f03b58; FONT-SIZE: 1.1em; FONT-WEIGHT: bold } .main TABLE.sortable SPAN.sortarrow { PADDING-LEFT: 5px } TABLE#memberstable TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } .main IMG { MARGIN: 0px } .main H1 IMG { MARGIN: 0px; VERTICAL-ALIGN: middle } .main H2 IMG { MARGIN: 0px; VERTICAL-ALIGN: middle } .main H3 IMG { MARGIN: 0px; VERTICAL-ALIGN: middle } .main H4 IMG { MARGIN: 0px; VERTICAL-ALIGN: middle } .main H5 IMG { MARGIN: 0px; VERTICAL-ALIGN: middle } .main H6 IMG { MARGIN: 0px; VERTICAL-ALIGN: middle } #xwikicontent .sortarrow IMG { MARGIN: 0px } .main P { LINE-HEIGHT: 1.4em } .main OL { LIST-STYLE-POSITION: inside; LINE-HEIGHT: 1.4em; MARGIN-TOP: 1em; = MARGIN-BOTTOM: 1em } .main UL { LIST-STYLE-POSITION: inside; LINE-HEIGHT: 1.4em; MARGIN-TOP: 1em; = MARGIN-BOTTOM: 1em } .main OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .main UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .main DT { FONT-WEIGHT: bold } .main DD { FONT-STYLE: italic; PADDING-LEFT: 1em; BACKGROUND: = url(images/bullet-3.png) no-repeat 0px 0.3em } .main DD P { MARGIN-TOP: 0px } .list { =09 } .list-title { FONT-WEIGHT: bold } .list UL { LIST-STYLE-TYPE: none; MARGIN-TOP: 0px; PADDING-LEFT: 0px; = MARGIN-BOTTOM: 0px; MARGIN-LEFT: 0px } UL.minus { LIST-STYLE-TYPE: square } UL.star { LIST-STYLE-TYPE: circle } OL.roman { LIST-STYLE-TYPE: lower-roman } OL.ROMAN { LIST-STYLE-TYPE: upper-roman } OL.alpha { LIST-STYLE-TYPE: lower-alpha } OL.ALPHA { LIST-STYLE-TYPE: upper-alpha } OL.greek { LIST-STYLE-TYPE: lower-greek } OL.GREEK { LIST-STYLE-TYPE: upper-greek } .wikicreatelink { TEXT-DECORATION: none } .wikicreatelinktext { COLOR: black; TEXT-DECORATION: underline } .wikicreatelinkqm { BORDER-BOTTOM: black 0px solid; BORDER-LEFT: black 0px solid; = PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; BACKGROUND: #008; COLOR: white; FONT-SIZE: 90%; = BORDER-TOP: black 0px solid; BORDER-RIGHT: black 0px solid; = TEXT-DECORATION: none; PADDING-TOP: 0px } SPAN.wikicreatelink A { PADDING-RIGHT: 13px; BACKGROUND: url(/skins/albatross/qm%2Dblue.png) = no-repeat right center; COLOR: black; TEXT-DECORATION: underline } .wiki-calendar-table * { TEXT-ALIGN: center; BORDER-SPACING: 0; BORDER-COLLAPSE: collapse } .wiki-calendar-table DIV { MARGIN: 2px 0px; FONT-SIZE: 90% } * HTML .wiki-calendar-table DIV { FONT-SIZE: 80% } .wiki-calendar-table { BORDER-BOTTOM: #c0d4e7 4px solid; BORDER-LEFT: #c0d4e7 4px solid; = MARGIN: auto; FONT-SIZE: 100%; BORDER-TOP: #c0d4e7 4px solid; = BORDER-RIGHT: #c0d4e7 4px solid } .wiki-calendar-table TD { VERTICAL-ALIGN: top } .wiki-calendar-table TH { BACKGROUND-COLOR: #fff } .wiki-calendar-table TD { BORDER-BOTTOM: #c0d4e7 1px solid; TEXT-ALIGN: center; BORDER-LEFT: = #c0d4e7 1px solid; WIDTH: 90px; HEIGHT: 60px; BORDER-TOP: #c0d4e7 1px = solid; BORDER-RIGHT: #c0d4e7 1px solid; PADDING-TOP: 0px !important } .wiki-calendar-table TH { BORDER-BOTTOM: #c0d4e7 1px solid; TEXT-ALIGN: center; BORDER-LEFT: = #c0d4e7 1px solid; WIDTH: 90px; HEIGHT: 60px; BORDER-TOP: #c0d4e7 1px = solid; BORDER-RIGHT: #c0d4e7 1px solid; PADDING-TOP: 0px !important } .wiki-calendar-daynotinmonth { BACKGROUND-COLOR: #e5e5e5; COLOR: #bbbbbb } .wiki-calendar-today { BACKGROUND-COLOR: #c0d4e7 } .wiki-calendar-today-notinmonth { BACKGROUND-COLOR: #d9e0e7; COLOR: #bbbbbb } .wiki-calendar-daynamerow { BACKGROUND-COLOR: #c0d4e7 !important } .wiki-calendar-daynamerow TH { BACKGROUND-COLOR: #c0d4e7 !important; HEIGHT: 1.8em; COLOR: #fff; = FONT-WEIGHT: 900 } .wiki-calendar-daytitle { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #e8eef7; MARGIN: 0px; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-SIZE: 75% !important; = PADDING-TOP: 0px } .wiki-calendar-daynotinmonth .wiki-calendar-daytitle { BACKGROUND-COLOR: transparent !important } .wiki-calendar-today-notinmonth .wiki-calendar-daytitle { BACKGROUND-COLOR: transparent !important } .wiki-calendar-today .wiki-calendar-daytitle { BACKGROUND-COLOR: transparent !important } .wiki-calendar-today-notinmonth A { COLOR: #bbb !important } .wiki-calendar-daynotinmonth A { COLOR: #bbb !important } .wiki-calendar-monthyearrow { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-VARIANT: = small-caps; WIDTH: auto !important; COLOR: #c0d4e7; FONT-SIZE: 140%; = BORDER-TOP: medium none; FONT-WEIGHT: 100; BORDER-RIGHT: medium none } .wiki-calendar-month-nav { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } .wiki-calendar-month-nav * { COLOR: #c0d4e7 !important; FONT-SIZE: 140%; FONT-WEIGHT: bold; = TEXT-DECORATION: none } .wiki-calendar-month-nav .disabled { COLOR: #aaa !important } .wiki-calendar-month-nav A:hover { COLOR: #38c !important; TEXT-DECORATION: none !important } #body .prev-month { TEXT-ALIGN: left; PADDING-LEFT: 8px } #body .next-month { TEXT-ALIGN: right; PADDING-RIGHT: 8px } .underline { TEXT-DECORATION: underline } .workshop { BACKGROUND-COLOR: #fed } .event .username { FONT-SIZE: 80% } .hentry A H4 { MARGIN: 0px 0px 0.5em; COLOR: #000; FONT-SIZE: 1.4em } .article_title { BORDER-BOTTOM: 1px; FONT-SIZE: 120% } .article_content { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 10px } .article_date { BORDER-BOTTOM: #333 1px solid; COLOR: #666; FONT-SIZE: 120% } .article_footer { MARGIN: 0px 0px 2em; COLOR: gray; FONT-SIZE: 75%; BORDER-TOP: 1px = dotted; FONT-WEIGHT: normal } #webhomeNewsdisplay UL { MARGIN-LEFT: 0px } #webhomeNewsdisplay UL LI { MARGIN-BOTTOM: 0.5em } SUP.footnoteRef A { FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.footnotes { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: = 10px 0px; FONT-SIZE: 70%; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd = 1px solid } .footnotes OL { PADDING-LEFT: 1em } .footnotes LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: = 4px; PADDING-TOP: 0px } A.footnoteBackRef { FONT-WEIGHT: bold; TEXT-DECORATION: none } .pagedNavigation { TEXT-ALIGN: center; PADDING-BOTTOM: 8px; MARGIN: auto; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 8px } .pagedNavigation SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; = PADDING-TOP: 0px } .pagedNavigation .pagedLink { BACKGROUND-COLOR: #e5f0fe } .pagedNavigation .inactive { COLOR: #ccc } .pagedNavigation .pagedLink A { COLOR: #2e5a87 !important; TEXT-DECORATION: none } .pagedNavigation .pagedLink A:hover { COLOR: #d70 !important } .vcomment { BACKGROUND-COLOR: #f9f9f9; FONT-STYLE: italic; MARGIN-LEFT: 5px; = MARGIN-RIGHT: 10px } BODY { BACKGROUND-IMAGE: url(images/menubg.png); MIN-WIDTH: 970px; = PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: sans-serif; COLOR: = #222; FONT-SIZE: 87.5%; PADDING-TOP: 0px } BODY.mceContentBody { BACKGROUND-IMAGE: none; LINE-HEIGHT: 1.4em; FONT-SIZE: 90% } #xwikimaincontainer { BACKGROUND-IMAGE: url(images/bg-blue-left-230.png); BORDER-BOTTOM: #ccc = 1px solid; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; LINE-HEIGHT: 1.2em; OVERFLOW-Y: hidden; BACKGROUND-COLOR: #fff2cc; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: = repeat-y; BACKGROUND-POSITION: 0px 0px; BORDER-TOP: medium none; = BORDER-RIGHT: medium none; PADDING-TOP: 0px } BODY.hideright #xwikimaincontainer { BACKGROUND-IMAGE: url(images/bg-blue-left-230.png); BORDER-BOTTOM: #ccc = 1px solid; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; LINE-HEIGHT: 1.2em; OVERFLOW-Y: hidden; BACKGROUND-COLOR: #fff2cc; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: = repeat-y; BACKGROUND-POSITION: 0px 0px; BORDER-TOP: medium none; = BORDER-RIGHT: medium none; PADDING-TOP: 0px } BODY.exportbody#body #xwikimaincontainer { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png) } BODY.importbody#body #xwikimaincontainer { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png) } BODY.adminbody#body #xwikimaincontainer { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png) } BODY.hidelefthideright #xwikimaincontainer { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png) } BODY.hideleft #xwikimaincontainer { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png) } BODY.editbody #xwikimaincontainer { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png) } #xwikimaincontainerinner { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png); BORDER-BOTTOM: = medium none; TEXT-ALIGN: left; BORDER-LEFT: medium none; = BACKGROUND-COLOR: transparent; MARGIN: 0px; BACKGROUND-REPEAT: repeat-y; = BACKGROUND-POSITION: right top; HEIGHT: 100%; CLEAR: both; BORDER-TOP: = medium none; BORDER-RIGHT: medium none; PADDING-TOP: 20px } BODY.hideleft #xwikimaincontainerinner { MARGIN: 0px 0px 0px 30px } BODY.hideright #xwikimaincontainerinner { BACKGROUND-IMAGE: url(images/bg-blue-right-30.png); PADDING-RIGHT: 30px } BODY.importbody #xwikimaincontainerinner { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY3.png); MARGIN: 0px 0px = 0px 30px; PADDING-RIGHT: 30px } BODY.exportbody #xwikimaincontainerinner { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY3.png); MARGIN: 0px 0px = 0px 30px; PADDING-RIGHT: 30px } BODY.adminbody #xwikimaincontainerinner { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY3.png); MARGIN: 0px 0px = 0px 30px; PADDING-RIGHT: 30px } BODY.hidelefthideright #xwikimaincontainerinner { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY3.png); MARGIN: 0px 0px = 0px 30px; PADDING-RIGHT: 30px } BODY.editbody#body #xwikimaincontainerinner { BACKGROUND-IMAGE: url(images/colors/gray/bg-GRAY.png); = BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 0px 30px; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: repeat-y; BACKGROUND-POSITION: right top } BODY.editbody#body #globallinks { BACKGROUND-IMAGE: url(images/colors/gray/bgx-GRAY.png); POSITION: = relative; LINE-HEIGHT: 1.2em; WIDTH: 230px; BACKGROUND-POSITION: left = top; FLOAT: right; HEIGHT: 118px; MARGIN-LEFT: -230px; FONT-SIZE: 1em } #globallinks { BACKGROUND-IMAGE: url(images/colors/gray/bgx-GRAY.png); POSITION: = relative; LINE-HEIGHT: 1.2em; WIDTH: 230px; BACKGROUND-POSITION: left = top; FLOAT: right; HEIGHT: 118px; MARGIN-LEFT: -230px; FONT-SIZE: 1em } BODY.editbody #globallinks { WIDTH: 230px; MARGIN-LEFT: -230px } BODY.exportbody#body #companylogo { PADDING-RIGHT: 230px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 30px } BODY.importbody#body #companylogo { PADDING-RIGHT: 230px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 30px } BODY.adminbody#body #companylogo { PADDING-RIGHT: 230px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 30px } BODY.hideright #globallinks { BACKGROUND-IMAGE: = url(http://sourceforge.net/sflogo.php?group_id=3D80240&type=3D2); = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 87% 65%; MARGIN-LEFT: = -230px } BODY.hidelefthideright #globallinks { BACKGROUND-IMAGE: = url(http://sourceforge.net/sflogo.php?group_id=3D80240&type=3D2); = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 87% 65%; MARGIN-LEFT: = -230px } BODY.exportbody #globallinks { BACKGROUND-IMAGE: = url(http://sourceforge.net/sflogo.php?group_id=3D80240&type=3D2); = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 87% 65%; MARGIN-LEFT: = -230px } BODY.importbody #globallinks { BACKGROUND-IMAGE: = url(http://sourceforge.net/sflogo.php?group_id=3D80240&type=3D2); = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 87% 65%; MARGIN-LEFT: = -230px } BODY.adminbody #globallinks { BACKGROUND-IMAGE: = url(http://sourceforge.net/sflogo.php?group_id=3D80240&type=3D2); = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 87% 65%; MARGIN-LEFT: = -230px } BODY.hideright #globallinks A { PADDING-RIGHT: 10px; COLOR: #888; FONT-SIZE: 0.9em; FONT-WEIGHT: normal } BODY.hidelefthideright #globallinks A { PADDING-RIGHT: 10px; COLOR: #888; FONT-SIZE: 0.9em; FONT-WEIGHT: normal } BODY.exportbody #globallinks A { PADDING-RIGHT: 10px; COLOR: #888; FONT-SIZE: 0.9em; FONT-WEIGHT: normal } BODY.importbody #globallinks A { PADDING-RIGHT: 10px; COLOR: #888; FONT-SIZE: 0.9em; FONT-WEIGHT: normal } BODY.adminbody #globallinks A { PADDING-RIGHT: 10px; COLOR: #888; FONT-SIZE: 0.9em; FONT-WEIGHT: normal } #companylogo { =09 } BODY.hidelefthideright #companylogo { MARGIN: 0px } BODY.hideleft #companylogo { MARGIN: 0px } BODY.hideright #companylogo { =09 } .editbody#body #companylogo { MARGIN: 0px } BODY.adminbody#body #companylogo { MARGIN: 0px } BODY.editbody#body #headerspace { MARGIN: 0px 230px 0px 0px } BODY.hideleft #headerspace { MARGIN: 0px 230px 0px 0px } BODY.exportbody#body #headerspace { MARGIN: 0px } BODY.importbody#body #headerspace { MARGIN: 0px } BODY.adminbody#body #headerspace { MARGIN: 0px } .hidelefthideright#body #headerspace { MARGIN: 0px } .hideright#body #headerspace { MARGIN: 0px 0px 0px 230px } #footerglobal { =09 } .hidelefthideright#body #footerglobal { MARGIN: 0px } BODY.editbody#body #footerglobal { =09 } .hideleft#body #footerglobal { =09 } .hideright#body #footerglobal { =09 } BODY.exportbody#body #footerglobal { MARGIN-RIGHT: 0px } BODY.importbody#body #footerglobal { MARGIN-RIGHT: 0px } BODY.adminbody#body #footerglobal { MARGIN-RIGHT: 0px } .leftsidecolumns { POSITION: relative; WIDTH: 100%; FLOAT: left } #contentcolumn { POSITION: relative; WIDTH: 100%; FLOAT: left } .main { POSITION: relative; PADDING-BOTTOM: 25px; MARGIN: 0px 230px; = PADDING-LEFT: 25px; PADDING-RIGHT: 25px; PADDING-TOP: 0px } DIV#panelwizardcontainer { =09 } BODY.hideleft #contentcolumn .main { MARGIN: 0px 230px 0px 0px } BODY.hideright #contentcolumn .main { MARGIN: 0px 0px 0px 230px } BODY.hidelefthideright #contentcolumn .main { MARGIN: 0px } BODY.content #contentcolumn .main { MARGIN: 0px 230px } #xwikicontent { POSITION: relative; PADDING-BOTTOM: 0px; OVERFLOW-X: auto; OVERFLOW-Y: = hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } HTML > BODY .minwidth { DISPLAY: none } HTML > BODY .minwidthb { DISPLAY: none } HTML > BODY .minwidthc { DISPLAY: none } .minwidth { DISPLAY: none; FONT: 1px/1px sans-serif; HEIGHT: 0px } .minwidthb { DISPLAY: none; FONT: 1px/1px sans-serif; HEIGHT: 0px } .minwidthc { DISPLAY: none; FONT: 1px/1px sans-serif; HEIGHT: 0px } .minwidthd { DISPLAY: none; FONT: 1px/1px sans-serif; HEIGHT: 0px } .minwidthb { =09 } .minwidthc { =09 } .layoutsection { CLEAR: both } #contentcontainer { HEIGHT: 1% } #rightPanels { BACKGROUND-IMAGE: url(images/colors/gray/bgx-GRAY.png); POSITION: = relative; PADDING-BOTTOM: 100px; MARGIN-TOP: -25px; MIN-HEIGHT: 400px; = WIDTH: 230px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left = -80px; FLOAT: right; HEIGHT: auto !important; MARGIN-LEFT: -230px } #leftPanels { POSITION: relative; WIDTH: 230px; FLOAT: left; MARGIN-LEFT: -100% } BODY.exportbody .panels#editPanels { DISPLAY: none } BODY.importbody .panels#editPanels { DISPLAY: none } BODY.adminbody .panels#editPanels { DISPLAY: none } .panels#editPanels { BACKGROUND-IMAGE: url(images/colors/gray/bgx-GRAY.png); POSITION: = relative; MARGIN-TOP: -26px; MIN-HEIGHT: 600px; WIDTH: 230px; = BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left -79px; FLOAT: = left; HEIGHT: auto !important; MARGIN-LEFT: -230px; PADDING-TOP: 25px } .panels#editPanels A { COLOR: #000 } .panels#editPanels .panel { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 210px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .editbody .leftsidecolumns { POSITION: relative; PADDING-BOTTOM: 20px; WIDTH: 100%; FLOAT: left } #xwikieditcontent TEXTAREA#content { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 100%; = BORDER-TOP: medium none; BORDER-RIGHT: medium none } #xwikieditor { Z-INDEX: 1 } #headerglobal { Z-INDEX: 1; POSITION: relative; WIDTH: 100%; FLOAT: left; HEIGHT: 118px } #globallinks { =09 } #globalmenu { TEXT-ALIGN: right; PADDING-BOTTOM: 0.5em; LINE-HEIGHT: 1.1em; = PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; FONT-SIZE: 1em; PADDING-TOP: = 0.5em } BODY.editbody#body #globallinks #globalmenu .glink { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4em; BACKGROUND-COLOR: transparent; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; COLOR: #fff; = FONT-SIZE: 1em; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: = 0px } #globalmenu .glink { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4em; BACKGROUND-COLOR: transparent; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; COLOR: #fff; = FONT-SIZE: 1em; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: = 0px } #globalmenu #headerlanguages A { TEXT-TRANSFORM: capitalize } #globalmenu SPAN { DISPLAY: none } #company { BACKGROUND-IMAGE: url(images/bar.png); BORDER-BOTTOM: #d3af41 1px = solid; POSITION: relative; BACKGROUND-COLOR: #f7f8fd; WIDTH: 100%; = BACKGROUND-REPEAT: repeat-x; BACKGROUND-POSITION: left bottom; FLOAT: = left; HEIGHT: 118px } #companylogo { WIDTH: 740px } #companylogo { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: = 118px; MARGIN-RIGHT: 300px; PADDING-TOP: 0px } #companylogo A { WIDTH: 300px; DISPLAY: block; HEIGHT: 118px; TEXT-DECORATION: none } #globalmenu A:hover { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } #companylogo A:hover { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } #companylogo A IMG { WIDTH: 300px; HEIGHT: 118px } #companylogo A IMG { POSITION: relative; FLOAT: left } #globaldoctitle { DISPLAY: none } #globaldoctitle H1 { =09 } #headerspace HR { DISPLAY: none } #footerglobal HR { DISPLAY: none } #footerglobal A { COLOR: #d3af41; TEXT-DECORATION: none } #headerspace A { COLOR: #d3af41; TEXT-DECORATION: none } #headerspace { MARGIN: 0px 230px; PADDING-LEFT: 30px; WIDTH: auto; HEIGHT: 25px; = COLOR: #d3af41; FONT-SIZE: 0.9em } #headerspace { HEIGHT: 24px; OVERFLOW: hidden } #headerspace A { LINE-HEIGHT: 25px } #footerglobal { BACKGROUND-IMAGE: url(images/shadebar.png); BORDER-BOTTOM: #d3af41 1px = solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: = #ead085; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: = repeat-y; BACKGROUND-POSITION: left top; COLOR: #222; CLEAR: both; = FONT-SIZE: 0.9em; BORDER-TOP: #d3af41 1px solid; PADDING-TOP: 2px } #footerglobal A { COLOR: #555; TEXT-DECORATION: none } #xwikilicence { =09 } #xwikidocinfo { DISPLAY: none } #xwikiplatformversion { DISPLAY: none } .layoutsubsection { =09 } .layoutsubsection .about { BORDER-BOTTOM: medium none; TEXT-ALIGN: right; BORDER-LEFT: medium = none; MARGIN-TOP: -4px; WIDTH: 230px; FLOAT: right; COLOR: #888888; = FONT-SIZE: 0.9em; OVERFLOW: hidden; BORDER-TOP: medium none; = BORDER-RIGHT: medium none } #loginForm DIV.centered FIELDSET.xwikimessage TABLE.xwikilogintable = TBODY TR TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } #loginForm DIV.centered FIELDSET.xwikimessage TABLE.xwikilogintable = TBODY TR TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } DIV.centered { TEXT-ALIGN: center } BODY.editbody .leftsidecolumns .centered { MARGIN-RIGHT: 230px } FIELDSET.xwikimessage { BORDER-BOTTOM: #fff 65px solid; TEXT-ALIGN: center; BORDER-LEFT: medium = none; PADDING-BOTTOM: 16px; BACKGROUND-COLOR: #efffd4; MARGIN: 65px auto = 0px; PADDING-LEFT: 8px; WIDTH: 400px; PADDING-RIGHT: 8px; DISPLAY: = block; FLOAT: none; BORDER-TOP: #efffd4 4em solid; BORDER-RIGHT: medium = none; PADDING-TOP: 0px } DIV.xwikimessage { BORDER-BOTTOM: #fff 65px solid; TEXT-ALIGN: center; BORDER-LEFT: medium = none; PADDING-BOTTOM: 16px; BACKGROUND-COLOR: #efffd4; MARGIN: 65px auto = 0px; PADDING-LEFT: 8px; WIDTH: 400px; PADDING-RIGHT: 8px; DISPLAY: = block; FLOAT: none; BORDER-TOP: #efffd4 4em solid; BORDER-RIGHT: medium = none; PADDING-TOP: 0px } FIELDSET.xwikimessage LEGEND { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; FONT: bold 1.4em = sans-serif; LETTER-SPACING: 0.4em; COLOR: #508000; PADDING-TOP: 0px } DIV.xwikimessage H3 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; FONT: bold 1.4em = sans-serif; LETTER-SPACING: 0.4em; COLOR: #508000; PADDING-TOP: 0px } DIV.errormessage { COLOR: red } FIELDSET.xwikimessage .xwikimessage { TEXT-ALIGN: center; FONT-SIZE: 110%; FONT-WEIGHT: bold } FIELDSET.xwikimessage .buttons { TEXT-ALIGN: center } FIELDSET.xwikimessage .buttons A { MARGIN: 8px; TEXT-DECORATION: none } .button { TEXT-ALIGN: center; FONT-FAMILY: Helvetica, sans-serif; FONT-WEIGHT: = bold } #xwikidata { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; = BORDER-RIGHT: medium none; PADDING-TOP: 0px } .xwikiintratitle { =09 } .xwikiintracontent { MARGIN: 0px } .xwikicomment { BORDER-BOTTOM: white 2px solid; POSITION: relative; PADDING-BOTTOM: = 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; = PADDING-TOP: 10px } #comments { PADDING-BOTTOM: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = PADDING-TOP: 0pt } #attachments { PADDING-BOTTOM: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = PADDING-TOP: 0pt } #xwikidata .xwikititlewrapper { CURSOR: pointer } #xwikidata #commentscontent .xwikititlewrapper { =09 } #xwikidata #attw { =09 } H3.xwikiintratitle { TEXT-ALIGN: left; PADDING-BOTTOM: 5px; TEXT-TRANSFORM: uppercase; = MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT: 1.2em/1.4em = sans-serif; LETTER-SPACING: 0.1em; PADDING-TOP: 5px } .xwikiintratitle SPAN.hidden { DISPLAY: inline } #attachmentscontent TABLE { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } .mime { TEXT-ALIGN: center } .xwikicomment { POSITION: relative; PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .commentspacer { DISPLAY: none } .commentavatar { POSITION: absolute; WIDTH: 54px; TOP: 0px; LEFT: 0px } .commentavatar IMG { MARGIN: auto; WIDTH: 3.5em; DISPLAY: block } .commentheader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 6px } .commentauthor { FONT-SIZE: 130%; FONT-WEIGHT: 900 } .commentauthor A { COLOR: #000 !important; TEXT-DECORATION: none } .commentcontent { BORDER-LEFT: #cccccc 5px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; = PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.xwikidatatable { MARGIN: 8px auto } TABLE.xwikidatatable { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: = #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } TABLE.xwikidatatable TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: = #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } TABLE.xwikidatatable TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; = PADDING-TOP: 2px } .xwikiintracontent LEGEND { =09 } .xwikiintracontent FIELDSET { PADDING-BOTTOM: 8px; BACKGROUND-COLOR: #f9f9f9; MARGIN-TOP: 10px; = PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 8px } .xwikiintracontent LEGEND { FONT: bold 1.2em/1.4em sans-serif; LETTER-SPACING: 0.1em; COLOR: = #39397f; CURSOR: pointer } HTML > BODY .xwikiintracontent LEGEND { MARGIN-BOTTOM: 0px } #xwikiuploadfile { MARGIN: 10px } .xwikiintracontent FIELDSET.collapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; = PADDING-TOP: 0px } .xwikiintracontent FIELDSET.collapsed LEGEND { MARGIN-LEFT: 2px } .xwikiintracontent FIELDSET.collapsed DIV { DISPLAY: none } .xwikiintracontent FIELDSET.expanded .expands { DISPLAY: none } .commentsno { =09 } .attachmentsno { =09 } .attachmentsno { =09 } #actionmenu { BACKGROUND-IMAGE: url(images/actionbar-bg-1.png); Z-INDEX: 1000; = BORDER-BOTTOM: #444 1px solid; POSITION: absolute; TEXT-ALIGN: center; = BACKGROUND-COLOR: #ccc; HEIGHT: 20px !important; COLOR: #fff; OVERFLOW: = visible; BORDER-TOP: #ccc 0px solid; TOP: 0px; RIGHT: 0px; LEFT: 0px } HTML > BODY #actionmenu { POSITION: fixed; WIDTH: 100%; TOP: 0px; LEFT: 0px } #actionmenu A { BORDER-BOTTOM: #444 0px solid; TEXT-ALIGN: center; BORDER-LEFT: #444 = 1px solid; LINE-HEIGHT: 20px; WIDTH: 70px; DISPLAY: block; FLOAT: left; = HEIGHT: 20px; COLOR: #444; FONT-SIZE: 0.9em; BORDER-TOP: #444 0px solid; = FONT-WEIGHT: bold; MARGIN-RIGHT: -1px; BORDER-RIGHT: #444 1px solid; = TEXT-DECORATION: none } #actionmenu .editinfo A { BORDER-BOTTOM: #444 0px solid; TEXT-ALIGN: center; BORDER-LEFT: #444 = 0px solid; LINE-HEIGHT: 20px; DISPLAY: inline; FLOAT: none; HEIGHT: = 20px; COLOR: #444; FONT-SIZE: 0.9em; BORDER-TOP: #444 0px solid; = FONT-WEIGHT: bold; BORDER-RIGHT: #444 0px solid; TEXT-DECORATION: none } #actionmenu DIV.leftmenu DIV:hover A { BACKGROUND-IMAGE: url(images/actionbar-bg-2.png); COLOR: #fff } #actionmenu A:hover { BACKGROUND-IMAGE: url(images/actionbar-bg-2.png); COLOR: #fff } #actionmenu DIV.leftmenu DIV:hover .submenu A { BACKGROUND-IMAGE: none } #actionmenu .editinfo A:hover { COLOR: #fff } .rightmenu { POSITION: absolute; RIGHT: 0px; MARGIN-RIGHT: 25px } #actionmenu .rightmenu A { WIDTH: 100px } #actionmenu .leftmenu #tmDoc { WIDTH: 20px } .leftmenu { POSITION: absolute; LEFT: 25px } .topmenuentry { DISPLAY: block; FLOAT: left } .rightmenu .topmenuentry { FLOAT: right } .topmenuentry { =09 } #tmWatched A.tme { COLOR: #4cad1b } .submenu { BACKGROUND-IMAGE: url(images/b75.png); BORDER-BOTTOM: #222 1px solid; = POSITION: absolute; BORDER-LEFT: #222 1px solid; PADDING-BOTTOM: 5px; = BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; PADDING-LEFT: 5px; = WIDTH: 12em; PADDING-RIGHT: 5px; DISPLAY: block; MARGIN-LEFT: 0px = !important; BORDER-TOP: #222 1px solid; BORDER-RIGHT: #222 1px solid; = PADDING-TOP: 5px } .hidden.submenu { DISPLAY: none } .submenu .submenuseparator { DISPLAY: none } #actionmenu .submenuitem A { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: = 0px; LINE-HEIGHT: 1.2em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; DISPLAY: block; FLOAT: none; HEIGHT: auto; COLOR: #fff; FONT-SIZE: = 0.8em; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; = TEXT-DECORATION: none; PADDING-TOP: 2px } #actionmenu .submenuitem A:link { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: = 0px; LINE-HEIGHT: 1.2em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; DISPLAY: block; FLOAT: none; HEIGHT: auto; COLOR: #fff; FONT-SIZE: = 0.8em; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; = TEXT-DECORATION: none; PADDING-TOP: 2px } #actionmenu .submenuitem A:visited { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: = 0px; LINE-HEIGHT: 1.2em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; DISPLAY: block; FLOAT: none; HEIGHT: auto; COLOR: #fff; FONT-SIZE: = 0.8em; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; = TEXT-DECORATION: none; PADDING-TOP: 2px } #actionmenu .submenuitem A:active { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: = 0px; LINE-HEIGHT: 1.2em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; DISPLAY: block; FLOAT: none; HEIGHT: auto; COLOR: #fff; FONT-SIZE: = 0.8em; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; = TEXT-DECORATION: none; PADDING-TOP: 2px } #actionmenu .submenuitem A:hover { BACKGROUND-IMAGE: none; TEXT-DECORATION: underline } #xwikiviewerstitles { DISPLAY: none } .adminbody#body .alleditcontent { BORDER-BOTTOM-COLOR: #fff; BORDER-TOP-COLOR: #fff; BORDER-RIGHT-COLOR: = #fff; BORDER-LEFT-COLOR: #fff } .alleditcontent .floatcontainer { BACKGROUND-COLOR: #fff } UL.xwikitabbar { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; = PADDING-LEFT: 3px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 30px; = PADDING-TOP: 0px } #xwikieditor UL.xwikitabbar { OVERFLOW: hidden } #xwikicontent UL.xwikitabbar { BORDER-BOTTOM: #555 0px solid; MARGIN: 0px; OVERFLOW: hidden } .xwikitabbar LI { BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: center; = BORDER-LEFT: medium none; LINE-HEIGHT: 30px; LIST-STYLE-TYPE: none; = WIDTH: 106px; DISPLAY: block; FLOAT: left; HEIGHT: 30px; BORDER-TOP: = medium none; MARGIN-RIGHT: 2px; BORDER-RIGHT: medium none } .xwikitabbar LI#xwikiorphansview { BACKGROUND-IMAGE: url(images/tab2.png); WIDTH: 206px } .xwikitabbar LI#xwikiorphansview A { BACKGROUND-IMAGE: url(images/tab2.png) } .xwikitabbar LI:hover { BACKGROUND-POSITION: center top } .xwikitabbar LI A { PADDING-BOTTOM: 0pt; LINE-HEIGHT: 34px !important; MARGIN-TOP: 0px; = PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: = url(images/tab.png) no-repeat left top; LETTER-SPACING: -0.5px; HEIGHT: = 30px; FONT-SIZE: 0.85em; FONT-WEIGHT: normal; TEXT-DECORATION: none; = PADDING-TOP: 0pt } .xwikitabbar LI A:hover { BACKGROUND-POSITION: center top; TEXT-DECORATION: none } .xwikitabbar LI.active A { BACKGROUND-POSITION: center top; CURSOR: default } .xwikitabbar LI.active A:hover { BACKGROUND-POSITION: center top; CURSOR: default } .xwikitabbar LI A { COLOR: #111 } .xwikitabbar LI.active A { COLOR: #333; FONT-WEIGHT: bold } .xwikitabbar LI { =09 } .xwikitabbar LI.active { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; = BACKGROUND-POSITION: right top; BORDER-TOP: medium none; BORDER-RIGHT: = medium none } #xwikichangespace { PADDING-BOTTOM: 10px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 10px } #xwikicontentedit { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px = solid; BORDER-RIGHT: 1px solid } .Search #globalsearch { BACKGROUND-IMAGE: url(images/search-bg.png); TEXT-ALIGN: center; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 12px; BACKGROUND-COLOR: transparent; = MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND-REPEAT: = no-repeat; HEIGHT: 50px; PADDING-TOP: 15px } .Search .xwikipanelcontents { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .Search .xwikipaneltitle { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } #globalsearch { MARGIN: 0px 0px 0px 10px } .xwikipanelcontents FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #body #globalsearch INPUT { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; = BACKGROUND-COLOR: #fff; WIDTH: 100px; DISPLAY: inline !important; = FONT-SIZE: 0.9em; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px = solid } #body #globalsearch INPUT.button { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-SIZE: 1em; = VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: = 0px } #leftPanels { PADDING-BOTTOM: 100px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: = 1%; PADDING-TOP: 0px } #rightPanels { PADDING-BOTTOM: 100px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: = 1%; PADDING-TOP: 0px } .panels { =09 } HTML > BODY .panels { MARGIN-TOP: 0px } .left.panels { POSITION: relative; FLOAT: left; MARGIN-LEFT: 0px } .right.panels { POSITION: relative; FLOAT: right } .panel { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; = WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #000; = PADDING-TOP: 0px } .fakepanel { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; = WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #000; = PADDING-TOP: 0px } #leftPanels .panel { MARGIN: 0px 0px 10px 20px } #leftPanels .fakepanel { MARGIN: 0px 0px 10px 20px } #rightPanels .panel { MARGIN: 0px 0px 10px 10px } #rightPanels .fakepanel { MARGIN: 0px 0px 10px 10px } .fakepanel { DISPLAY: none; HEIGHT: 320px } .xwikipanelcontents { PADDING-BOTTOM: 20px; LINE-HEIGHT: 1.6em; BACKGROUND-COLOR: = transparent; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; FONT-SIZE: 0.85em; = FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.xwikipanelcontents DIV.warningmessage { MARGIN-TOP: 0px } DIV.xwikipanelcontents TABLE { MARGIN-TOP: 0px } DIV.xwikipanelcontents UL.minus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } H5.xwikipaneltitle { BACKGROUND-IMAGE: url(images/panel-v.png); TEXT-ALIGN: center; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; MARGIN: 0px; PADDING-LEFT: 15px; = PADDING-RIGHT: 20px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: = 0px -100px; LETTER-SPACING: -1px; HEIGHT: 30px; COLOR: #333; FONT-SIZE: = 1.1em; CURSOR: pointer; PADDING-TOP: 0px } #globalsearch H5.hidden.xwikipaneltitle { DISPLAY: none } H5.hidden.xwikipaneltitle { LINE-HEIGHT: 200px; DISPLAY: block; HEIGHT: 10px; OVERFLOW: hidden } .collapsed H5.xwikipaneltitle { BACKGROUND-IMAGE: url(images/panel-v.png); BACKGROUND-REPEAT: = no-repeat; BACKGROUND-POSITION: left top; HEIGHT: 38px } .xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-v.png); BACKGROUND-REPEAT: = no-repeat; BACKGROUND-POSITION: left bottom } .xwikipanelcontents A { COLOR: #333 } .xwikipanelcontents A.wikicreatelink { COLOR: #333 } DIV.xwikipanelcontents A.wikicreatelink SPAN.wikicreatelinkqm { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #db6e26; MARGIN: 0px 2px; = PADDING-LEFT: 1px; PADDING-RIGHT: 1px; COLOR: #fff; PADDING-TOP: 0px } DIV.xwikipanelcontents SPAN.wikicreatelink A { BACKGROUND-IMAGE: url(/skins/albatross/qm%2Dorange.png) } DIV.xwikipanelcontents UL.star { LIST-STYLE-POSITION: inside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: = none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: = 0px } DIV.xwikipanelcontents UL.star LI UL { MARGIN-LEFT: 2em } .xwikipanelcontents P { MARGIN-TOP: 0px } .collapsed .xwikipanelcontents { DISPLAY: none } SPAN.panelitem { DISPLAY: block } #editPanels .expanded H5.xwikipaneltitle { BACKGROUND-IMAGE: url(images/panel-e.png); TEXT-ALIGN: center; = PADDING-BOTTOM: 5px; LINE-HEIGHT: 20px; PADDING-LEFT: 10px; = PADDING-RIGHT: 25px; BACKGROUND-POSITION: right -200px; LETTER-SPACING: = -1px; HEIGHT: auto; COLOR: #333; FONT-SIZE: 1em; PADDING-TOP: 5px } #editPanels .editmodes H5 { BACKGROUND-IMAGE: url(images/panel-m.png); TEXT-ALIGN: center; = PADDING-BOTTOM: 5px; LINE-HEIGHT: 20px; PADDING-LEFT: 10px; = PADDING-RIGHT: 25px; BACKGROUND-POSITION: right top; LETTER-SPACING: = -1px; HEIGHT: auto; COLOR: #333; FONT-SIZE: 1em; PADDING-TOP: 5px } #editPanels .collapsed H5.xwikipaneltitle { BACKGROUND-IMAGE: url(images/panel-e.png); TEXT-ALIGN: center; = PADDING-BOTTOM: 5px; LINE-HEIGHT: 20px; PADDING-LEFT: 10px; = PADDING-RIGHT: 25px; BACKGROUND-POSITION: right top; LETTER-SPACING: = -1px; HEIGHT: 30px; COLOR: #333; PADDING-TOP: 5px } #editPanels .xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-e.png); PADDING-BOTTOM: 35px; = PADDING-LEFT: 10px; PADDING-RIGHT: 25px; BACKGROUND-POSITION: right = bottom; HEIGHT: auto; COLOR: #333; FONT-SIZE: 0.8em; FONT-WEIGHT: = normal; PADDING-TOP: 0px } #editPanels .EditModes .xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-m.png); PADDING-BOTTOM: 2em; = BACKGROUND-POSITION: right bottom } #editPanels .xwikipanelcontents P { MARGIN: 0px 0px 1em } #editPanels FORM { FONT-SIZE: 0.9em } #editPanels FORM INPUT { WIDTH: 100%; MARGIN-BOTTOM: 0.5em; FONT-SIZE: 1em } #editPanels FORM SELECT { WIDTH: 100%; MARGIN-BOTTOM: 0.5em; FONT-SIZE: 1em } .collapsed H5.xwikipaneltitle { BACKGROUND-POSITION: right top } #editPanels .EditModes .xwikipanelcontents UL { MARGIN-LEFT: -15px; PADDING-TOP: 1em } #editPanels .EditModes .xwikipanelcontents UL LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 20px; PADDING-LEFT: = 15px; PADDING-RIGHT: 15px; DISPLAY: block; LETTER-SPACING: 1px; HEIGHT: = 20px; FONT-SIZE: 1.1em; FONT-WEIGHT: normal; PADDING-TOP: 0px } #editPanels .EditModes .xwikipanelcontents UL LI A { COLOR: #555 } #editPanels .EditModes .xwikipanelcontents UL LI A:hover { COLOR: #000 } #editPanels .EditModes .xwikipanelcontents UL LI.active { BACKGROUND-IMAGE: url(images/panel-m-active.png); TEXT-ALIGN: left; = LINE-HEIGHT: 30px; TEXT-TRANSFORM: uppercase; BACKGROUND-POSITION: right = top; HEIGHT: 30px; FONT-SIZE: 1.2em; FONT-WEIGHT: bold } #editPanels .EditModes .xwikipanelcontents UL LI.active A { COLOR: #000 } #editPanels .SyntaxHelp H5.xwikipaneltitle { DISPLAY: none } #editPanels .SyntaxHelp DIV.xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-e.png); TEXT-ALIGN: center; = PADDING-BOTTOM: 5px; LINE-HEIGHT: 20px; PADDING-LEFT: 10px; = PADDING-RIGHT: 25px; BACKGROUND-POSITION: right -100px; LETTER-SPACING: = -1px; HEIGHT: 40px; COLOR: #333; PADDING-TOP: 5px } #xwikihelpsyntax DIV.expanded.panel H5.hidden.xwikipaneltitle { DISPLAY: none } #xwikihelpsyntax DIV.expanded.panel DIV.xwikipanelcontents { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .placeholder { BACKGROUND-COLOR: #fff; WIDTH: 170px; MARGIN-LEFT: 10px; opacity: .1 } HTML > BODY #dragbox { WIDTH: 198px !important } #xwikinavcontainer { BACKGROUND-IMAGE: url(images/nav-inner.png); BORDER-BOTTOM: #999 1px = solid; BORDER-LEFT: #999 0px solid; MARGIN: 0px; BORDER-TOP: #999 0px = solid; BORDER-RIGHT: #999 0px solid } SPAN.pitemseparator { DISPLAY: none } .panelcontainer { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; = PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; HEIGHT: = 200px; OVERFLOW: hidden; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #fff = 1px solid; PADDING-TOP: 3px } .panelitemc { POSITION: relative; MARGIN: 0px 4px; WIDTH: 210px; FLOAT: left; HEIGHT: = 256px } .panelitemc .label { TEXT-ALIGN: center; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: transparent; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: = 2px } .accordionTabContentBox .panelitemc .label { COLOR: #fff } .panelitemc .xwikibuttonlink { BORDER-BOTTOM: #fff 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #fff = 1px solid; BACKGROUND-COLOR: transparent; COLOR: #eee; BORDER-TOP: 0px; = BORDER-RIGHT: #fff 1px solid } .panelitemc .xwikibuttonlink A { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; COLOR: = #eee; PADDING-TOP: 0px } .xwikipanelcontents DL DD { MARGIN-BOTTOM: 2em } .xwikipanelcontents DL DT { FONT-SIZE: 1.3em; FONT-WEIGHT: bold } .xwikipanelcontents DL DD TABLE#xwikiincludeddocuments TD { BORDER-TOP: #eee 1px dotted } .xwikipanelcontents DL DD TABLE#xwikiincludeddocuments TD A { POSITION: relative; WIDTH: 148px; DISPLAY: block; OVERFLOW: hidden } .xwikipanelcontents DL DD TABLE#xwikiincludeddocuments TD A:hover { OVERFLOW: visible } .xwikipanelcontents DL DD TABLE#xwikiincludeddocuments TD A SPAN { DISPLAY: inline } .xwikipanelcontents DL DD TABLE#xwikiincludeddocuments TD A:hover SPAN { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; MIN-WIDTH: 155px; = BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: = #fefee4; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; = BORDER-TOP: #aaa 1px solid; TOP: -1em; RIGHT: 0px; BORDER-RIGHT: #aaa = 1px solid; PADDING-TOP: 0px } .xwikipanelcontents DL DD TABLE#xwikiincludeddocuments = TD.xwikibuttonlink A { WIDTH: 20px; COLOR: blue } #xwikisyntaxhelp { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN-TOP: 0px; = FONT-SIZE: 0.9em; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .accordionTabTitleBar H6 { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #8799b3; MARGIN: 0px; = PADDING-LEFT: 4px; PADDING-RIGHT: 4px; FONT: bold 1em/1.1em sans-serif; = COLOR: #fff; PADDING-TOP: 4px } #panellistaccordion #xwikinav .accordionTabTitleBar H6 { BORDER-BOTTOM: #999 0px solid; BORDER-LEFT: #999 0px solid; = BACKGROUND-COLOR: #3a508d; MARGIN-TOP: 0px; COLOR: #ffffff; BORDER-TOP: = #999 1px solid; BORDER-RIGHT: #999 0px solid } #xwikinav .accordionTabTitleBar H6 { BORDER-BOTTOM: #999 0px solid; BORDER-LEFT: #999 0px solid; = BACKGROUND-COLOR: #3a508d; MARGIN-TOP: 0px; COLOR: #ffffff; BORDER-TOP: = #999 1px solid; BORDER-RIGHT: #999 0px solid } #xwikinav .accordionTabContentBox { BACKGROUND-IMAGE: url(images/nav-inner-jadex.png); BORDER-TOP: #999 1px = solid } #xwikinavcontainer #xwikinav .tbexpanded H6 { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: = 1px; BORDER-LEFT-WIDTH: 0px } #xwikieditcontent .accordionTabTitleBar H6 { BACKGROUND-IMAGE: url(images/accordion.png); BORDER-BOTTOM: #ccc 1px = solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #f0f0ee; MARGIN: 0px; = PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND-REPEAT: no-repeat; = BACKGROUND-POSITION: 0% 50%; LETTER-SPACING: -1px; HEIGHT: 20px; COLOR: = #333; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 4px } #panellistaccordion #xwikinav .accordionTabTitleBar H6 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; HEIGHT: auto; FONT-WEIGHT: bold; PADDING-TOP: 2px } #editPanels .accordionTabContentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; OVERFLOW: auto = !important; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #editPanels .accordionTabContentBox TABLE { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND-COLOR: = transparent; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .accordionTabContentBox TABLE TH { TEXT-ALIGN: center } #xwikihelptitlesContent H1 { TEXT-ALIGN: right; MARGIN: 0px } #xwikihelptitlesContent H2 { TEXT-ALIGN: right; MARGIN: 0px } #xwikihelptitlesContent H3 { TEXT-ALIGN: right; MARGIN: 0px } #xwikihelptitlesContent H4 { TEXT-ALIGN: right; MARGIN: 0px } #xwikihelptitlesContent H5 { TEXT-ALIGN: right; MARGIN: 0px } #xwikihelptitlesContent H6 { TEXT-ALIGN: right; MARGIN: 0px } .accordionTabTitleBar { MARGIN: 0px; CURSOR: default } .accordionTabContentBox { POSITION: relative; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; OVERFLOW: hidden; PADDING-TOP: 5px } #allviewpanels .accordionTabContentBox { BACKGROUND-IMAGE: url(images/menubg.png); PADDING-BOTTOM: 5px; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; OVERFLOW: auto !important; = PADDING-TOP: 5px } #panellistaccordion #xwikinav .accordionTabContentBox { BACKGROUND-IMAGE: none; OVERFLOW: auto !important } #xwikinav .accordionTabContentBox { OVERFLOW: auto !important } #xwikinav UL.minus { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 5px; PADDING-RIGHT: 5px; PADDING-TOP: 0px } #xwikisyntaxhelp TABLE TBODY TR { WIDTH: 175px; DISPLAY: block; BORDER-TOP: red 1px dashed } #xwikisyntaxhelp TABLE TBODY TR TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; WIDTH: 175px; PADDING-RIGHT: = 1px; DISPLAY: block; PADDING-TOP: 2px } #xwikisyntaxhelp TABLE TBODY TR TD TT { BACKGROUND-COLOR: #ccc } #xwikisyntaxhelp TABLE TBODY TR TD { BORDER-BOTTOM: red 0px solid; BORDER-LEFT: red 0px solid; WIDTH: 175px; = DISPLAY: block; BORDER-TOP: red 0px solid; BORDER-RIGHT: red 0px solid } #xwikisyntaxhelp .accordionTabContentBox { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #xwikisyntaxhelp TABLE TBODY TR TH { WIDTH: 100%; DISPLAY: block } #xwikihelplistsContent UL { MARGIN: 0px } #xwikihelplistsContent OL { MARGIN: 0px } #contentcolumn .large.panel { =09 } .accordionTabTitleBar TT { PADDING-BOTTOM: 0px; FONT-STYLE: normal; PADDING-LEFT: 4px; = PADDING-RIGHT: 4px; FONT-SIZE: 100%; PADDING-TOP: 0px } TD.label { TEXT-ALIGN: right; PADDING-RIGHT: 4px } #xwikiclassproperties { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: = #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } #xwikiobjects { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: = #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .center { TEXT-ALIGN: center } .padded { PADDING-BOTTOM: 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; = PADDING-TOP: 8px } .editactions { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; MARGIN-TOP: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } #historycontent TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; = PADDING-TOP: 2px } #xwikiuserprofile TH { TEXT-ALIGN: right; BACKGROUND-COLOR: transparent } #xwikiuserprofile TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; = PADDING-TOP: 4px } #xwikiuserprofile TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; = PADDING-TOP: 4px } #xwikiobjects TD { VERTICAL-ALIGN: top } HTML > BODY .xwikidatatable { WIDTH: 100% } TD DIV.pagelayoutoption { MARGIN: 0px auto; WIDTH: 106px } DIV.layoutmaquette { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 2px; WIDTH: = 100px; PADDING-RIGHT: 2px; HEIGHT: 100px; BORDER-TOP: #ddd 1px solid; = BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } DIV.lmleftcolumn { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa = 1px solid; BACKGROUND-COLOR: #ddd; WIDTH: 20px; FLOAT: left; HEIGHT: = 60px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.lmrightcolumn { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa = 1px solid; BACKGROUND-COLOR: #ddd; WIDTH: 20px; FLOAT: left; HEIGHT: = 60px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.lmrightcolumn { POSITION: relative; FLOAT: right } DIV.lmcontentcolumn { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; = BACKGROUND-COLOR: #eee; HEIGHT: 90px; BORDER-TOP: #aaa 1px solid; = BORDER-RIGHT: #aaa 1px solid } #leftcolumn DIV.lmcontentcolumn { MARGIN-LEFT: 24px } #rightcolumn DIV.lmcontentcolumn { MARGIN-RIGHT: 24px } #bothcolumns DIV.lmcontentcolumn { MARGIN-LEFT: 24px; MARGIN-RIGHT: 24px } DIV.pagelayoutoption:hover .layoutmaquette { BACKGROUND-COLOR: #ffd } DIV.pagelayoutoption:hover .lmcontentcolumn { BACKGROUND-COLOR: #ddd } DIV.pagelayoutoption:hover .lmleftcolumn { BACKGROUND-COLOR: #acf } DIV.pagelayoutoption:hover .lmrightcolumn { BACKGROUND-COLOR: #acf } DIV.pagelayoutoptions > TABLE { TEXT-ALIGN: center; WIDTH: 100% } DIV.pagelayoutoptions TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; = VERTICAL-ALIGN: bottom; PADDING-TOP: 2px } #selectedoption { =09 } #selectedoption .lmcontentcolumn { BACKGROUND-COLOR: #acf } #selectedoption .lmleftcolumn { BACKGROUND-COLOR: #369 } #selectedoption .lmrightcolumn { BACKGROUND-COLOR: #369 } .pagelayoutoption LABEL { COLOR: #aaa } #selectedoption LABEL { COLOR: #000 } .pagelayoutoption:hover LABEL { COLOR: #000 } .hastooltip { BORDER-BOTTOM: #000 1px dotted; CURSOR: help } #dhtmltooltip { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; TEXT-ALIGN: justify; = BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: = #ffd; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #aaa 1px solid; = BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } #panelwizardbuttons { TEXT-ALIGN: center; PADDING-BOTTOM: 8px; MARGIN: 1em 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 8px } .alleditcontent { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = BACKGROUND-COLOR: #f0f0ee; MARGIN: 10px 240px 20px 20px; BORDER-TOP: = #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .alladmincontent { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: = #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } BODY.importbody .alleditcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 30px 50px = 20px 20px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } BODY.exportbody .alleditcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 30px 50px = 20px 20px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } BODY.adminbody .alleditcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 30px 50px = 20px 20px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .alleditcontent LABEL { POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 5px; MARGIN: = 0px 0px 1em; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; = COLOR: #555; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 5px } #xwikidoctitleinput { MARGIN-TOP: 1em; WIDTH: 70% } #xwikicontent .floatcontainer { BORDER-BOTTOM: #333 2px solid; WIDTH: auto; OVERFLOW: hidden } #xwikieditcontent { BACKGROUND-COLOR: #fff } HTML > BODY #xwikieditcontent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } #xwikieditcontentinner { =09 } .editinfo { LINE-HEIGHT: 22px; LETTER-SPACING: 2px; HEIGHT: 22px; COLOR: #333; = FONT-SIZE: 1em } #edit { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1%; = BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } #xwikitext { CLEAR: both } #panelsBackground { BACKGROUND-COLOR: #384554; HEIGHT: 20px } * HTML FORM { MARGIN-TOP: 0px } .xwiki-form-listclass INPUT[type=3D'checkbox'] { DISPLAY: inline; FLOAT: none; MARGIN-RIGHT: 2px } .xwiki-form-listclass { MARGIN-RIGHT: 10px } DIV.attachment { BORDER-BOTTOM: white 2px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; CLEAR: both; FONT-SIZE: 85%; OVERFLOW: hidden; = PADDING-TOP: 10px } .attachment .mime { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-RIGHT: 8px; DISPLAY: = block; FLOAT: left } .attachment .information { POSITION: relative; OVERFLOW: hidden } .attachment .name { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; = PADDING-RIGHT: 6px; DISPLAY: block; FLOAT: left; FONT-SIZE: 1.35em; = PADDING-TOP: 0px } .attachment .version { DISPLAY: block } .attachment .meta { CLEAR: left } .attachment .xwikibuttonlinks { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; = PADDING-RIGHT: 10px; FLOAT: right; FONT-SIZE: 130%; PADDING-TOP: 4px } #xwikieditorinner { =09 } .editbody #globallinks { WIDTH: 200px } #editcolumn DIV.alleditcontent LABEL { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; MARGIN-BOTTOM: = 20px; PADDING-TOP: 0px } #editcolumn DIV.alleditcontent #pagetitle LABEL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: = #f0f0ee; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 0px; = PADDING-TOP: 10px } #editcolumn DIV.alleditcontent #pagetitle LABEL INPUT { WIDTH: 100% } DIV.accordion#xwikiclassproperties DT LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; = MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; = DISPLAY: block; FONT: 0.8em sans-serif; PADDING-TOP: 10px } DIV.accordion#xwikiobjects LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; = MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; = DISPLAY: block; FONT: 0.8em sans-serif; PADDING-TOP: 10px } #field_name_content DIV DL DD { BORDER-BOTTOM: #ccc 1px dashed; PADDING-BOTTOM: 0.5em } #editcolumn DIV.alleditcontent DIV.accordion#xwikiclassproperties DD = LABEL { TEXT-ALIGN: left; MARGIN: 0px; FONT-SIZE: 0.8em; FONT-WEIGHT: normal } DIV.accordion#xwikiclassproperties TEXTAREA { WIDTH: 98% } DIV.accordion#xwikiobjects TEXTAREA { WIDTH: 98% } DIV.accordion#xwikiclassproperties INPUT[type=3Dtext] { WIDTH: 98% } DIV.accordion#xwikiobjects INPUT[type=3Dtext] { WIDTH: 98% } DIV.accordion#xwikiclassproperties #xwikidoctitleinput { WIDTH: 40%; FONT-SIZE: 1em } .topbuttons { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f0f0ee; = PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT-SIZE: 1em; FONT-WEIGHT: = bold; PADDING-TOP: 10px } .bottombuttons { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f0f0ee; = PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT-SIZE: 1em; FONT-WEIGHT: = bold; PADDING-TOP: 10px } .topbuttons { MARGIN-BOTTOM: 1em } .bottombuttons INPUT[type=3Dtext] { WIDTH: 100%; MARGIN-BOTTOM: 1em } .leftmenu2 { TEXT-ALIGN: center; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #f0f0ee; = PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT-SIZE: 1.4em; BORDER-TOP: = #fff 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 8px } #body #fullscreen-dlg .leftmenu2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } #xwikieditcontent DIV DIV.leftmenu2 A IMG { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; = BACKGROUND-COLOR: #fff; MARGIN-LEFT: 3px; BORDER-TOP: #333 1px solid; = BORDER-RIGHT: #333 1px solid } .bottombuttons INPUT.button { MARGIN-TOP: 1.5em } #editcolumn { WIDTH: 100% } #_history .centered { MARGIN: 0px } #_history TABLE { MARGIN: 0px 0px 1em; WIDTH: 100%; BORDER-COLLAPSE: collapse; = BORDER-TOP: medium none } #_history TABLE TH { TEXT-ALIGN: center; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #f0f0ee; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-WEIGHT: bold; PADDING-TOP: = 5px } #_history TABLE TR.even.row { BACKGROUND-COLOR: #f0f4fa } #_history TABLE TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc = 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: = 5px } #panellistaccordion INPUT[type=3Dtext] { BACKGROUND-COLOR: #f9fcff; WIDTH: 100% } #panellistaccordion TEXTAREA { BACKGROUND-COLOR: #f9fcff; WIDTH: 100% } #body .panel INPUT[type=3Dtext] { BACKGROUND-COLOR: #f9fcff; WIDTH: 100% } #body .panel TEXTAREA { BACKGROUND-COLOR: #f9fcff; WIDTH: 100% } .viewbody FORM .centered INPUT[type=3Dtext] { WIDTH: auto } .xwikipanelcontents#leftPanels OL { MARGIN-LEFT: 1em } #leftPanels .xwikipanelcontents UL.minus { MARGIN-LEFT: 1em } .xwikipanelcontents#rightPanels OL { MARGIN-LEFT: 1em } #rightPanels .xwikipanelcontents UL.minus { MARGIN-LEFT: 1em } #leftPanels .xwikipanelcontents UL.star { MARGIN-BOTTOM: 1em; MARGIN-LEFT: 0em } #rightPanels .xwikipanelcontents UL.star { MARGIN-BOTTOM: 1em; MARGIN-LEFT: 0em } #leftPanels .xwikipanelcontents UL.star UL { MARGIN-LEFT: 2em } #rightPanels .xwikipanelcontents UL.star UL { MARGIN-LEFT: 2em } #leftPanels .xwikipanelcontents UL UL { LIST-STYLE-TYPE: none; MARGIN-LEFT: 2em } #rightPanels .xwikipanelcontents UL UL { LIST-STYLE-TYPE: none; MARGIN-LEFT: 2em } .panel INPUT { WIDTH: 100% } .panel SELECT { WIDTH: 100% } #editPanels DL DD INPUT { WIDTH: 100% } .buttonwrapper { MARGIN: 10px 0px 10px 10px; DISPLAY: inline; BACKGROUND: none = transparent scroll repeat 0% 0%; PADDING-TOP: 10px } #body .buttonwrapper * { BORDER-BOTTOM: #8f908e 1px solid; BORDER-LEFT: #8f908e 1px solid; = LINE-HEIGHT: 1.35em !important; MARGIN: 0px; MIN-HEIGHT: 24px = !important; DISPLAY: inline; WHITE-SPACE: nowrap; BACKGROUND: = url(images/buttons3.png) repeat-x right top; COLOR: #fff; BORDER-TOP: = #8f908e 1px solid; BORDER-RIGHT: #8f908e 1px solid } #body .buttonwrapper A { PADDING-BOTTOM: 3px; LINE-HEIGHT: 26px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; FONT-WEIGHT: bold; PADDING-TOP: 3px } #body .buttonwrapper A:hover { BORDER-BOTTOM-COLOR: #94ad12; BORDER-TOP-COLOR: #94ad12; BACKGROUND: = url(images/buttons3.png) repeat-x right 25%; COLOR: #333; = BORDER-RIGHT-COLOR: #94ad12; BORDER-LEFT-COLOR: #94ad12 } #body .buttonwrapper BUTTON:hover { BORDER-BOTTOM-COLOR: #94ad12; BORDER-TOP-COLOR: #94ad12; BACKGROUND: = url(images/buttons3.png) repeat-x right 25%; COLOR: #333; = BORDER-RIGHT-COLOR: #94ad12; BORDER-LEFT-COLOR: #94ad12 } #body .buttonwrapper INPUT.button:hover { BORDER-BOTTOM-COLOR: #94ad12; BORDER-TOP-COLOR: #94ad12; BACKGROUND: = url(images/buttons3.png) repeat-x right 25%; COLOR: #333; = BORDER-RIGHT-COLOR: #94ad12; BORDER-LEFT-COLOR: #94ad12 } BODY.importbody .alleditcontent .padded H3 { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 1em 0px; FONT-SIZE: 1.4em } BODY.exportbody .alleditcontent .padded H3 { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 1em 0px; FONT-SIZE: 1.4em } BODY.importbody #editcolumn .alleditcontent .padded FIELDSET { BORDER-BOTTOM: #eaeaf3 5px solid; BORDER-LEFT: #eaeaf3 5px solid; = BACKGROUND-COLOR: #eaeaf3; BORDER-TOP: #eaeaf3 25px solid; BORDER-RIGHT: = #eaeaf3 5px solid } BODY.exportbody #editcolumn .alleditcontent .padded fieldser { BORDER-BOTTOM: #eaeaf3 5px solid; BORDER-LEFT: #eaeaf3 5px solid; = BACKGROUND-COLOR: #eaeaf3; BORDER-TOP: #eaeaf3 25px solid; BORDER-RIGHT: = #eaeaf3 5px solid } BODY.importbody #editcolumn .alleditcontent .padded LABEL { TEXT-ALIGN: left; MARGIN: 0px } BODY.exportbody #editcolumn .alleditcontent .padded LABEL { TEXT-ALIGN: left; MARGIN: 0px } TABLE#searchTableUnique { WIDTH: 99.8% } TABLE#searchTableUnique TD SPAN.wikilink { =09 } TABLE#searchTableUnique TD.actions A { BORDER-BOTTOM: #fff 1px solid; POSITION: relative; BORDER-LEFT: #fff = 1px solid; BACKGROUND-COLOR: transparent; MARGIN: 8px 6px 0px 0px; = WIDTH: 16px; FLOAT: left; HEIGHT: 16px; OVERFLOW: hidden; BORDER-TOP: = #fff 1px solid; BORDER-RIGHT: #fff 1px solid } TABLE#searchTableUnique TR.sortHeader { BACKGROUND-COLOR: #eaf2fa; BORDER-COLLAPSE: collapse } TABLE#searchTableUnique TR.sortHeader TH { =09 } TABLE#searchTableUnique TH A { COLOR: #74abd7 } TABLE#searchTableUnique TD.actions A:hover { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: = #ccc; BORDER-LEFT-COLOR: #ccc } TABLE#searchTableUnique TD.actions A.copyaction { BACKGROUND-IMAGE: url(images/editcopy.png) } TABLE#searchTableUnique TD.actions A.deleteaction { BACKGROUND-IMAGE: url(images/edittrash.png) } TABLE#searchTableUnique TD.actions A.renameaction { BACKGROUND-IMAGE: url(images/filesaveas.png) } TABLE#searchTableUnique TD.actions A.rightaction { BACKGROUND-IMAGE: url(images/lock.png) } TABLE#searchTableUnique TD.actions A SPAN { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 16px } TABLE#referenceTable { WIDTH: 98% } TABLE#referenceTable INPUT { WIDTH: 98% } TABLE#referenceTableselect { WIDTH: 98% } TABLE#referenceTable INPUT#flt3_referenceTable { WIDTH: 59%; MARGIN-RIGHT: 1% } TABLE#referenceTable INPUT#btn3_referenceTable { WIDTH: 39% } .error { COLOR: #f00 } .fatalerror { BACKGROUND-COLOR: #f00; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold } .warning { COLOR: #c82 } DIV.errormessage { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px = solid; PADDING-BOTTOM: 8px; MARGIN: 4px 0px; PADDING-LEFT: 28px; = PADDING-RIGHT: 8px; BACKGROUND: url(icons/msg.png) #f5f5f5 no-repeat 8px = 8px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; = PADDING-TOP: 8px } DIV.warningmessage { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px = solid; PADDING-BOTTOM: 8px; MARGIN: 4px 0px; PADDING-LEFT: 28px; = PADDING-RIGHT: 8px; BACKGROUND: url(icons/msg.png) #f5f5f5 no-repeat 8px = 8px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; = PADDING-TOP: 8px } .infomessage { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px = solid; PADDING-BOTTOM: 8px; MARGIN: 4px 0px; PADDING-LEFT: 28px; = PADDING-RIGHT: 8px; BACKGROUND: url(icons/msg.png) #f5f5f5 no-repeat 8px = 8px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; = PADDING-TOP: 8px } DIV.plainmessage { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px = solid; PADDING-BOTTOM: 8px; MARGIN: 4px 0px; PADDING-LEFT: 28px; = PADDING-RIGHT: 8px; BACKGROUND: url(icons/msg.png) #f5f5f5 no-repeat 8px = 8px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; = PADDING-TOP: 8px } .infomessage { BACKGROUND-IMAGE: url(icons/msginfo.png); COLOR: #369 } DIV.plainmessage { BACKGROUND-IMAGE: none; COLOR: #369 } DIV.warningmessage { BACKGROUND-IMAGE: url(icons/msgwarning.png); COLOR: #c82 } DIV.errormessage { BACKGROUND-IMAGE: url(icons/msgerror.png); COLOR: #f00 } SPAN.messagetype { DISPLAY: none } DIV.floatinginfobox { BORDER-BOTTOM: #e4e4e5 1px solid; BORDER-LEFT: #e4e4e5 1px solid; = PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fafafd; MARGIN: 1em 0px 1em = 1em; PADDING-LEFT: 10px; WIDTH: auto; PADDING-RIGHT: 10px; FLOAT: right; = BORDER-TOP: #e4e4e5 1px solid; BORDER-RIGHT: #e4e4e5 1px solid; = PADDING-TOP: 10px } FIELDSET.floatinginfobox { BORDER-BOTTOM: #e4e4e5 1px solid; BORDER-LEFT: #e4e4e5 1px solid; = PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fafafd; MARGIN: 1em 0px 1em = 1em; PADDING-LEFT: 10px; WIDTH: auto; PADDING-RIGHT: 10px; FLOAT: right; = BORDER-TOP: #e4e4e5 1px solid; BORDER-RIGHT: #e4e4e5 1px solid; = PADDING-TOP: 10px } DIV.floatingboxinner { =09 } FIELDSET.floatingboxinner { =09 } DIV.floatinginfobox .strong { TEXT-ALIGN: center; DISPLAY: block; MARGIN-BOTTOM: 0.5em; = LETTER-SPACING: -1px; FONT-SIZE: 1.2em; FONT-WEIGHT: normal } FIELDSET.floatinginfobox .strong { TEXT-ALIGN: center; DISPLAY: block; MARGIN-BOTTOM: 0.5em; = LETTER-SPACING: -1px; FONT-SIZE: 1.2em; FONT-WEIGHT: normal } LI.tocEntry { LIST-STYLE-POSITION: outside; BACKGROUND-IMAGE: = url(images/bullet-1.png); PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4em; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left 0.25em; = PADDING-TOP: 0px } DIV.floatinginfobox LI { LIST-STYLE-POSITION: outside; BACKGROUND-IMAGE: = url(images/bullet-1.png); PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4em; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left 0.25em; = PADDING-TOP: 0px } FIELDSET.floatinginfobox LI { LIST-STYLE-POSITION: outside; BACKGROUND-IMAGE: = url(images/bullet-1.png); PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4em; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left 0.25em; = PADDING-TOP: 0px } DIV.floatinginfobox UL { LIST-STYLE-POSITION: outside; BACKGROUND-IMAGE: = url(images/bullet-1.png); PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4em; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left 0.25em; = PADDING-TOP: 0px } FIELDSET.floatinginfobox UL { LIST-STYLE-POSITION: outside; BACKGROUND-IMAGE: = url(images/bullet-1.png); PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4em; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: left 0.25em; = PADDING-TOP: 0px } DIV.floatinginfobox UL { BACKGROUND-IMAGE: none } FIELDSET.floatinginfobox UL { BACKGROUND-IMAGE: none } .imgfloatleft { FLOAT: left; MARGIN-RIGHT: 1em } .imgfloatright { FLOAT: right; MARGIN-LEFT: 1em } .imgleft { TEXT-ALIGN: left } .imgcenter { TEXT-ALIGN: center } .imgright { TEXT-ALIGN: right } .my-col-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 50%; PADDING-RIGHT: 0px; = FLOAT: left; PADDING-TOP: 0px } .my-col-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 50%; PADDING-RIGHT: 0px; = FLOAT: left; PADDING-TOP: 0px } .my-col-right DIV { PADDING-BOTTOM: 20px; PADDING-LEFT: 50px; PADDING-RIGHT: 20px; CLEAR: = none; PADDING-TOP: 20px } .my-col-left DIV { PADDING-BOTTOM: 20px; PADDING-LEFT: 50px; PADDING-RIGHT: 20px; CLEAR: = none; PADDING-TOP: 20px } .my-col-right IMG { FLOAT: left; PADDING-TOP: 20px } .my-col-left IMG { FLOAT: left; PADDING-TOP: 20px } TABLE.mceEditor { WIDTH: 100% } TABLE.mceEditor TEXTAREA { WIDTH: 100%; HEIGHT: 100% } .mceEditorContainer { POSITION: relative; WIDTH: 100%; DISPLAY: block; HEIGHT: 100% = !important } .mceToolbar { Z-INDEX: 30002 } .mceEditor TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } FORM#inline TEXTAREA { WIDTH: 100% } BODY.hideright #xwikimaincontainer { OVERFLOW-Y: auto } BODY.mceContentBody { MIN-WIDTH: 100px } #treeview TABLE { MARGIN: 0px } #treeview TABLE TD { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: = 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } .roundedbox { BORDER-BOTTOM: #fff 0px solid; BORDER-LEFT: #fff 1em solid; MARGIN: = 0em; BACKGROUND: url(images/rounded.png) no-repeat right bottom; = BORDER-TOP: #fff 0px solid; BORDER-RIGHT: #fff 1em solid } .roundedheader { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; BACKGROUND: url(images/rounded.png) no-repeat right = top; PADDING-TOP: 0px } .roundedheader H3 { PADDING-BOTTOM: 5px; LINE-HEIGHT: 1em; MARGIN: 0px; PADDING-LEFT: 10px; = PADDING-RIGHT: 10px; BACKGROUND: url(images/rounded.png) no-repeat left = top; COLOR: white; FONT-SIZE: 1.2em; FONT-WEIGHT: bold; PADDING-TOP: = 10px } .roundedbody { PADDING-BOTTOM: 31px; MARGIN: 0px; PADDING-LEFT: 30px; WIDTH: auto; = PADDING-RIGHT: 30px; BACKGROUND: url(images/rounded.png) no-repeat left = bottom; PADDING-TOP: 5px } #changescontent { =09 } #changescontent TABLE { MARGIN: 0px; WIDTH: 100% } #changescontent TABLE TR.changes-table-title TH { BORDER-BOTTOM: #fff 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 3px; = BACKGROUND-COLOR: #6b747f; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; COLOR: = #fff; FONT-SIZE: 1.1em; PADDING-TOP: 3px } #changescontent TABLE TR.changes-table-title + TR.changes-table-title TH = { BORDER-BOTTOM: #e4e4e4 4px solid; TEXT-ALIGN: left; PADDING-BOTTOM: = 1px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-SIZE: 0.75em; = PADDING-TOP: 1px } #changescontent TABLE TD { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND-COLOR: #f8f8f8 } DIV.diff { PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = WHITE-SPACE: normal; MARGIN-BOTTOM: -5px; OVERFLOW: auto; PADDING-TOP: = 0px } SPAN.diffremoveword { COLOR: #ca9a9b; TEXT-DECORATION: line-through } DIV.diffmodifiedline { MARGIN: 0.8em 0px } SPAN.diffaddword { COLOR: #287f00 } DIV#changes-info { BACKGROUND-IMAGE: url(images/DIFF-header.png); BACKGROUND-COLOR: = #919dac; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 50% -35px } #changes-title { BACKGROUND-IMAGE: url(images/rounded.png) !important; BACKGROUND-COLOR: = #6b747f; MARGIN-TOP: 2em } #changes-title H1 { BACKGROUND-IMAGE: url(images/rounded.png) !important; BORDER-BOTTOM: = #808c99 4px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 10px; = BORDER-TOP-COLOR: #808c99; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; = BACKGROUND-POSITION: right top; LETTER-SPACING: 1px; COLOR: #fff; = BORDER-RIGHT-COLOR: #808c99; FONT-SIZE: 1.4em; BORDER-LEFT-COLOR: = #808c99; PADDING-TOP: 10px } DIV#changes-info-boxes { BORDER-BOTTOM: #f4f9fe 0px solid; BORDER-LEFT: #f4f9fe 0px solid; = LINE-HEIGHT: 1.4em; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0em; = BORDER-TOP: #f4f9fe 0px solid; BORDER-RIGHT: #f4f9fe 0px solid } #changescontent .clearfloats { BACKGROUND-COLOR: transparent; HEIGHT: 1px; CLEAR: both; MARGIN-RIGHT: = 0px } DIV#changes-info-box-from { TEXT-ALIGN: center; WIDTH: 49%; FLOAT: left; COLOR: #fff; PADDING-TOP: = 1em } #changes-info-box-to { TEXT-ALIGN: center; COLOR: #fff; MARGIN-LEFT: 51%; PADDING-TOP: 1em } DIV.changes-info-title { FONT-SIZE: 1.4em; FONT-WEIGHT: bold } #changes-info-comment { TEXT-ALIGN: center; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; COLOR: #fff; PADDING-TOP: 1em } .specialmenu { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd = 1px solid; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #f2fdcb; MARGIN-TOP: = -1.3em; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #fff 0px = solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 3px } .specialmenu IMG { VERTICAL-ALIGN: middle } .specialmenu UL { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; DISPLAY: inline; PADDING-TOP: 5px } .specialmenu UL LI { LIST-STYLE-TYPE: none; DISPLAY: inline; LIST-STYLE-IMAGE: none } .xwikiuserblog { PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fafafd; PADDING-LEFT: 1px; = WIDTH: 250px; PADDING-RIGHT: 1px; FLOAT: right; PADDING-TOP: 1px } #lb-content .xwikiuserblog .rssfeed { POSITION: relative; BACKGROUND-COLOR: #fafafd; WIDTH: 250px; FLOAT: = right; CLEAR: both } .xwikiuserblog .rssfeed { POSITION: relative; BACKGROUND-COLOR: #fafafd; WIDTH: 250px; FLOAT: = right; CLEAR: both } #lb-content .xwikiuserblog .rssfeed DIV.rsschanneltitle { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 5px; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-WEIGHT: bold; PADDING-TOP: = 5px } .xwikiuserblog .rssfeed DIV.rsschanneltitle { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 5px; = PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-WEIGHT: bold; PADDING-TOP: = 5px } #lb-content .xwikiuserblog .rssfeed .rssitem { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } .xwikiuserblog .rssfeed .rssitem { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 5px } #lb-content H3 { CLEAR: both; PADDING-TOP: 1em } DIV.vcard H3 { CLEAR: both; PADDING-TOP: 1em } FORM#inline DIV.clear H3 { CLEAR: both } #lb-content .XWikiUsers_0_blog#XWiki { WIDTH: 200px } IMG.photo#xwikiuseravatar { MARGIN: 0px 1em 1em 0px; FLOAT: none } #lb-content IMG.photo#xwikiuseravatar { MARGIN: 0px 1em 1em 0px; WIDTH: 200px; FLOAT: right } #xwikiuserprofile DL { FONT-SIZE: 0.9em } #xwikiuserprofile DD.given-name { LETTER-SPACING: 2px; FONT-SIZE: 1.6em } #xwikiuserprofile DD.family-name { LETTER-SPACING: 2px; FONT-SIZE: 1.6em } #xwikiuserprofile { =09 } FORM#inline #xwikiuserprofile { =09 } FORM#inline #xwikiuserprofile { PADDING-BOTTOM: 2em } #lb-content #xwikiuserprofile { PADDING-BOTTOM: 2em } FORM#inline #xwikiuserprofile INPUT { WIDTH: 350px } #lb-content #xwikiuserprofile INPUT { WIDTH: 350px } FORM#inline #xwikiuserprofile LABEL { LINE-HEIGHT: 1.2em; FONT-SIZE: 1.4em } #lb-content #xwikiuserprofile LABEL { LINE-HEIGHT: 1.2em; FONT-SIZE: 1.4em } DIV.panellayoutcontainer-1col .panellayoutcol { WIDTH: 100% } DIV.panellayoutcontainer-2col .panellayoutcol { WIDTH: 50% } DIV.panellayoutcontainer-3col .panellayoutcol { WIDTH: 33% } DIV.panellayoutcontainer-4col .panellayoutcol { WIDTH: 25% } DIV.panellayoutcontainer-5col .panellayoutcol { WIDTH: 20% } DIV.panellayoutcontainer-1col { CLEAR: left; OVERFLOW: auto } DIV.panellayoutcontainer-2col { CLEAR: left; OVERFLOW: auto } DIV.panellayoutcontainer-3col { CLEAR: left; OVERFLOW: auto } DIV.panellayoutcontainer-4col { CLEAR: left; OVERFLOW: auto } DIV.panellayoutcontainer-5col { CLEAR: left; OVERFLOW: auto } .panellayoutcol { FLOAT: left; HEIGHT: 1%; OVERFLOW: auto } .panellayoutcol .panel { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px = 0px 20px 5%; WIDTH: 90%; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd = 1px solid } #xwikicontent .panel UL { LIST-STYLE-POSITION: inside; PADDING-BOTTOM: 0px; MARGIN: 0px 5px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #xwikicontent .panellayoutcol .panel .xwikipanelcontents { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: = transparent; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } #xwikicontent .panellayoutcol .panel .xwikipanelcontents A { COLOR: #000 } #xwikicontent .panellayoutcol .panel .xwikipanelcontents A:hover { COLOR: #06f } #xwikicontent .panellayoutcol .expanded .xwikipaneltitle { BACKGROUND: url(icons/black-less-cont.png) #aaa no-repeat 100% 50%; = COLOR: #fff } #xwikicontent .panellayoutcol .collapsed .xwikipaneltitle { BACKGROUND: url(icons/black-more-cont.png) #dcdce1 no-repeat 100% 50%; = HEIGHT: 30px; COLOR: #fff } #xwikicontent .panellayoutcol .expanded H5.xwikipaneltitle:hover { COLOR: #fff } #xwikicontent .panellayoutcol .collapsed H5.xwikipaneltitle:hover { COLOR: #fff } * HTML DIV { DISPLAY: inline-block } * HTML .buttonwrapper * { DISPLAY: inline-block } * HTML A { Z-INDEX: 1; POSITION: relative } * HTML #rightPanels { MARGIN-TOP: -27px; HEIGHT: 400px } #editPanels { MARGIN-TOP: -27px; HEIGHT: 400px } * HTML #globalsearch { MARGIN-BOTTOM: 1em } * HTML H5.xwikipaneltitle { BACKGROUND-IMAGE: url(images/panel-v.gif) } * HTML .collapsed H5.xwikipaneltitle { BACKGROUND-IMAGE: url(images/panel-v.gif) } * HTML .xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-v.gif) } * HTML .Search #globalsearch { BACKGROUND-IMAGE: url(images/search-bg.gif) } * HTML #editPanels .SyntaxHelp DIV.xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-e.gif) } #editPanels .expanded H5.xwikipaneltitle { BACKGROUND-IMAGE: url(images/panel-e.gif) } * HTML #editPanels .xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-e.gif) } * HTML #editPanels .EditModes .xwikipanelcontents UL LI.active { BACKGROUND-IMAGE: none } * HTML #editPanels .EditModes H5 { BACKGROUND-IMAGE: url(images/panel-m.gif) } * HTML #editPanels .EditModes .xwikipanelcontents { BACKGROUND-IMAGE: url(images/panel-m.gif) } * HTML #xwikicontent { OVERFLOW-Y: hidden; WIDTH: 100% } * HTML .minwidthd { DISPLAY: none } * HTML .minwidth { =09 } * HTML .minwidthb { =09 } * HTML .minwidthc { =09 } * HTML #contentcolumn .minwidthb { WIDTH: 740px; DISPLAY: block; MARGIN-RIGHT: 230px } * HTML #contentcolumn .minwidthd { WIDTH: 740px; DISPLAY: block; MARGIN-RIGHT: 230px } * HTML #headerspace .minwidth { WIDTH: 710px; DISPLAY: block } * HTML .minwidthc { =09 } * HTML .minwidthd { =09 } * HTML BODY #show-dialog-btn { TOP: 1px; RIGHT: 1px } * HTML UL.xwikitabbar { MARGIN: 0px } * HTML UL.xwikitabbar LI A { LINE-HEIGHT: 1em } * HTML .roundedbox { BACKGROUND-IMAGE: url(images/rounded.gif) } * HTML .roundedheader { BACKGROUND-IMAGE: url(images/rounded.gif) } * HTML .roundedheader H3 { BACKGROUND-IMAGE: url(images/rounded.gif) } * HTML .roundedbody { BACKGROUND-IMAGE: url(images/rounded.gif) } * HTML #lb #lb-content IMG.photo#xwikiuseravatar { WIDTH: 50px; FLOAT: left } * HTML PRE { WORD-WRAP: break-word } * HTML DIV.floatinginfobox { ZOOM: normal } * HTML FIELDSET.floatinginfobox { ZOOM: normal } * HTML FIELDSET.floatinginfobox * { ZOOM: normal } * HTML DIV.floatingboxinner { ZOOM: normal } * HTML FIELDSET.floatingboxinner { ZOOM: normal } * HTML DIV.floatingboxinner * { ZOOM: normal } * HTML FIELDSET.floatingboxinner * { ZOOM: normal } #lb-close { HEIGHT: 15px } * HTML #lb-content { MARGIN-TOP: -1px } * HTML #webhomeblogdisplay { WIDTH: 48% !important } * HTML #webhomeNewsdisplay { WIDTH: 48% !important } .main P { POSITION: static; BORDER-COLLAPSE: collapse } .rssfeed { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; = BORDER-RIGHT: 0px; PADDING-TOP: 0px } .rsschanneltitle { BACKGROUND-COLOR: #f4f9fe; DISPLAY: none } .rssitem { BORDER-BOTTOM: #d8dff2 1px solid; PADDING-BOTTOM: 5pt; = BACKGROUND-COLOR: #f7f8fd; PADDING-LEFT: 5pt; PADDING-RIGHT: 5pt; = MARGIN-BOTTOM: 30px; BORDER-TOP: #d8dff2 1px solid; PADDING-TOP: 5pt } .rssitemtitle { TEXT-ALIGN: center; COLOR: #0d297c; FONT-SIZE: 120% } #docExtraTabs { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: = 0px } #docExtrasTabsUl { FLOAT: left } #docExtraTabs UL.xwikitabbar { WIDTH: auto } #docextrapanes { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f9f9f9; PADDING-LEFT: 10px; = PADDING-RIGHT: 10px; CLEAR: both; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 10px } #docextraanchors { HEIGHT: 2em } #_information DD { PADDING-BOTTOM: 4px; PADDING-TOP: 4px } #_information DT { PADDING-BOTTOM: 4px; PADDING-TOP: 4px } INPUT#tags { WIDTH: 400px } #tageditsavesuccess { COLOR: green; MARGIN-LEFT: 6px } #tageditsaveerror { COLOR: red; MARGIN-LEFT: 6px } .center { TEXT-ALIGN: center } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: 7bit Content-Location: http://jadex.informatik.uni-hamburg.de/bin/skin/skins/toucan/style.css @import url( microformats.css ); @import url( fullscreenEdit.css ); @import url( css/table/table.css ); @import url( usersandgroups.css ); @import url( suggest/ajaxSuggest.css ); @import url( rss.css ); @import url( toucan.css ); ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/skin/skins/albatross/print.css #body { BACKGROUND-IMAGE: none !important; BORDER-BOTTOM: medium none; = BORDER-LEFT: medium none; PADDING-BOTTOM: 10px !important; = BACKGROUND-COLOR: #fff !important; MARGIN: 0px; PADDING-LEFT: 10px = !important; WIDTH: auto !important; PADDING-RIGHT: 10px !important; = FLOAT: none !important; OVERFLOW: visible !important; BORDER-TOP: medium = none; BORDER-RIGHT: medium none; PADDING-TOP: 10px !important } #xwikimaincontainer { BACKGROUND-IMAGE: none !important; BORDER-BOTTOM: medium none; = BORDER-LEFT: medium none; PADDING-BOTTOM: 10px !important; = BACKGROUND-COLOR: #fff !important; MARGIN: 0px; PADDING-LEFT: 10px = !important; WIDTH: auto !important; PADDING-RIGHT: 10px !important; = FLOAT: none !important; OVERFLOW: visible !important; BORDER-TOP: medium = none; BORDER-RIGHT: medium none; PADDING-TOP: 10px !important } #xwikimaincontainerinner { BACKGROUND-IMAGE: none !important; BORDER-BOTTOM: medium none; = BORDER-LEFT: medium none; PADDING-BOTTOM: 10px !important; = BACKGROUND-COLOR: #fff !important; MARGIN: 0px; PADDING-LEFT: 10px = !important; WIDTH: auto !important; PADDING-RIGHT: 10px !important; = FLOAT: none !important; OVERFLOW: visible !important; BORDER-TOP: medium = none; BORDER-RIGHT: medium none; PADDING-TOP: 10px !important } #xwikicontent { BACKGROUND-IMAGE: none !important; BORDER-BOTTOM: medium none; = BORDER-LEFT: medium none; PADDING-BOTTOM: 10px !important; = BACKGROUND-COLOR: #fff !important; MARGIN: 0px; PADDING-LEFT: 10px = !important; WIDTH: auto !important; PADDING-RIGHT: 10px !important; = FLOAT: none !important; OVERFLOW: visible !important; BORDER-TOP: medium = none; BORDER-RIGHT: medium none; PADDING-TOP: 10px !important } .edit_section { DISPLAY: none } #printcontainer { BORDER-BOTTOM: medium none; TEXT-ALIGN: justify; BORDER-LEFT: medium = none; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = FLOAT: none !important; OVERFLOW: visible !important; BORDER-TOP: medium = none; BORDER-RIGHT: medium none; PADDING-TOP: 10px } #rightPanels { DISPLAY: none } #leftPanels { DISPLAY: none } #actionmenu { DISPLAY: none } #globallinks { DISPLAY: none } #headerspace { MARGIN: 0px } #contentcolumn .main { MARGIN: 0px } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/yui/treeview/assets/tree.css .ygtvtn { WIDTH: 16px; BACKGROUND: url(tn.gif) no-repeat 0px 0px; HEIGHT: 22px } .ygtvtm { WIDTH: 16px; BACKGROUND: url(tm.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvtmh { WIDTH: 16px; BACKGROUND: url(tmh.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvtp { WIDTH: 16px; BACKGROUND: url(tp.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvtph { WIDTH: 16px; BACKGROUND: url(tph.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvln { WIDTH: 16px; BACKGROUND: url(ln.gif) no-repeat 0px 0px; HEIGHT: 22px } .ygtvlm { WIDTH: 16px; BACKGROUND: url(lm.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvlmh { WIDTH: 16px; BACKGROUND: url(lmh.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvlp { WIDTH: 16px; BACKGROUND: url(lp.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvlph { WIDTH: 16px; BACKGROUND: url(lph.gif) no-repeat 0px 0px; HEIGHT: 22px; = CURSOR: pointer } .ygtvloading { WIDTH: 16px; BACKGROUND: url(loading.gif) no-repeat 0px 0px; HEIGHT: = 22px } .ygtvdepthcell { WIDTH: 16px; BACKGROUND: url(vline.gif) no-repeat 0px 0px; HEIGHT: 22px } .ygtvblankdepthcell { WIDTH: 16px; HEIGHT: 22px } .ygtvitem { =09 } .ygtvchildren { =09 } * HTML .ygtvchildren { HEIGHT: 2% } .ygtvlabel { MARGIN-LEFT: 2px; TEXT-DECORATION: none } .ygtvlabel:link { MARGIN-LEFT: 2px; TEXT-DECORATION: none } .ygtvlabel:visited { MARGIN-LEFT: 2px; TEXT-DECORATION: none } .ygtvlabel:hover { MARGIN-LEFT: 2px; TEXT-DECORATION: none } .ygtvspacer { MARGIN: 2px; WIDTH: 10px; HEIGHT: 10px } .ygtvcheck0 { WIDTH: 16px; BACKGROUND: url(./check0.gif) no-repeat 0px 0px; HEIGHT: = 22px; CURSOR: pointer } .ygtvcheck1 { WIDTH: 16px; BACKGROUND: url(./check1.gif) no-repeat 0px 0px; HEIGHT: = 22px; CURSOR: pointer } .ygtvcheck2 { WIDTH: 16px; BACKGROUND: url(./check2.gif) no-repeat 0px 0px; HEIGHT: = 22px; CURSOR: pointer } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/skin/skins/albatross/css/lightbox/lightbox.css .rounded .top * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; HEIGHT: 1px; OVERFLOW: = hidden; BORDER-TOP: #a9b6c3 0px solid; BORDER-RIGHT: #a9b6c3 1px solid } .rounded .bottom * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; HEIGHT: 1px; OVERFLOW: = hidden; BORDER-TOP: #a9b6c3 0px solid; BORDER-RIGHT: #a9b6c3 1px solid } .roundedlight .top * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; HEIGHT: 1px; OVERFLOW: = hidden; BORDER-TOP: #a9b6c3 0px solid; BORDER-RIGHT: #a9b6c3 1px solid } .roundedlight .bottom * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; HEIGHT: 1px; OVERFLOW: = hidden; BORDER-TOP: #a9b6c3 0px solid; BORDER-RIGHT: #a9b6c3 1px solid } .roundedlight .b1 { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 5px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .roundedlight .b1b { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 5px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .roundedlight .b2 { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 3px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .roundedlight .b2b { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 3px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .roundedlight .b3 { MARGIN: 0pt 2px } .roundedlight .b3b { MARGIN: 0pt 2px } .roundedlight .b4 { MARGIN: 0px 1px; HEIGHT: 2px } .roundedlight .b4b { MARGIN: 0px 1px; HEIGHT: 2px } .rounded .b1 { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 16px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .rounded .b1b { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 16px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .rounded .b2 { BORDER-RIGHT-WIDTH: 3px; MARGIN: 0px 13px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 3px } .rounded .b2b { BORDER-RIGHT-WIDTH: 3px; MARGIN: 0px 13px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 3px } .rounded .b3 { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 11px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b3b { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 11px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b4 { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 9px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b4b { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 9px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b5 { MARGIN: 0px 8px } .rounded .b5b { MARGIN: 0px 8px } .rounded .b6 { MARGIN: 0px 7px } .rounded .b6b { MARGIN: 0px 7px } .rounded .b7 { MARGIN: 0px 6px } .rounded .b7b { MARGIN: 0px 6px } .rounded .b8 { MARGIN: 0px 5px } .rounded .b8b { MARGIN: 0px 5px } .rounded .b9 { MARGIN: 0px 4px } .rounded .b9b { MARGIN: 0px 4px } .rounded .b10 { MARGIN: 0px 3px; HEIGHT: 2px } .rounded .b10b { MARGIN: 0px 3px; HEIGHT: 2px } .rounded .b11 { MARGIN: 0px 2px; HEIGHT: 2px } .rounded .b11b { MARGIN: 0px 2px; HEIGHT: 2px } .rounded .b12 { MARGIN: 0px 1px; HEIGHT: 3px } .rounded .b12b { MARGIN: 0px 1px; HEIGHT: 3px } #lb-bg { BACKGROUND-IMAGE: = url(/skins/albatross/icons/rights%2Dmanager/back.png); Z-INDEX: 100000; = POSITION: fixed; WIDTH: 100%; BACKGROUND-REPEAT: repeat; HEIGHT: 100%; = OVERFLOW: auto; TOP: 0px; LEFT: 0px } #lb INPUT[type=3Dtext] { CURSOR: text } #lb TEXTAREA { CURSOR: text } #lb BUTTON { CURSOR: pointer } #lb-align { Z-INDEX: 100002; POSITION: absolute; TEXT-ALIGN: center; MIN-HEIGHT: = 100%; WIDTH: 100%; VERTICAL-ALIGN: middle; LEFT: 0px } #lb { Z-INDEX: 100005; POSITION: absolute; WIDTH: 900px; MARGIN-LEFT: -450px; = TOP: 50px; LEFT: 50% } .lb-content { BORDER-BOTTOM: #a9b6c3 0px solid; TEXT-ALIGN: center; BORDER-LEFT: = #a9b6c3 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; BACKGROUND: #eef3f6; BORDER-TOP: #a9b6c3 0px solid; = BORDER-RIGHT: #a9b6c3 1px solid; PADDING-TOP: 0px } #lb-top { =09 } #lb-bottom { =09 } .lb-squarred { BORDER-BOTTOM: #a9b6c3 1px solid; BORDER-LEFT: #a9b6c3 1px solid; = BACKGROUND: #eef3f6; BORDER-TOP: #a9b6c3 1px solid; BORDER-RIGHT: = #a9b6c3 1px solid } #lb-bottom .lb-squarred { BORDER-TOP-WIDTH: 0px } #lb-top .lb-squarred { BORDER-BOTTOM-WIDTH: 0px } #lb-content H1 { MARGIN-TOP: 0px; PADDING-TOP: 0px } #lb-content H2 { MARGIN-TOP: 0px; PADDING-TOP: 0px } #lb-content H3 { MARGIN-TOP: 0px; PADDING-TOP: 0px } * + HTML #lb-top .roundedlight { MARGIN-TOP: -1em } * HTML #lb-top .roundedlight { MARGIN-TOP: -1em } * HTML #lb-bottom .roundedlight { MARGIN-TOP: -1em } * + HTML #lb-top .rounded { MARGIN-TOP: -1em } * HTML #lb-top .rounded { MARGIN-TOP: -1em } * HTML #lb-bottom .rounded { MARGIN-TOP: 0em } * + HTML #lb-top .rounded .b1 { MARGIN-BOTTOM: -0.15em } * HTML #lb-top .rounded .b1 { MARGIN-BOTTOM: -0.15em } * + HTML #lb-top .roundedlight .b1 { MARGIN-BOTTOM: -0.15em } * HTML #lb-top .roundedlight .b1 { MARGIN-BOTTOM: -0.15em } * + HTML #lb-bottom .rounded .b12b { MARGIN-BOTTOM: -0.1em } * HTML #lb-bottom .rounded .b12b { MARGIN-BOTTOM: -0.1em } * + HTML #lb-bottom .roundedlight .b4b { MARGIN-BOTTOM: -0.1em } * HTML #lb-bottom .roundedlight .b4b { MARGIN-BOTTOM: -0.1em } #lb .lb-content { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; = PADDING-TOP: 0px } .lb-content { TEXT-ALIGN: left; OVERFLOW: hidden } #close-wrap { POSITION: relative; TEXT-ALIGN: right; TOP: 30px; CURSOR: default } #lb-close { BACKGROUND-IMAGE: = url(/skins/albatross/icons/rights%2Dmanager/btnClose.png); WIDTH: 30px; = BACKGROUND-REPEAT: no-repeat; MARGIN-LEFT: auto; CURSOR: pointer; = MARGIN-RIGHT: 10px } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: text/css; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/skin/skins/albatross/css/lightbox/lightboxIE.css .rounded .top * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 1px; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; ZOOM: 1; DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; = HEIGHT: 1px; OVERFLOW: hidden; BORDER-TOP: #a9b6c3 0px solid; = BORDER-RIGHT: #a9b6c3 1px solid; PADDING-TOP: 0px } .rounded .bottom * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 1px; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; ZOOM: 1; DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; = HEIGHT: 1px; OVERFLOW: hidden; BORDER-TOP: #a9b6c3 0px solid; = BORDER-RIGHT: #a9b6c3 1px solid; PADDING-TOP: 0px } .roundedlight .top * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 1px; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; ZOOM: 1; DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; = HEIGHT: 1px; OVERFLOW: hidden; BORDER-TOP: #a9b6c3 0px solid; = BORDER-RIGHT: #a9b6c3 1px solid; PADDING-TOP: 0px } .roundedlight .bottom * { BORDER-BOTTOM: #a9b6c3 0px solid; BORDER-LEFT: #a9b6c3 1px solid; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 1px; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; ZOOM: 1; DISPLAY: block; BACKGROUND: #eef3f6 0% 50%; = HEIGHT: 1px; OVERFLOW: hidden; BORDER-TOP: #a9b6c3 0px solid; = BORDER-RIGHT: #a9b6c3 1px solid; PADDING-TOP: 0px } .rounded { HEIGHT: 16px } .rounded .top { HEIGHT: 16px } .rounded .bottom { HEIGHT: 16px } .roundedlight { HEIGHT: 5px } .roundedlight .top { HEIGHT: 5px } .roundedlight .bottom { HEIGHT: 5px } .roundedlight .b1 { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 5px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .roundedlight .b1b { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 5px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .roundedlight .b2 { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 3px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .roundedlight .b2b { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 3px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .roundedlight .b3 { MARGIN: 0pt 2px } .roundedlight .b3b { MARGIN: 0pt 2px } .roundedlight .b4 { MARGIN: 0px 1px; HEIGHT: 2px } .roundedlight .b4b { MARGIN: 0px 1px; HEIGHT: 2px } .rounded .b1 { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 16px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .rounded .b1b { BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 16px; BACKGROUND: #a9b6c3 0% 50%; = BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .rounded .b2 { BORDER-RIGHT-WIDTH: 3px; MARGIN: 0px 13px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 3px } .rounded .b2b { BORDER-RIGHT-WIDTH: 3px; MARGIN: 0px 13px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 3px } .rounded .b3 { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 11px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b3b { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 11px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b4 { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 9px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b4b { BORDER-RIGHT-WIDTH: 2px; MARGIN: 0px 9px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 2px } .rounded .b5 { MARGIN: 0px 8px } .rounded .b5b { MARGIN: 0px 8px } .rounded .b6 { MARGIN: 0px 7px } .rounded .b6b { MARGIN: 0px 7px } .rounded .b7 { MARGIN: 0px 6px } .rounded .b7b { MARGIN: 0px 6px } .rounded .b8 { MARGIN: 0px 5px } .rounded .b8b { MARGIN: 0px 5px } .rounded .b9 { MARGIN: 0px 4px } .rounded .b9b { MARGIN: 0px 4px } .rounded .b10 { MARGIN: 0px 3px; HEIGHT: 2px } .rounded .b10b { MARGIN: 0px 3px; HEIGHT: 2px } .rounded .b11 { MARGIN: 0px 2px; HEIGHT: 2px } .rounded .b11b { MARGIN: 0px 2px; HEIGHT: 2px } .rounded .b12 { MARGIN: 0px 1px; HEIGHT: 3px } .rounded .b12b { MARGIN: 0px 1px; HEIGHT: 3px } #lb-bg { Z-INDEX: 100000; POSITION: absolute; FILTER: alpha(opacity=3D70); = BACKGROUND-COLOR: #000; WIDTH: 100%; HEIGHT: 100%; OVERFLOW: auto; TOP: = 0px; LEFT: 0px; opacity: 0.7 } #lb INPUT[type=3Dtext] { CURSOR: text } #lb TEXTAREA { CURSOR: text } #lb BUTTON { CURSOR: hand } #lb-align { Z-INDEX: 100002; POSITION: absolute; TEXT-ALIGN: center; MIN-HEIGHT: = 100%; WIDTH: 100%; VERTICAL-ALIGN: middle; LEFT: 0px } #lb { Z-INDEX: 100005; POSITION: absolute; WIDTH: 900px; MARGIN-LEFT: -450px; = TOP: 50px; LEFT: 50% } .lb-content { BORDER-BOTTOM: #a9b6c3 0px solid; TEXT-ALIGN: center; BORDER-LEFT: = #a9b6c3 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; BACKGROUND: #eef3f6; BORDER-TOP: #a9b6c3 0px solid; = BORDER-RIGHT: #a9b6c3 1px solid; PADDING-TOP: 0px } #lb UL LI { _zoom: 1 } #lb-top { =09 } #lb-bottom { =09 } .lb-squarred { BORDER-BOTTOM: #a9b6c3 1px solid; BORDER-LEFT: #a9b6c3 1px solid; = BACKGROUND: #eef3f6; BORDER-TOP: #a9b6c3 1px solid; BORDER-RIGHT: = #a9b6c3 1px solid } #lb-bottom .lb-squarred { BORDER-TOP-WIDTH: 0px } #lb-top .lb-squarred { BORDER-BOTTOM-WIDTH: 0px } #lb-content H1 { MARGIN-TOP: 0px; PADDING-TOP: 0px } #lb-content H2 { MARGIN-TOP: 0px; PADDING-TOP: 0px } #lb-content H3 { MARGIN-TOP: 0px; PADDING-TOP: 0px } #lb-top .roundedlight { MARGIN-TOP: -0.9em; MARGIN-BOTTOM: -0.15em } #lb-bottom .roundedlight { MARGIN-TOP: -0.75em } #lb-top .rounded { MARGIN-TOP: 0em; MARGIN-BOTTOM: 0em } #lb-bottom .rounded { MARGIN-TOP: -0.2em } * + HTML #lb-top .rounded .b1 { MARGIN-BOTTOM: -1em } * HTML #lb-top .rounded .b1 { MARGIN-BOTTOM: -1em } * + HTML #lb-top .roundedlight .b1 { MARGIN-BOTTOM: -1em } * HTML #lb-top .roundedlight .b1 { MARGIN-BOTTOM: -1em } * + HTML #lb-bottom .rounded .b12b { MARGIN-BOTTOM: -1em } * HTML #lb-bottom .rounded .b12b { MARGIN-BOTTOM: -1em } * + HTML #lb-bottom .roundedlight .b4b { MARGIN-BOTTOM: -1em } * HTML #lb-bottom .roundedlight .b4b { MARGIN-BOTTOM: -1em } #lb .lb-content { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; = PADDING-TOP: 0px } .lb-content { TEXT-ALIGN: left; OVERFLOW: hidden } #close-wrap { POSITION: relative; TEXT-ALIGN: right; TOP: 30px; CURSOR: default } #lb-close { BACKGROUND-IMAGE: = url(/skins/albatross/icons/rights%2Dmanager/btnClose.png); WIDTH: 30px; = BACKGROUND-REPEAT: no-repeat; MARGIN-LEFT: auto; CURSOR: pointer; = MARGIN-RIGHT: 10px } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/skins/albatross/skin.js =0A= // Thanks to the great article from Paul Sowden=0A= // http://www.alistapart.com/articles/alternate/=0A= // No copyright on this file.=0A= =0A= function setActiveStyleSheet(title) {=0A= var i, a, main;=0A= for(i=3D0; (a =3D document.getElementsByTagName("link")[i]); i++) {=0A= if(a.getAttribute("rel").indexOf("style") !=3D -1 && = a.getAttribute("title")) {=0A= a.disabled =3D true;=0A= if(a.getAttribute("title") =3D=3D title) a.disabled =3D false;=0A= }=0A= }=0A= }=0A= =0A= function getActiveStyleSheet() {=0A= var i, a;=0A= for(i=3D0; (a =3D document.getElementsByTagName("link")[i]); i++) {=0A= if(a.getAttribute("rel").indexOf("style") !=3D -1 && = a.getAttribute("title") && !a.disabled) return a.getAttribute("title");=0A= }=0A= return null;=0A= }=0A= =0A= function getPreferredStyleSheet() {=0A= var i, a;=0A= for(i=3D0; (a =3D document.getElementsByTagName("link")[i]); i++) {=0A= if(a.getAttribute("rel").indexOf("style") !=3D -1=0A= && a.getAttribute("rel").indexOf("alt") =3D=3D -1=0A= && a.getAttribute("title")=0A= ) return a.getAttribute("title");=0A= }=0A= return null;=0A= }=0A= =0A= function createCookie(name,value,days) {=0A= if (days) {=0A= var date =3D new Date();=0A= date.setTime(date.getTime()+(days*24*60*60*1000));=0A= var expires =3D "; expires=3D"+date.toGMTString();=0A= }=0A= else expires =3D "";=0A= document.cookie =3D name+"=3D"+value+expires+"; path=3D/";=0A= }=0A= =0A= function readCookie(name) {=0A= var nameEQ =3D name + "=3D";=0A= var ca =3D document.cookie.split(';');=0A= for(var i=3D0;i < ca.length;i++) {=0A= var c =3D ca[i];=0A= while (c.charAt(0)=3D=3D' ') c =3D c.substring(1,c.length);=0A= if (c.indexOf(nameEQ) =3D=3D 0) return = c.substring(nameEQ.length,c.length);=0A= }=0A= return null;=0A= }=0A= =0A= window.onload =3D function(e) {=0A= var cookie =3D readCookie("style");=0A= var title =3D cookie ? cookie : getPreferredStyleSheet();=0A= setActiveStyleSheet(title);=0A= externalLinks();=0A= }=0A= =0A= window.onunload =3D function(e) {=0A= var title =3D getActiveStyleSheet();=0A= createCookie("style", title, 365);=0A= }=0A= =0A= var cookie =3D readCookie("style");=0A= var title =3D cookie ? cookie : getPreferredStyleSheet();=0A= setActiveStyleSheet(title);=0A= =0A= var XWiki =3D {=0A= Version: '0.8_pre1',=0A= require: function(libraryName) {=0A= // inserting via DOM fails in Safari 2.0, so brute force approach=0A= document.write('');=0A= },=0A= addLibrary: function(scriptLibraryName) {=0A= JSfileName =3D 'skin.js'; // This should be added in a xwiki.js file = 'xwiki.js'=0A= if(scriptLibraryName=3D=3D'scriptaculous') {=0A= libraries =3D ['prototype.js', 'util.js', 'effects.js', 'dragdrop.js', = 'controls.js'];=0A= }=0A= if(scriptLibraryName=3D=3D'rico') {=0A= libraries =3D ['rico.js'];=0A= }=0A= var scriptTags =3D document.getElementsByTagName("script");=0A= for(var i=3D0;i]*)>", "ig")=0A= results =3D data.match(myRE)=0A= if (results&&results.length>0) =0A= result =3D true;=0A= =0A= myRE2 =3D new RegExp("(#(set|include|if|end|for)|#(#) Advanced = content|public class|/\* Advanced content \*/)", "ig")=0A= results =3D data.match(myRE2)=0A= if (results&&results.length>0) =0A= result =3D true;=0A= =0A= if (result=3D=3Dtrue) =0A= return confirm(message);=0A= =0A= return true;=0A= }=0A= =0A= var currentfield =3D "";=0A= function show(fieldname) {=0A= if (currentfield!=3D"")=0A= document.getElementById(currentfield).style.display=3D"none";=0A= document.getElementById(fieldname).style.display=3D"block";=0A= currentfield =3D fieldname;=0A= }=0A= =0A= function addUser(form, prefix) {=0A= var username =3D form[prefix + "newuser"].value;=0A= var select =3D form[prefix + "users"][0];=0A= if (username !=3D null && username !=3D "") {=0A= length =3D select.options.length ;=0A= dusername =3D username;=0A= if (username.indexOf('.')=3D=3D-1) {=0A= xusername =3D "XWiki." + username;=0A= }=0A= else {=0A= if (username.indexOf(":")=3D=3D-1) {=0A= dusername =3D username.substring(username.lastIndexOf(".")+1);=0A= }=0A= xusername =3D username=0A= }=0A= select.options[length] =3D new Option(dusername, xusername, = true);=0A= }=0A= }=0A= =0A= function addGroup(form, prefix) {=0A= var groupname =3D form[prefix + "newgroup"].value;=0A= var select =3D form[prefix + "groups"][0];=0A= if (groupname !=3D null && groupname !=3D "") {=0A= length =3D select.options.length ;=0A= dgroupname =3D groupname;=0A= if (groupname.indexOf('.')=3D=3D-1) {=0A= xgroupname =3D "XWiki." + groupname;=0A= }=0A= else {=0A= if (groupname.indexOf(":")=3D=3D-1)=0A= dgroupname =3D = groupname.substring(groupname.lastIndexOf(".")+1);=0A= xgroupname =3D groupname=0A= }=0A= select.options[length] =3D new Option(dgroupname, xgroupname, = true);=0A= }=0A= }=0A= ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/prototype.js /* Prototype JavaScript framework, version 1.6.0.1=0A= * (c) 2005-2007 Sam Stephenson=0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= * For details, see the Prototype web site: http://www.prototypejs.org/=0A= *=0A= = *------------------------------------------------------------------------= --*/=0A= =0A= var Prototype =3D {=0A= Version: '1.6.0.1',=0A= =0A= Browser: {=0A= IE: !!(window.attachEvent && !window.opera),=0A= Opera: !!window.opera,=0A= WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A= Gecko: navigator.userAgent.indexOf('Gecko') > -1 && = navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A= MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A= },=0A= =0A= BrowserFeatures: {=0A= XPath: !!document.evaluate,=0A= ElementExtensions: !!window.HTMLElement,=0A= SpecificElementExtensions:=0A= document.createElement('div').__proto__ &&=0A= document.createElement('div').__proto__ !=3D=3D=0A= document.createElement('form').__proto__=0A= },=0A= =0A= ScriptFragment: ']*>([\\S\\s]*?)<\/script>',=0A= JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A= =0A= emptyFunction: function() { },=0A= K: function(x) { return x }=0A= };=0A= =0A= if (Prototype.Browser.MobileSafari)=0A= Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A= =0A= =0A= /* Based on Alex Arnell's inheritance implementation. */=0A= var Class =3D {=0A= create: function() {=0A= var parent =3D null, properties =3D $A(arguments);=0A= if (Object.isFunction(properties[0]))=0A= parent =3D properties.shift();=0A= =0A= function klass() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= =0A= Object.extend(klass, Class.Methods);=0A= klass.superclass =3D parent;=0A= klass.subclasses =3D [];=0A= =0A= if (parent) {=0A= var subclass =3D function() { };=0A= subclass.prototype =3D parent.prototype;=0A= klass.prototype =3D new subclass;=0A= parent.subclasses.push(klass);=0A= }=0A= =0A= for (var i =3D 0; i < properties.length; i++)=0A= klass.addMethods(properties[i]);=0A= =0A= if (!klass.prototype.initialize)=0A= klass.prototype.initialize =3D Prototype.emptyFunction;=0A= =0A= klass.prototype.constructor =3D klass;=0A= =0A= return klass;=0A= }=0A= };=0A= =0A= Class.Methods =3D {=0A= addMethods: function(source) {=0A= var ancestor =3D this.superclass && this.superclass.prototype;=0A= var properties =3D Object.keys(source);=0A= =0A= if (!Object.keys({ toString: true }).length)=0A= properties.push("toString", "valueOf");=0A= =0A= for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A= var property =3D properties[i], value =3D source[property];=0A= if (ancestor && Object.isFunction(value) &&=0A= value.argumentNames().first() =3D=3D "$super") {=0A= var method =3D value, value =3D Object.extend((function(m) {=0A= return function() { return ancestor[m].apply(this, arguments) = };=0A= })(property).wrap(method), {=0A= valueOf: function() { return method },=0A= toString: function() { return method.toString() }=0A= });=0A= }=0A= this.prototype[property] =3D value;=0A= }=0A= =0A= return this;=0A= }=0A= };=0A= =0A= var Abstract =3D { };=0A= =0A= Object.extend =3D function(destination, source) {=0A= for (var property in source)=0A= destination[property] =3D source[property];=0A= return destination;=0A= };=0A= =0A= Object.extend(Object, {=0A= inspect: function(object) {=0A= try {=0A= if (Object.isUndefined(object)) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : object.toString();=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= },=0A= =0A= toJSON: function(object) {=0A= var type =3D typeof object;=0A= switch (type) {=0A= case 'undefined':=0A= case 'function':=0A= case 'unknown': return;=0A= case 'boolean': return object.toString();=0A= }=0A= =0A= if (object =3D=3D=3D null) return 'null';=0A= if (object.toJSON) return object.toJSON();=0A= if (Object.isElement(object)) return;=0A= =0A= var results =3D [];=0A= for (var property in object) {=0A= var value =3D Object.toJSON(object[property]);=0A= if (!Object.isUndefined(value))=0A= results.push(property.toJSON() + ': ' + value);=0A= }=0A= =0A= return '{' + results.join(', ') + '}';=0A= },=0A= =0A= toQueryString: function(object) {=0A= return $H(object).toQueryString();=0A= },=0A= =0A= toHTML: function(object) {=0A= return object && object.toHTML ? object.toHTML() : = String.interpret(object);=0A= },=0A= =0A= keys: function(object) {=0A= var keys =3D [];=0A= for (var property in object)=0A= keys.push(property);=0A= return keys;=0A= },=0A= =0A= values: function(object) {=0A= var values =3D [];=0A= for (var property in object)=0A= values.push(object[property]);=0A= return values;=0A= },=0A= =0A= clone: function(object) {=0A= return Object.extend({ }, object);=0A= },=0A= =0A= isElement: function(object) {=0A= return object && object.nodeType =3D=3D 1;=0A= },=0A= =0A= isArray: function(object) {=0A= return object && object.constructor =3D=3D=3D Array;=0A= },=0A= =0A= isHash: function(object) {=0A= return object instanceof Hash;=0A= },=0A= =0A= isFunction: function(object) {=0A= return typeof object =3D=3D "function";=0A= },=0A= =0A= isString: function(object) {=0A= return typeof object =3D=3D "string";=0A= },=0A= =0A= isNumber: function(object) {=0A= return typeof object =3D=3D "number";=0A= },=0A= =0A= isUndefined: function(object) {=0A= return typeof object =3D=3D "undefined";=0A= }=0A= });=0A= =0A= Object.extend(Function.prototype, {=0A= argumentNames: function() {=0A= var names =3D = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv= oke("strip");=0A= return names.length =3D=3D 1 && !names[0] ? [] : names;=0A= },=0A= =0A= bind: function() {=0A= if (arguments.length < 2 && Object.isUndefined(arguments[0])) return = this;=0A= var __method =3D this, args =3D $A(arguments), object =3D = args.shift();=0A= return function() {=0A= if(typeof $A =3D=3D 'function') { //EVE: firefox fix to $A problem=0A= return __method.apply(object, args.concat($A(arguments)));=0A= }=0A= }=0A= },=0A= =0A= bindAsEventListener: function() {=0A= var __method =3D this, args =3D $A(arguments), object =3D = args.shift();=0A= return function(event) {=0A= return __method.apply(object, [event || = window.event].concat(args));=0A= }=0A= },=0A= =0A= curry: function() {=0A= if (!arguments.length) return this;=0A= var __method =3D this, args =3D $A(arguments);=0A= return function() {=0A= if(typeof $A =3D=3D 'function') { // EVE: firefox fix for $A = problem=0A= return __method.apply(this, args.concat($A(arguments)));=0A= }=0A= }=0A= },=0A= =0A= delay: function() {=0A= var __method =3D this, args =3D $A(arguments), timeout =3D = args.shift() * 1000;=0A= return window.setTimeout(function() {=0A= return __method.apply(__method, args);=0A= }, timeout);=0A= },=0A= =0A= wrap: function(wrapper) {=0A= var __method =3D this;=0A= return function() {=0A= if(typeof $A =3D=3D 'function') {=0A= return wrapper.apply(this, = [__method.bind(this)].concat($A(arguments)));=0A= }=0A= }=0A= },=0A= =0A= methodize: function() {=0A= if (this._methodized) return this._methodized;=0A= var __method =3D this;=0A= return this._methodized =3D function() {=0A= return __method.apply(null, [this].concat($A(arguments)));=0A= };=0A= }=0A= });=0A= =0A= Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=0A= =0A= Date.prototype.toJSON =3D function() {=0A= return '"' + this.getUTCFullYear() + '-' +=0A= (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A= this.getUTCDate().toPaddedString(2) + 'T' +=0A= this.getUTCHours().toPaddedString(2) + ':' +=0A= this.getUTCMinutes().toPaddedString(2) + ':' +=0A= this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A= };=0A= =0A= var Try =3D {=0A= these: function() {=0A= var returnValue;=0A= =0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= var lambda =3D arguments[i];=0A= try {=0A= returnValue =3D lambda();=0A= break;=0A= } catch (e) { }=0A= }=0A= =0A= return returnValue;=0A= }=0A= };=0A= =0A= RegExp.prototype.match =3D RegExp.prototype.test;=0A= =0A= RegExp.escape =3D function(str) {=0A= return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var PeriodicalExecuter =3D Class.create({=0A= initialize: function(callback, frequency) {=0A= this.callback =3D callback;=0A= this.frequency =3D frequency;=0A= this.currentlyExecuting =3D false;=0A= =0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000);=0A= },=0A= =0A= execute: function() {=0A= this.callback(this);=0A= },=0A= =0A= stop: function() {=0A= if (!this.timer) return;=0A= clearInterval(this.timer);=0A= this.timer =3D null;=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.execute();=0A= } finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= });=0A= Object.extend(String, {=0A= interpret: function(value) {=0A= return value =3D=3D null ? '' : String(value);=0A= },=0A= specialChar: {=0A= '\b': '\\b',=0A= '\t': '\\t',=0A= '\n': '\\n',=0A= '\f': '\\f',=0A= '\r': '\\r',=0A= '\\': '\\\\'=0A= }=0A= });=0A= =0A= Object.extend(String.prototype, {=0A= gsub: function(pattern, replacement) {=0A= var result =3D '', source =3D this, match;=0A= replacement =3D arguments.callee.prepareReplacement(replacement);=0A= =0A= while (source.length > 0) {=0A= if (match =3D source.match(pattern)) {=0A= result +=3D source.slice(0, match.index);=0A= result +=3D String.interpret(replacement(match));=0A= source =3D source.slice(match.index + match[0].length);=0A= } else {=0A= result +=3D source, source =3D '';=0A= }=0A= }=0A= return result;=0A= },=0A= =0A= sub: function(pattern, replacement, count) {=0A= replacement =3D this.gsub.prepareReplacement(replacement);=0A= count =3D Object.isUndefined(count) ? 1 : count;=0A= =0A= return this.gsub(pattern, function(match) {=0A= if (--count < 0) return match[0];=0A= return replacement(match);=0A= });=0A= },=0A= =0A= scan: function(pattern, iterator) {=0A= this.gsub(pattern, iterator);=0A= return String(this);=0A= },=0A= =0A= truncate: function(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : = String(this);=0A= },=0A= =0A= strip: function() {=0A= return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A= },=0A= =0A= stripTags: function() {=0A= return this.replace(/<\/?[^>]+>/gi, '');=0A= },=0A= =0A= stripScripts: function() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= },=0A= =0A= extractScripts: function() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A= return (this.match(matchAll) || []).map(function(scriptTag) {=0A= return (scriptTag.match(matchOne) || ['', ''])[1];=0A= });=0A= },=0A= =0A= evalScripts: function() {=0A= return this.extractScripts().map(function(script) { return = eval(script) });=0A= },=0A= =0A= escapeHTML: function() {=0A= var self =3D arguments.callee;=0A= self.text.data =3D this;=0A= return self.div.innerHTML;=0A= },=0A= =0A= unescapeHTML: function() {=0A= var div =3D new Element('div');=0A= div.innerHTML =3D this.stripTags();=0A= return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A= $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) :=0A= div.childNodes[0].nodeValue) : '';=0A= },=0A= =0A= toQueryParams: function(separator) {=0A= var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A= if (!match) return { };=0A= =0A= return match[1].split(separator || '&').inject({ }, function(hash, = pair) {=0A= if ((pair =3D pair.split('=3D'))[0]) {=0A= var key =3D decodeURIComponent(pair.shift());=0A= var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A= if (value !=3D undefined) value =3D decodeURIComponent(value);=0A= =0A= if (key in hash) {=0A= if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A= hash[key].push(value);=0A= }=0A= else hash[key] =3D value;=0A= }=0A= return hash;=0A= });=0A= },=0A= =0A= toArray: function() {=0A= return this.split('');=0A= },=0A= =0A= succ: function() {=0A= return this.slice(0, this.length - 1) +=0A= String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A= },=0A= =0A= times: function(count) {=0A= return count < 1 ? '' : new Array(count + 1).join(this);=0A= },=0A= =0A= camelize: function() {=0A= var parts =3D this.split('-'), len =3D parts.length;=0A= if (len =3D=3D 1) return parts[0];=0A= =0A= var camelized =3D this.charAt(0) =3D=3D '-'=0A= ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A= : parts[0];=0A= =0A= for (var i =3D 1; i < len; i++)=0A= camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1);=0A= =0A= return camelized;=0A= },=0A= =0A= capitalize: function() {=0A= return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase();=0A= },=0A= =0A= underscore: function() {=0A= return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase();=0A= },=0A= =0A= dasherize: function() {=0A= return this.gsub(/_/,'-');=0A= },=0A= =0A= inspect: function(useDoubleQuotes) {=0A= var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A= var character =3D String.specialChar[match[0]];=0A= return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16);=0A= });=0A= if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"';=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= },=0A= =0A= toJSON: function() {=0A= return this.inspect(true);=0A= },=0A= =0A= unfilterJSON: function(filter) {=0A= return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A= },=0A= =0A= isJSON: function() {=0A= var str =3D this;=0A= if (str.blank()) return false;=0A= str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A= return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A= },=0A= =0A= evalJSON: function(sanitize) {=0A= var json =3D this.unfilterJSON();=0A= try {=0A= if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A= } catch (e) { }=0A= throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A= },=0A= =0A= include: function(pattern) {=0A= return this.indexOf(pattern) > -1;=0A= },=0A= =0A= startsWith: function(pattern) {=0A= return this.indexOf(pattern) =3D=3D=3D 0;=0A= },=0A= =0A= endsWith: function(pattern) {=0A= var d =3D this.length - pattern.length;=0A= return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A= },=0A= =0A= empty: function() {=0A= return this =3D=3D '';=0A= },=0A= =0A= blank: function() {=0A= return /^\s*$/.test(this);=0A= },=0A= =0A= interpolate: function(object, pattern) {=0A= return new Template(this, pattern).evaluate(object);=0A= }=0A= });=0A= =0A= if (Prototype.Browser.WebKit || Prototype.Browser.IE) = Object.extend(String.prototype, {=0A= escapeHTML: function() {=0A= return = this.replace(/&/g,'&').replace(//g,'>');=0A= },=0A= unescapeHTML: function() {=0A= return = this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');=0A= }=0A= });=0A= =0A= String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A= if (Object.isFunction(replacement)) return replacement;=0A= var template =3D new Template(replacement);=0A= return function(match) { return template.evaluate(match) };=0A= };=0A= =0A= String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A= =0A= Object.extend(String.prototype.escapeHTML, {=0A= div: document.createElement('div'),=0A= text: document.createTextNode('')=0A= });=0A= =0A= with (String.prototype.escapeHTML) div.appendChild(text);=0A= =0A= var Template =3D Class.create({=0A= initialize: function(template, pattern) {=0A= this.template =3D template.toString();=0A= this.pattern =3D pattern || Template.Pattern;=0A= },=0A= =0A= evaluate: function(object) {=0A= if (Object.isFunction(object.toTemplateReplacements))=0A= object =3D object.toTemplateReplacements();=0A= =0A= return this.template.gsub(this.pattern, function(match) {=0A= if (object =3D=3D null) return '';=0A= =0A= var before =3D match[1] || '';=0A= if (before =3D=3D '\\') return match[2];=0A= =0A= var ctx =3D object, expr =3D match[3];=0A= var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A= match =3D pattern.exec(expr);=0A= if (match =3D=3D null) return before;=0A= =0A= while (match !=3D null) {=0A= var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', = ']') : match[1];=0A= ctx =3D ctx[comp];=0A= if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A= expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length);=0A= match =3D pattern.exec(expr);=0A= }=0A= =0A= return before + String.interpret(ctx);=0A= }.bind(this));=0A= }=0A= });=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= =0A= var $break =3D { };=0A= =0A= var Enumerable =3D {=0A= each: function(iterator, context) {=0A= var index =3D 0;=0A= iterator =3D iterator.bind(context);=0A= try {=0A= this._each(function(value) {=0A= iterator(value, index++);=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= },=0A= =0A= eachSlice: function(number, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator, context);=0A= },=0A= =0A= all: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!iterator(value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!iterator(value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator(value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= },=0A= =0A= findAll: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= grep: function(filter, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var results =3D [];=0A= =0A= if (Object.isString(filter))=0A= filter =3D new RegExp(filter);=0A= =0A= this.each(function(value, index) {=0A= if (filter.match(value))=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= include: function(object) {=0A= if (Object.isFunction(this.indexOf))=0A= if (this.indexOf(object) !=3D -1) return true;=0A= =0A= var found =3D false;=0A= this.each(function(value) {=0A= if (value =3D=3D object) {=0A= found =3D true;=0A= throw $break;=0A= }=0A= });=0A= return found;=0A= },=0A= =0A= inGroupsOf: function(number, fillWith) {=0A= fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A= return this.eachSlice(number, function(slice) {=0A= while(slice.length < number) slice.push(fillWith);=0A= return slice;=0A= });=0A= },=0A= =0A= inject: function(memo, iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= this.each(function(value, index) {=0A= memo =3D iterator(memo, value, index);=0A= });=0A= return memo;=0A= },=0A= =0A= invoke: function(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.map(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= },=0A= =0A= max: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(value, index);=0A= if (result =3D=3D null || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= min: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(value, index);=0A= if (result =3D=3D null || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= partition: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= (iterator(value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= },=0A= =0A= pluck: function(property) {=0A= var results =3D [];=0A= this.each(function(value) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= },=0A= =0A= reject: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= sortBy: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= return this.map(function(value, index) {=0A= return {value: value, criteria: iterator(value, index)};=0A= }).sort(function(left, right) {=0A= var a =3D left.criteria, b =3D right.criteria;=0A= return a < b ? -1 : a > b ? 1 : 0;=0A= }).pluck('value');=0A= },=0A= =0A= toArray: function() {=0A= return this.map();=0A= },=0A= =0A= zip: function() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (Object.isFunction(args.last()))=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= return iterator(collections.pluck(index));=0A= });=0A= },=0A= =0A= size: function() {=0A= return this.toArray().length;=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= };=0A= =0A= Object.extend(Enumerable, {=0A= map: Enumerable.collect,=0A= find: Enumerable.detect,=0A= select: Enumerable.findAll,=0A= filter: Enumerable.findAll,=0A= member: Enumerable.include,=0A= entries: Enumerable.toArray,=0A= every: Enumerable.all,=0A= some: Enumerable.any=0A= });=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if (iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= =0A= if (Prototype.Browser.WebKit) {=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if (!(Object.isFunction(iterable) && iterable =3D=3D '[object = NodeList]') &&=0A= iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= }=0A= =0A= Array.from =3D $A;=0A= =0A= Object.extend(Array.prototype, Enumerable);=0A= =0A= if (!Array.prototype._reverse) Array.prototype._reverse =3D = Array.prototype.reverse;=0A= =0A= Object.extend(Array.prototype, {=0A= _each: function(iterator) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= iterator(this[i]);=0A= },=0A= =0A= clear: function() {=0A= this.length =3D 0;=0A= return this;=0A= },=0A= =0A= first: function() {=0A= return this[0];=0A= },=0A= =0A= last: function() {=0A= return this[this.length - 1];=0A= },=0A= =0A= compact: function() {=0A= return this.select(function(value) {=0A= return value !=3D null;=0A= });=0A= },=0A= =0A= flatten: function() {=0A= return this.inject([], function(array, value) {=0A= return array.concat(Object.isArray(value) ?=0A= value.flatten() : [value]);=0A= });=0A= },=0A= =0A= without: function() {=0A= var values =3D $A(arguments);=0A= return this.select(function(value) {=0A= return !values.include(value);=0A= });=0A= },=0A= =0A= reverse: function(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= },=0A= =0A= reduce: function() {=0A= return this.length > 1 ? this : this[0];=0A= },=0A= =0A= uniq: function(sorted) {=0A= return this.inject([], function(array, value, index) {=0A= if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value)))=0A= array.push(value);=0A= return array;=0A= });=0A= },=0A= =0A= intersect: function(array) {=0A= return this.uniq().findAll(function(item) {=0A= return array.detect(function(value) { return item =3D=3D=3D value = });=0A= });=0A= },=0A= =0A= clone: function() {=0A= return [].concat(this);=0A= },=0A= =0A= size: function() {=0A= return this.length;=0A= },=0A= =0A= inspect: function() {=0A= return '[' + this.map(Object.inspect).join(', ') + ']';=0A= },=0A= =0A= toJSON: function() {=0A= var results =3D [];=0A= this.each(function(object) {=0A= var value =3D Object.toJSON(object);=0A= if (!Object.isUndefined(value)) results.push(value);=0A= });=0A= return '[' + results.join(', ') + ']';=0A= }=0A= });=0A= =0A= // use native browser JS 1.6 implementation if available=0A= if (Object.isFunction(Array.prototype.forEach))=0A= Array.prototype._each =3D Array.prototype.forEach;=0A= =0A= if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, = i) {=0A= i || (i =3D 0);=0A= var length =3D this.length;=0A= if (i < 0) i =3D length + i;=0A= for (; i < length; i++)=0A= if (this[i] =3D=3D=3D item) return i;=0A= return -1;=0A= };=0A= =0A= if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D = function(item, i) {=0A= i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A= var n =3D this.slice(0, i).reverse().indexOf(item);=0A= return (n < 0) ? n : i - n - 1;=0A= };=0A= =0A= Array.prototype.toArray =3D Array.prototype.clone;=0A= =0A= function $w(string) {=0A= if (!Object.isString(string)) return [];=0A= string =3D string.strip();=0A= return string ? string.split(/\s+/) : [];=0A= }=0A= =0A= if (Prototype.Browser.Opera){=0A= Array.prototype.concat =3D function() {=0A= var array =3D [];=0A= for (var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]);=0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= if (Object.isArray(arguments[i])) {=0A= for (var j =3D 0, arrayLength =3D arguments[i].length; j < = arrayLength; j++)=0A= array.push(arguments[i][j]);=0A= } else {=0A= array.push(arguments[i]);=0A= }=0A= }=0A= return array;=0A= };=0A= }=0A= Object.extend(Number.prototype, {=0A= toColorPart: function() {=0A= return this.toPaddedString(2, 16);=0A= },=0A= =0A= succ: function() {=0A= return this + 1;=0A= },=0A= =0A= times: function(iterator) {=0A= $R(0, this, true).each(iterator);=0A= return this;=0A= },=0A= =0A= toPaddedString: function(length, radix) {=0A= var string =3D this.toString(radix || 10);=0A= return '0'.times(length - string.length) + string;=0A= },=0A= =0A= toJSON: function() {=0A= return isFinite(this) ? this.toString() : 'null';=0A= }=0A= });=0A= =0A= $w('abs round ceil floor').each(function(method){=0A= Number.prototype[method] =3D Math[method].methodize();=0A= });=0A= function $H(object) {=0A= return new Hash(object);=0A= };=0A= =0A= var Hash =3D Class.create(Enumerable, (function() {=0A= =0A= function toQueryPair(key, value) {=0A= if (Object.isUndefined(value)) return key;=0A= return key + '=3D' + encodeURIComponent(String.interpret(value));=0A= }=0A= =0A= return {=0A= initialize: function(object) {=0A= this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object);=0A= },=0A= =0A= _each: function(iterator) {=0A= for (var key in this._object) {=0A= var value =3D this._object[key], pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= },=0A= =0A= set: function(key, value) {=0A= return this._object[key] =3D value;=0A= },=0A= =0A= get: function(key) {=0A= return this._object[key];=0A= },=0A= =0A= unset: function(key) {=0A= var value =3D this._object[key];=0A= delete this._object[key];=0A= return value;=0A= },=0A= =0A= toObject: function() {=0A= return Object.clone(this._object);=0A= },=0A= =0A= keys: function() {=0A= return this.pluck('key');=0A= },=0A= =0A= values: function() {=0A= return this.pluck('value');=0A= },=0A= =0A= index: function(value) {=0A= var match =3D this.detect(function(pair) {=0A= return pair.value =3D=3D=3D value;=0A= });=0A= return match && match.key;=0A= },=0A= =0A= merge: function(object) {=0A= return this.clone().update(object);=0A= },=0A= =0A= update: function(object) {=0A= return new Hash(object).inject(this, function(result, pair) {=0A= result.set(pair.key, pair.value);=0A= return result;=0A= });=0A= },=0A= =0A= toQueryString: function() {=0A= return this.map(function(pair) {=0A= var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A= =0A= if (values && typeof values =3D=3D 'object') {=0A= if (Object.isArray(values))=0A= return values.map(toQueryPair.curry(key)).join('&');=0A= }=0A= return toQueryPair(key, values);=0A= }).join('&');=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= },=0A= =0A= toJSON: function() {=0A= return Object.toJSON(this.toObject());=0A= },=0A= =0A= clone: function() {=0A= return new Hash(this);=0A= }=0A= }=0A= })());=0A= =0A= Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A= Hash.from =3D $H;=0A= var ObjectRange =3D Class.create(Enumerable, {=0A= initialize: function(start, end, exclusive) {=0A= this.start =3D start;=0A= this.end =3D end;=0A= this.exclusive =3D exclusive;=0A= },=0A= =0A= _each: function(iterator) {=0A= var value =3D this.start;=0A= while (this.include(value)) {=0A= iterator(value);=0A= value =3D value.succ();=0A= }=0A= },=0A= =0A= include: function(value) {=0A= if (value < this.start)=0A= return false;=0A= if (this.exclusive)=0A= return value < this.end;=0A= return value <=3D this.end;=0A= }=0A= });=0A= =0A= var $R =3D function(start, end, exclusive) {=0A= return new ObjectRange(start, end, exclusive);=0A= };=0A= =0A= var Ajax =3D {=0A= getTransport: function() {=0A= return Try.these(=0A= function() {return new XMLHttpRequest()},=0A= function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A= function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A= ) || false;=0A= },=0A= =0A= activeRequestCount: 0=0A= };=0A= =0A= Ajax.Responders =3D {=0A= responders: [],=0A= =0A= _each: function(iterator) {=0A= this.responders._each(iterator);=0A= },=0A= =0A= register: function(responder) {=0A= if (!this.include(responder))=0A= this.responders.push(responder);=0A= },=0A= =0A= unregister: function(responder) {=0A= this.responders =3D this.responders.without(responder);=0A= },=0A= =0A= dispatch: function(callback, request, transport, json) {=0A= this.each(function(responder) {=0A= if (Object.isFunction(responder[callback])) {=0A= try {=0A= responder[callback].apply(responder, [request, transport, = json]);=0A= } catch (e) { }=0A= }=0A= });=0A= }=0A= };=0A= =0A= Object.extend(Ajax.Responders, Enumerable);=0A= =0A= Ajax.Responders.register({=0A= onCreate: function() { Ajax.activeRequestCount++ },=0A= onComplete: function() { Ajax.activeRequestCount-- }=0A= });=0A= =0A= Ajax.Base =3D Class.create({=0A= initialize: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= contentType: 'application/x-www-form-urlencoded',=0A= encoding: 'UTF-8',=0A= parameters: '',=0A= evalJSON: true,=0A= evalJS: true=0A= };=0A= Object.extend(this.options, options || { });=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= =0A= if (Object.isString(this.options.parameters))=0A= this.options.parameters =3D = this.options.parameters.toQueryParams();=0A= else if (Object.isHash(this.options.parameters))=0A= this.options.parameters =3D this.options.parameters.toObject();=0A= }=0A= });=0A= =0A= Ajax.Request =3D Class.create(Ajax.Base, {=0A= _complete: false,=0A= =0A= initialize: function($super, url, options) {=0A= $super(options);=0A= this.transport =3D Ajax.getTransport();=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= this.url =3D url;=0A= this.method =3D this.options.method;=0A= var params =3D Object.clone(this.options.parameters);=0A= =0A= if (!['get', 'post'].include(this.method)) {=0A= // simulate other verbs over post=0A= params['_method'] =3D this.method;=0A= this.method =3D 'post';=0A= }=0A= =0A= this.parameters =3D params;=0A= =0A= if (params =3D Object.toQueryString(params)) {=0A= // when GET, append parameters to URL=0A= if (this.method =3D=3D 'get')=0A= this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A= else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= params +=3D '&_=3D';=0A= }=0A= =0A= try {=0A= var response =3D new Ajax.Response(this);=0A= if (this.options.onCreate) this.options.onCreate(response);=0A= Ajax.Responders.dispatch('onCreate', this, response);=0A= =0A= this.transport.open(this.method.toUpperCase(), this.url,=0A= this.options.asynchronous);=0A= =0A= /* if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1);*/=0A= if (this.options.asynchronous && !this.options.discardResponse) { = //SERGIU's fix=0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= setTimeout((function() = {this.respondToReadyState(1)}).bind(this), 10);=0A= }=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null;=0A= this.transport.send(this.body);=0A= =0A= /* Force Firefox to handle ready state 4 for synchronous requests = */=0A= if (!this.options.asynchronous && this.transport.overrideMimeType)=0A= this.onStateChange();=0A= =0A= }=0A= catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var headers =3D {=0A= 'X-Requested-With': 'XMLHttpRequest',=0A= 'X-Prototype-Version': Prototype.Version,=0A= 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*'=0A= };=0A= =0A= if (this.method =3D=3D 'post') {=0A= headers['Content-type'] =3D this.options.contentType +=0A= (this.options.encoding ? '; charset=3D' + this.options.encoding = : '');=0A= =0A= /* Force "Connection: close" for older Mozilla browsers to work=0A= * around a bug where XMLHttpRequest sends an incorrect=0A= * Content-length header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType &&=0A= (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005)=0A= headers['Connection'] =3D 'close';=0A= }=0A= =0A= // user-defined headers=0A= if (typeof this.options.requestHeaders =3D=3D 'object') {=0A= var extras =3D this.options.requestHeaders;=0A= =0A= if (Object.isFunction(extras.push))=0A= for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A= headers[extras[i]] =3D extras[i+1];=0A= else=0A= $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value });=0A= }=0A= =0A= for (var name in headers)=0A= this.transport.setRequestHeader(name, headers[name]);=0A= },=0A= =0A= success: function() {=0A= var status =3D this.getStatus();=0A= return !status || (status >=3D 200 && status < 300);=0A= },=0A= =0A= getStatus: function() {=0A= try {=0A= return this.transport.status || 0;=0A= } catch (e) { return 0 }=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this);=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + response.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(response, response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= var contentType =3D response.getHeader('Content-type');=0A= if (this.options.evalJS =3D=3D 'force'=0A= || (this.options.evalJS && contentType=0A= && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i)))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON);=0A= Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if (state =3D=3D 'Complete') {=0A= // avoid memory leak in MSIE: clean up=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A= }=0A= },=0A= =0A= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name) || null;=0A= } catch (e) { return null }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval((this.transport.responseText || '').unfilterJSON());=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= dispatchException: function(exception) {=0A= (this.options.onException || Prototype.emptyFunction)(this, = exception);=0A= Ajax.Responders.dispatch('onException', this, exception);=0A= }=0A= });=0A= =0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= Ajax.Response =3D Class.create({=0A= initialize: function(request){=0A= this.request =3D request;=0A= var transport =3D this.transport =3D request.transport,=0A= readyState =3D this.readyState =3D transport.readyState;=0A= =0A= if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = {=0A= this.status =3D this.getStatus();=0A= this.statusText =3D this.getStatusText();=0A= this.responseText =3D String.interpret(transport.responseText);=0A= this.headerJSON =3D this._getHeaderJSON();=0A= }=0A= =0A= if(readyState =3D=3D 4) {=0A= var xml =3D transport.responseXML;=0A= this.responseXML =3D Object.isUndefined(xml) ? null : xml;=0A= this.responseJSON =3D this._getResponseJSON();=0A= }=0A= },=0A= =0A= status: 0,=0A= statusText: '',=0A= =0A= getStatus: Ajax.Request.prototype.getStatus,=0A= =0A= getStatusText: function() {=0A= try {=0A= return this.transport.statusText || '';=0A= } catch (e) { return '' }=0A= },=0A= =0A= getHeader: Ajax.Request.prototype.getHeader,=0A= =0A= getAllHeaders: function() {=0A= try {=0A= return this.getAllResponseHeaders();=0A= } catch (e) { return null }=0A= },=0A= =0A= getResponseHeader: function(name) {=0A= return this.transport.getResponseHeader(name);=0A= },=0A= =0A= getAllResponseHeaders: function() {=0A= return this.transport.getAllResponseHeaders();=0A= },=0A= =0A= _getHeaderJSON: function() {=0A= var json =3D this.getHeader('X-JSON');=0A= if (!json) return null;=0A= json =3D decodeURIComponent(escape(json));=0A= try {=0A= return json.evalJSON(this.request.options.sanitizeJSON);=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= },=0A= =0A= _getResponseJSON: function() {=0A= var options =3D this.request.options;=0A= if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A= !(this.getHeader('Content-type') || = '').include('application/json')) ||=0A= this.responseText.blank())=0A= return null;=0A= try {=0A= return this.responseText.evalJSON(options.sanitizeJSON);=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= }=0A= });=0A= =0A= Ajax.Updater =3D Class.create(Ajax.Request, {=0A= initialize: function($super, container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= };=0A= =0A= options =3D Object.clone(options);=0A= var onComplete =3D options.onComplete;=0A= options.onComplete =3D (function(response, json) {=0A= this.updateContent(response.responseText);=0A= if (Object.isFunction(onComplete)) onComplete(response, json);=0A= }).bind(this);=0A= =0A= $super(url, options);=0A= },=0A= =0A= updateContent: function(responseText) {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'],=0A= options =3D this.options;=0A= =0A= if (!options.evalScripts) responseText =3D = responseText.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (options.insertion) {=0A= if (Object.isString(options.insertion)) {=0A= var insertion =3D { }; insertion[options.insertion] =3D = responseText;=0A= receiver.insert(insertion);=0A= }=0A= else options.insertion(receiver, responseText);=0A= }=0A= else receiver.update(responseText);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A= initialize: function($super, container, url, options) {=0A= $super(options);=0A= this.onComplete =3D this.options.onComplete;=0A= =0A= this.frequency =3D (this.options.frequency || 2);=0A= this.decay =3D (this.options.decay || 1);=0A= =0A= this.updater =3D { };=0A= this.container =3D container;=0A= this.url =3D url;=0A= =0A= this.start();=0A= },=0A= =0A= start: function() {=0A= this.options.onComplete =3D this.updateComplete.bind(this);=0A= this.onTimerEvent();=0A= },=0A= =0A= stop: function() {=0A= this.updater.options.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(response) {=0A= if (this.options.decay) {=0A= this.decay =3D (response.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D response.responseText;=0A= }=0A= this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= function $(element) {=0A= if (arguments.length > 1) {=0A= for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++)=0A= elements.push($(arguments[i]));=0A= return elements;=0A= }=0A= if (Object.isString(element))=0A= element =3D document.getElementById(element);=0A= return Element.extend(element);=0A= }=0A= =0A= if (Prototype.BrowserFeatures.XPath) {=0A= document._getElementsByXPath =3D function(expression, parentElement) {=0A= var results =3D [];=0A= var query =3D document.evaluate(expression, $(parentElement) || = document,=0A= null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A= results.push(Element.extend(query.snapshotItem(i)));=0A= return results;=0A= };=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Node) var Node =3D { };=0A= =0A= if (!Node.ELEMENT_NODE) {=0A= // DOM level 2 ECMAScript Language Binding=0A= Object.extend(Node, {=0A= ELEMENT_NODE: 1,=0A= ATTRIBUTE_NODE: 2,=0A= TEXT_NODE: 3,=0A= CDATA_SECTION_NODE: 4,=0A= ENTITY_REFERENCE_NODE: 5,=0A= ENTITY_NODE: 6,=0A= PROCESSING_INSTRUCTION_NODE: 7,=0A= COMMENT_NODE: 8,=0A= DOCUMENT_NODE: 9,=0A= DOCUMENT_TYPE_NODE: 10,=0A= DOCUMENT_FRAGMENT_NODE: 11,=0A= NOTATION_NODE: 12=0A= });=0A= }=0A= =0A= (function() {=0A= var element =3D this.Element;=0A= this.Element =3D function(tagName, attributes) {=0A= attributes =3D attributes || { };=0A= tagName =3D tagName.toLowerCase();=0A= var cache =3D Element.cache;=0A= if (Prototype.Browser.IE && attributes.name) {=0A= tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A= delete attributes.name;=0A= return Element.writeAttribute(document.createElement(tagName), = attributes);=0A= }=0A= if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName));=0A= return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes);=0A= };=0A= Object.extend(this.Element, element || { });=0A= }).call(window);=0A= =0A= Element.cache =3D { };=0A= =0A= Element.Methods =3D {=0A= visible: function(element) {=0A= return $(element).style.display !=3D 'none';=0A= },=0A= =0A= toggle: function(element) {=0A= element =3D $(element);=0A= Element[Element.visible(element) ? 'hide' : 'show'](element);=0A= return element;=0A= },=0A= =0A= hide: function(element) {=0A= $(element).style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= $(element).style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= content =3D Object.toHTML(content);=0A= element.innerHTML =3D content.stripScripts();=0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= },=0A= =0A= replace: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= else if (!Object.isElement(content)) {=0A= content =3D Object.toHTML(content);=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNode(element);=0A= content.evalScripts.bind(content).defer();=0A= content =3D range.createContextualFragment(content.stripScripts());=0A= }=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= },=0A= =0A= insert: function(element, insertions) {=0A= element =3D $(element);=0A= =0A= if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A= Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML)))=0A= insertions =3D {bottom:insertions};=0A= =0A= var content, insert, tagName, childNodes;=0A= =0A= for (position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= insert =3D Element._insertionTranslations[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A= ? element.parentNode : element).tagName.toUpperCase();=0A= =0A= childNodes =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= =0A= if (position =3D=3D 'top' || position =3D=3D 'after') = childNodes.reverse();=0A= childNodes.each(insert.curry(element));=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=0A= },=0A= =0A= wrap: function(element, wrapper, attributes) {=0A= element =3D $(element);=0A= if (Object.isElement(wrapper))=0A= $(wrapper).writeAttribute(attributes || { });=0A= else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes);=0A= else wrapper =3D new Element('div', wrapper);=0A= if (element.parentNode)=0A= element.parentNode.replaceChild(wrapper, element);=0A= wrapper.appendChild(element);=0A= return wrapper;=0A= },=0A= =0A= inspect: function(element) {=0A= element =3D $(element);=0A= var result =3D '<' + element.tagName.toLowerCase();=0A= $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A= var property =3D pair.first(), attribute =3D pair.last();=0A= var value =3D (element[property] || '').toString();=0A= if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true);=0A= });=0A= return result + '>';=0A= },=0A= =0A= recursivelyCollect: function(element, property) {=0A= element =3D $(element);=0A= var elements =3D [];=0A= while (element =3D element[property])=0A= if (element.nodeType =3D=3D 1)=0A= elements.push(Element.extend(element));=0A= return elements;=0A= },=0A= =0A= ancestors: function(element) {=0A= return $(element).recursivelyCollect('parentNode');=0A= },=0A= =0A= descendants: function(element) {=0A= return $(element).getElementsBySelector("*");=0A= },=0A= =0A= firstDescendant: function(element) {=0A= element =3D $(element).firstChild;=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= return $(element);=0A= },=0A= =0A= immediateDescendants: function(element) {=0A= if (!(element =3D $(element).firstChild)) return [];=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= if (element) return [element].concat($(element).nextSiblings());=0A= return [];=0A= },=0A= =0A= previousSiblings: function(element) {=0A= return $(element).recursivelyCollect('previousSibling');=0A= },=0A= =0A= nextSiblings: function(element) {=0A= return $(element).recursivelyCollect('nextSibling');=0A= },=0A= =0A= siblings: function(element) {=0A= element =3D $(element);=0A= return = element.previousSiblings().reverse().concat(element.nextSiblings());=0A= },=0A= =0A= match: function(element, selector) {=0A= if (Object.isString(selector))=0A= selector =3D new Selector(selector);=0A= return selector.match($(element));=0A= },=0A= =0A= up: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return $(element.parentNode);=0A= var ancestors =3D element.ancestors();=0A= return Object.isNumber(expression) ? ancestors[expression] :=0A= Selector.findElement(ancestors, expression, index);=0A= },=0A= =0A= down: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= return Object.isNumber(expression) ? = element.descendants()[expression] :=0A= element.select(expression)[index || 0];=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element));=0A= var previousSiblings =3D element.previousSiblings();=0A= return Object.isNumber(expression) ? previousSiblings[expression] :=0A= Selector.findElement(previousSiblings, expression, index);=0A= },=0A= =0A= next: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element));=0A= var nextSiblings =3D element.nextSiblings();=0A= return Object.isNumber(expression) ? nextSiblings[expression] :=0A= Selector.findElement(nextSiblings, expression, index);=0A= },=0A= =0A= select: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= adjacent: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element.parentNode, = args).without(element);=0A= },=0A= =0A= identify: function(element) {=0A= element =3D $(element);=0A= var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A= if (id) return id;=0A= do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A= element.writeAttribute('id', id);=0A= return id;=0A= },=0A= =0A= readAttribute: function(element, name) {=0A= element =3D $(element);=0A= if (Prototype.Browser.IE) {=0A= var t =3D Element._attributeTranslations.read;=0A= if (t.values[name]) return t.values[name](element, name);=0A= if (t.names[name]) name =3D t.names[name];=0A= if (name.include(':')) {=0A= return (!element.attributes || !element.attributes[name]) ? null = :=0A= element.attributes[name].value;=0A= }=0A= }=0A= return element.getAttribute(name);=0A= },=0A= =0A= writeAttribute: function(element, name, value) {=0A= element =3D $(element);=0A= var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A= =0A= if (typeof name =3D=3D 'object') attributes =3D name;=0A= else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A= =0A= for (var attr in attributes) {=0A= name =3D t.names[attr] || attr;=0A= value =3D attributes[attr];=0A= if (t.values[attr]) name =3D t.values[attr](element, value);=0A= if (value =3D=3D=3D false || value =3D=3D=3D null)=0A= element.removeAttribute(name);=0A= else if (value =3D=3D=3D true)=0A= element.setAttribute(name, name);=0A= else element.setAttribute(name, value);=0A= }=0A= return element;=0A= },=0A= =0A= getHeight: function(element) {=0A= return $(element).getDimensions().height;=0A= },=0A= =0A= getWidth: function(element) {=0A= return $(element).getDimensions().width;=0A= },=0A= =0A= classNames: function(element) {=0A= return new Element.ClassNames(element);=0A= },=0A= =0A= hasClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= var elementClassName =3D element.className;=0A= return (elementClassName.length > 0 && (elementClassName =3D=3D = className ||=0A= new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName)));=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= if (!element.hasClassName(className))=0A= element.className +=3D (element.className ? ' ' : '') + className;=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= element.className =3D element.className.replace(=0A= new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A= return element;=0A= },=0A= =0A= toggleClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return element[element.hasClassName(className) ?=0A= 'removeClassName' : 'addClassName'](className);=0A= },=0A= =0A= // removes whitespace-only text node children=0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= var node =3D element.firstChild;=0A= while (node) {=0A= var nextNode =3D node.nextSibling;=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= element.removeChild(node);=0A= node =3D nextNode;=0A= }=0A= return element;=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.blank();=0A= },=0A= =0A= descendantOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= var originalAncestor =3D ancestor;=0A= =0A= if (element.compareDocumentPosition)=0A= return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A= =0A= if (element.sourceIndex && !Prototype.Browser.Opera) {=0A= var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A= nextAncestor =3D ancestor.nextSibling;=0A= if (!nextAncestor) {=0A= do { ancestor =3D ancestor.parentNode; }=0A= while (!(nextAncestor =3D ancestor.nextSibling) && = ancestor.parentNode);=0A= }=0A= if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);=0A= }=0A= =0A= while (element =3D element.parentNode)=0A= if (element =3D=3D originalAncestor) return true;=0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var pos =3D element.cumulativeOffset();=0A= window.scrollTo(pos[0], pos[1]);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value) {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css[style] : null;=0A= }=0A= if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= getOpacity: function(element) {=0A= return $(element).getStyle('opacity');=0A= },=0A= =0A= setStyle: function(element, styles) {=0A= element =3D $(element);=0A= var elementStyle =3D element.style, match;=0A= if (Object.isString(styles)) {=0A= element.style.cssText +=3D ';' + styles;=0A= return styles.include('opacity') ?=0A= element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element;=0A= }=0A= for (var property in styles)=0A= if (property =3D=3D 'opacity') = element.setOpacity(styles[property]);=0A= else=0A= elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ?=0A= (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : = 'styleFloat') :=0A= property] =3D styles[property];=0A= =0A= return element;=0A= },=0A= =0A= setOpacity: function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= return element;=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= var display =3D $(element).getStyle('display');=0A= if (display !=3D 'none' && display !=3D null) // Safari bug=0A= return {width: element.offsetWidth, height: element.offsetHeight};=0A= =0A= // All *Width and *Height properties give 0 on elements with display = none,=0A= // so enable the element temporarily=0A= var els =3D element.style;=0A= var originalVisibility =3D els.visibility;=0A= var originalPosition =3D els.position;=0A= var originalDisplay =3D els.display;=0A= els.visibility =3D 'hidden';=0A= els.position =3D 'absolute';=0A= els.display =3D 'block';=0A= var originalWidth =3D element.clientWidth;=0A= var originalHeight =3D element.clientHeight;=0A= els.display =3D originalDisplay;=0A= els.position =3D originalPosition;=0A= els.visibility =3D originalVisibility;=0A= return {width: originalWidth, height: originalHeight};=0A= },=0A= =0A= makePositioned: function(element) {=0A= element =3D $(element);=0A= var pos =3D Element.getStyle(element, 'position');=0A= if (pos =3D=3D 'static' || !pos) {=0A= element._madePositioned =3D true;=0A= element.style.position =3D 'relative';=0A= // Opera returns the offset relative to the positioning context, = when an=0A= // element is position relative but top and left have not been = defined=0A= if (window.opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto';=0A= if (element._overflow !=3D=3D 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= return element;=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (!element._overflow) return element;=0A= element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow;=0A= element._overflow =3D null;=0A= return element;=0A= },=0A= =0A= cumulativeOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= positionedOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= if (element) {=0A= if (element.tagName =3D=3D 'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A= }=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'absolute') return;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= var offsets =3D element.positionedOffset();=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.width =3D width + 'px';=0A= element.style.height =3D height + 'px';=0A= return element;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'relative') return;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= return element;=0A= },=0A= =0A= cumulativeScrollOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.scrollTop || 0;=0A= valueL +=3D element.scrollLeft || 0;=0A= element =3D element.parentNode;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= getOffsetParent: function(element) {=0A= if (element.offsetParent) return $(element.offsetParent);=0A= if (element =3D=3D document.body) return $(element);=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return $(element);=0A= =0A= return $(document.body);=0A= },=0A= =0A= viewportOffset: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= // Safari fix=0A= if (element.offsetParent =3D=3D document.body &&=0A= Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= }=0A= } while (element =3D element.parentNode);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= clonePosition: function(element, source) {=0A= var options =3D Object.extend({=0A= setLeft: true,=0A= setTop: true,=0A= setWidth: true,=0A= setHeight: true,=0A= offsetTop: 0,=0A= offsetLeft: 0=0A= }, arguments[2] || { });=0A= =0A= // find page position of source=0A= source =3D $(source);=0A= var p =3D source.viewportOffset();=0A= =0A= // find coordinate system to use=0A= element =3D $(element);=0A= var delta =3D [0, 0];=0A= var parent =3D null;=0A= // delta [0,0] will do fine with position: fixed elements,=0A= // position:absolute needs offsetParent deltas=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A= parent =3D element.getOffsetParent();=0A= delta =3D parent.viewportOffset();=0A= }=0A= =0A= // correct by body offsets (fixes Safari)=0A= if (parent =3D=3D document.body) {=0A= delta[0] -=3D document.body.offsetLeft;=0A= delta[1] -=3D document.body.offsetTop;=0A= }=0A= =0A= // set position=0A= if (options.setLeft) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px';=0A= if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px';=0A= return element;=0A= }=0A= };=0A= =0A= Element.Methods.identify.counter =3D 1;=0A= =0A= Object.extend(Element.Methods, {=0A= getElementsBySelector: Element.Methods.select,=0A= childElements: Element.Methods.immediateDescendants=0A= });=0A= =0A= Element._attributeTranslations =3D {=0A= write: {=0A= names: {=0A= className: 'class',=0A= htmlFor: 'for'=0A= },=0A= values: { }=0A= }=0A= };=0A= =0A= if (Prototype.Browser.Opera) {=0A= Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A= function(proceed, element, style) {=0A= switch (style) {=0A= case 'left': case 'top': case 'right': case 'bottom':=0A= if (proceed(element, 'position') =3D=3D=3D 'static') return = null;=0A= case 'height': case 'width':=0A= // returns '0px' for hidden elements; we want it to return null=0A= if (!Element.visible(element)) return null;=0A= =0A= // returns the border-box dimensions rather than the = content-box=0A= // dimensions, so we subtract padding and borders from the = value=0A= var dim =3D parseInt(proceed(element, style), 10);=0A= =0A= if (dim !=3D=3D element['offset' + style.capitalize()])=0A= return dim + 'px';=0A= =0A= var properties;=0A= if (style =3D=3D=3D 'height') {=0A= properties =3D ['border-top-width', 'padding-top',=0A= 'padding-bottom', 'border-bottom-width'];=0A= }=0A= else {=0A= properties =3D ['border-left-width', 'padding-left',=0A= 'padding-right', 'border-right-width'];=0A= }=0A= return properties.inject(dim, function(memo, property) {=0A= var val =3D proceed(element, property);=0A= return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A= }) + 'px';=0A= default: return proceed(element, style);=0A= }=0A= }=0A= );=0A= =0A= Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A= function(proceed, element, attribute) {=0A= if (attribute =3D=3D=3D 'title') return element.title;=0A= return proceed(element, attribute);=0A= }=0A= );=0A= }=0A= =0A= else if (Prototype.Browser.IE) {=0A= $w('positionedOffset getOffsetParent = viewportOffset').each(function(method) {=0A= Element.Methods[method] =3D Element.Methods[method].wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= var position =3D element.getStyle('position');=0A= if (position !=3D 'static') return proceed(element);=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= });=0A= =0A= Element.Methods.getStyle =3D function(element, style) {=0A= element =3D $(element);=0A= style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value && element.currentStyle) value =3D = element.currentStyle[style];=0A= =0A= if (style =3D=3D 'opacity') {=0A= if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/))=0A= if (value[1]) return parseFloat(value[1]) / 100;=0A= return 1.0;=0A= }=0A= =0A= if (value =3D=3D 'auto') {=0A= if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none'))=0A= return element['offset' + style.capitalize()] + 'px';=0A= return null;=0A= }=0A= return value;=0A= };=0A= =0A= Element.Methods.setOpacity =3D function(element, value) {=0A= function stripAlpha(filter){=0A= return filter.replace(/alpha\([^\)]*\)/gi,'');=0A= }=0A= element =3D $(element);=0A= var currentStyle =3D element.currentStyle;=0A= if ((currentStyle && !currentStyle.hasLayout) ||=0A= (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A= element.style.zoom =3D 1;=0A= =0A= var filter =3D element.getStyle('filter'), style =3D element.style;=0A= if (value =3D=3D 1 || value =3D=3D=3D '') {=0A= (filter =3D stripAlpha(filter)) ?=0A= style.filter =3D filter : style.removeAttribute('filter');=0A= return element;=0A= } else if (value < 0.00001) value =3D 0;=0A= style.filter =3D stripAlpha(filter) +=0A= 'alpha(opacity=3D' + (value * 100) + ')';=0A= return element;=0A= };=0A= =0A= Element._attributeTranslations =3D {=0A= read: {=0A= names: {=0A= 'class': 'className',=0A= 'for': 'htmlFor'=0A= },=0A= values: {=0A= _getAttr: function(element, attribute) {=0A= return element.getAttribute(attribute, 2);=0A= },=0A= _getAttrNode: function(element, attribute) {=0A= var node =3D element.getAttributeNode(attribute);=0A= return node ? node.value : "";=0A= },=0A= _getEv: function(element, attribute) {=0A= attribute =3D element.getAttribute(attribute);=0A= return attribute ? attribute.toString().slice(23, -2) : null;=0A= },=0A= _flag: function(element, attribute) {=0A= return $(element).hasAttribute(attribute) ? attribute : null;=0A= },=0A= style: function(element) {=0A= return element.style.cssText.toLowerCase();=0A= },=0A= title: function(element) {=0A= return element.title;=0A= }=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.write =3D {=0A= names: Object.clone(Element._attributeTranslations.read.names),=0A= values: {=0A= checked: function(element, value) {=0A= element.checked =3D !!value;=0A= },=0A= =0A= style: function(element, value) {=0A= element.style.cssText =3D value ? value : '';=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.has =3D {};=0A= =0A= $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A= 'encType maxLength readOnly longDesc').each(function(attr) {=0A= Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr;=0A= Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A= });=0A= =0A= (function(v) {=0A= Object.extend(v, {=0A= href: v._getAttr,=0A= src: v._getAttr,=0A= type: v._getAttr,=0A= action: v._getAttrNode,=0A= disabled: v._flag,=0A= checked: v._flag,=0A= readonly: v._flag,=0A= multiple: v._flag,=0A= onload: v._getEv,=0A= onunload: v._getEv,=0A= onclick: v._getEv,=0A= ondblclick: v._getEv,=0A= onmousedown: v._getEv,=0A= onmouseup: v._getEv,=0A= onmouseover: v._getEv,=0A= onmousemove: v._getEv,=0A= onmouseout: v._getEv,=0A= onfocus: v._getEv,=0A= onblur: v._getEv,=0A= onkeypress: v._getEv,=0A= onkeydown: v._getEv,=0A= onkeyup: v._getEv,=0A= onsubmit: v._getEv,=0A= onreset: v._getEv,=0A= onselect: v._getEv,=0A= onchange: v._getEv=0A= });=0A= })(Element._attributeTranslations.read.values);=0A= }=0A= =0A= else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A= (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A= return element;=0A= };=0A= }=0A= =0A= else if (Prototype.Browser.WebKit) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= =0A= if (value =3D=3D 1)=0A= if(element.tagName =3D=3D 'IMG' && element.width) {=0A= element.width++; element.width--;=0A= } else try {=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch (e) { }=0A= =0A= return element;=0A= };=0A= =0A= // Safari returns margins on body which is incorrect if the child is = absolutely=0A= // positioned. For performance reasons, redefine = Element#cumulativeOffset for=0A= // KHTML/WebKit only.=0A= Element.Methods.cumulativeOffset =3D function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= if (element.offsetParent =3D=3D document.body)=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break;=0A= =0A= element =3D element.offsetParent;=0A= } while (element);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= };=0A= }=0A= =0A= if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A= // IE and Opera are missing .innerHTML support for TABLE-related and = SELECT elements=0A= Element.Methods.update =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= =0A= content =3D Object.toHTML(content);=0A= var tagName =3D element.tagName.toUpperCase();=0A= =0A= if (tagName in Element._insertionTranslations.tags) {=0A= $A(element.childNodes).each(function(node) { = element.removeChild(node) });=0A= Element._getContentFromAnonymousElement(tagName, = content.stripScripts())=0A= .each(function(node) { element.appendChild(node) });=0A= }=0A= else element.innerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= if (document.createElement('div').outerHTML) {=0A= Element.Methods.replace =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase();=0A= =0A= if (Element._insertionTranslations.tags[tagName]) {=0A= var nextSibling =3D element.next();=0A= var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= parent.removeChild(element);=0A= if (nextSibling)=0A= fragments.each(function(node) { parent.insertBefore(node, = nextSibling) });=0A= else=0A= fragments.each(function(node) { parent.appendChild(node) });=0A= }=0A= else element.outerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= Element._returnOffset =3D function(l, t) {=0A= var result =3D [l, t];=0A= result.left =3D l;=0A= result.top =3D t;=0A= return result;=0A= };=0A= =0A= Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A= var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName];=0A= if (t) {=0A= div.innerHTML =3D t[0] + html + t[1];=0A= t[2].times(function() { div =3D div.firstChild });=0A= } else div.innerHTML =3D html;=0A= return $A(div.childNodes);=0A= };=0A= =0A= Element._insertionTranslations =3D {=0A= before: function(element, node) {=0A= element.parentNode.insertBefore(node, element);=0A= },=0A= top: function(element, node) {=0A= element.insertBefore(node, element.firstChild);=0A= },=0A= bottom: function(element, node) {=0A= element.appendChild(node);=0A= },=0A= after: function(element, node) {=0A= element.parentNode.insertBefore(node, element.nextSibling);=0A= },=0A= tags: {=0A= TABLE: ['', '
', 1],=0A= TBODY: ['', '
', 2],=0A= TR: ['', '
', 3],=0A= TD: ['
', '
', 4],=0A= SELECT: ['', 1]=0A= }=0A= };=0A= =0A= (function() {=0A= Object.extend(this.tags, {=0A= THEAD: this.tags.TBODY,=0A= TFOOT: this.tags.TBODY,=0A= TH: this.tags.TD=0A= });=0A= }).call(Element._insertionTranslations);=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= attribute =3D Element._attributeTranslations.has[attribute] || = attribute;=0A= var node =3D $(element).getAttributeNode(attribute);=0A= return node && node.specified;=0A= }=0A= };=0A= =0A= Element.Methods.ByTag =3D { };=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= if (!Prototype.BrowserFeatures.ElementExtensions &&=0A= document.createElement('div').__proto__) {=0A= window.HTMLElement =3D { };=0A= window.HTMLElement.prototype =3D = document.createElement('div').__proto__;=0A= Prototype.BrowserFeatures.ElementExtensions =3D true;=0A= }=0A= =0A= Element.extend =3D (function() {=0A= if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A= return Prototype.K;=0A= =0A= var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A= =0A= var extend =3D Object.extend(function(element) {=0A= if (!element || element._extendedByPrototype ||=0A= element.nodeType !=3D 1 || element =3D=3D window) return element;=0A= =0A= var methods =3D Object.clone(Methods),=0A= tagName =3D element.tagName, property, value;=0A= =0A= // extend methods for specific tags=0A= if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A= =0A= for (property in methods) {=0A= value =3D methods[property];=0A= if (Object.isFunction(value) && !(property in element))=0A= element[property] =3D value.methodize();=0A= }=0A= =0A= element._extendedByPrototype =3D Prototype.emptyFunction;=0A= return element;=0A= =0A= }, {=0A= refresh: function() {=0A= // extend methods for all tags (Safari doesn't need this)=0A= if (!Prototype.BrowserFeatures.ElementExtensions) {=0A= Object.extend(Methods, Element.Methods);=0A= Object.extend(Methods, Element.Methods.Simulated);=0A= }=0A= }=0A= });=0A= =0A= extend.refresh();=0A= return extend;=0A= })();=0A= =0A= Element.hasAttribute =3D function(element, attribute) {=0A= if (element.hasAttribute) return element.hasAttribute(attribute);=0A= return Element.Methods.Simulated.hasAttribute(element, attribute);=0A= };=0A= =0A= Element.addMethods =3D function(methods) {=0A= var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A= =0A= if (!methods) {=0A= Object.extend(Form, Form.Methods);=0A= Object.extend(Form.Element, Form.Element.Methods);=0A= Object.extend(Element.Methods.ByTag, {=0A= "FORM": Object.clone(Form.Methods),=0A= "INPUT": Object.clone(Form.Element.Methods),=0A= "SELECT": Object.clone(Form.Element.Methods),=0A= "TEXTAREA": Object.clone(Form.Element.Methods)=0A= });=0A= }=0A= =0A= if (arguments.length =3D=3D 2) {=0A= var tagName =3D methods;=0A= methods =3D arguments[1];=0A= }=0A= =0A= if (!tagName) Object.extend(Element.Methods, methods || { });=0A= else {=0A= if (Object.isArray(tagName)) tagName.each(extend);=0A= else extend(tagName);=0A= }=0A= =0A= function extend(tagName) {=0A= tagName =3D tagName.toUpperCase();=0A= if (!Element.Methods.ByTag[tagName])=0A= Element.Methods.ByTag[tagName] =3D { };=0A= Object.extend(Element.Methods.ByTag[tagName], methods);=0A= }=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!Object.isFunction(value)) continue;=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= function findDOMClass(tagName) {=0A= var klass;=0A= var trans =3D {=0A= "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A= "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList",=0A= "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading",=0A= "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A= "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION":=0A= "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A= "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR":=0A= "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A= "FrameSet", "IFRAME": "IFrame"=0A= };=0A= if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A= if (window[klass]) return window[klass];=0A= =0A= window[klass] =3D { };=0A= window[klass].prototype =3D = document.createElement(tagName).__proto__;=0A= return window[klass];=0A= }=0A= =0A= if (F.ElementExtensions) {=0A= copy(Element.Methods, HTMLElement.prototype);=0A= copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A= }=0A= =0A= if (F.SpecificElementExtensions) {=0A= for (var tag in Element.Methods.ByTag) {=0A= var klass =3D findDOMClass(tag);=0A= if (Object.isUndefined(klass)) continue;=0A= copy(T[tag], klass.prototype);=0A= }=0A= }=0A= =0A= Object.extend(Element, Element.Methods);=0A= delete Element.ByTag;=0A= =0A= if (Element.extend.refresh) Element.extend.refresh();=0A= Element.cache =3D { };=0A= };=0A= =0A= document.viewport =3D {=0A= getDimensions: function() {=0A= var dimensions =3D { };=0A= var B =3D Prototype.Browser;=0A= $w('width height').each(function(d) {=0A= var D =3D d.capitalize();=0A= dimensions[d] =3D (B.WebKit && !document.evaluate) ? self['inner' = + D] :=0A= (B.Opera) ? document.body['client' + D] : = document.documentElement['client' + D];=0A= });=0A= return dimensions;=0A= },=0A= =0A= getWidth: function() {=0A= return this.getDimensions().width;=0A= },=0A= =0A= getHeight: function() {=0A= return this.getDimensions().height;=0A= },=0A= =0A= getScrollOffsets: function() {=0A= return Element._returnOffset(=0A= window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft,=0A= window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop);=0A= }=0A= };=0A= /* Portions of the Selector class are derived from Jack Slocum=E2=80=99s = DomQuery,=0A= * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style=0A= * license. Please see http://www.yui-ext.com/ for more information. */=0A= =0A= var Selector =3D Class.create({=0A= initialize: function(expression) {=0A= this.expression =3D expression.strip();=0A= this.compileMatcher();=0A= },=0A= =0A= shouldUseXPath: function() {=0A= if (!Prototype.BrowserFeatures.XPath) return false;=0A= =0A= var e =3D this.expression;=0A= =0A= // Safari 3 chokes on :*-of-type and :empty=0A= if (Prototype.Browser.WebKit &&=0A= (e.include("-of-type") || e.include(":empty")))=0A= return false;=0A= =0A= // XPath can't do namespaced attributes, nor can it read=0A= // the "checked" property from DOM nodes=0A= if ((/(\[[\w-]*?:|:checked)/).test(this.expression))=0A= return false;=0A= =0A= return true;=0A= },=0A= =0A= compileMatcher: function() {=0A= if (this.shouldUseXPath())=0A= return this.compileXPathMatcher();=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers,=0A= c =3D Selector.criteria, le, p, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.matcher =3D Selector._cache[e];=0A= return;=0A= }=0A= =0A= this.matcher =3D ["this.matcher =3D function(root) {",=0A= "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"];=0A= =0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A= new Template(c[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.matcher.push("return h.unique(n);\n}");=0A= eval(this.matcher.join('\n'));=0A= Selector._cache[this.expression] =3D this.matcher;=0A= },=0A= =0A= compileXPathMatcher: function() {=0A= var e =3D this.expression, ps =3D Selector.patterns,=0A= x =3D Selector.xpath, le, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.xpath =3D Selector._cache[e]; return;=0A= }=0A= =0A= this.matcher =3D ['.//*'];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= if (m =3D e.match(ps[i])) {=0A= this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A= new Template(x[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.xpath =3D this.matcher.join('');=0A= Selector._cache[this.expression] =3D this.xpath;=0A= },=0A= =0A= findElements: function(root) {=0A= root =3D root || document;=0A= if (this.xpath) return document._getElementsByXPath(this.xpath, = root);=0A= return this.matcher(root);=0A= },=0A= =0A= match: function(element) {=0A= this.tokens =3D [];=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, as =3D = Selector.assertions;=0A= var le, p, m;=0A= =0A= while (e && le !=3D=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= // use the Selector.assertions methods unless the selector=0A= // is too complex.=0A= if (as[i]) {=0A= this.tokens.push([i, Object.clone(m)]);=0A= e =3D e.replace(m[0], '');=0A= } else {=0A= // reluctantly do a document-wide search=0A= // and look for a match in the array=0A= return this.findElements(document).include(element);=0A= }=0A= }=0A= }=0A= }=0A= =0A= var match =3D true, name, matches;=0A= for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A= name =3D token[0], matches =3D token[1];=0A= if (!Selector.assertions[name](element, matches)) {=0A= match =3D false; break;=0A= }=0A= }=0A= =0A= return match;=0A= },=0A= =0A= toString: function() {=0A= return this.expression;=0A= },=0A= =0A= inspect: function() {=0A= return "#";=0A= }=0A= });=0A= =0A= Object.extend(Selector, {=0A= _cache: { },=0A= =0A= xpath: {=0A= descendant: "//*",=0A= child: "/*",=0A= adjacent: "/following-sibling::*[1]",=0A= laterSibling: '/following-sibling::*',=0A= tagName: function(m) {=0A= if (m[1] =3D=3D '*') return '';=0A= return "[local-name()=3D'" + m[1].toLowerCase() +=0A= "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A= },=0A= className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A= id: "[@id=3D'#{1}']",=0A= attrPresence: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= return new Template("[@#{1}]").evaluate(m);=0A= },=0A= attr: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= m[3] =3D m[5] || m[6];=0A= return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= var h =3D Selector.xpath.pseudos[m[1]];=0A= if (!h) return '';=0A= if (Object.isFunction(h)) return h(m);=0A= return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A= },=0A= operators: {=0A= '=3D': "[@#{1}=3D'#{3}']",=0A= '!=3D': "[@#{1}!=3D'#{3}']",=0A= '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A= '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']",=0A= '*=3D': "[contains(@#{1}, '#{3}')]",=0A= '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A= '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A= },=0A= pseudos: {=0A= 'first-child': '[not(preceding-sibling::*)]',=0A= 'last-child': '[not(following-sibling::*)]',=0A= 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]',=0A= 'empty': "[count(*) =3D 0 and (count(text()) =3D 0 or = translate(text(), ' \t\r\n', '') =3D '')]",=0A= 'checked': "[@checked]",=0A= 'disabled': "[@disabled]",=0A= 'enabled': "[not(@disabled)]",=0A= 'not': function(m) {=0A= var e =3D m[6], p =3D Selector.patterns,=0A= x =3D Selector.xpath, le, v;=0A= =0A= var exclusion =3D [];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in p) {=0A= if (m =3D e.match(p[i])) {=0A= v =3D Object.isFunction(x[i]) ? x[i](m) : new = Template(x[i]).evaluate(m);=0A= exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= return "[not(" + exclusion.join(" and ") + ")]";=0A= },=0A= 'nth-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A= },=0A= 'nth-last-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A= },=0A= 'nth-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("position() ", m);=0A= },=0A= 'nth-last-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", = m);=0A= },=0A= 'first-of-type': function(m) {=0A= m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A= },=0A= 'last-of-type': function(m) {=0A= m[6] =3D "1"; return = Selector.xpath.pseudos['nth-last-of-type'](m);=0A= },=0A= 'only-of-type': function(m) {=0A= var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + = p['last-of-type'](m);=0A= },=0A= nth: function(fragment, m) {=0A= var mm, formula =3D m[6], predicate;=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A= return '[' + fragment + "=3D " + mm[1] + ']';=0A= if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A= if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A= var a =3D mm[1] ? Number(mm[1]) : 1;=0A= var b =3D mm[2] ? Number(mm[2]) : 0;=0A= predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A= "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A= return new Template(predicate).evaluate({=0A= fragment: fragment, a: a, b: b });=0A= }=0A= }=0A= }=0A= },=0A= =0A= criteria: {=0A= tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;',=0A= className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A= id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;',=0A= attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;',=0A= attr: function(m) {=0A= m[3] =3D (m[5] || m[6]);=0A= return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = =3D false;').evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A= return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m);=0A= },=0A= descendant: 'c =3D "descendant";',=0A= child: 'c =3D "child";',=0A= adjacent: 'c =3D "adjacent";',=0A= laterSibling: 'c =3D "laterSibling";'=0A= },=0A= =0A= patterns: {=0A= // combinators must be listed first=0A= // (and descendant needs to be last combinator)=0A= laterSibling: /^\s*~\s*/,=0A= child: /^\s*>\s*/,=0A= adjacent: /^\s*\+\s*/,=0A= descendant: /^\s/,=0A= =0A= // selectors follow=0A= tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,=0A= id: /^#([\w\-\*]+)(\b|$)/,=0A= className: /^\.([\w\-\*]+)(\b|$)/,=0A= pseudo:=0A= /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/,=0A= attrPresence: /^\[([\w]+)\]/,=0A= attr: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/=0A= },=0A= =0A= // for Selector.match and Element#match=0A= assertions: {=0A= tagName: function(element, matches) {=0A= return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase();=0A= },=0A= =0A= className: function(element, matches) {=0A= return Element.hasClassName(element, matches[1]);=0A= },=0A= =0A= id: function(element, matches) {=0A= return element.id =3D=3D=3D matches[1];=0A= },=0A= =0A= attrPresence: function(element, matches) {=0A= return Element.hasAttribute(element, matches[1]);=0A= },=0A= =0A= attr: function(element, matches) {=0A= var nodeValue =3D Element.readAttribute(element, matches[1]);=0A= return Selector.operators[matches[2]](nodeValue, matches[3]);=0A= }=0A= },=0A= =0A= handlers: {=0A= // UTILITY FUNCTIONS=0A= // joins two collections=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= a.push(node);=0A= return a;=0A= },=0A= =0A= // marks an array of nodes for counting=0A= mark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._counted =3D true;=0A= return nodes;=0A= },=0A= =0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._counted =3D undefined;=0A= return nodes;=0A= },=0A= =0A= // mark each child node with its position (for nth calls)=0A= // "ofType" flag indicates whether we're indexing for nth-of-type=0A= // rather than nth-child=0A= index: function(parentNode, reverse, ofType) {=0A= parentNode._counted =3D true;=0A= if (reverse) {=0A= for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) {=0A= var node =3D nodes[i];=0A= if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++;=0A= }=0A= } else {=0A= for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++)=0A= if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++;=0A= }=0A= },=0A= =0A= // filters out duplicates and extends all nodes=0A= unique: function(nodes) {=0A= if (nodes.length =3D=3D 0) return nodes;=0A= var results =3D [], n;=0A= for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A= if (!(n =3D nodes[i])._counted) {=0A= n._counted =3D true;=0A= results.push(Element.extend(n));=0A= }=0A= return Selector.handlers.unmark(results);=0A= },=0A= =0A= // COMBINATOR FUNCTIONS=0A= descendant: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName('*'));=0A= return results;=0A= },=0A= =0A= child: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A= if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child);=0A= }=0A= return results;=0A= },=0A= =0A= adjacent: function(nodes) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= var next =3D this.nextElementSibling(node);=0A= if (next) results.push(next);=0A= }=0A= return results;=0A= },=0A= =0A= laterSibling: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, Element.nextSiblings(node));=0A= return results;=0A= },=0A= =0A= nextElementSibling: function(node) {=0A= while (node =3D node.nextSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= previousElementSibling: function(node) {=0A= while (node =3D node.previousSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= // TOKEN FUNCTIONS=0A= tagName: function(nodes, root, tagName, combinator) {=0A= var uTagName =3D tagName.toUpperCase();=0A= var results =3D [], h =3D Selector.handlers;=0A= if (nodes) {=0A= if (combinator) {=0A= // fastlane for ordinary descendant combinators=0A= if (combinator =3D=3D "descendant") {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName(tagName));=0A= return results;=0A= } else nodes =3D this[combinator](nodes);=0A= if (tagName =3D=3D "*") return nodes;=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName.toUpperCase() =3D=3D=3D uTagName) = results.push(node);=0A= return results;=0A= } else return root.getElementsByTagName(tagName);=0A= },=0A= =0A= id: function(nodes, root, id, combinator) {=0A= var targetNode =3D $(id), h =3D Selector.handlers;=0A= if (!targetNode) return [];=0A= if (!nodes && root =3D=3D document) return [targetNode];=0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D 'child') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (targetNode.parentNode =3D=3D node) return [targetNode];=0A= } else if (combinator =3D=3D 'descendant') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.descendantOf(targetNode, node)) return = [targetNode];=0A= } else if (combinator =3D=3D 'adjacent') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node)=0A= return [targetNode];=0A= } else nodes =3D h[combinator](nodes);=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node =3D=3D targetNode) return [targetNode];=0A= return [];=0A= }=0A= return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : [];=0A= },=0A= =0A= className: function(nodes, root, className, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= return Selector.handlers.byClassName(nodes, root, className);=0A= },=0A= =0A= byClassName: function(nodes, root, className) {=0A= if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A= var needle =3D ' ' + className + ' ';=0A= for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) {=0A= nodeClassName =3D node.className;=0A= if (nodeClassName.length =3D=3D 0) continue;=0A= if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle))=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= attrPresence: function(nodes, root, attr) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= var results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.hasAttribute(node, attr)) results.push(node);=0A= return results;=0A= },=0A= =0A= attr: function(nodes, root, attr, value, operator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= var handler =3D Selector.operators[operator], results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= var nodeValue =3D Element.readAttribute(node, attr);=0A= if (nodeValue =3D=3D=3D null) continue;=0A= if (handler(nodeValue, value)) results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= pseudo: function(nodes, name, value, root, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= return Selector.pseudos[name](nodes, value, root);=0A= }=0A= },=0A= =0A= pseudos: {=0A= 'first-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.previousElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'last-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.nextElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'only-child': function(nodes, value, root) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!h.previousElementSibling(node) && = !h.nextElementSibling(node))=0A= results.push(node);=0A= return results;=0A= },=0A= 'nth-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root);=0A= },=0A= 'nth-last-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true);=0A= },=0A= 'nth-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, false, true);=0A= },=0A= 'nth-last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true, true);=0A= },=0A= 'first-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, false, true);=0A= },=0A= 'last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, true, true);=0A= },=0A= 'only-of-type': function(nodes, formula, root) {=0A= var p =3D Selector.pseudos;=0A= return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root);=0A= },=0A= =0A= // handles the an+b logic=0A= getIndices: function(a, b, total) {=0A= if (a =3D=3D 0) return b > 0 ? [b] : [];=0A= return $R(1, total).inject([], function(memo, i) {=0A= if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A= return memo;=0A= });=0A= },=0A= =0A= // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type=0A= nth: function(nodes, formula, root, reverse, ofType) {=0A= if (nodes.length =3D=3D 0) return [];=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A= h.mark(nodes);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= if (!node.parentNode._counted) {=0A= h.index(node.parentNode, reverse, ofType);=0A= indexed.push(node.parentNode);=0A= }=0A= }=0A= if (formula.match(/^\d+$/)) { // just a number=0A= formula =3D Number(formula);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.nodeIndex =3D=3D formula) results.push(node);=0A= } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b=0A= if (m[1] =3D=3D "-") m[1] =3D -1;=0A= var a =3D m[1] ? Number(m[1]) : 1;=0A= var b =3D m[2] ? Number(m[2]) : 0;=0A= var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A= for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) {=0A= for (var j =3D 0; j < l; j++)=0A= if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A= }=0A= }=0A= h.unmark(nodes);=0A= h.unmark(indexed);=0A= return results;=0A= },=0A= =0A= 'empty': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= // IE treats comments as element nodes=0A= if (node.tagName =3D=3D '!' || (node.firstChild && = !node.innerHTML.match(/^\s*$/))) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= 'not': function(nodes, selector, root) {=0A= var h =3D Selector.handlers, selectorType, m;=0A= var exclusions =3D new Selector(selector).findElements(root);=0A= h.mark(exclusions);=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node._counted) results.push(node);=0A= h.unmark(exclusions);=0A= return results;=0A= },=0A= =0A= 'enabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'disabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'checked': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.checked) results.push(node);=0A= return results;=0A= }=0A= },=0A= =0A= operators: {=0A= '=3D': function(nv, v) { return nv =3D=3D v; },=0A= '!=3D': function(nv, v) { return nv !=3D v; },=0A= '^=3D': function(nv, v) { return nv.startsWith(v); },=0A= '$=3D': function(nv, v) { return nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv.include(v); },=0A= '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); },=0A= '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + = '-').include('-' + v.toUpperCase() + '-'); }=0A= },=0A= =0A= matchElements: function(elements, expression) {=0A= var matches =3D new Selector(expression).findElements(), h =3D = Selector.handlers;=0A= h.mark(matches);=0A= for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++)=0A= if (element._counted) results.push(element);=0A= h.unmark(matches);=0A= return results;=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (Object.isNumber(expression)) {=0A= index =3D expression; expression =3D false;=0A= }=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= var exprs =3D expressions.join(',');=0A= expressions =3D [];=0A= exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {=0A= expressions.push(m[1].strip());=0A= });=0A= var results =3D [], h =3D Selector.handlers;=0A= for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A= selector =3D new Selector(expressions[i].strip());=0A= h.concat(results, selector.findElements(element));=0A= }=0A= return (l > 1) ? h.unique(results) : results;=0A= }=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= // IE returns comment nodes on getElementsByTagName("*").=0A= // Filter them out.=0A= Selector.handlers.concat =3D function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= if (node.tagName !=3D=3D "!") a.push(node);=0A= return a;=0A= };=0A= }=0A= =0A= function $$() {=0A= return Selector.findChildElements(document, $A(arguments));=0A= }=0A= var Form =3D {=0A= reset: function(form) {=0A= $(form).reset();=0A= return form;=0A= },=0A= =0A= serializeElements: function(elements, options) {=0A= if (typeof options !=3D 'object') options =3D { hash: !!options };=0A= else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A= var key, value, submitted =3D false, submit =3D options.submit;=0A= =0A= var data =3D elements.inject({ }, function(result, element) {=0A= if (!element.disabled && element.name) {=0A= key =3D element.name; value =3D $(element).getValue();=0A= if (value !=3D null && (element.type !=3D 'submit' || = (!submitted &&=0A= submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) {=0A= if (key in result) {=0A= // a key is already present; construct an array of values=0A= if (!Object.isArray(result[key])) result[key] =3D = [result[key]];=0A= result[key].push(value);=0A= }=0A= else result[key] =3D value;=0A= }=0A= }=0A= return result;=0A= });=0A= =0A= return options.hash ? data : Object.toQueryString(data);=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form, options) {=0A= return Form.serializeElements(Form.getElements(form), options);=0A= },=0A= =0A= getElements: function(form) {=0A= return $A($(form).getElementsByTagName('*')).inject([],=0A= function(elements, child) {=0A= if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A= elements.push(Element.extend(child));=0A= return elements;=0A= }=0A= );=0A= },=0A= =0A= getInputs: function(form, typeName, name) {=0A= form =3D $(form);=0A= var inputs =3D form.getElementsByTagName('input');=0A= =0A= if (!typeName && !name) return $A(inputs).map(Element.extend);=0A= =0A= for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name))=0A= continue;=0A= matchingInputs.push(Element.extend(input));=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('disable');=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('enable');=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= var elements =3D $(form).getElements().findAll(function(element) {=0A= return 'hidden' !=3D element.type && !element.disabled;=0A= });=0A= var firstByIndex =3D elements.findAll(function(element) {=0A= return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A= }).sortBy(function(element) { return element.tabIndex }).first();=0A= =0A= return firstByIndex ? firstByIndex : elements.find(function(element) = {=0A= return ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase());=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= form =3D $(form);=0A= form.findFirstElement().activate();=0A= return form;=0A= },=0A= =0A= request: function(form, options) {=0A= form =3D $(form), options =3D Object.clone(options || { });=0A= =0A= var params =3D options.parameters, action =3D = form.readAttribute('action') || '';=0A= if (action.blank()) action =3D window.location.href;=0A= options.parameters =3D form.serialize(true);=0A= =0A= if (params) {=0A= if (Object.isString(params)) params =3D params.toQueryParams();=0A= Object.extend(options.parameters, params);=0A= }=0A= =0A= if (form.hasAttribute('method') && !options.method)=0A= options.method =3D form.method;=0A= =0A= return new Ajax.Request(action, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element =3D {=0A= focus: function(element) {=0A= $(element).focus();=0A= return element;=0A= },=0A= =0A= select: function(element) {=0A= $(element).select();=0A= return element;=0A= }=0A= };=0A= =0A= Form.Element.Methods =3D {=0A= serialize: function(element) {=0A= element =3D $(element);=0A= if (!element.disabled && element.name) {=0A= var value =3D element.getValue();=0A= if (value !=3D undefined) {=0A= var pair =3D { };=0A= pair[element.name] =3D value;=0A= return Object.toQueryString(pair);=0A= }=0A= }=0A= return '';=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= return Form.Element.Serializers[method](element);=0A= },=0A= =0A= setValue: function(element, value) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= Form.Element.Serializers[method](element, value);=0A= return element;=0A= },=0A= =0A= clear: function(element) {=0A= $(element).value =3D '';=0A= return element;=0A= },=0A= =0A= present: function(element) {=0A= return $(element).value !=3D '';=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= try {=0A= element.focus();=0A= if (element.select && (element.tagName.toLowerCase() !=3D 'input' = ||=0A= !['button', 'reset', 'submit'].include(element.type)))=0A= element.select();=0A= } catch (e) { }=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.blur();=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Field =3D Form.Element;=0A= var $F =3D Form.Element.Methods.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element, value) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element, value);=0A= default:=0A= return Form.Element.Serializers.textarea(element, value);=0A= }=0A= },=0A= =0A= inputSelector: function(element, value) {=0A= if (Object.isUndefined(value)) return element.checked ? = element.value : null;=0A= else element.checked =3D !!value;=0A= },=0A= =0A= textarea: function(element, value) {=0A= if (Object.isUndefined(value)) return element.value;=0A= else element.value =3D value;=0A= },=0A= =0A= select: function(element, index) {=0A= if (Object.isUndefined(index))=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= else {=0A= var opt, value, single =3D !Object.isArray(index);=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= opt =3D element.options[i];=0A= value =3D this.optionValue(opt);=0A= if (single) {=0A= if (value =3D=3D index) {=0A= opt.selected =3D true;=0A= return;=0A= }=0A= }=0A= else opt.selected =3D index.include(value);=0A= }=0A= }=0A= },=0A= =0A= selectOne: function(element) {=0A= var index =3D element.selectedIndex;=0A= return index >=3D 0 ? this.optionValue(element.options[index]) : = null;=0A= },=0A= =0A= selectMany: function(element) {=0A= var values, length =3D element.length;=0A= if (!length) return null;=0A= =0A= for (var i =3D 0, values =3D []; i < length; i++) {=0A= var opt =3D element.options[i];=0A= if (opt.selected) values.push(this.optionValue(opt));=0A= }=0A= return values;=0A= },=0A= =0A= optionValue: function(opt) {=0A= // extend element because hasAttribute may not be native=0A= return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A= initialize: function($super, element, frequency, callback) {=0A= $super(callback, frequency);=0A= this.element =3D $(element);=0A= this.lastValue =3D this.getValue();=0A= },=0A= =0A= execute: function() {=0A= var value =3D this.getValue();=0A= if (Object.isString(this.lastValue) && Object.isString(value) ?=0A= this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= });=0A= =0A= Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D Class.create({=0A= initialize: function(element, callback) {=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A= this.registerFormCallbacks();=0A= else=0A= this.registerCallback(this.element);=0A= },=0A= =0A= onElementEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= },=0A= =0A= registerFormCallbacks: function() {=0A= Form.getElements(this.element).each(this.registerCallback, this);=0A= },=0A= =0A= registerCallback: function(element) {=0A= if (element.type) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= Event.observe(element, 'click', = this.onElementEvent.bind(this));=0A= break;=0A= default:=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= });=0A= =0A= Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= if (!window.Event) var Event =3D { };=0A= =0A= Object.extend(Event, {=0A= KEY_BACKSPACE: 8,=0A= KEY_TAB: 9,=0A= KEY_RETURN: 13,=0A= KEY_ESC: 27,=0A= KEY_LEFT: 37,=0A= KEY_UP: 38,=0A= KEY_RIGHT: 39,=0A= KEY_DOWN: 40,=0A= KEY_DELETE: 46,=0A= KEY_HOME: 36,=0A= KEY_END: 35,=0A= KEY_PAGEUP: 33,=0A= KEY_PAGEDOWN: 34,=0A= KEY_INSERT: 45,=0A= =0A= cache: { },=0A= =0A= relatedTarget: function(event) {=0A= var element;=0A= switch(event.type) {=0A= case 'mouseover': element =3D event.fromElement; break;=0A= case 'mouseout': element =3D event.toElement; break;=0A= default: return null;=0A= }=0A= return Element.extend(element);=0A= }=0A= });=0A= =0A= Event.Methods =3D (function() {=0A= var isButton;=0A= =0A= if (Prototype.Browser.IE) {=0A= var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A= isButton =3D function(event, code) {=0A= return event.button =3D=3D buttonMap[code];=0A= };=0A= =0A= } else if (Prototype.Browser.WebKit) {=0A= isButton =3D function(event, code) {=0A= switch (code) {=0A= case 0: return event.which =3D=3D 1 && !event.metaKey;=0A= case 1: return event.which =3D=3D 1 && event.metaKey;=0A= default: return false;=0A= }=0A= };=0A= =0A= } else {=0A= isButton =3D function(event, code) {=0A= return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code);=0A= };=0A= }=0A= =0A= return {=0A= isLeftClick: function(event) { return isButton(event, 0) },=0A= isMiddleClick: function(event) { return isButton(event, 1) },=0A= isRightClick: function(event) { return isButton(event, 2) },=0A= =0A= element: function(event) {=0A= var node =3D Event.extend(event).target;=0A= return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? = node.parentNode : node);=0A= },=0A= =0A= findElement: function(event, expression) {=0A= var element =3D Event.element(event);=0A= if (!expression) return element;=0A= var elements =3D [element].concat(element.ancestors());=0A= return Selector.findElement(elements, expression, 0);=0A= },=0A= =0A= pointer: function(event) {=0A= return {=0A= x: event.pageX || (event.clientX +=0A= (document.documentElement.scrollLeft || = document.body.scrollLeft)),=0A= y: event.pageY || (event.clientY +=0A= (document.documentElement.scrollTop || = document.body.scrollTop))=0A= };=0A= },=0A= =0A= pointerX: function(event) { return Event.pointer(event).x },=0A= pointerY: function(event) { return Event.pointer(event).y },=0A= =0A= stop: function(event) {=0A= Event.extend(event);=0A= event.preventDefault();=0A= event.stopPropagation();=0A= event.stopped =3D true;=0A= }=0A= };=0A= })();=0A= =0A= Event.extend =3D (function() {=0A= var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) {=0A= m[name] =3D Event.Methods[name].methodize();=0A= return m;=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(methods, {=0A= stopPropagation: function() { this.cancelBubble =3D true },=0A= preventDefault: function() { this.returnValue =3D false },=0A= inspect: function() { return "[object Event]" }=0A= });=0A= =0A= return function(event) {=0A= if (!event) return false;=0A= if (event._extendedByPrototype) return event;=0A= =0A= event._extendedByPrototype =3D Prototype.emptyFunction;=0A= var pointer =3D Event.pointer(event);=0A= Object.extend(event, {=0A= target: event.srcElement,=0A= relatedTarget: Event.relatedTarget(event),=0A= pageX: pointer.x,=0A= pageY: pointer.y=0A= });=0A= return Object.extend(event, methods);=0A= };=0A= =0A= } else {=0A= Event.prototype =3D Event.prototype || = document.createEvent("HTMLEvents").__proto__;=0A= Object.extend(Event.prototype, methods);=0A= return Prototype.K;=0A= }=0A= })();=0A= =0A= Object.extend(Event, (function() {=0A= var cache =3D Event.cache;=0A= =0A= function getEventID(element) {=0A= if (element._eventID) return element._eventID;=0A= arguments.callee.id =3D arguments.callee.id || 1;=0A= return element._eventID =3D ++arguments.callee.id;=0A= }=0A= =0A= function getDOMEventName(eventName) {=0A= if (eventName && eventName.include(':')) return "dataavailable";=0A= return eventName;=0A= }=0A= =0A= function getCacheForID(id) {=0A= return cache[id] =3D cache[id] || { };=0A= }=0A= =0A= function getWrappersForEventName(id, eventName) {=0A= var c =3D getCacheForID(id);=0A= return c[eventName] =3D c[eventName] || [];=0A= }=0A= =0A= function createWrapper(element, eventName, handler) {=0A= var id =3D getEventID(element);=0A= var c =3D getWrappersForEventName(id, eventName);=0A= if (c.pluck("handler").include(handler)) return false;=0A= =0A= var wrapper =3D function(event) {=0A= if (!Event || !Event.extend ||=0A= (event.eventName && event.eventName !=3D eventName))=0A= return false;=0A= =0A= Event.extend(event);=0A= handler.call(element, event);=0A= };=0A= =0A= wrapper.handler =3D handler;=0A= c.push(wrapper);=0A= return wrapper;=0A= }=0A= =0A= function findWrapper(id, eventName, handler) {=0A= var c =3D getWrappersForEventName(id, eventName);=0A= return c.find(function(wrapper) { return wrapper.handler =3D=3D = handler });=0A= }=0A= =0A= function destroyWrapper(id, eventName, handler) {=0A= var c =3D getCacheForID(id);=0A= if (!c[eventName]) return false;=0A= c[eventName] =3D c[eventName].without(findWrapper(id, eventName, = handler));=0A= }=0A= =0A= function destroyCache() {=0A= for (var id in cache)=0A= for (var eventName in cache[id])=0A= cache[id][eventName] =3D null;=0A= }=0A= =0A= if (window.attachEvent) {=0A= window.attachEvent("onunload", destroyCache);=0A= }=0A= =0A= return {=0A= observe: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var name =3D getDOMEventName(eventName);=0A= =0A= var wrapper =3D createWrapper(element, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.addEventListener) {=0A= element.addEventListener(name, wrapper, false);=0A= } else {=0A= element.attachEvent("on" + name, wrapper);=0A= }=0A= =0A= return element;=0A= },=0A= =0A= stopObserving: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var id =3D getEventID(element), name =3D = getDOMEventName(eventName);=0A= =0A= if (!handler && eventName) {=0A= getWrappersForEventName(id, eventName).each(function(wrapper) {=0A= element.stopObserving(eventName, wrapper.handler);=0A= });=0A= return element;=0A= =0A= } else if (!eventName) {=0A= Object.keys(getCacheForID(id)).each(function(eventName) {=0A= element.stopObserving(eventName);=0A= });=0A= return element;=0A= }=0A= =0A= var wrapper =3D findWrapper(id, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.removeEventListener) {=0A= element.removeEventListener(name, wrapper, false);=0A= } else {=0A= element.detachEvent("on" + name, wrapper);=0A= }=0A= =0A= destroyWrapper(id, eventName, handler);=0A= =0A= return element;=0A= },=0A= =0A= fire: function(element, eventName, memo) {=0A= element =3D $(element);=0A= if (element =3D=3D document && document.createEvent && = !element.dispatchEvent)=0A= element =3D document.documentElement;=0A= =0A= var event;=0A= if (document.createEvent) {=0A= event =3D document.createEvent("HTMLEvents");=0A= event.initEvent("dataavailable", true, true);=0A= } else {=0A= event =3D document.createEventObject();=0A= event.eventType =3D "ondataavailable";=0A= }=0A= =0A= event.eventName =3D eventName;=0A= event.memo =3D memo || { };=0A= =0A= if (document.createEvent) {=0A= element.dispatchEvent(event);=0A= } else {=0A= element.fireEvent(event.eventType, event);=0A= }=0A= =0A= return Event.extend(event);=0A= }=0A= };=0A= })());=0A= =0A= Object.extend(Event, Event.Methods);=0A= =0A= Element.addMethods({=0A= fire: Event.fire,=0A= observe: Event.observe,=0A= stopObserving: Event.stopObserving=0A= });=0A= =0A= Object.extend(document, {=0A= fire: Element.Methods.fire.methodize(),=0A= observe: Element.Methods.observe.methodize(),=0A= stopObserving: Element.Methods.stopObserving.methodize(),=0A= loaded: false=0A= });=0A= =0A= (function() {=0A= /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A= Matthias Miller, Dean Edwards and John Resig. */=0A= =0A= var timer;=0A= =0A= function fireContentLoadedEvent() {=0A= if (document.loaded) return;=0A= if (timer) window.clearInterval(timer);=0A= document.fire("dom:loaded");=0A= document.loaded =3D true;=0A= }=0A= =0A= if (document.addEventListener) {=0A= if (Prototype.Browser.WebKit) {=0A= timer =3D window.setInterval(function() {=0A= if (/loaded|complete/.test(document.readyState))=0A= fireContentLoadedEvent();=0A= }, 0);=0A= =0A= Event.observe(window, "load", fireContentLoadedEvent);=0A= =0A= } else {=0A= document.addEventListener("DOMContentLoaded",=0A= fireContentLoadedEvent, false);=0A= }=0A= =0A= } else {=0A= document.write("');=0A= },=0A= addLibrary: function(scriptLibraryName) {=0A= JSfileName =3D 'xwiki.js'; // This should be added in a xwiki.js = file 'xwiki.js'=0A= if(scriptLibraryName=3D=3D'scriptaculous') {=0A= libraries =3D ['prototype.js', 'util.js', 'effects.js', 'dragdrop.js', = 'controls.js'];=0A= }=0A= if(scriptLibraryName=3D=3D'rico') {=0A= libraries =3D ['rico.js'];=0A= }=0A= var scriptTags =3D document.getElementsByTagName("script");=0A= for(var i=3D0;i=3D 4) {=0A= this.versionMinor =3D parseFloat( ua.substring( ua.indexOf('msie ') = + 5 ) );=0A= }=0A= else if (this.isMozilla) {=0A= this.versionMinor =3D parseFloat( ua.substring( ua.indexOf('rv:') + = 3 ) );=0A= }=0A= else if (this.isSafari) {=0A= this.versionMinor =3D parseFloat( ua.substring( ua.lastIndexOf('/') = + 1 ) );=0A= }=0A= else if (this.isOpera) {=0A= if (ua.indexOf('opera/') !=3D -1) {=0A= this.versionMinor =3D parseFloat( ua.substring( = ua.indexOf('opera/') + 6 ) );=0A= }=0A= else {=0A= this.versionMinor =3D parseFloat( ua.substring( ua.indexOf('opera = ') + 6 ) );=0A= }=0A= }=0A= else if (this.isKonqueror) {=0A= this.versionMinor =3D parseFloat( ua.substring( = ua.indexOf('konqueror/') + 10 ) );=0A= }=0A= else if (this.isIcab) {=0A= if (ua.indexOf('icab/') !=3D -1) {=0A= this.versionMinor =3D parseFloat( ua.substring( = ua.indexOf('icab/') + 6 ) );=0A= }=0A= else {=0A= this.versionMinor =3D parseFloat( ua.substring( ua.indexOf('icab = ') + 6 ) );=0A= }=0A= }=0A= =0A= this.versionMajor =3D parseInt(this.versionMinor); =0A= this.geckoVersion =3D ( (this.isGecko) ? ua.substring( = (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );=0A= =0A= // dom support=0A= this.isDOM1 =3D (document.getElementById);=0A= this.isDOM2Event =3D (document.addEventListener && = document.removeEventListener);=0A= =0A= // css compatibility mode=0A= this.mode =3D document.compatMode ? document.compatMode : 'BackCompat';=0A= =0A= // platform=0A= this.isWin =3D (ua.indexOf('win') !=3D -1);=0A= this.isWin32 =3D (this.isWin && ( ua.indexOf('95') !=3D -1 || = ua.indexOf('98') !=3D -1 || ua.indexOf('nt') !=3D -1 || = ua.indexOf('win32') !=3D -1 || ua.indexOf('32bit') !=3D -1 || = ua.indexOf('xp') !=3D -1) );=0A= this.isMac =3D (ua.indexOf('mac') !=3D -1);=0A= this.isUnix =3D (ua.indexOf('unix') !=3D -1 || ua.indexOf('sunos') = !=3D -1 || ua.indexOf('bsd') !=3D -1 || ua.indexOf('x11') !=3D -1)=0A= this.isLinux =3D (ua.indexOf('linux') !=3D -1);=0A= =0A= // specific browser shortcuts=0A= this.isNS4x =3D (this.isNS && this.versionMajor =3D=3D 4);=0A= this.isNS40x =3D (this.isNS4x && this.versionMinor < 4.5);=0A= this.isNS47x =3D (this.isNS4x && this.versionMinor >=3D 4.7);=0A= this.isNS4up =3D (this.isNS && this.versionMinor >=3D 4);=0A= this.isNS6x =3D (this.isNS && this.versionMajor =3D=3D 6);=0A= this.isNS6up =3D (this.isNS && this.versionMajor >=3D 6);=0A= this.isNS7x =3D (this.isNS && this.versionMajor =3D=3D 7);=0A= this.isNS7up =3D (this.isNS && this.versionMajor >=3D 7);=0A= =0A= this.isIE4x =3D (this.isIE && this.versionMajor =3D=3D 4);=0A= this.isIE4up =3D (this.isIE && this.versionMajor >=3D 4);=0A= this.isIE5x =3D (this.isIE && this.versionMajor =3D=3D 5);=0A= this.isIE55 =3D (this.isIE && this.versionMinor =3D=3D 5.5);=0A= this.isIE5up =3D (this.isIE && this.versionMajor >=3D 5);=0A= this.isIE6x =3D (this.isIE && this.versionMajor =3D=3D 6);=0A= this.isIE6up =3D (this.isIE && this.versionMajor >=3D 6);=0A= =0A= this.isIE4xMac =3D (this.isIE4x && this.isMac);=0A= }=0A= var browser =3D new BrowserDetectLite();=0A= ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/skins/albatross/chwScripts.js function chwPositionSelector(property, type, defaultPosition){=0A= this.property =3D property;=0A= this.type =3D type;=0A= /*=0A= The curently chosen position=0A= Possible values:=0A= - Type 1 (4 positions): Top, Left, Right, Bottom=0A= - Type 2 (9 positions): TopLeft, TopCenter, TopRight,=0A= CenterLeft, CenterCenter, CenterRight,=0A= BottomLeft, BottomCenter, BottomRight=0A= */=0A= this.selected =3D defaultPosition;=0A= /*=0A= Is the left mouse button pressed at the moment?=0A= */=0A= this.leftButtonDown =3D false;=0A= /*=0A= Highlight the element=0A= (set the apropriate css class)=0A= */=0A= this.onmouseover =3D function(element, position){=0A= if (this.selected =3D=3D position){=0A= element.className =3D "chwSelectedCellHighlighted";=0A= }=0A= else if (this.leftButtonDown =3D=3D true){=0A= document.getElementById('chw' + this.property + = this.selected).className =3D "normal";=0A= this.selected =3D position;=0A= element.className =3D "chwSelectedCellHighlighted";=0A= switch(this.type){=0A= case "Position":=0A= document.getElementById('chw' + this.property + 'Input').value = =3D position.toLowerCase();=0A= break;=0A= case "Alignment":=0A= document.getElementById('chw' + this.property + = 'HorizontalInput').value =3D position.substring(position.indexOf('_') + = 1).toLowerCase();=0A= document.getElementById('chw' + this.property + = 'VerticalInput').value =3D position.substring(0, = position.indexOf('_')).toLowerCase();=0A= break;=0A= }=0A= }=0A= else {=0A= element.className =3D "chwNormalCellHighlighted";=0A= }=0A= }=0A= /*=0A= Highlight the element=0A= (set the apropriate css class)=0A= */=0A= this.onmouseout =3D function(element, position){=0A= if (this.selected =3D=3D position){=0A= element.className =3D "chwSelectedCell";=0A= }=0A= else {=0A= element.className =3D "chwNormalCell";=0A= }=0A= }=0A= =0A= /*=0A= Selection started...=0A= */=0A= this.onmousedown =3D function(evt, position){=0A= if (evt.button !=3D window.wizard.LMB) return;=0A= this.leftButtonDown =3D true;=0A= if (this.selected =3D=3D position) return;=0A= document.getElementById('chw' + this.property + = this.selected).className =3D "chwNormalCell";=0A= this.selected =3D position;=0A= switch(this.type){=0A= case "Position":=0A= document.getElementById('chw' + this.property + 'Input').value = =3D position.toLowerCase();=0A= break;=0A= case "Alignment":=0A= document.getElementById('chw' + this.property + = 'HorizontalInput').value =3D position.substring(position.indexOf('_') + = 1).toLowerCase();=0A= document.getElementById('chw' + this.property + = 'VerticalInput').value =3D position.substring(0, = position.indexOf('_')).toLowerCase();=0A= break;=0A= }=0A= document.getElementById('chw' + this.property + position).className = =3D "chwSelectedCellHighlighted";=0A= }=0A= =0A= /*=0A= ... Selection ended=0A= */=0A= this.onmouseup =3D function(evt){=0A= if (evt.button !=3D window.wizard.LMB) return;=0A= this.leftButtonDown =3D false;=0A= }=0A= }=0A= =0A= /*=0A= Color chooser=0A= Provides validation and visualizing functions=0A= */=0A= function chwColorChooser(property){=0A= this.property =3D property;=0A= this.element =3D document.getElementById('chw' + this.property + = 'Input');=0A= this.customGroup =3D document.getElementById('chw' + this.property + = 'CustomGroup');=0A= this.custom =3D document.getElementById('chw' + this.property + = 'CustomInput');=0A= this.customOption =3D document.getElementById('chw' + this.property + = 'CustomOption');=0A= /*=0A= The color code that replaces the value entered=0A= by the user, if that vakue is wrong=0A= */=0A= this.storedColorCode =3D "#000000";=0A= /*=0A= Choice of color changed=0A= */=0A= this.colorChoiceChanged =3D function(){=0A= if (this.element.value.indexOf('#') =3D=3D 0){=0A= this.customGroup.style.display=3D"inline";=0A= }=0A= else {=0A= this.customGroup.style.display=3D"none";=0A= }=0A= }=0A= =0A= /*=0A= Show the color with the color code the user entered=0A= */=0A= this.showCustomColor =3D function(){=0A= if = (this.custom.value.match("^#(([0-9a-fA-F][9a-fA-F][0-9a-fA-F])|((([0-9a-f= A-F]{2})[9a-fA-F]([0-9a-fA-F]){3})))$")){=0A= // if = (this.custom.value.match("^#(([9a-fA-F]{3})|(([9a-fA-F][0-9a-fA-F]){3}))$= ")){=0A= this.custom.style.backgroundColor =3D this.custom.value;=0A= this.custom.style.color =3D "#000";=0A= }=0A= else if = (this.custom.value.match("^(([0-9a-fA-F][9a-fA-F][0-9a-fA-F])|((([0-9a-fA= -F]{2})[9a-fA-F]([0-9a-fA-F]){3})))$")){=0A= // else if = (this.custom.value.match("^(([9a-fA-F]{3})|(([9a-fA-F][0-9a-fA-F]){3}))$"= )){=0A= this.custom.style.backgroundColor =3D '#' + this.custom.value;=0A= this.custom.style.color =3D "#000";=0A= }=0A= else = if(this.custom.value.match("(^#[0-9a-fA-F]{3}$)|(^#[0-9a-fA-F]{6}$)")){=0A= this.custom.style.backgroundColor =3D this.custom.value;=0A= this.custom.style.color =3D "#FFF";=0A= }=0A= else = if(this.custom.value.match("(^[0-9a-fA-F]{3}$)|(^[0-9a-fA-F]{6}$)")){=0A= this.custom.style.backgroundColor =3D '#' + this.custom.value;=0A= this.custom.style.color =3D "#FFF";=0A= }=0A= }=0A= =0A= /*=0A= Store the previeous color code, which is valid=0A= */=0A= this.customColorValueFocus =3D function(){=0A= this.storedColorCode =3D this.custom.value;=0A= }=0A= =0A= /*=0A= Validate the color code entered by the user=0A= */=0A= this.validateCustomColor =3D function(){=0A= var selectedFirst =3D this.element.selectedIndex;=0A= if(this.custom.value.match("^#[0-9a-fA-F]{3}$")){=0A= this.customOption.value =3D '#' + this.custom.value.charAt(1) + = this.custom.value.charAt(1) +=0A= this.custom.value.charAt(2) + this.custom.value.charAt(2) +=0A= this.custom.value.charAt(3) + this.custom.value.charAt(3);=0A= }=0A= else if(this.custom.value.match("^[0-9a-fA-F]{3}$")){=0A= this.customOption.value =3D '#' + this.custom.value.charAt(0) + = this.custom.value.charAt(0) +=0A= this.custom.value.charAt(1) + this.custom.value.charAt(1) +=0A= this.custom.value.charAt(2) + this.custom.value.charAt(2);=0A= }=0A= else if(this.custom.value.match("^[0-9a-fA-F]{6}$")){=0A= this.customOption.value =3D '#' + this.custom.value;=0A= }=0A= else if(this.custom.value.match("^#[0-9a-fA-F]{6}$")){=0A= this.customOption.value =3D this.custom.value;=0A= }=0A= else{=0A= this.custom.value =3D this.storedColorCode;=0A= this.showCustomColor();=0A= return false;=0A= }=0A= this.element.selectedIndex =3D selectedFirst;=0A= }=0A= this.showCustomColor();=0A= }=0A= =0A= /*=0A= Data =3D> Data sources=0A= Type =3D> Chart type=0A= Titles =3D> Chart title, Axes names=0A= Axes =3D> Displayed values on axes=0A= Grid =3D> Gridline options=0A= Labels =3D> Displayed labels (series name, values)=0A= Legend =3D> Legend position=0A= Space =3D> Element spacing=0A= Colors =3D> Color customization=0A= Insert =3D> Insertion point=0A= */=0A= =0A= /**=0A= * Client side JavaScript code for the chart creation wizard.=0A= */=0A= function chwWizard(){=0A= var skinDirectory;=0A= /** The order of the wizard pages */=0A= var pageOrder =3D ["Data", "Type", "Titles", "Axes", "Grid", "Labels", = "Legend", "Space", "Colors", "Insert"];=0A= /** The active (selected) wizard page. */=0A= var activePage;=0A= /** The selected chart type. */=0A= var selectedChartType;=0A= /** The enabled wizard pages. Blocks activation of disabled pages. */=0A= var enabledPages =3D {=0A= Data : true,=0A= Type : false,=0A= Titles : false,=0A= Axes : false,=0A= Grid : false,=0A= Labels : false,=0A= Legend : false,=0A= Space : false,=0A= Colors : false,=0A= Insert : false=0A= }=0A= var activatedElements =3D {=0A= Bar : {=0A= Data : [],=0A= Type : ["ChartType"],=0A= Titles : ["ChartTitle", "ChartSubtitle"]=0A= /* not yet=0A= , Axes : ["XAxis", "YAxis"] */=0A= },=0A= Pie : {=0A= Data : [],=0A= Type : ["ChartType"],=0A= Titles : ["ChartTitle", "ChartSubtitle"]=0A= }=0A= /* these don't work yet=0A= , Line : {=0A= Data : [],=0A= Type : ["ChartType"],=0A= Titles : ["ChartTitle", "ChartSubtitle"],=0A= Axes : ["XAxis", "YAxis"]=0A= },=0A= Area : {=0A= Data : [],=0A= Type : ["ChartType"],=0A= Titles : ["ChartTitle", "ChartSubtitle"],=0A= Axes : ["XAxis", "YAxis"]=0A= },=0A= Time : {=0A= Data : [],=0A= Type : ["ChartType"],=0A= Titles : ["ChartTitle", "ChartSubtitle"],=0A= Axes : ["XAxis", "YAxis"]=0A= }*/=0A= }=0A= var selectorObjects =3D new Object();=0A= var colorObjects =3D new Object();=0A= /** The Next button */=0A= var nextBtn;=0A= /** The Back button */=0A= var backBtn;=0A= /** The Finish button */=0A= var finishBtn;=0A= var backEnabled =3D false;=0A= var nextEnabled =3D false;=0A= var finishEnabled =3Dfalse;=0A= var hasDefinedSource =3D false;=0A= var hasReusedSource =3D true;=0A= =0A= // Used for form element validation=0A= var storedValue;=0A= // Locale dependent values for the "show" and "hide" terms=0A= var showWord, hideWord;=0A= =0A= adjustPage =3D function(show, hide){=0A= var a =3D 0, b=3D0;=0A= while(a < show.length && b < hide.length){=0A= if(show[a] < hide[b]){=0A= document.getElementById("chw" + show[a++] + "Div").className =3D = "chwVisible";=0A= }=0A= else if(show[a] > hide[b]){=0A= document.getElementById("chw" + hide[b++] + "Div").className =3D = "chwHidden";=0A= }=0A= else{=0A= a++; b++;=0A= }=0A= }=0A= while(a < show.length){=0A= document.getElementById("chw" + show[a++] + "Div").className =3D = "chwVisible";=0A= }=0A= while(b < hide.length){=0A= document.getElementById("chw" + hide[b++] + "Div").className =3D = "chwHidden";=0A= }=0A= }=0A= =0A= getPageIndex =3D function(pageName){=0A= for(var i =3D 0; i < pageOrder.length; i++){=0A= if(pageOrder[i] =3D=3D pageName) return i;=0A= }=0A= }=0A= =0A= getNextPageIndex =3D function(pageIndex){=0A= while(!activatedElements[selectedChartType][pageOrder[++pageIndex]]){=0A= if(pageIndex =3D=3D pageOrder.length - 1){=0A= return -1;=0A= }=0A= }=0A= return pageIndex;=0A= }=0A= getPrevPageIndex =3D function(pageIndex){=0A= while(!activatedElements[selectedChartType][pageOrder[--pageIndex]]){=0A= if(pageIndex =3D=3D 0){=0A= return -1;=0A= }=0A= }=0A= return pageIndex;=0A= }=0A= enableBack =3D function(){=0A= backBtn.className =3D 'chwButton';=0A= backEnabled =3D true;=0A= }=0A= disableBack =3D function(){=0A= backBtn.className =3D 'chwButtonDisabled';=0A= backEnabled =3D false;=0A= }=0A= enableNext =3D function(){=0A= nextBtn.className =3D 'chwButton';=0A= nextEnabled =3D true;=0A= }=0A= disableNext =3D function(){=0A= nextBtn.className =3D 'chwButtonDisabled';=0A= nextEnabled =3D false;=0A= }=0A= enableFinish =3D function(){=0A= finishBtn.className =3D 'chwButton';=0A= finishEnabled =3D true;=0A= }=0A= disableFinish =3D function(){=0A= finishBtn.className =3D 'chwButtonDisabled';=0A= finishEnabled =3D false;=0A= }=0A= =0A= this.initialize =3D function(theSkinDirectory, theShowWord, = theHideWord){=0A= skinDirectory =3D theSkinDirectory;=0A= showWord =3D theShowWord;=0A= hideWord =3D theHideWord;=0A= backBtn =3D document.getElementById("chwBackButton");=0A= nextBtn =3D document.getElementById("chwNextButton");=0A= finishBtn =3D document.getElementById("chwFinishButton");=0A= activePage =3D pageOrder[0];=0A= document.getElementById('chw' + activePage + 'Wizard').className =3D = "chwActivePage";=0A= selectedChartType =3D = document.getElementById("chwChartTypeInput").value;=0A= for(var wizardPage in activatedElements[selectedChartType]){=0A= document.getElementById("chw" + wizardPage + = "WizardButton").className =3D "chwNavigationImageDisabled";=0A= adjustPage(activatedElements[selectedChartType][wizardPage], []);=0A= }=0A= document.getElementById("chw" + activePage + = "WizardButton").className =3D "chwNavigationImage";=0A= selectorObjects.ChartTitlePosition =3D new = chwPositionSelector("ChartTitlePosition", "Position", "Top");=0A= selectorObjects.ChartTitleAlignment =3D new = chwPositionSelector("ChartTitleAlignment", "Alignment", "Center_Center");=0A= selectorObjects.ChartSubtitlePosition =3D new = chwPositionSelector("ChartSubtitlePosition", "Position", "Top");=0A= selectorObjects.ChartSubtitleAlignment =3D new = chwPositionSelector("ChartSubtitleAlignment", "Alignment", = "Center_Center");=0A= colorObjects.ChartTitleColor =3D new = chwColorChooser("ChartTitleColor");=0A= colorObjects.ChartTitleBackgroundColor =3D new = chwColorChooser("ChartTitleBackgroundColor");=0A= colorObjects.ChartSubtitleColor =3D new = chwColorChooser("ChartSubtitleColor");=0A= colorObjects.ChartSubtitleBackgroundColor =3D new = chwColorChooser("ChartSubtitleBackgroundColor");=0A= if(document.implementation && = document.implementation.hasFeature("HTMLEvents", "2.0")){=0A= this.LMB =3D 0;=0A= }=0A= else{=0A= this.LMB =3D 1;=0A= }=0A= =0A= /*=0A= Create color picker...=0A= */=0A= window.colorPicker =3D new ColorPicker(=0A= document.getElementById("chwColorpickerHSMap"),=0A= document.getElementById("chwColorpickerLMap"),=0A= = document.getElementById("chwColorpickerLPointer"),=0A= document.getElementById("chwColorPickerShow"),=0A= document.getElementById("chwColorCodeDisplay"));=0A= }=0A= =0A= this.showWizardPage =3D function(newPage){=0A= if(activePage =3D=3D newPage) return;=0A= if(!enabledPages[newPage]) return;=0A= =0A= // See if this was the first visible page, in order to enable the = Back button=0A= var currentPage =3D getPageIndex(activePage);=0A= if(currentPage =3D=3D 0){=0A= // Enable the Back button=0A= document.getElementById("chwBackButton").className =3D "chwButton";=0A= backEnabled =3D true;=0A= }=0A= // See if this was the last visible page, in order to enable the = Next button=0A= var nextPage =3D getNextPageIndex(currentPage);=0A= if(nextPage =3D=3D -1){=0A= // Enable the Next button=0A= document.getElementById("chwNextButton").className =3D "chwButton";=0A= nextEnabled =3D true;=0A= }=0A= =0A= document.getElementById("chw" + activePage + "Wizard").className =3D = 'chwInactivePage';=0A= var button =3D document.getElementById("chw" + activePage + = "WizardButton");=0A= if(button.src.indexOf("Hover.png") >=3D 0){=0A= button.src =3D skinDirectory + "chwTaskCompletedHover.png";=0A= }=0A= else{=0A= button.src =3D skinDirectory + "chwTaskCompleted.png";=0A= }=0A= =0A= activePage =3D newPage;=0A= =0A= // See if this is the first visible page, in order to disable the = Back button=0A= var currentPage =3D getPageIndex(activePage);=0A= if(currentPage =3D=3D 0){=0A= // Disable the Back button=0A= document.getElementById("chwBackButton").className =3D = "chwButtonDisabled";=0A= backEnabled =3D false;=0A= }=0A= // See if this is the last visible page, in order to disable the = Next button=0A= var nextPage =3D getNextPageIndex(currentPage);=0A= if(nextPage =3D=3D -1){=0A= // Disable the Next button=0A= document.getElementById("chwNextButton").className =3D = "chwButtonDisabled";=0A= nextEnabled =3D false;=0A= }=0A= =0A= document.getElementById("chw" + activePage + "Wizard").className =3D = 'chwActivePage';=0A= button =3D document.getElementById("chw" + activePage + = "WizardButton");=0A= if(button.src.indexOf("Hover.png") >=3D 0){=0A= button.src =3D skinDirectory + "chwTaskCompletingHover.png";=0A= }=0A= else{=0A= button.src =3D skinDirectory + "chwTaskCompleting.png";=0A= }=0A= }=0A= =0A= /** Highlight the navigation button when the mouse moves over it */=0A= this.enterButton =3D function(elementName){=0A= if(!enabledPages[elementName]) return false;=0A= var element =3D document.getElementById("chw" + elementName + = "WizardButton");=0A= var src =3D element.src;=0A= src =3D src.substring(0, src.indexOf(".png")) + "Hover.png";=0A= element.src =3D src;=0A= }=0A= =0A= /** Dehighlight the navigation button when the mouse moves out of it */=0A= this.leaveButton =3D function(elementName){=0A= if(!enabledPages[elementName]) return;=0A= var element =3D document.getElementById("chw" + elementName + = "WizardButton");=0A= var src =3D element.src;=0A= src =3D src.substring(0, src.indexOf("Hover.png")) + ".png";=0A= element.src =3D src;=0A= }=0A= =0A= this.changeChartType =3D function(newChartType){=0A= var dImage =3D document.getElementById('chwPreviewImg');=0A= dImage.setAttribute('src', skinDirectory + "/chwSample" + = newChartType + "Chart.png");=0A= dImage.setAttribute('alt', 'Chart Type: ' + newChartType);=0A= dImage.setAttribute('title', 'Chart Type: ' + newChartType);=0A= // Hide old pages=0A= for(var wizardPage in activatedElements[selectedChartType]){=0A= if(!activatedElements[newChartType][wizardPage]){=0A= enabledPages[wizardPage] =3D false;=0A= adjustPage([], activatedElements[selectedChartType][wizardPage]);=0A= document.getElementById("chw" + wizardPage + = "WizardButton").className =3D "chwNavigationImageHidden";=0A= }=0A= }=0A= // Show new pages and adjust remaining pages=0A= for(var wizardPage in activatedElements[newChartType]){=0A= if(!activatedElements[selectedChartType][wizardPage]){=0A= // Previously hidden page, show it=0A= adjustPage(activatedElements[newChartType][wizardPage], []);=0A= }=0A= else{=0A= adjustPage(activatedElements[newChartType][wizardPage], = activatedElements[selectedChartType][wizardPage]);=0A= }=0A= enabledPages[wizardPage] =3D false;=0A= document.getElementById("chw" + wizardPage + = "WizardButton").className =3D "chwNavigationImageDisabled";=0A= document.getElementById("chw" + wizardPage + "WizardButton").src = =3D skinDirectory + "chwTaskWaiting.png";=0A= }=0A= document.getElementById('chw' + selectedChartType + = 'Subtypes').className =3D 'chwHidden';=0A= document.getElementById('chw' + selectedChartType + = 'SubtypeInput').disabled =3D true;=0A= selectedChartType =3D newChartType;=0A= document.getElementById('chw' + selectedChartType + = 'Subtypes').className =3D 'chwVisible';=0A= document.getElementById('chw' + selectedChartType + = 'SubtypeInput').disabled =3D false;=0A= var currentPage =3D getPageIndex(activePage);=0A= for(var i =3D 0; i < currentPage; i++){=0A= if(!activatedElements[selectedChartType][pageOrder[i]]) continue;=0A= document.getElementById("chw" + pageOrder[i] + = "WizardButton").className =3D "chwNavigationImage";=0A= document.getElementById("chw" + pageOrder[i] + "WizardButton").src = =3D skinDirectory + "chwTaskCompleted.png";=0A= enabledPages[pageOrder[i]] =3D true;=0A= }=0A= enabledPages[activePage] =3D true;=0A= document.getElementById("chwFinishButton").className =3D = "chwButtonDisabled";=0A= finishEnabled =3D false;=0A= document.getElementById("chw" + activePage + = "WizardButton").className =3D "chwNavigationImage";=0A= document.getElementById("chw" + activePage + "WizardButton").src =3D = skinDirectory + "chwTaskCompleting.png";=0A= }=0A= =0A= /*=0A= Change chart subtype=0A= */=0A= this.changeChartSubtype =3D function(subtype){=0A= // TODO: Write me=0A= }=0A= =0A= /*=0A= Show or hide the contents of a fieldset when the user clicks the = legend=0A= */=0A= this.flipAdvanced =3D function(elementName){=0A= var legend =3D document.getElementById('chw' + elementName + = 'Legend');=0A= if(legend.firstChild.nodeValue.indexOf(">>") >=3D 0){=0A= legend.firstChild.nodeValue =3D = legend.firstChild.nodeValue.replace(">>", "<<");=0A= legend.title =3D legend.title.replace(showWord, hideWord);=0A= document.getElementById('chw' + elementName + 'Div').className =3D = 'chwVisible';=0A= }=0A= else{=0A= legend.firstChild.nodeValue =3D = legend.firstChild.nodeValue.replace("<<", ">>");=0A= legend.title =3D legend.title.replace(hideWord, showWord);=0A= document.getElementById('chw' + elementName + 'Div').className =3D = 'chwHidden';=0A= }=0A= }=0A= =0A= /*=0A= Change the source type (Define or Reuse)=0A= */=0A= this.changeSourceType =3D function(type){=0A= switch(type){=0A= case 'Reuse':=0A= document.getElementById('chwDataDefineDiv').className =3D = 'chwHidden';=0A= document.getElementById('chwDataReuseDiv').className =3D = 'chwVisible';=0A= if(hasReusedSource){=0A= enableNext();=0A= }=0A= else{=0A= disableNext();=0A= }=0A= break;=0A= case 'Define':=0A= document.getElementById('chwDataDefineDiv').className =3D = 'chwVisible';=0A= document.getElementById('chwDataReuseDiv').className =3D = 'chwHidden';=0A= if(hasDefinedSource){=0A= enableNext();=0A= }=0A= else{=0A= disableNext();=0A= }=0A= break;=0A= }=0A= }=0A= =0A= this.flipEnabled =3D function(elementName){=0A= if(document.getElementById('chw' + elementName + 'Enabled').checked){=0A= document.getElementById('chw' + elementName + 'Input').disabled = =3D false;=0A= // document.getElementById('chw' + elementName + = 'ShowAdvanced').className =3D 'chwExpander';=0A= }=0A= else{=0A= document.getElementById('chw' + elementName + 'Input').disabled = =3D true;=0A= // document.getElementById('chw' + elementName + = 'ShowAdvanced').className =3D 'chwExpanderHidden';=0A= // document.getElementById('chw' + elementName + = 'HideAdvanced').className =3D 'chwExpanderHidden';=0A= // document.getElementById('chw' + elementName + = 'AdvancedDiv').className =3D 'chwHidden';=0A= }=0A= }=0A= =0A= =0A= this.showNextPage =3D function(){=0A= if(!nextEnabled) return false;=0A= var currentPage =3D getPageIndex(activePage);=0A= var nextPage =3D getNextPageIndex(currentPage);=0A= if(activePage =3D=3D "Type"){=0A= for(var page in activatedElements[selectedChartType]){=0A= enabledPages[page] =3D true;=0A= document.getElementById("chw" + page + "WizardButton").className = =3D "chwNavigationImage";=0A= document.getElementById("chw" + page + "WizardButton").src =3D = skinDirectory + "chwTaskCompleted.png";=0A= }=0A= document.getElementById("chwFinishButton").className =3D = "chwButton";=0A= finishEnabled =3D true;=0A= }=0A= nextPage =3D pageOrder[nextPage];=0A= enabledPages[nextPage] =3D true;=0A= document.getElementById("chw" + nextPage + "WizardButton").className = =3D "chwNavigationImage";=0A= this.showWizardPage(nextPage);=0A= return false;=0A= }=0A= =0A= this.showPrevPage =3D function(){=0A= if(!backEnabled) return false;=0A= var currentPage =3D getPageIndex(activePage);=0A= var prevPage =3D getPrevPageIndex(currentPage);=0A= prevPage =3D pageOrder[prevPage];=0A= this.showWizardPage(prevPage);=0A= return false;=0A= }=0A= =0A= this.finish =3D function(){=0A= if(!finishEnabled) return false;=0A= document.getElementById('chwForm').submit();=0A= return false;=0A= }=0A= =0A= this.setValidDatasource =3D function(dataString){=0A= document.getElementById('chwDataSourceInput').value =3D dataString;=0A= document.getElementById('chwDefineHasDatasource').className =3D = 'chwNotice';=0A= enableNext();=0A= hasDefinedSource =3D true;=0A= }=0A= =0A= this.storeValue =3D function(value){=0A= storedValue =3D value;=0A= }=0A= =0A= this.validateNumber =3D function(element, min, max, precision){=0A= if(! (Boolean(Number(element.value)) || (Number(element.value) = =3D=3D 0))){=0A= element.value =3D storedValue;=0A= return false;=0A= }=0A= else{=0A= if(precision =3D=3D=3D undefined){=0A= precision =3D 0;=0A= }=0A= var value =3D Number(element.value).toFixed(precision) - 0;=0A= if(min !=3D=3D undefined && value < min){=0A= value =3D min;=0A= }=0A= if(max !=3D=3D undefined && value > max){=0A= value =3D max;=0A= }=0A= element.value =3D value;=0A= }=0A= return true;=0A= }=0A= =0A= this.changeInserts =3D function(elementName){=0A= var element =3D document.getElementById('chw' + elementName + = 'Input');=0A= element.value =3D 'left:' + document.getElementById('chw' + = elementName + 'LeftInput').value + ';';=0A= element.value +=3D 'top:' + document.getElementById('chw' + = elementName + 'TopInput').value + ';';=0A= element.value +=3D 'right:' + document.getElementById('chw' + = elementName + 'RightInput').value + ';';=0A= element.value +=3D 'bottom:' + document.getElementById('chw' + = elementName + 'BottomInput').value;=0A= }=0A= =0A= this.changeFont =3D function(elementName){=0A= var element =3D document.getElementById('chw' + elementName + = 'Input');=0A= element.value =3D 'name:' + document.getElementById('chw' + = elementName + 'FamilyInput').value + ';';=0A= element.value +=3D 'style:' + document.getElementById('chw' + = elementName + 'StyleInput').value + ';';=0A= element.value +=3D 'size:' + document.getElementById('chw' + = elementName + 'SizeInput').value;=0A= }=0A= =0A= this.checkTitle =3D function(titleName){=0A= if(document.getElementById('chw' + titleName + 'Input').value =3D=3D = ''){=0A= }=0A= }=0A= =0A= this.selectorMouseOver =3D function(selector, object, value){=0A= selectorObjects[selector].onmouseover(object, value);=0A= }=0A= this.selectorMouseOut =3D function(selector, object, value){=0A= selectorObjects[selector].onmouseout(object, value);=0A= }=0A= this.selectorMouseDown =3D function(selector, event, value){=0A= selectorObjects[selector].onmousedown(event, value);=0A= }=0A= this.selectorMouseUp =3D function(selector, event){=0A= selectorObjects[selector].onmouseup(event);=0A= }=0A= =0A= this.colorChoiceChanged =3D function(color){=0A= colorObjects[color].colorChoiceChanged();=0A= }=0A= this.showCustomColor =3D function(color){=0A= colorObjects[color].showCustomColor();=0A= }=0A= this.validateCustomColor =3D function(color){=0A= colorObjects[color].validateCustomColor();=0A= }=0A= this.customColorValueFocus =3D function(color){=0A= colorObjects[color].customColorValueFocus();=0A= }=0A= }=0A= =0A= window.wizard =3D new chwWizard();=0A= =0A= =0A= /*=0A= The color picker class=0A= Allows choosing a custom color, using, visually,=0A= the hue, saturation and luminance values=0A= */=0A= function ColorPicker(hsmap, lmap, lpointer, colorShower, codeDisplay){=0A= /*=0A= The image element representing the hue X saturation color map=0A= */=0A= this.hsmap =3D hsmap;=0A= /*=0A= The image element representing the luminance map=0A= */=0A= this.lmap =3D lmap;=0A= if (lpointer !=3D null) {=0A= /*=0A= The "arrow" that points to the apropriate luminance level=0A= */=0A= this.lpointer =3D lpointer;=0A= /*=0A= The table cell that will contain the=0A= "arrow" that points to the apropriate luminance level=0A= */=0A= =0A= this.lpointerContainer =3D lpointer.parentNode;=0A= =0A= }=0A= /*=0A= The div element that will get the chosen color=0A= */=0A= this.colorShower =3D colorShower;=0A= /*=0A= The input element that will display the chosen color's code=0A= */=0A= this.codeDisplay =3D codeDisplay;=0A= =0A= =0A= this.container =3D document.getElementById('chwColorPicker');=0A= this.fieldset =3D document.getElementById('chwColorPickerFieldset');=0A= this.hueComponent =3D document.getElementById('chwColorpickerHue');=0A= this.satComponent =3D = document.getElementById('chwColorpickerSaturation');=0A= this.lumComponent =3D = document.getElementById('chwColorpickerLightness');=0A= this.redComponent =3D document.getElementById('chwColorpickerRed');=0A= this.greenComponent =3D document.getElementById('chwColorpickerGreen');=0A= this.blueComponent =3D document.getElementById('chwColorpickerBlue');=0A= =0A= /*=0A= The stored HSL values=0A= */=0A= this.hue =3D 159;=0A= this.sat =3D 85;=0A= this.lum =3D 120;=0A= /*=0A= The stored RGB values=0A= */=0A= this.red =3D 80;=0A= this.green =3D 100;=0A= this.blue =3D 160;=0A= =0A= /*=0A= The stored color code=0A= */=0A= this.storedValue =3D "";=0A= =0A= /*=0A= The code of the left mouse button=0A= Browser dependent=0A= */=0A= this.LMB =3D (window.ActiveXObject ? 1 : 0);=0A= =0A= /*=0A= The element that invoked the color picker,=0A= which will recieve the picked color code=0A= */=0A= this.reqester =3D null;=0A= =0A= /*=0A= Positioning data=0A= */=0A= this.left =3D 120;=0A= this.top =3D 120;=0A= =0A= /*=0A= Compute the minimum of 3 numbers=0A= */=0A= this.min3 =3D function(a, b, c){=0A= if(a <=3D b && a <=3D c) return a;=0A= if(b <=3D a && b <=3D c) return b;=0A= return c;=0A= }=0A= /*=0A= Compute the maximum of 3 numbers=0A= */=0A= this.max3 =3D function(a, b, c){=0A= if(a >=3D b && a >=3D c) return a;=0A= if(b >=3D a && b >=3D c) return b;=0A= return c;=0A= }=0A= =0A= /*=0A= Checks if a string is a valid #xxxxxx code=0A= */=0A= this.validCode =3D function(code){=0A= if(!code.match("^#[0-9a-fA-F]{6}$")) return false;=0A= return true;=0A= }=0A= =0A= /*=0A= HSL to RGB conversion=0A= Allow obtaining the actual #rrggbb code from the=0A= h, s, l values=0A= */=0A= this.hsl2rgb =3D function (hue,sat,lum) {=0A= var _val, _max, _min, _part, _half, _hi, _lo, _mid;=0A= var _r, _g, _b;=0A= _val =3D (lum / 240) * 255;=0A= if (lum >=3D 120) {=0A= _max =3D 255;=0A= _min =3D _val - (255 - _val);=0A= } else if(lum < 120) {=0A= _min =3D 0;=0A= _max =3D _val * 2;=0A= }=0A= _part =3D sat / 240;=0A= _half =3D (_max - _min) / 2;=0A= _hi =3D _half * _part;=0A= _lo =3D _half - _hi;=0A= if (sat =3D=3D 0 || _max =3D=3D _min) {=0A= _r =3D _val;=0A= _g =3D _val;=0A= _b =3D _val;=0A= } else if (hue < 40) {=0A= _r =3D _max - _lo;=0A= _b =3D _min + _lo;=0A= _mid =3D hue / 40;=0A= _g =3D ((_r - _b) * _mid) + _b;=0A= } else if (hue >=3D 200 && hue <=3D 240) {=0A= _r =3D _max - _lo;=0A= _g =3D _min + _lo;=0A= _mid =3D (240 - hue) / 40;=0A= _b =3D ((_r - _g) * _mid) + _g;=0A= } else if (hue >=3D 80 && hue < 120) {=0A= _g =3D _max - _lo;=0A= _r =3D _min + _lo;=0A= _mid =3D (hue - 80) / 40;=0A= _b =3D ((_g - _r) * _mid) + _r;=0A= } else if (hue >=3D 40 && hue < 80) {=0A= _g =3D _max - _lo;=0A= _b =3D _min + _lo;=0A= _mid =3D (80 - hue) / 40;=0A= _r =3D ((_g - _b) * _mid) + _b;=0A= } else if (hue >=3D 160 && hue < 200) {=0A= _b =3D _max - _lo;=0A= _g =3D _min + _lo;=0A= _mid =3D (hue - 160) / 40;=0A= _r =3D ((_b - _g) * _mid) + _g;=0A= } else if (hue >=3D 120 && hue < 160) {=0A= _b =3D _max - _lo;=0A= _r =3D _min + _lo;=0A= _mid =3D (160 - hue) / 40;=0A= _g =3D ((_b - _r) * _mid) + _r;=0A= }=0A= red =3D Math.round(_r);=0A= green =3D Math.round(_g);=0A= blue =3D Math.round(_b);=0A= return {red : red, green : green, blue : blue};=0A= }=0A= =0A= this.hsl2code =3D function(H, S, L){=0A= var rgb =3D this.hsl2rgb(H, S, L);=0A= return this.rgb2code(rgb.red, rgb.green, rgb.blue);=0A= }=0A= =0A= /*=0A= RGB to HSL conversion=0A= Allow obtaining the h, s, l values from the=0A= r, g, b values=0A= */=0A= this.rgb2hsl =3D function(red, green, blue){=0A= var R =3D red / 255;=0A= var G =3D green / 255;=0A= var B =3D blue / 255;=0A= =0A= var min =3D this.min3(R, G, B);=0A= var max =3D this.max3(R, G, B);=0A= var delta =3D max - min;=0A= =0A= var L =3D (max + min) / 2;=0A= var H, S;=0A= =0A= if (delta =3D=3D 0){=0A= H =3D 0;=0A= S =3D 0;=0A= }=0A= else{=0A= if (L < 0.5) S =3D delta / (max + min);=0A= else S =3D delta / (2 - (max + min));=0A= var deltaR =3D (((max - R) / 6) + (max / 2)) / delta;=0A= var deltaG =3D (((max - G) / 6) + (max / 2)) / delta;=0A= var deltaB =3D (((max - B) / 6) + (max / 2)) / delta;=0A= =0A= if ( R =3D=3D max ) H =3D deltaB - deltaG=0A= else if ( G =3D=3D max ) H =3D (1 / 3) + deltaR - deltaB=0A= else if ( B =3D=3D max ) H =3D (2 / 3) + deltaG - deltaR=0A= =0A= if ( H < 0 ) H +=3D 1=0A= if ( H > 1 ) H -=3D 1=0A= }=0A= return {hue : Math.round(H * 240), sat : Math.round(S * 240), lum : = Math.round(L * 240)};=0A= }=0A= =0A= this.setValues =3D function(R, G, B, H, S, L){=0A= this.red =3D R;=0A= this.green =3D G;=0A= this.blue =3D B;=0A= this.hue =3D H;=0A= this.sat =3D S;=0A= this.lum =3D L;=0A= }=0A= =0A= this.setComponents =3D function(R, G, B, H, S, L, code){=0A= this.redComponent.value =3D R;=0A= this.greenComponent.value =3D G;=0A= this.blueComponent.value =3D B;=0A= this.hueComponent.value =3D H;=0A= this.satComponent.value =3D S;=0A= this.lumComponent.value =3D L;=0A= this.colorShower.style.backgroundColor =3D code;=0A= this.codeDisplay.value =3D code;=0A= this.lpointerContainer.style.backgroundPosition =3D "0 " + (240 - L) = + "px";=0A= this.lmap.style.backgroundColor =3D this.hsl2code(H, S, 120);=0A= this.storedValue =3D code;=0A= }=0A= =0A= /*=0A= RGB to #xxxxxx conversion=0A= Join the RGB values into a #xxxxxx string=0A= */=0A= this.rgb2code =3D function(red, green, blue){=0A= red =3D Math.round(red).toString(16);=0A= if (red.length =3D=3D 1) red =3D "0" + red;=0A= green =3D Math.round(green).toString(16);=0A= if(green.length =3D=3D 1) green =3D "0" + green;=0A= blue =3D Math.round(blue).toString(16);=0A= if(blue.length =3D=3D 1) blue =3D"0" + blue;=0A= return "#" + red + green + blue;=0A= }=0A= /*=0A= Parse a #xxxxxx code into rgb values=0A= */=0A= this.code2rgb =3D function(code){=0A= if(!this.validCode(code)) return false;=0A= var red =3D Number("0x" + code.substring(1, 3));=0A= var green =3D Number("0x" + code.substring(3, 5));=0A= var blue =3D Number("0x" + code.substring(5));=0A= return {red : red, green : green, blue : blue};=0A= }=0A= /*=0A= Obtain the coordinates of the hot point in the target=0A= Browser dependent=0A= */=0A= this.getTargetEltX =3D function(event, elt){=0A= var x;=0A= if (event.offsetX !=3D=3D undefined) x =3D event.offsetX;=0A= else {=0A= x =3D event.screenX - document.getBoxObjectFor(elt).screenX;=0A= }=0A= if(x < 0) x =3D 0;=0A= if(x > 240) x =3D 240;=0A= return x;=0A= }=0A= =0A= this.getTargetEltY =3D function(event, elt){=0A= var y;=0A= if (event.offsetY !=3D=3D undefined) y =3D event.offsetY;=0A= else {=0A= y =3D event.screenY - document.getBoxObjectFor(elt).screenY;=0A= }=0A= if(y < 0) y =3D 0;=0A= if(y > 240) y =3D 240;=0A= return y;=0A= }=0A= =0A= /*=0A= The user "picked" new values for h and s from the hsmap.=0A= The color is updated.=0A= */=0A= this.hsChanged =3D function(event, elt){=0A= var hue =3D this.getTargetEltX(event, elt) - 0;=0A= if(hue > 240) hue =3D 240;=0A= if(hue < 0) hue =3D 0;=0A= var sat =3D 240 - this.getTargetEltY(event, elt);=0A= if(sat > 240) sat =3D 240;=0A= if(sat < 0) sat =3D 0;=0A= var rgb =3D this.hsl2rgb(hue, sat, this.lum);=0A= var colorcode =3D this.rgb2code(rgb.red, rgb.green, rgb.blue);=0A= if(!this.validCode(colorcode)) return;=0A= this.setValues(rgb.red, rgb.green, rgb.blue, hue, sat, this.lum);=0A= this.setComponents(rgb.red, rgb.green, rgb.blue, hue, sat, this.lum, = colorcode);=0A= }=0A= =0A= /*=0A= The user "picked" a new value for l from the lmap.=0A= The color is updated and the lpointer is moved to the apropriate=0A= position.=0A= */=0A= this.lChanged =3D function(event, elt){=0A= var lum =3D 240 - (this.getTargetEltY(event, elt));=0A= if(lum > 240) lum =3D 240;=0A= if(lum < 0) lum =3D 0;=0A= var rgb =3D this.hsl2rgb(this.hue, this.sat, lum);=0A= var colorcode =3D this.rgb2code(rgb.red, rgb.green, rgb.blue);=0A= if(!this.validCode(colorcode)) return;=0A= this.setValues(rgb.red, rgb.green, rgb.blue, this.hue, this.sat, = lum);=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, colorcode);=0A= }=0A= /*=0A= The user entered a custom color code in the=0A= code display input.=0A= Update the colorShow and the luminance=0A= pointer.=0A= */=0A= this.htmlCodeChanged =3D function(){=0A= var colorcode =3D this.codeDisplay.value;=0A= if(colorcode.charAt(0) !=3D '#') colorcode =3D '#' + colorcode;=0A= if(!this.validCode(colorcode)){=0A= return;=0A= }=0A= var rgb =3D this.code2rgb(colorcode);=0A= var hsl =3D this.rgb2hsl(rgb.red, rgb.green, rgb.blue);=0A= this.setValues(rgb.red, rgb.green, rgb.blue, hsl.hue, hsl.sat, = hsl.lum);=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, colorcode);=0A= }=0A= this.rgbCodeChanged =3D function(){=0A= var red =3D this.redComponent.value - 0;=0A= if(red > 255) red =3D 255;=0A= if(red < 0) red =3D 0;=0A= var green =3D this.greenComponent.value - 0;=0A= if(green > 255) green =3D 255;=0A= if(green < 0) green =3D 0;=0A= var blue =3D this.blueComponent.value - 0;=0A= if(blue > 255) blue =3D 255;=0A= if(blue < 0) blue =3D 0;=0A= if(red !=3D red || green !=3D green || blue !=3D blue){=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, this.storedValue);=0A= return;=0A= }=0A= var colorcode =3D this.rgb2code(red, green, blue);=0A= if(!this.validCode(colorcode)){=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, this.storedValue);=0A= return;=0A= }=0A= var hsl =3D this.rgb2hsl(red, green, blue);=0A= this.setValues(red, green, blue, hsl.hue, hsl.sat, hsl.lum);=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, colorcode);=0A= }=0A= this.hslCodeChanged =3D function(){=0A= var hue =3D this.hueComponent.value - 0;=0A= if(hue > 240) hue =3D 240;=0A= if(hue < 0) hue =3D 0;=0A= var sat =3D this.satComponent.value - 0;=0A= if(sat > 240) sat =3D 240;=0A= if(sat < 0) sat =3D 0;=0A= var lum =3D this.lumComponent.value - 0;=0A= if(lum > 240) lum =3D 240;=0A= if(lum < 0) lum =3D 0;=0A= if(hue !=3D hue || sat !=3D sat || lum !=3D lum){=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, this.storedValue);=0A= return;=0A= }=0A= var colorcode =3D this.hsl2code(hue, sat, lum);=0A= if(!this.validCode(colorcode)){=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, this.storedValue);=0A= return;=0A= }=0A= var rgb =3D this.hsl2rgb(hue, sat, lum);=0A= this.setValues(rgb.red, rgb.green, rgb.blue, hue, sat, lum);=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, colorcode);=0A= }=0A= =0A= /*=0A= The user chose a new color characteristic from one of the maps.=0A= The information is updated.=0A= */=0A= this.colorPicked =3D function(event, elt){=0A= if (elt =3D=3D this.hsmap){=0A= this.hsChanged(event, elt);=0A= }=0A= else if (elt =3D=3D this.lmap || elt =3D=3D this.lpointer){=0A= this.lChanged(event, elt);=0A= }=0A= }=0A= =0A= /*=0A= Left mouse button pressed.=0A= Entering "picking mode"...=0A= */=0A= this.mouseDown =3D function(event, elt){=0A= if (event.button !=3D this.LMB) return true;=0A= else {=0A= this.picking =3D true;=0A= this.crtPickingTarget =3D elt;=0A= this.colorPicked(event, elt);=0A= try{=0A= event.preventDefault();=0A= }=0A= catch(e){=0A= event.returnValue =3D false;=0A= }=0A= return false;=0A= }=0A= }=0A= /*=0A= Mouse moving over the picker's maps.=0A= If in picking mode, pick the coresponding color.=0A= Else do nothing.=0A= */=0A= this.mouseMove =3D function(event, elt){=0A= if (this.picking =3D=3D true && this.crtPickingTarget =3D=3D elt){=0A= if(window.ActiveXObject){=0A= if(event.srcElement =3D=3D this.crtPickingTarget){=0A= this.colorPicked(event, elt);=0A= }=0A= }=0A= else{=0A= this.colorPicked(event, elt);=0A= }=0A= }=0A= =0A= event.returnValue =3D false;=0A= }=0A= =0A= /*=0A= Left mouse button released.=0A= Exiting "picking mode".=0A= */=0A= this.mouseUp =3D function(event, elt){=0A= this.picking =3D false;=0A= this.crtPickingTarget =3D null;=0A= }=0A= =0A= this.filterKeys =3D function(event){=0A= }=0A= =0A= this.show =3D function(requester, color){=0A= if(color =3D=3D=3D undefined){=0A= color =3D requester.value;=0A= }=0A= if (!color.match("(#[0-9a-fA-F]{6})")){=0A= // alert("nu-i bun!");=0A= color=3D"#dddddd";=0A= }=0A= =0A= this.requester =3D requester;=0A= this.storedValue =3D color;=0A= var rgb =3D this.code2rgb(color);=0A= var hsl =3D this.rgb2hsl(rgb.red, rgb.green, rgb.blue);=0A= this.setValues(rgb.red, rgb.green, rgb.blue, hsl.hue, hsl.sat, = hsl.lum);=0A= this.setComponents(this.red, this.green, this.blue, this.hue, = this.sat, this.lum, color);=0A= this.container.style.display =3D 'block';=0A= if(window.ActiveXObject){=0A= // this is an ugly way of avoiding an Internet Explorer 'feature'=0A= // that puts select elements on top of everything else,=0A= // completely ignoring the z-index.=0A= var selects =3D document.getElementsByTagName('select');=0A= for(var i =3D 0; i < selects.length; i++){=0A= selects.item(i).style.visibility =3D 'hidden';=0A= }=0A= }=0A= if(document.width && document.getBoxObjectFor){=0A= this.fieldset.style.left =3D this.max3(document.width / 2 - = document.getBoxObjectFor(this.fieldset).width / 2, 0, 0) + 'px';=0A= }=0A= else if(document.body.clientWidth){=0A= this.fieldset.style.left =3D this.max3(document.body.clientWidth / = 2 - this.fieldset.clientWidth / 2, 0, 0) + 'px';=0A= }=0A= }=0A= =0A= this.OK =3D function(event){=0A= if(window.ActiveXObject){=0A= // this is an ugly way of avoiding an Internet Explorer 'feature'=0A= // that puts select elements on top of everything else,=0A= // completely ignoring the z-index.=0A= var selects =3D document.getElementsByTagName('select');=0A= for(var i =3D 0; i < selects.length; i++){=0A= selects.item(i).style.visibility =3D 'visible';=0A= }=0A= }=0A= this.requester.value =3D this.storedValue;=0A= this.container.style.display =3D 'none';=0A= this.requester.focus();=0A= eval(this.requester.getAttribute('onfocus'));=0A= }=0A= this.Cancel =3D function(event){=0A= if(window.ActiveXObject){=0A= // this is an ugly way of avoiding an Internet Explorer 'feature'=0A= // that puts select elements on top of everything else,=0A= // completely ignoring the z-index.=0A= var selects =3D document.getElementsByTagName('select');=0A= for(var i =3D 0; i < selects.length; i++){=0A= selects.item(i).style.visibility =3D 'visible';=0A= }=0A= }=0A= this.container.style.display =3D 'none';=0A= this.requester.focus();=0A= }=0A= }=0A= =0A= function createColorPicker(){=0A= window.colorPicker =3D new ColorPicker(=0A= document.getElementById("chwColorpickerHSMap"),=0A= document.getElementById("chwColorpickerLMap"),=0A= = document.getElementById("chwColorpickerLPointer"),=0A= document.getElementById("chwColorPickerShow"),=0A= document.getElementById("chwColorCodeDisplay"));=0A= } ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/skin/skins/albatross/scripts/table/tablefilterNsort.js /* Note: We got the agreement from Max Guglielmi (on 21/5/2007) to = include this script in XWiki's distribution. Same from Jan Eldenmalm. The script from Joost = de Valk is under the MIT license. Source: http://www.eldenmalm.com/tableFilterNSort.jsp Source: http://mguglielmi.free.fr/scripts/TableFilter/ */ /* Version: 1.5 Date: 6 Aug 2006 Editor & code Fixes: Jan (at) Eldenmalm . com Coders: Joost de Valk, Max Guglielmi This script is a merger of two brilliant scripts and some improvements to make them easier to use. With this one script it is easy to filter and sort a table at client side without adding anything but "classes" to the TD and TR tags and a link this script. This joint script still contains legacy code from the two original coders - for functionality that currently is untested. Documentation of currently tested functionality: Example:
CLASS names and their meaning: id (table)(mandatory) =3D a unique identifier not shared with other = objects. sortable (table)(optional) =3D Makes the table sortable filterable (table)(optional) =3D Makes the table filterable doOddEven (table) (optional) =3D declares that visible table rows = between the sortHeader row and sortBottom should contain class names = "odd" and "even" for creating alternating tables sortHeader (tr)(mandatory) =3D is the row in the table that is the = header row noFilter (td)(optional) =3D declares a column as non filterable selectFilter (td) (optional) =3D declares a column as filterable = using a selct box, that is autimatically populated with = "available" line values unsortable (td) (optional) =3D declares a column as non sortable sortBottom (tr) (optional) =3D declares a row as the bottom of the = sortable rows ( used for totals etc...) Notice: Images are sorted on the "alt" attribute. The sort function required access to three a few pictures to "look = good" Change these values with regards to your specific set up */ var image_path =3D ""; var image_up =3D "/skins/albatross/icons/table/arrow%2Dup.gif"; var image_down =3D "/skins/albatross/icons/table/arrow%2Ddown.gif"; var image_none =3D "/skins/albatross/icons/table/arrow%2Dnone.gif"; /*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D - HTML Table Filter Generator v1.3.jan1 - By Max Guglielmi - mguglielmi.free.fr/scripts/TableFilter/?l=3Den - please do not change this comment - don't forget to give some credit... it's always good for the author =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D*/ /* Table sorting script, taken from = http://www.kryogenix.org/code/browser/sorttable/ . Distributed under the MIT license: = http://www.kryogenix.org/code/browser/licence.html . Adaptation by Joost de Valk ( http://www.joostdevalk.nl/ ) to add = alternating row classes as well. Copyright (c) 1997-2006 Stuart Langridge, Joost de Valk. */ /* Don't change anything below this unless you know what you're doing */ var TblId, StartRow, SearchFlt, ModFn, ModFnId; TblId =3D new Array(), StartRow =3D new Array(); ModFn =3D new Array(), ModFnId =3D new Array(); // creates and event that triggers onload and enables the filtering and = sorting. addEvent(window, "load", init_sortnfilter); var SORT_COLUMN_INDEX; function init_sortnfilter() // Intiates the sorting and filtering triggered on an event { sortables_init(); filterable_init(); } function sortables_init() // Initiates the sorting capability { // Find all tables with class sortable and make them sortable if (!document.getElementsByTagName) return; var tbls =3D document.getElementsByTagName("table"); for (var ti =3D 0; ti < tbls.length; ti++) { var thisTbl =3D tbls[ti]; if (((' ' + thisTbl.className + ' ').indexOf("sortable") !=3D = -1) && (thisTbl.id)) { //initTable(thisTbl.id); ts_makeSortable(thisTbl); //sum_up(thisTbl); } } } function filterable_init() // Initiates the filtering capability { // Find all tables with class doFilter and make them filterable if (!document.getElementsByTagName) return; var tbls =3D document.getElementsByTagName("table"); for (var ti=3D0;ti'; newRows.reverse(); span.setAttribute('sortdir','up'); } else { ARROW =3D ''; span.setAttribute('sortdir','down'); } // We appendChild rows that already exist to the tbody, so it moves = them rather than creating new ones // don't do sortbottom rows for (var i=3D0; i'; } } } span.innerHTML =3D ARROW; alternate(table); } function Filter(id) /*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D - gets search strings from SearchFlt array - retrieves data from each td in every single tr and compares to search string for current column - tr is hidden if all search strings are not found =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D*/ { getFilters(id); var t =3D document.getElementById(id); var SearchArgs =3D new Array(); var ncells =3D getCellsNb(id); var visibleRows =3D 1 ; // Vincent Massol: Modified orinigal line so that it's compatible = with Prototype. // Note: this is fixed in Max's script at = http://mguglielmi.free.fr/scripts/TableFilter/?l=3Dfr // Original: for(var i in SearchFlt) = SearchArgs.push((document.getElementById(SearchFlt[i]).value).toLowerCase= ()); for (var i =3D 0; i < SearchFlt.length; ++i) = SearchArgs.push((document.getElementById(SearchFlt[i]).value).toLowerCase= ()); var start_row =3D getStartRow(id); var row =3D t.getElementsByTagName("tr"); var lastFilteredRow =3D null !=3D getSortBottomRow(t) ? = getSortBottomRow(t) : t.rows.length ; for(var k=3Dstart_row; k,<=3D,>=3D) { num_cell_data <=3D parseFloat(SearchArgs[j].replace(/<=3D/,"")) ? = occurence[j] =3D 3 : occurence[j] =3D 1; } else if(/>=3D/.test(SearchArgs[j]) && !isNaN(num_cell_data)) { num_cell_data >=3D parseFloat(SearchArgs[j].replace(/>=3D/,"")) ? = occurence[j] =3D 3 : occurence[j] =3D 1; } else if(//.test(SearchArgs[j]) && !isNaN(num_cell_data)) { num_cell_data > parseFloat(SearchArgs[j].replace(/>/,"")) ? = occurence[j] =3D 3 : occurence[j] =3D 1; } else occurence[j] =3D cell_data.split(SearchArgs[j]).length; } }//for j for(var u=3D0; u tag contains "sortHeader" // When found it returns this row....i.e the header row - the next row = is normally the first sortable row // if no row is found or the sort header is the "last" row - than it = returns 0. { for (var i=3D0; i < table.rows.length-1 ; i++ ) { if (table.rows[i].className.indexOf("sortHeader") > -1 ){ return i ; } } return 0 ; } function getSortBottomRow (table) // This function takes a table and verifies in which row the class name = of tag contains "sortHeader" // When found it returns this row....i.e the header row - the next row = is normally the first sortable row // if no row is found or the sort header is the "last" row - than it = returns 0. { for (var i=3D0; i < table.rows.length ; i++ ) { if (table.rows[i].className.indexOf("sortBottom") > -1 ){ return i ; } } return null ; } function ts_getInnerText(el) { if (typeof el =3D=3D "string") return el; if (typeof el =3D=3D "undefined") { return '' }; if (typeof el =3D=3D "object" && el.tagName.toLowerCase() =3D=3D = 'img'){ // if the contents of the table are images - they can be sorted on = the "Alt" text return el.alt ; } if (el.innerText) return el.innerText; //Not needed but it is faster var str =3D ""; var cs =3D el.childNodes; var l =3D cs.length; for (var i =3D 0; i < l; i++) { switch (cs[i].nodeType) { case 1: //ELEMENT_NODE str +=3D ts_getInnerText(cs[i]); break; case 3: //TEXT_NODE str +=3D cs[i].nodeValue; break; } } return str; } function ts_makeSortable(table) { var firstRow ; if (table.rows && table.rows.length > 0) { firstRow =3D table.rows[getHeaderRow(table)]; } if (!firstRow) return; // We have a first row: assume it's the header, and make its contents = clickable links for (var i=3D0;i'+txt+'3D"↓"/'; } } alternate(table); } function alternate(table) /*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D - check if the table passed to the function is set to doOddEven, if that is the case it colors the lines acordingly. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D*/ { if (table.className.indexOf("doOddEven") > -1 ){ var visibleRows =3D 1 ; var endAlternation =3D null !=3D getSortBottomRow(table) ? = getSortBottomRow(table) : table.rows.length ; // Take object table and get all it's tbodies. var tableBodies =3D table.getElementsByTagName("tbody"); // Loop through these tbodies for (var i =3D 0 ; i < tableBodies.length ; i++) { // Take the tbody, and get all it's rows var tableRows =3D tableBodies[i].getElementsByTagName("tr"); // Loop through these rows // Start at 1 because we want to leave the heading row untouched // we change this to start at 2 to leave two rows untouched for (var j =3D getHeaderRow(table) + 1 ; j < endAlternation ; = j++) { // Check if j is even, and apply classes for both possible results if (tableRows[j].style.display=3D=3D""){ visibleRows++ ; swapOddEven(tableRows[j],visibleRows) } } } } } function getParent(el, pTagName) { if (el =3D=3D null) { return null; } else if (el.nodeType =3D=3D 1 && el.tagName.toLowerCase() =3D=3D = pTagName.toLowerCase()) { // Gecko bug, supposed to be uppercase return el; } else { return getParent(el.parentNode, pTagName); } } function addEvent(elm, evType, fn, useCapture) // addEvent and removeEvent // cross-browser event handling for IE5+, NS6 and Mozilla // By Scott Andrew { if (elm.addEventListener){ elm.addEventListener(evType, fn, useCapture); return true; } else if (elm.attachEvent){ var r =3D elm.attachEvent("on"+evType, fn); return r; } else { alert("Handler could not be removed"); } } function replace(s, t, u) { /* ** Replace a token in a string ** s string to be processed ** t token to be found and removed ** u token to be inserted ** returns new String */ var i =3D s.indexOf(t); var r =3D ""; if (i =3D=3D -1) return s; r +=3D s.substring(0,i) + u; if ( i + t.length < s.length) r +=3D replace(s.substring(i + t.length, s.length), t, u); return r; } function setFilterGrid(id) /*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D - Checks if id exists and is a table - Then looks for additional params - Calls fn that adds inputs and button =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D*/ { var tbl =3D document.getElementById(id); var ref_row, fObj; if(tbl !=3D null && tbl.nodeName.toLowerCase() =3D=3D "table") { TblId.push(id); if(arguments.length>1) { for(var i=3D0; i -1) ) { row.className =3D replace(row.className, 'odd', 'even'); } else { row.className =3D row.className.indexOf("even") > -1 ? = row.className : row.className + " even"; } } else { if ((row.className.indexOf('even') > -1) ) { row.className =3D replace(row.className, 'even', 'odd'); } row.className =3D row.className.indexOf("odd") > -1 ? = row.className : row.className + " odd"; } } //=20 function ts_sort_date(a,b) { // y2k notes: two digit years less than 50 are treated as 20XX, greater = than 50 are treated as 19XX var aa =3D ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); var bb =3D ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); var dt1 , yr ,dt2 ; if (aa.length =3D=3D 10) { dt1 =3D aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2); } else { yr =3D aa.substr(6,2); if (parseInt(yr) < 50) { yr =3D '20'+yr; } else { yr =3D '19'+yr; } dt1 =3D yr+aa.substr(3,2)+aa.substr(0,2); } if (bb.length =3D=3D 10) { dt2 =3D bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2); } else { yr =3D bb.substr(6,2); if (parseInt(yr) < 50) { yr =3D '20'+yr; } else { yr =3D '19'+yr; } dt2 =3D yr+bb.substr(3,2)+bb.substr(0,2); } if (dt1=3D=3Ddt2) { return 0; } if (dt1. DOM element or=0A= * identifier.=0A= * @param scrollNode The node where the scrollbar should be placed, = should be a next to=0A= * the userlist table. DOM element or identifier.=0A= * @param filterNode The node containing the input/select fields with = request parameters. DOM=0A= * element or identifier.=0A= * @param getHandler A javascript function called for displaying = fetched rows. The function=0A= * accepts a JSON-parsed object and returns a DOM node.=0A= * @param hasFilters Indicates whether the filters are enabled or not.=0A= * @todo Remove hasFilters, just check on filterNode.=0A= * @todo Default values for limit, getHandler.=0A= * @todo Make this a valid ARIA grid: = http://www.w3.org/TR/aria-role/#structural=0A= */=0A= initialize: function(url, limit, domNode, scrollNode, filterNode, = getHandler, hasFilters, action)=0A= {=0A= this.domNode =3D $(domNode);=0A= this.scroller =3D new ASSScroller(this, scrollNode);=0A= if (hasFilters) {=0A= this.filter =3D new ASSFilter(this, filterNode);=0A= }=0A= if(action) {=0A= this.action =3D action;=0A= }=0A= else {=0A= this.action =3D "view";=0A= }=0A= this.hasFilters =3D hasFilters;=0A= this.filters =3D "";=0A= this.getHandler =3D getHandler;=0A= this.totalRows =3D -1;=0A= this.fetchedRows =3D new Array();=0A= this.limit =3D limit;=0A= this.getUrl =3D url;=0A= this.lastoffset =3D 1;=0A= this.sendReqNo =3D 0;=0A= this.recvReqNo =3D 0;=0A= =0A= // Show initial rows=0A= this.showRows(1, limit);=0A= },=0A= =0A= /**=0A= * Initializes an AJAX request for retrieving some table data. Uses = two ranges, one defines the=0A= * range that must be retrieved from the server, and one defines the = range that should be=0A= * displayed. Two ranges are needed as some of the displayed rows can = already be available from=0A= * a previous request.=0A= * @param offset Starting request offset; the index of the first row = that should be retrieved.=0A= * @param limit Maximum number of rows to retrieve.=0A= * @param doffset Starting display offset; the index of the first row = that should be displayed.=0A= * @param dlimit Maximum number of rows to display.=0A= */=0A= getRows: function(reqOffset, reqLimit, displayOffset, displayLimit)=0A= {=0A= var url =3D this.getUrl + = '&offset=3D'+reqOffset+'&limit=3D'+reqLimit+'&reqNo=3D'+ = (++this.sendReqNo);=0A= =0A= if (this.hasFilters) {=0A= this.filters =3D this.filter.getFilters();=0A= if (this.filters !=3D "" && this.filters !=3D undefined) {=0A= url +=3D this.filters;=0A= }=0A= }=0A= =0A= var self =3D this;=0A= =0A= $('ajax-loader').style.display =3D "block";=0A= =0A= new Ajax.Request(url,=0A= {=0A= method: 'get',=0A= onComplete: function( transport ) {=0A= $('ajax-loader').style.display =3D "none";=0A= },=0A= =0A= onSuccess: function( transport ) {=0A= var res =3D eval( '(' + transport.responseText + ')');=0A= if (res.reqNo < self.sendReqNo) {=0A= return;=0A= }=0A= self.recvReqNo =3D res.reqNo;=0A= $('ajax-loader').style.display =3D "none";=0A= =0A= if(res.totalrows <=3D res.returnedrows) {=0A= self.scroller.domNode.style.display =3D "none";=0A= } else {=0A= self.scroller.domNode.style.display =3D "block";=0A= }=0A= self.updateFetchedRows(res);=0A= self.displayRows(displayOffset, displayLimit);=0A= }=0A= });=0A= },=0A= =0A= /**=0A= * Add/refresh items to the cache of fetched data.=0A= * @param json Returned data from the server, as a parsed JSON object.=0A= */=0A= updateFetchedRows: function(json)=0A= {=0A= this.json =3D json;=0A= this.totalRows =3D json.totalrows;=0A= for (var i =3D json.offset; i < json.offset + json.returnedrows; = ++i) {=0A= this.fetchedRows[i] =3D json.rows[i-json.offset];=0A= }=0A= },=0A= =0A= /**=0A= * Removes the displayed rows from the XHTML document.=0A= */=0A= clearDisplay: function()=0A= {=0A= var object =3D this.domNode;=0A= while (object.hasChildNodes()) {=0A= object.removeChild(object.firstChild);=0A= }=0A= },=0A= =0A= /**=0A= * Displays already fetched rows. Calls {@link #getHandler} for = creating the XHTML elements, and=0A= * inserts them in {@link domNode}.=0A= * @param offset Starting offset; the index of the first row that = should be displayed.=0A= * @param limit Maximum number of rows to display.=0A= */=0A= displayRows: function(offset, limit)=0A= {=0A= var f =3D offset + limit - 1;=0A= if (f > this.totalRows) f =3D this.totalRows;=0A= var off =3D (this.totalRows > 0) ? offset : 0;=0A= var msg =3D "From " + off + " To " + f + = " out of " + this.totalRows + "";=0A= var msg =3D msg.toLowerCase();=0A= $('showLimits').innerHTML =3D "Displaying rows " + msg;=0A= =0A= this.clearDisplay();=0A= =0A= for (var i =3D off; i <=3D f; i++) {=0A= var elem =3D this.getHandler(this.fetchedRows[i], i, this);=0A= this.domNode.appendChild(elem);=0A= }=0A= =0A= this.scroller.refreshScrollbar();=0A= },=0A= =0A= /**=0A= * Fetch and display rows. This method checks the existing fetched = data to determine which (if=0A= * any) rows should be fetched from the server, then forwards the = call to {@link #displayRows}.=0A= * @param offset Starting offset; the index of the first row that = should be displayed.=0A= * @param limit Maximum number of rows to display.=0A= */=0A= showRows: function(offset, limit)=0A= {=0A= this.lastoffset =3D offset;=0A= // This is some debugging string.=0A= var buff =3D 'request to display rows '+offset+' to = '+(offset+limit)+'
\n';=0A= =0A= // If no rows fetched yet, get all we need=0A= if (this.totalRows =3D=3D -1) {=0A= this.getRows(offset, limit, offset, limit);=0A= buff +=3D 'table is empty so we get all rows';=0A= return buff;=0A= }=0A= =0A= // Make a range of required rows=0A= var min =3D -1;=0A= var max =3D -1;=0A= =0A= for (var i =3D offset; i < (offset + limit); ++i) {=0A= if (this.fetchedRows[i] =3D=3D undefined) {=0A= if (min =3D=3D -1) {=0A= min =3D i;=0A= }=0A= max =3D i;=0A= }=0A= }=0A= =0A= // If we don't need any new row=0A= if (min =3D=3D -1) {=0A= buff +=3D 'no need to get new rows
\n';=0A= this.displayRows(offset, limit);=0A= } else {=0A= // We need to get new rows=0A= buff +=3D 'we need to get rows '+min+' to '+ (max+1) +'
\n';=0A= this.getRows(min, max - min + 1, offset, limit);=0A= }=0A= return buff;=0A= },=0A= =0A= /**=0A= * Delete a row from the fetch cache, shifting the remaining rows = accordingly.=0A= */=0A= deleteAndShiftRows: function(indx)=0A= {=0A= for(i in this.fetchedRows) {=0A= if(i >=3D indx)=0A= this.fetchedRows[i] =3D this.fetchedRows[''+(parseInt(i)+1)];=0A= }=0A= },=0A= =0A= /**=0A= * Debug method. Dumps the content of the fetch cache (row indexes = only).=0A= */=0A= debugFetchedRows: function() {=0A= var buf =3D '';=0A= for (i in this.fetchedRows) {=0A= if (this.fetchedRows[i] !=3D undefined) {=0A= buf +=3D i+' ';=0A= }=0A= }=0A= return buf;=0A= },=0A= =0A= /**=0A= * Delete a row and redisplay the table.=0A= * @param indx The index of the row that must be deleted.=0A= */=0A= deleteRow: function(indx) {=0A= this.deleteAndShiftRows(indx);=0A= =0A= // Compute new refresh offset=0A= var newoffset =3D this.lastoffset;=0A= if(indx > this.totalRows - this.limit - 1) {=0A= newoffset -=3D 1;=0A= }=0A= if(newoffset <=3D 0) {=0A= newoffset =3D 1;=0A= }=0A= this.totalRows -=3D 1;=0A= if(this.totalRows < this.limit) {=0A= this.showRows(newoffset, this.totalRows);=0A= }=0A= else {=0A= this.showRows(newoffset, this.limit);=0A= }=0A= this.scroller.refreshScrollbar();=0A= }=0A= });=0A= =0A= ////////////////////////////////////////////////////////////////////////=0A= /* The class representing the dynamic scroller */=0A= ASSScroller =3D Class.create({=0A= /**=0A= * @param table The ASSTable instance this scrollbar belongs to.=0A= * @param domNode The node where the scrollbar should be placed, = should be a
inside a =0A= * next to the userlist table, containing another div inside. DOM = element or identifier.=0A= * @todo Auto-create the inner div if it does not exist.=0A= */=0A= initialize: function(table, domNode)=0A= {=0A= this.table =3D table;=0A= this.domNode =3D $(domNode);=0A= this.advanceRTG =3D 1;=0A= this.timer =3D null;=0A= this.attachEventHandlers();=0A= this.refreshDelay =3D 800;=0A= },=0A= =0A= /**=0A= * Register this as an event handler for scrolling events. In order = to pass this object to the=0A= * actual handling function, use a closure.=0A= * @todo Implement this as a standard DOM EventListener, not with = closures.=0A= */=0A= attachEventHandlers: function()=0A= {=0A= Event.observe(this.domNode, 'scroll', this.makeScrollHandler(this));=0A= },=0A= =0A= /**=0A= * Creates a closure as the onscroll event handler, enclosing "this" = as a variable.=0A= */=0A= makeScrollHandler: function(self)=0A= {=0A= return function() {=0A= self.onscroll();=0A= }=0A= },=0A= =0A= /**=0A= * Actual event handler for the scroll event.=0A= */=0A= onscroll: function()=0A= {=0A= if (this.timer !=3D null) {=0A= clearTimeout(this.timer);=0A= }=0A= this.advanceRTG =3D this.computeScroll();=0A= =0A= this.timer =3D setTimeout(this.makeTimeoutHandler(this), = this.refreshDelay);=0A= },=0A= =0A= /**=0A= * Computes the row number corresponding to the current scroll = position.=0A= * @return The index of the row that should be at the top of the = displayed data range.=0A= */=0A= computeScroll: function()=0A= {=0A= var h =3D this.domNode.scrollHeight - = this.table.domNode.parentNode.offsetHeight;=0A= var y =3D this.domNode.scrollTop;=0A= var p =3D y / h;=0A= =0A= if(this.table.totalRows =3D=3D -1 || this.table.totalRows <=3D = this.table.limit) {=0A= var rtg =3D 1;=0A= } else {=0A= var rtg =3D Math.round((this.table.totalRows - this.table.limit) * = p) + 1;=0A= }=0A= =0A= if ((rtg + this.table.limit) > this.table.totalRows) {=0A= rtg =3D this.table.totalRows - this.table.limit + 1;=0A= }=0A= if (rtg < 1) {=0A= rtg =3D 1;=0A= }=0A= =0A= return rtg;=0A= },=0A= =0A= // Closure=0A= makeTimeoutHandler: function(self)=0A= {=0A= return function() {=0A= self.applyScroll();=0A= }=0A= },=0A= =0A= applyScroll: function()=0A= {=0A= this.table.showRows(this.advanceRTG, this.table.limit);=0A= this.timer =3D null;=0A= },=0A= =0A= /**=0A= * Refreshes the scrollbar dimension/position according to reflect = the currently displayed range.=0A= */=0A= refreshScrollbar: function()=0A= {=0A= if (this.table.totalRows < this.table.limit) {=0A= this.domNode.style.display =3D "none";=0A= return;=0A= }=0A= var raport =3D this.table.totalRows / this.table.limit;=0A= var outheight =3D this.table.domNode.parentNode.offsetHeight;=0A= var inheight =3D Math.round(outheight * raport);=0A= var scrollTop =3D Math.round(((this.table.lastoffset - 1) / = (this.table.totalRows - this.table.limit)) * (inheight - outheight));=0A= =0A= this.domNode.style.height =3D outheight + "px";=0A= this.domNode.firstChild.style.height =3D inheight + "px";=0A= if (this.domNode.scrollTop !=3D scrollTop) {=0A= this.domNode.scrollTop =3D scrollTop;=0A= }=0A= this.domNode.style.display =3D "block";=0A= }=0A= });=0A= =0A= ////////////////////////////////////////////////////////////////////////=0A= /* the class that deals with the filtering in a table */=0A= ASSFilter =3D Class.create({=0A= initialize: function(table, filterNode)=0A= {=0A= this.table =3D table;=0A= this.filterNode =3D $(filterNode);=0A= this.filters =3D new Object();=0A= =0A= this.attachEventHandlers();=0A= },=0A= =0A= makeRefreshHandler: function(self)=0A= {=0A= return function() {=0A= self.refreshContent();=0A= }=0A= },=0A= =0A= attachEventHandlers: function()=0A= {=0A= var inputs =3D this.filterNode.getElementsByTagName('input');=0A= var selects =3D this.filterNode.getElementsByTagName('select');=0A= =0A= for(var i =3D 0; i < inputs.length; i++) {=0A= if (inputs[i].type =3D=3D "text") {=0A= Event.observe(inputs[i], 'keyup', this.makeRefreshHandler(this));=0A= } else {=0A= //IE is buggy on "change" events for checkboxes and radios=0A= Event.observe(inputs[i], 'click', this.makeRefreshHandler(this));=0A= }=0A= }=0A= =0A= for(var i =3D 0; i < selects.length; i++) {=0A= Event.observe(selects[i], 'change', this.makeRefreshHandler(this));=0A= }=0A= },=0A= =0A= getFilters : function()=0A= {=0A= var inputs =3D this.filterNode.getElementsByTagName('input');=0A= this.filters =3D new Object();=0A= var existing =3D new Object();=0A= for(var prop in this.filters) {=0A= existing[prop] =3D true;=0A= }=0A= for (var i =3D 0; i < inputs.length; i++) {=0A= var key =3D inputs[i].name;=0A= if (inputs[i].type =3D=3D "radio" || inputs[i].type =3D=3D = "checkbox" ) {=0A= if (inputs[i].checked) {=0A= this.filters[key] =3D inputs[i].value.strip();=0A= }=0A= } else {=0A= this.filters[key] =3D inputs[i].value.strip();=0A= }=0A= }=0A= =0A= var selects =3D this.filterNode.getElementsByTagName('select');=0A= for(var i =3D 0; i < selects.length; i++) {=0A= this.filters[selects[i].name] =3D selects[i].value.strip();=0A= }=0A= =0A= var filterString =3D "";=0A= for (key in this.filters) {=0A= if (!existing[key] && this.filters[key] !=3D "") {=0A= filterString +=3D '&' + key + '=3D' + this.filters[key];=0A= }=0A= }=0A= delete existing;=0A= =0A= return filterString;=0A= },=0A= =0A= /**=0A= * Refresh the table when the filters have changed.=0A= */=0A= refreshContent : function()=0A= {=0A= var newFilters =3D this.getFilters();=0A= if (newFilters =3D=3D this.table.filters) {=0A= return;=0A= }=0A= this.table.totalRows =3D -1;=0A= this.table.fetchedRows =3D new Array();=0A= this.table.filters =3D newFilters;=0A= this.table.showRows(1, this.table.limit);=0A= }=0A= });=0A= =0A= /* this represent a triple state checkbox */=0A= MSCheckbox =3D Class.create({=0A= /**=0A= * @todo Make confirmations generic.=0A= * @todo msg.get=0A= * @todo Send the state number, or a generic map {state =3D> = sendValue}=0A= * @todo Configuration: automatic save, or just change the value.=0A= * @todo "Busy" icon when saving.=0A= * @todo Changing the value should change the cache, not invalidate = it.=0A= * @todo The new state should be taken from the response, not just = increment it.=0A= * @todo Make this a valid ARIA checkbox: = http://www.w3.org/TR/aria-role/#checkbox=0A= */=0A= initialize: function(domNode, right, saveUrl, defaultState, table, idx)=0A= {=0A= this.table =3D table;=0A= this.idx =3D idx;=0A= if(this.table && this.idx && this.table.fetchedRows[this.idx]) {=0A= this.currentUorG =3D this.table.fetchedRows[this.idx].fullname;=0A= this.isUserInGroup =3D = this.table.fetchedRows[this.idx].isuseringroup;=0A= }=0A= else {=0A= // guest users=0A= this.currentUorG =3D window.unregUser;=0A= this.isUserInGroup =3D false;=0A= }=0A= this.domNode =3D $(domNode);=0A= this.right =3D right;=0A= this.saveUrl =3D saveUrl;=0A= this.defaultState =3D defaultState;=0A= this.state =3D defaultState;=0A= this.states =3D [0,1,2]; // 0 =3D inherit; 1 =3D allow, 2 =3D=3D deny=0A= this.nrstates =3D this.states.length;=0A= this.images =3D = ["/skins/albatross/icons/rights%2Dmanager/none.png","/skins/albatross/ico= ns/rights%2Dmanager/allow.png","/skins/albatross/icons/rights%2Dmanager/d= eny1.png"];=0A= this.labels =3D ['','',''];=0A= =0A= this.draw(this.state);=0A= this.attachEvents();=0A= },=0A= =0A= /**=0A= * @todo Draw with the current this.state, don't pass as an argument.=0A= */=0A= draw: function(state)=0A= {=0A= //remove child nodes=0A= while (this.domNode.childNodes.length > 0) {=0A= this.domNode.removeChild(this.domNode.firstChild);=0A= }=0A= //add new image=0A= var img =3D document.createElement('img');=0A= img.src =3D this.images[state];=0A= this.domNode.appendChild(img);=0A= //add label=0A= if (this.labels[state] !=3D '') {=0A= var la =3D document.createElement('span');=0A= la.appendChild(document.createTextNode(this.labels[state]));=0A= this.domNode.appendChild(la);=0A= }=0A= },=0A= =0A= next: function()=0A= {=0A= this.state =3D (this.state + 1) % this.nrstates;=0A= if (this.table !=3D undefined) {=0A= // TODO: Just update the cache, don't invalidate the row, once the = rights are as stored as an=0A= // array, and not as a string.=0A= delete this.table.fetchedRows[this.idx];=0A= }=0A= this.draw(this.state);=0A= },=0A= =0A= /* Confirmation cases:=0A= * 1. The current user is clearing / denying himself any right.=0A= * 2. The current user is clearing / denying any rights for a group he = belongs to.=0A= * 3. The current user is is clearing / denying admin right for any = user / group.=0A= * User can clear it's own right after canceling the deny action and = confirming the clear action.=0A= */=0A= createClickHandler: function(self)=0A= {=0A= return function() {=0A= if (self.req) {=0A= return;=0A= }=0A= =0A= var action =3D "";=0A= var nxtst =3D (self.state + 1) % self.nrstates;=0A= =0A= // 1. The current user is clearing / denying himself any right.=0A= if(self.currentUorG =3D=3D window.currentUser) {=0A= if (nxtst =3D=3D 2) {=0A= var denymessage =3D "You are about to deny the __right__ right = for yourself. Continue?".replace('__right__', self.right);=0A= if (!confirm(denymessage)) {=0A= var clearmessage =3D "Would you like to clear the = __right__ right for yourself instead?".replace('__right__', self.right);=0A= if(confirm(clearmessage)) {=0A= action =3D "clear";=0A= self.state =3D 2;=0A= nxtst =3D 0;=0A= }=0A= else return;=0A= }=0A= }=0A= else if (nxtst =3D=3D 0) {=0A= var clearmessage =3D "You are about to clear the __right__ = right for yourself. Continue?".replace('__right__', self.right);=0A= if (!confirm(clearmessage)) {=0A= return;=0A= }=0A= }=0A= }=0A= // 2. The current user is clearing / denying any rights for a = group he belongs to.=0A= else if(self.isUserInGroup || (window.currentUser =3D=3D = "XWiki.XWikiGuest" && self.currentUorG =3D=3D "XWiki.XWikiAllGroup")) {=0A= if (nxtst =3D=3D 2) {=0A= var denymessage =3D "You are about to deny the __right__ = right for __name__. This implies denying your own __right__ right, if = you are part of this group. Continue?".replace(/__right__/g, self.right);=0A= denymessage =3D denymessage.replace('__name__', = self.currentUorG);=0A= if (!confirm(denymessage)) {=0A= var clearmessage =3D "Would you like to clear the __right__ = right for __name__ instead? This implies clearing your own __right__ = right, if you are part of this group. Continue?".replace(/__right__/g, = self.right);=0A= clearmessage =3D clearmessage.replace('__name__', = self.currentUorG);=0A= if(confirm(clearmessage)) {=0A= action =3D "clear";=0A= self.state =3D 2;=0A= nxtst =3D 0;=0A= }=0A= else return;=0A= }=0A= }=0A= else if (nxtst =3D=3D 0) {=0A= var clearmessage =3D "You are about to clear the __right__ = right for __name__. This implies clearing your own __right__ right, if = you are part of this group. Continue?".replace(/__right__/g, self.right);=0A= clearmessage =3D clearmessage.replace('__name__', = self.currentUorG);=0A= if (!confirm(clearmessage)) {=0A= return;=0A= }=0A= }=0A= }=0A= // 3. The current user is is clearing / denying admin right for = any user / group.=0A= else if(self.right =3D=3D "admin") {=0A= if (nxtst =3D=3D 2) {=0A= var denymessage =3D "You are about to deny the __right__ right = for __name__. Continue?".replace('__right__', self.right);=0A= denymessage =3D denymessage.replace('__name__', = self.currentUorG);=0A= if (!confirm(denymessage)) {=0A= return;=0A= }=0A= }=0A= else if (nxtst =3D=3D 0) {=0A= var clearmessage =3D "You are about to clear the __right__ = right for __name__. Continue?".replace('__right__', self.right);=0A= clearmessage =3D clearmessage.replace('__name__', = self.currentUorG);=0A= if (!confirm(clearmessage)) {=0A= return;=0A= }=0A= }=0A= }=0A= =0A= if(action =3D=3D "") {=0A= if (nxtst =3D=3D 0) {=0A= action =3D "clear";=0A= } else if (nxtst =3D=3D 1) {=0A= action =3D "allow";=0A= } else {=0A= action =3D "deny";=0A= }=0A= }=0A= =0A= // Compose the complete URI=0A= var url =3D self.saveUrl + "&action=3D" + action + "&right=3D" + = self.right;=0A= =0A= self.req =3D new Ajax.Request(url,=0A= {=0A= method: 'get',=0A= onSuccess: function(transport) {=0A= if(transport.responseText.strip() =3D=3D "SUCCESS")=0A= self.next();=0A= else {=0A= //if an error occurred while trying to save a right rule, = display an alert=0A= // and refresh the page, since probably the user does not = have the right to perform=0A= // that action=0A= alert("An exception occured while trying to save the current = modifications. Please check if you have the proper rights to perform = these modifications.");=0A= var rURL =3D unescape(window.location.pathname);=0A= window.location.href =3D rURL;=0A= }=0A= },=0A= onFailure: function() {=0A= alert("An error occured while communicating with the server. = Please check that the server is accessible, and you have the proper = rights to perform the requested action.");=0A= },=0A= onComplete: function() {=0A= delete self.req;=0A= }=0A= });=0A= }=0A= },=0A= =0A= attachEvents: function()=0A= {=0A= Event.observe(this.domNode, 'click', this.createClickHandler(this));=0A= }=0A= });=0A= =0A= /**=0A= * user list element creator. Used in adminusers.vm.=0A= */=0A= function displayUsers(row, i, table)=0A= {=0A= var userurl =3D row.userurl;=0A= var usersaveurl =3D row.usersaveurl;=0A= var userinlineurl =3D row.userinlineurl;=0A= var wikiname =3D row.wikiname;=0A= var docurl =3D row.docurl;=0A= =0A= var tr =3D document.createElement('tr');=0A= if (i % 2 =3D=3D 0) {=0A= tr.className =3D "even";=0A= } else {=0A= tr.className =3D "odd";=0A= }=0A= =0A= var username =3D document.createElement('td');=0A= if (wikiname =3D=3D "local") {=0A= var a =3D document.createElement('a');=0A= a.href =3D userurl;=0A= a.appendChild(document.createTextNode(row.username));=0A= username.appendChild(a);=0A= } else {=0A= username.appendChild(document.createTextNode(row.username));=0A= }=0A= username.className=3D"username";=0A= tr.appendChild(username);=0A= =0A= var firstname =3D document.createElement('td');=0A= firstname.appendChild(document.createTextNode(row.firstname) );=0A= tr.appendChild(firstname);=0A= =0A= var lastname =3D document.createElement('td');=0A= lastname.appendChild(document.createTextNode(row.lastname) );=0A= tr.appendChild(lastname);=0A= =0A= var manage =3D document.createElement('td');=0A= manage.className =3D "manage";=0A= =0A= if (wikiname =3D=3D "local") {=0A= //edit user=0A= var edit =3D document.createElement('img');=0A= edit.src =3D '/skins/albatross/icons/rights%2Dmanager/edit.png';=0A= edit.title =3D "Edit";=0A= Event.observe(edit, 'click', editUserOrGroup(userinlineurl, = usersaveurl, docurl));=0A= edit.className =3D 'icon-manage';=0A= manage.appendChild(edit);=0A= =0A= //delete group=0A= var del =3D document.createElement('img');=0A= =0A= if(row.grayed =3D=3D "true") {=0A= del.src =3D '/skins/albatross/icons/rights%2Dmanager/clearg.png';=0A= del.className =3D 'icon-manageg';=0A= } else {=0A= del.src =3D '/skins/albatross/icons/rights%2Dmanager/clear.png';=0A= Event.observe(del, 'click', deleteUserOrGroup(i, table, = row.fullname, "user"));=0A= del.className =3D 'icon-manage';=0A= }=0A= del.title =3D "Delete";=0A= manage.appendChild(del);=0A= }=0A= =0A= tr.appendChild(manage);=0A= return tr;=0A= }=0A= =0A= /** group list element creator **/=0A= function displayGroups(row, i, table)=0A= {=0A= var userurl =3D row.userurl;=0A= var userinlineurl =3D row.userinlineurl;=0A= var usersaveurl =3D row.usersaveurl;=0A= var wikiname =3D row.wikiname;=0A= var docurl =3D row.docurl;=0A= =0A= var tr =3D document.createElement('tr');=0A= =0A= if (i % 2 =3D=3D 0) {=0A= tr.className =3D "even";=0A= } else {=0A= tr.className =3D "odd";=0A= }=0A= =0A= var username =3D document.createElement('td');=0A= if (wikiname =3D=3D "local") {=0A= var a =3D document.createElement('a');=0A= a.href =3D userurl;=0A= a.appendChild( document.createTextNode( row.username ) );=0A= username.appendChild( a );=0A= } else {=0A= username.appendChild(document.createTextNode(row.username));=0A= }=0A= username.className=3D"username";=0A= tr.appendChild(username);=0A= =0A= var members =3D document.createElement('td');=0A= if (wikiname =3D=3D "local") {=0A= members.appendChild(document.createTextNode(row.members));=0A= } else {=0A= members.appendChild(document.createTextNode("-"));=0A= }=0A= tr.appendChild(members);=0A= =0A= var manage =3D document.createElement('td');=0A= manage.className =3D "manage";=0A= =0A= if (wikiname =3D=3D "local") {=0A= //delete group=0A= var del =3D document.createElement('img');=0A= del.src =3D '/skins/albatross/icons/rights%2Dmanager/clear.png';=0A= del.title =3D "Delete";=0A= Event.observe(del, 'click', deleteUserOrGroup(i, table, = row.fullname, "group"));=0A= del.className =3D 'icon-manage';=0A= =0A= //edit user=0A= var edit =3D document.createElement('img');=0A= edit.src =3D '/skins/albatross/icons/rights%2Dmanager/edit.png';=0A= edit.title =3D "Edit";=0A= Event.observe(edit, 'click', editUserOrGroup(userinlineurl, = usersaveurl, docurl));=0A= edit.className =3D 'icon-manage';=0A= =0A= manage.appendChild(edit);=0A= manage.appendChild(del);=0A= }=0A= =0A= tr.appendChild(manage);=0A= =0A= return tr;=0A= }=0A= =0A= /** group members list element creator **/=0A= function displayMembers(row, i, table)=0A= {=0A= var tr =3D document.createElement('tr');=0A= if(i % 2 =3D=3D 0) tr.className =3D "even";=0A= else tr.className =3D "odd";=0A= =0A= var membername =3D document.createElement("td");=0A= =0A= if (row.wikiname =3D=3D "local") {=0A= var a =3D document.createElement("a");=0A= a.href =3D row.memberurl;=0A= a.appendChild(document.createTextNode(row.fullname));=0A= membername.appendChild(a);=0A= } else {=0A= membername.appendChild(document.createTextNode(row.fullname));=0A= }=0A= membername.className=3D"username";=0A= tr.appendChild(membername);=0A= =0A= /* do not allow to delete users from a group when not in inline mode */=0A= if(table.action =3D=3D "inline")=0A= {=0A= var membermanage =3D document.createElement("td");=0A= membermanage.className =3D "manage";=0A= =0A= var del =3D document.createElement('img');=0A= =0A= if (row.grayed =3D=3D "true") {=0A= del.src =3D '/skins/albatross/icons/rights%2Dmanager/clearg.png';=0A= del.className =3D 'icon-manageg';=0A= } else {=0A= del.src =3D '/skins/albatross/icons/rights%2Dmanager/clear.png';=0A= Event.observe(del, 'click', deleteMember(i, table, row.fullname, = row.docurl));=0A= del.className =3D 'icon-manage';=0A= }=0A= del.title =3D "Delete";=0A= membermanage.appendChild(del);=0A= tr.appendChild(membermanage);=0A= }=0A= =0A= return tr;=0A= }=0A= =0A= /**=0A= * User and groups list element creator.=0A= * Used in adminglobalrights.vm, adminspacerights.vm, editrights.vm.=0A= * @todo allows and denys should be arrays, not strings.=0A= */=0A= function displayUsersAndGroups(row, i, table, idx)=0A= {=0A= var userurl =3D row.userurl;=0A= var uorg =3D table.json.uorg;=0A= var allows =3D row.allows;=0A= var denys =3D row.denys;=0A= var saveUrl =3D "?xpage=3Dsaverights&clsname=3D" + table.json.clsname = + "&fullname=3D" + row.fullname + "&uorg=3D" + uorg;=0A= =0A= var tr =3D document.createElement('tr');=0A= =0A= if (i % 2 =3D=3D 0) {=0A= tr.className =3D "even";=0A= } else {=0A= tr.className =3D "odd";=0A= }=0A= =0A= var username =3D document.createElement('td');=0A= if(row.wikiname =3D=3D "local") {=0A= var a =3D document.createElement('a');=0A= a.href =3D userurl;=0A= a.appendChild( document.createTextNode( row.username ) );=0A= username.appendChild( a );=0A= } else {=0A= username.appendChild(document.createTextNode(row.username));=0A= }=0A= =0A= username.className =3D "username";=0A= tr.appendChild(username);=0A= activeRights.each(function(right) {=0A= if(right)=0A= {=0A= var td =3D document.createElement('td');=0A= td.className =3D "rights";=0A= var r =3D 0;=0A= if (allows.indexOf(right) >=3D 0) {=0A= r =3D 1;=0A= } else if (denys.indexOf(right) >=3D 0) {=0A= r =3D 2;=0A= }=0A= var chbx =3D new MSCheckbox(td, right, saveUrl, r, table, i);=0A= tr.appendChild(td);=0A= }=0A= });=0A= =0A= return tr;=0A= }=0A= =0A= ////////////////////////////////////////////////////////////////=0A= =0A= function editUserOrGroup(userinlineurl, usersaveurl, userredirecturl)=0A= {=0A= return function() {=0A= window.lb =3D new Lightbox(userinlineurl, usersaveurl, = userredirecturl);=0A= }=0A= }=0A= =0A= =0A= //function to delete a user with ajax=0A= function deleteUserOrGroup(i, table, docname, uorg)=0A= {=0A= return function() {=0A= var url =3D "?xpage=3Ddeleteuorg&docname=3D" + docname;=0A= if(uorg =3D=3D "user") {=0A= if (confirm("The user __name__ will be deleted and removed from = all groups he belongs to. Are you sure you want to = proceed?".replace('__name__', docname))) {=0A= new Ajax.Request(url, {=0A= method: 'get',=0A= onSuccess: function(transport) {=0A= table.deleteRow(i);=0A= }=0A= });=0A= }=0A= }=0A= else {=0A= if (confirm("The group __name__ will be deleted. Are you sure you = want to proceed?".replace('__name__', docname))) {=0A= new Ajax.Request(url, {=0A= method: 'get',=0A= onSuccess: function(transport) {=0A= table.deleteRow(i);=0A= }=0A= });=0A= }=0A= }=0A= }=0A= }=0A= =0A= //deletes a member of a group (only the object)=0A= function deleteMember(i, table, docname, docurl)=0A= {=0A= return function() {=0A= var url =3D docurl + "?xpage=3Ddeletegroupmember&fullname=3D" + = docname;=0A= if (confirm("This user will be removed from the current group. Are = you sure you want to proceed?")) {=0A= new Ajax.Request(url, {=0A= method: 'get',=0A= onSuccess: function(transport) {=0A= table.deleteRow(i);=0A= }=0A= });=0A= }=0A= }=0A= }=0A= =0A= function makeAddHandler(url, saveurl, redirecturl)=0A= {=0A= return function() {=0A= window.lb =3D new Lightbox(url, saveurl, redirecturl);=0A= }=0A= }=0A= =0A= function setGuestExtendedRights(self)=0A= {=0A= return function() { =0A= var url =3D '/bin/save/XWiki/XWikiPreferences';=0A= var pivot =3D self;=0A= if(self.getAttribute('alt') =3D=3D "yes")=0A= {=0A= if(self.id.indexOf('view') > 0)=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_view" : "0"}, onSuccess: = function() { pivot.alt =3D "no"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/none.png"; } }); =0A= else=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_edit" : "0"}, onSuccess: = function() { pivot.alt =3D "no"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/none.png"; } });=0A= }=0A= else {=0A= if(self.id.indexOf('view') > 0)=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_view" : "1"}, onSuccess: = function() { pivot.alt =3D "yes"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/allow%2Dblack.png"; } }); =0A= else=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_edit" : "1"}, onSuccess: = function() { pivot.alt =3D "yes"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/allow%2Dblack.png"; } });=0A= } =0A= }=0A= }=0A= =0A= =0A= function setGuestExtendedRights(self)=0A= {=0A= return function() { =0A= var url =3D '/bin/save/XWiki/XWikiPreferences';=0A= var pivot =3D self;=0A= if(self.getAttribute('alt') =3D=3D "yes")=0A= {=0A= if(self.id.indexOf('view') > 0)=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_view" : "0"}, onSuccess: = function() { pivot.alt =3D "no"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/none.png"; } }); =0A= else=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_edit" : "0"}, onSuccess: = function() { pivot.alt =3D "no"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/none.png"; } });=0A= }=0A= else {=0A= if(self.id.indexOf('view') > 0)=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_view" : "1"}, onSuccess: = function() { pivot.alt =3D "yes"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/allow%2Dblack.png"; } }); =0A= else=0A= new Ajax.Request(url, {method: 'post', parameters: = {"XWiki.XWikiPreferences_0_authenticate_edit" : "1"}, onSuccess: = function() { pivot.alt =3D "yes"; pivot.src =3D = "/skins/albatross/icons/rights%2Dmanager/allow%2Dblack.png"; } });=0A= } =0A= }=0A= }=0A= =0A= ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/skins/albatross/suggest/ajaxSuggest.js var useXWKns; if (useXWKns) { if (typeof(xwk) =3D=3D "undefined") xwk =3D {} _xwk =3D xwk; } else { _xwk =3D this; } if (typeof(_xwk.ajaxSuggest) =3D=3D "undefined") _xwk.ajaxSuggest =3D {} _xwk.ajaxSuggest =3D function (fld, param) {=0A= this.fld =3D fld; if (!this.fld) return false; =09 =09 =09 =09 // init variables // this.sInput =3D ""; this.nInputChars =3D 0; this.aSuggestions =3D []; this.iHighlighted =3D 0; =09 // parameters object // this.oP =3D (param) ? param : {}; =09 // defaults=09 // if (!this.oP.minchars) this.oP.minchars =3D 1; if (!this.oP.method) this.oP.meth =3D "get"; if (!this.oP.varname) this.oP.varname =3D "input"; if (!this.oP.className) this.oP.className =3D "ajaxsuggest"; if (!this.oP.timeout) this.oP.timeout =3D 2500; if (!this.oP.delay) this.oP.delay =3D 500; if (!this.oP.offsety) this.oP.offsety =3D -5; if (!this.oP.shownoresults) this.oP.shownoresults =3D true; if (!this.oP.noresults) this.oP.noresults =3D "No results!"; if (!this.oP.maxheight && this.oP.maxheight !=3D=3D 0) = this.oP.maxheight =3D 250; if (!this.oP.cache && this.oP.cache !=3D false) this.oP.cache =3D = false; if (this.oP.seps) this.seps =3D = this.oP.seps; else this.seps =3D ""; =09 =09 =09 =09 // set keyup handler for field // and prevent autocomplete from client // var pointer =3D this; =09 // NOTE: not using addEventListener because UpArrow fired twice in = Safari //_xwk.DOM.addEvent( this.fld, 'keyup', function(ev){ return = pointer.onKeyPress(ev); } ); =09 this.fld.onkeypress =3D function(ev){ return pointer.onKeyPress(ev); } this.fld.onkeyup =3D function(ev){ return pointer.onKeyUp(ev); } =09 this.fld.setAttribute("autocomplete", "off"); } _xwk.ajaxSuggest.prototype.onKeyPress =3D function(ev) { =09 var key =3D (window.event) ? window.event.keyCode : ev.keyCode; // set responses to keydown events in the field // this allows the user to use the arrow keys to scroll through the = results // ESCAPE clears the list // TAB sets the current highlighted value // var RETURN =3D 13; var TAB =3D 9; var ESC =3D 27; =09 var bubble =3D true; switch(key) { case RETURN: { if(this.aSuggestions.length =3D=3D 1) { this.setHighlight(1); } this.setHighlightedValue(); bubble =3D false; } break; case ESC: this.clearSuggestions(); break; } return bubble; } _xwk.ajaxSuggest.prototype.onKeyUp =3D function(ev) { var key =3D (window.event) ? window.event.keyCode : ev.keyCode; =09 // set responses to keydown events in the field // this allows the user to use the arrow keys to scroll through the = results // ESCAPE clears the list // TAB sets the current highlighted value // var ARRUP =3D 38; var ARRDN =3D 40; =09 var bubble =3D true; switch(key) { case ARRUP: this.changeHighlight(key); bubble =3D false; break; case ARRDN: this.changeHighlight(key); bubble =3D false; break; =09 =09 default: { //if there are separators in the input string, // get suggestions only for the text after the last separator if(this.seps)=20 { var lastIndx =3D -1; for(var i =3D 0; i < this.seps.length; i++) if(this.fld.value.lastIndexOf(this.seps.charAt(i)) > lastIndx) lastIndx =3D this.fld.value.lastIndexOf(this.seps.charAt(i)); if(lastIndx =3D=3D -1) this.getSuggestions(this.fld.value); else=20 this.getSuggestions(this.fld.value.substring(lastIndx+1)); } else=20 this.getSuggestions(this.fld.value); } } return bubble; =09 } =20 _xwk.ajaxSuggest.prototype.getSuggestions =3D function (val) { =09 // if input stays the same, do nothing // if (val =3D=3D this.sInput) return false; =09 =09 // input length is less than the min required to trigger a request // reset input string // do nothing // if (val.length < this.oP.minchars) { this.sInput =3D ""; return false; } =09 =09 // if caching enabled, and user is typing (ie. length of input is = increasing) // filter results out of aSuggestions from last request // if (val.length>this.nInputChars && this.aSuggestions.length && = this.oP.cache) { var arr =3D []; for (var i=3D0;i" + val.substring(st, = st+this.sInput.length) + "" + val.substring(st+this.sInput.length); =09 =09 var span =3D _xwk.DOM.createElement("span", {}, output, true); /*if (arr[i].info !=3D "") { var br =3D _xwk.DOM.createElement("br", {}); span.appendChild(br); var small =3D _xwk.DOM.createElement("small", {}, arr[i].info); span.appendChild(small); }*/ =09 var a =3D _xwk.DOM.createElement("a", { href:"#" }); =09 var tl =3D _xwk.DOM.createElement("span", {className:"tl"}, " "); var tr =3D _xwk.DOM.createElement("span", {className:"tr"}, " "); a.appendChild(tl); a.appendChild(tr); =09 a.appendChild(span); =09 a.name =3D i+1; a.onclick =3D function () { pointer.setHighlightedValue(); return = false; } a.onmouseover =3D function () { pointer.setHighlight(this.name); } =09 var li =3D _xwk.DOM.createElement( "li", {}, a ); =09 ul.appendChild( li ); } =09 =09 // no results // if (arr.length =3D=3D 0) { var li =3D _xwk.DOM.createElement( "li", {className:"as_warning"}, = this.oP.noresults ); =09 ul.appendChild( li ); =09 } =09 =09 div.appendChild( ul ); =09 =09 var fcorner =3D _xwk.DOM.createElement("div", {className:"as_corner"}); var fbar =3D _xwk.DOM.createElement("div", {className:"as_bar"}); var footer =3D _xwk.DOM.createElement("div", {className:"as_footer"}); footer.appendChild(fcorner); footer.appendChild(fbar); div.appendChild(footer); =09 =09 =09 // get position of target textfield // position holding div below it // set width of holding div to width of field // var pos =3D _xwk.DOM.getPos(this.fld); =09 div.style.left =3D pos.x + "px"; =09 div.style.top =3D (pos.y + this.fld.offsetHeight + this.oP.offsety) + = "px"; =09 div.style.width =3D this.fld.offsetWidth + "px"; =09 =09 =09 // set mouseover functions for div // when mouse pointer leaves div, set a timeout to remove the list = after an interval // when mouse enters div, kill the timeout so the list won't be removed // div.onmouseover =3D function(){ pointer.killTimeout() } div.onmouseout =3D function(){ pointer.resetTimeout() } // add DIV to document // document.getElementsByTagName("body")[0].appendChild(div); =09 =09 =09 // currently no item is highlighted // this.iHighlighted =3D 0; =09 =09 =09 =09 =09 =09 // remove list after an interval // var pointer =3D this; this.toID =3D setTimeout(function () { pointer.clearSuggestions() }, = this.oP.timeout); } _xwk.ajaxSuggest.prototype.changeHighlight =3D function(key) {=09 var list =3D _xwk.DOM.getElement("as_ul"); if (!list) return false; =09 var n; if (key =3D=3D 40) n =3D this.iHighlighted + 1; else if (key =3D=3D 38) n =3D this.iHighlighted - 1; =09 =09 if (n > list.childNodes.length) n =3D list.childNodes.length; if (n < 1) n =3D 1; =09 =09 this.setHighlight(n); } _xwk.ajaxSuggest.prototype.setHighlight =3D function(n) { var list =3D _xwk.DOM.getElement("as_ul"); if (!list) return false; =09 if (this.iHighlighted > 0) this.clearHighlight(); =09 this.iHighlighted =3D Number(n); =09 list.childNodes[this.iHighlighted-1].className =3D "as_highlight"; this.killTimeout(); } _xwk.ajaxSuggest.prototype.clearHighlight =3D function() { var list =3D _xwk.DOM.getElement("as_ul"); if (!list) return false; =09 if (this.iHighlighted > 0) { list.childNodes[this.iHighlighted-1].className =3D ""; this.iHighlighted =3D 0; } } _xwk.ajaxSuggest.prototype.setHighlightedValue =3D function () { if (this.iHighlighted) { if(this.sInput =3D=3D "" && this.fld.value =3D=3D "") this.sInput =3D this.fld.value =3D this.aSuggestions[ = this.iHighlighted-1 ].value; else { if(this.seps)=20 { var lastIndx =3D -1; for(var i =3D 0; i < this.seps.length; i++) if(this.fld.value.lastIndexOf(this.seps.charAt(i)) > lastIndx) lastIndx =3D this.fld.value.lastIndexOf(this.seps.charAt(i)); if(lastIndx =3D=3D -1) this.sInput =3D this.fld.value =3D this.aSuggestions[ = this.iHighlighted-1 ].value; else=20 { this.fld.value =3D this.fld.value.substring(0, lastIndx+1) + = this.aSuggestions[ this.iHighlighted-1 ].value; this.sInput =3D this.fld.value.substring(lastIndx+1); }=20 } else this.sInput =3D this.fld.value =3D this.aSuggestions[ = this.iHighlighted-1 ].value; } =09 this.fld.focus(); /* // move cursor to end of input (safari) // if (this.fld.selectionStart) this.fld.setSelectionRange(this.sInput.length, this.sInput.length);*/ =09 this.clearSuggestions(); =09 // pass selected object to callback function, if exists // if (typeof(this.oP.callback) =3D=3D "function") this.oP.callback( this.aSuggestions[this.iHighlighted-1] ); =09 //there is a hidden input if(this.fld.id.indexOf("_suggest") > 0) { var hidden_id =3D this.fld.id.substring(0, = this.fld.id.indexOf("_suggest")); var hidden_inp =3D document.getElementById(hidden_id); =09 if(hidden_inp) hidden_inp.value =3D this.aSuggestions[ this.iHighlighted-1 ].info; =09 } =09 } } _xwk.ajaxSuggest.prototype.killTimeout =3D function() { clearTimeout(this.toID); } _xwk.ajaxSuggest.prototype.resetTimeout =3D function() { clearTimeout(this.toID); var pointer =3D this; this.toID =3D setTimeout(function () { pointer.clearSuggestions() }, = 1000); } _xwk.ajaxSuggest.prototype.clearSuggestions =3D function () { =09 this.killTimeout(); =09 var ele =3D _xwk.DOM.getElement(this.idAs); var pointer =3D this; if (ele) { var fade =3D new _xwk.Fader(ele,1,0,250,function () { = _xwk.DOM.removeElement(pointer.idAs) }); } } // AJAX PROTOTYPE _____________________________________________ if (typeof(_xwk.AjaxReq) =3D=3D "undefined") _xwk.AjaxReq =3D {} _xwk.AjaxReq =3D function () { this.req =3D {}; this.isIE =3D false; } _xwk.AjaxReq.prototype.makeRequest =3D function (url, meth, onComp, = onErr) { =09 if (meth !=3D "POST") meth =3D "GET"; =09 this.onComplete =3D onComp; this.onError =3D onErr; =09 var pointer =3D this; =09 // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { this.req =3D new XMLHttpRequest(); this.req.onreadystatechange =3D function () { = pointer.processReqChange() }; this.req.open("GET", url, true); // this.req.send(null); // branch for IE/Windows ActiveX version } else if (window.ActiveXObject) { this.req =3D new ActiveXObject("Microsoft.XMLHTTP"); if (this.req) { this.req.onreadystatechange =3D function () { = pointer.processReqChange() }; this.req.open(meth, url, true); this.req.send(); } } } _xwk.AjaxReq.prototype.processReqChange =3D function() { =09 // only if req shows "loaded" if (this.req.readyState =3D=3D 4) { // only if "OK" if (this.req.status =3D=3D 200) { this.onComplete( this.req ); } else { this.onError( this.req.status ); } } } // DOM PROTOTYPE _____________________________________________ if (typeof(_xwk.DOM) =3D=3D "undefined") _xwk.DOM =3D {} _xwk.DOM.createElement =3D function ( type, attr, cont, html ) { var ne =3D document.createElement( type ); if (!ne) return false; =09 for (var a in attr) ne[a] =3D attr[a]; =09 if (typeof(cont) =3D=3D "string" && !html) ne.appendChild( document.createTextNode(cont) ); else if (typeof(cont) =3D=3D "string" && html) ne.innerHTML =3D cont; else if (typeof(cont) =3D=3D "object") ne.appendChild( cont ); return ne; } _xwk.DOM.clearElement =3D function ( id ) { var ele =3D this.getElement( id ); =09 if (!ele) return false; =09 while (ele.childNodes.length) ele.removeChild( ele.childNodes[0] ); =09 return true; } _xwk.DOM.removeElement =3D function ( ele ) { var e =3D this.getElement(ele); =09 if (!e) return false; else if (e.parentNode.removeChild(e)) return true; else return false; } _xwk.DOM.replaceContent =3D function ( id, cont, html ) { var ele =3D this.getElement( id ); =09 if (!ele) return false; =09 this.clearElement( ele ); =09 if (typeof(cont) =3D=3D "string" && !html) ele.appendChild( document.createTextNode(cont) ); else if (typeof(cont) =3D=3D "string" && html) ele.innerHTML =3D cont; else if (typeof(cont) =3D=3D "object") ele.appendChild( cont ); } _xwk.DOM.getElement =3D function ( ele ) { if (typeof(ele) =3D=3D "undefined") { return false; } else if (typeof(ele) =3D=3D "string") { var re =3D document.getElementById( ele ); if (!re) return false; else if (typeof(re.appendChild) !=3D "undefined" ) { return re; } else { return false; } } else if (typeof(ele.appendChild) !=3D "undefined") return ele; else return false; } _xwk.DOM.appendChildren =3D function ( id, arr ) { var ele =3D this.getElement( id ); =09 if (!ele) return false; =09 =09 if (typeof(arr) !=3D "object") return false; =09 for (var i=3D0;i" + transport.responseText + "
";=0A= this.form =3D c.getElementsByTagName('form')[0];=0A= var scripts =3D c.getElementsByTagName("script");=0A= for(var i =3D 0; i < scripts.length; ++i) {=0A= eval(scripts[i].text);=0A= }=0A= $('lb-bg').style.height =3D (document.body.offsetHeight + 35)+"px";=0A= },=0A= =0A= lbSaveForm: function() {=0A= this.lbSaveData();=0A= Form.disable(this.form);=0A= this.lbSaveSync(this.saveUrl);=0A= this.lbHide();=0A= window.location =3D this.redirectUrl;=0A= },=0A= =0A= lbNext: function(nextUrl) {=0A= this.lbSaveData();=0A= this.lbLoading();=0A= this.lbLoadForm(nextUrl);=0A= },=0A= =0A= lbSaveData: function() {=0A= this.formData +=3D "&" + Form.serialize(this.form);=0A= this.formData =3D this.formData.replace("_segmentChief=3D&", "=3D&");=0A= this.formData =3D this.formData.replace("_periodicity=3D&", "=3D&");=0A= },=0A= =0A= lbSave: function(url) {=0A= this.lbSaveData();=0A= new Ajax.Request(url + "?ajax=3D1", {parameters: this.formData, = onSuccess: this.lbSaveDone.bind(this)});=0A= },=0A= =0A= lbSaveSync: function(url) {=0A= new Ajax.Request(url + "?ajax=3D1", {parameters: this.formData, = asynchronous: false});=0A= },=0A= =0A= lbSaveDone: function(transport) {=0A= this.lbHide();=0A= },=0A= =0A= lbClearData: function() {=0A= this.formData =3D "";=0A= },=0A= =0A= lbClose: function() {=0A= this.lbHide();=0A= window.location =3D this.redirectUrl;=0A= },=0A= =0A= lbSetNext: function(nextURL) {=0A= this.nextURL =3D nextURL;=0A= },=0A= =0A= getWaiting: function() {=0A= return '
';=0A= },=0A= =0A= lbcustominit: function(lbbgcolor, lbbordercolor, lbfontcolor, lbtype) {=0A= if (!$('lb')) {=0A= var lbcontent =3D this.insertlbcontent(lbbgcolor, lbbordercolor, = lbfontcolor, lbtype);=0A= new Insertion.Top('body', lbcontent);=0A= }=0A= },=0A= =0A= lbinit: function() {=0A= return this.lbcustominit("#FFF", "#FFF", "#000", "rounded");=0A= },=0A= =0A= insertlbcontent: function(lbbgcolor, lbbordercolor, lbfontcolor, = lbtype) {=0A= var str =3D '
' + =0A= '
' + =0A= '
' +=0A= '
' +=0A= '
' +=0A= '
 
' + // TODO: Refresh just the = affected data, using an onClose callback=0A= '
';=0A= =0A= if(lbtype =3D=3D "lightrounded") {=0A= str +=3D this.roundedlighttop(lbbgcolor, lbbordercolor);=0A= } else if(lbtype =3D=3D "rounded") {=0A= str +=3D this.roundedtop(lbbgcolor, lbbordercolor);=0A= } else {=0A= str +=3D '
';=0A= }=0A= =0A= str +=3D '
Lightbox Content
';=0A= =0A= if(lbtype =3D=3D "lightrounded") {=0A= str +=3D this.roundedlightbottom(lbbgcolor, lbbordercolor);=0A= } else if(lbtype =3D=3D "rounded") {=0A= str +=3D this.roundedbottom(lbbgcolor, lbbordercolor);=0A= } else {=0A= str +=3D '
' + =0A= '' +=0A= '' +=0A= '' +=0A= '
';=0A= return str;=0A= },=0A= =0A= roundedbottom: function(bgcolor, bordercolor) {=0A= var str =3D '
' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '
';=0A= return str;=0A= },=0A= =0A= roundedlighttop: function(bgcolor, bordercolor) {=0A= var str =3D '
' + =0A= '' +=0A= '' +=0A= '' +=0A= '
';=0A= return str;=0A= },=0A= =0A= roundedtop: function(bgcolor, bordercolor) {=0A= var str =3D '
' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '' +=0A= '
';=0A= return str;=0A= },=0A= =0A= lightboxlink: function(linktext, lbcontent) {=0A= var str =3D '' + linktext + '';=0A= return str;=0A= }=0A= });=0A= ------=_NextPart_000_001E_01CA36B3.A332ECF0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://jadex.informatik.uni-hamburg.de/bin/skin/skins/albatross/scripts/shortcuts.js /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.A * By Binny V A * License : BSD */ shortcut =3D { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options =3D { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false } if(!opt) opt =3D default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] =3D=3D 'undefined') opt[dfo] =3D = default_options[dfo]; } } var ele =3D opt.target if(typeof opt.target =3D=3D 'string') ele =3D = document.getElementById(opt.target); var ths =3D this; shortcut_combination =3D shortcut_combination.toLowerCase(); //The function to be called at keypress var func =3D function(e) { e =3D e || window.event; if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, = Textarea fields var element; if(e.target) element=3De.target; else if(e.srcElement) element=3De.srcElement; if(element.nodeType=3D=3D3) element=3Delement.parentNode; if(element.tagName =3D=3D 'INPUT' || element.tagName =3D=3D = 'TEXTAREA') return; } //Find Which key is pressed if (e.keyCode) code =3D e.keyCode; else if (e.which) code =3D e.which; var character =3D String.fromCharCode(code).toLowerCase(); if(code =3D=3D 188) character=3D","; //If the user presses , when the = type is onkeydown if(code =3D=3D 190) character=3D"."; //If the user presses , when the = type is onkeydown var keys =3D shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same = as the number of keys, the shortcut function is invoked var kp =3D 0; //Work around for stupid Shift key bug created by using lowercase - = as a result the shift+num combination was broken var shift_nums =3D { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=3D":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" } //Special Keys - and their codes var special_keys =3D { 'esc':27, 'escape':27, 'tab':9, 'space':32, 'return':13, 'enter':13, 'backspace':8, 'scrolllock':145, 'scroll_lock':145, 'scroll':145, 'capslock':20, 'caps_lock':20, 'caps':20, 'numlock':144, 'num_lock':144, 'num':144, 'pause':19, 'break':19, 'insert':45, 'home':36, 'delete':46, 'end':35, 'pageup':33, 'page_up':33, 'pu':33, 'pagedown':34, 'page_down':34, 'pd':34, 'left':37, 'up':38, 'right':39, 'down':40, 'f1':112, 'f2':113, 'f3':114, 'f4':115, 'f5':116, 'f6':117, 'f7':118, 'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 } var modifiers =3D { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false} //Meta is Mac specific }; if(e.ctrlKey) modifiers.ctrl.pressed =3D true; if(e.shiftKey) modifiers.shift.pressed =3D true; if(e.altKey) modifiers.alt.pressed =3D true; if(e.metaKey) modifiers.meta.pressed =3D true; for(var i=3D0; k=3Dkeys[i],i 1) { //If it is a special key if(special_keys[k] =3D=3D code) kp++; } else if(opt['keycode']) { if(opt['keycode'] =3D=3D code) kp++; } else { //The special keys did not match if(character =3D=3D k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug = created by using lowercase character =3D shift_nums[character]; if(character =3D=3D k) kp++; } } } } if(kp =3D=3D keys.length && modifiers.ctrl.pressed =3D=3D modifiers.ctrl.wanted && modifiers.shift.pressed =3D=3D modifiers.shift.wanted && modifiers.alt.pressed =3D=3D modifiers.alt.wanted && modifiers.meta.pressed =3D=3D modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling = process. e.cancelBubble =3D true; e.returnValue =3D false; // XWIKI : added to force Alt+key events not to be = propagated to IE7 if (document.all && !window.opera && = window.XMLHttpRequest) { e.keyCode =3D 0; } //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } return false; } } } this.all_shortcuts[shortcut_combination] =3D { 'callback':func, 'target':ele, 'event': opt['type'] }; //Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, = false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] =3D func; }, //Remove the shortcut - just specify the shortcut and I will remove the = binding 'remove':function(shortcut_combination) { shortcut_combination =3D shortcut_combination.toLowerCase(); var binding =3D this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) if(!binding) return; var type =3D binding['event']; var ele =3D binding['target']; var callback =3D binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, = callback, false); else ele['on'+type] =3D false; } } ------=_NextPart_000_001E_01CA36B3.A332ECF0--