Skip to content
Browse files

initial commit

  • Loading branch information...
0 parents commit e52fbbd27c61a871b212a42356b86acf962be466 @willmeyer willmeyer committed
Showing with 15,981 additions and 0 deletions.
  1. +1 −0 .gitignore
  2. +177 −0 LICENSE.txt
  3. +11 −0 NOTICE.txt
  4. +123 −0 README.md
  5. +2 −0 deploy.sh
  6. +43 −0 src/webroot/auth.inc.php
  7. +72 −0 src/webroot/config.inc.php
  8. +1,028 −0 src/webroot/css/main.css
  9. +66 −0 src/webroot/dialogs.inc.php
  10. BIN src/webroot/fancybox/blank.gif
  11. BIN src/webroot/fancybox/fancy_close.png
  12. BIN src/webroot/fancybox/fancy_loading.png
  13. BIN src/webroot/fancybox/fancy_nav_left.png
  14. BIN src/webroot/fancybox/fancy_nav_right.png
  15. BIN src/webroot/fancybox/fancy_shadow_e.png
  16. BIN src/webroot/fancybox/fancy_shadow_n.png
  17. BIN src/webroot/fancybox/fancy_shadow_ne.png
  18. BIN src/webroot/fancybox/fancy_shadow_nw.png
  19. BIN src/webroot/fancybox/fancy_shadow_s.png
  20. BIN src/webroot/fancybox/fancy_shadow_se.png
  21. BIN src/webroot/fancybox/fancy_shadow_sw.png
  22. BIN src/webroot/fancybox/fancy_shadow_w.png
  23. BIN src/webroot/fancybox/fancy_title_left.png
  24. BIN src/webroot/fancybox/fancy_title_main.png
  25. BIN src/webroot/fancybox/fancy_title_over.png
  26. BIN src/webroot/fancybox/fancy_title_right.png
  27. BIN src/webroot/fancybox/fancybox-x.png
  28. BIN src/webroot/fancybox/fancybox-y.png
  29. BIN src/webroot/fancybox/fancybox.png
  30. +72 −0 src/webroot/fancybox/jquery.easing-1.3.pack.js
  31. +363 −0 src/webroot/fancybox/jquery.fancybox-1.3.1.css
  32. +1,077 −0 src/webroot/fancybox/jquery.fancybox-1.3.1.js
  33. +44 −0 src/webroot/fancybox/jquery.fancybox-1.3.1.pack.js
  34. +13 −0 src/webroot/fancybox/jquery.mousewheel-3.0.2.pack.js
  35. +18 −0 src/webroot/footer.inc.php
  36. +204 −0 src/webroot/get.php
  37. +29 −0 src/webroot/header.inc.php
  38. BIN src/webroot/images/add.png
  39. BIN src/webroot/images/ajax-loader.gif
  40. BIN src/webroot/images/animationProcessing.gif
  41. BIN src/webroot/images/close.png
  42. BIN src/webroot/images/controls-sprite.png
  43. BIN src/webroot/images/expand.png
  44. BIN src/webroot/images/graph.gif
  45. BIN src/webroot/images/refresh.png
  46. +19 −0 src/webroot/index.php
  47. +250 −0 src/webroot/js/coloring.js
  48. +154 −0 src/webroot/js/jquery/1.4.2/jquery.min.js
  49. +14 −0 src/webroot/js/jquery/jquery.equalheights.js
  50. +2,150 −0 src/webroot/js/jquery/jquery.qtip-1.0.0-rc3.wdm.js
  51. +393 −0 src/webroot/js/jqueryui/1.8.2/jquery-ui.min.js
  52. +706 −0 src/webroot/js/main.js
  53. +124 −0 src/webroot/js/plan.js
  54. +69 −0 src/webroot/js/sprint.js
  55. +662 −0 src/webroot/js/swim.js
  56. +23 −0 src/webroot/js/utils.js
  57. +93 −0 src/webroot/lib/interfacecache.inc.php
  58. +807 −0 src/webroot/lib/json.inc.php
  59. +671 −0 src/webroot/lib/traclib.inc.php
  60. +102 −0 src/webroot/lib/traclib_test.php
  61. +3,776 −0 src/webroot/lib/xmlrpc/xmlrpc.inc
  62. +955 −0 src/webroot/lib/xmlrpc/xmlrpc_wrappers.inc
  63. +1,246 −0 src/webroot/lib/xmlrpc/xmlrpcs.inc
  64. +58 −0 src/webroot/pagetop.inc.php
  65. +2 −0 src/webroot/phpinfo.php
  66. +182 −0 src/webroot/plan.php
  67. +8 −0 src/webroot/reauth.php
  68. +119 −0 src/webroot/sprint.php
  69. +55 −0 src/webroot/swim.php
Sorry, we could not display the entire diff because it was too big.
1 .gitignore
@@ -0,0 +1 @@
+src/webroot/cache/
177 LICENSE.txt
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
11 NOTICE.txt
@@ -0,0 +1,11 @@
+XML RPC support in PHP is provided by the XML-RPC for PHP project, by Ed Dumbill and others.
+See http://phpxmlrpc.sourceforge.net/
+
+Advanced JSON support in PHP is provided by the draft Services_JSON package by Michal Migurski and others.
+See http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+
+JQuery and JQueryUI are used throughout this project.
+See http://jquery.com/
+See http://jqueryui.com/
+
+
123 README.md
@@ -0,0 +1,123 @@
+# TracBoard
+
+TracBoard is a whiteboard-style Agile planning tool built on top of [Trac](http://trac.edgewall.org/ "Trac website")!
+
+### What it does
+
+TracBoard displays a large-format, card-like view of development tasks within milestones. It allows you to move
+them around easily as you and your team move your way through your sprints. It works for planning activities as
+well as for monitoring mid-sprint burndowns and swimlanes.
+
+### How it does it
+
+TracBoard relies entirely on data stored within a Trac setup. It assumes you use Trac and have a workflow that
+generally supports agile sprints. It hooks up to Trac via the XML RPC API using the user's authentication, and
+does not duplicate any data at all -- there is no additional data storage for TracBoard.
+
+Think of TracBoard as simply another view onto the core Trac system; one that makes some assumptions about the
+structure of your Trac data, but gives you a much more intuitive whiteboard-style interface.
+
+TracBoard is PHP and should run on a fairly vanilla configuration.
+
+### Why you might care
+
+TracBoard came out of a need for a whiteboard-style visualization of our development milestones, but a
+desire to avoid yet another tool when Trac met so many of our detailed tracking needs. We absolutely did not
+want to have to manage another database of items to be worked on, when all of our detailed defects and other work
+were managed effectively in Trac. We wanted one database, but with a more useful view than Trac was providing.
+
+If you find yourself struggling with the need for a convenient board-style visualization and planning tool, but not
+wanting to deal with duplicate data or with using one system for defects and another for feature requests, take a
+look at this.
+
+## A Quick Tour
+
+TracBoard has three main views: Roadmap, Sprint, and Swimlane.
+
+The _Roadmap_ view is useful for planning development sprints. It lets you view any number of milestones in parallel,
+including the special _Backlog_ milestone, and move items between them.
+
+![The Roadmap view](http://farm8.staticflickr.com/7153/6585146011_abb2164653.jpg "An example roadmap view")
+
+The _Sprint_ view is useful for moving items around within the context of an individual development sprint. Its
+easy to see the status of various development items within the current sprint.
+
+![The Sprint view](http://farm8.staticflickr.com/7153/6585146011_abb2164653.jpg "An example sprint view")
+
+The _Swimlane_ view is another view on an in-progress development sprint, oriented in terms of per-story swimlanes.
+
+![The Swimlane view](http://farm8.staticflickr.com/7153/6585146011_abb2164653.jpg "An example swimlane view")
+
+## Requirements and Setup
+
+*Caveat Emptor:* TracBoard is an internal-use tool and us not fully vetted for use in Trac setups that are not
+absolutely identical to ours. That said, we're happy to help you try to get things up and running if you'd like to
+try.
+
+TracBoard is PHP, and runnable from within a source distribution. Edit `src/webroot/config.inc.php` with your own
+configuration and go from there.
+
+### About Trac Workflow Requirements
+
+TracBoard makes several assumptions about the underlying structure of the Trac system, which may not map to your own
+installation and workflow. This is the area in which TracBoard currently lacks the most -- it is relatively inflexible
+when it comes to Trac workflow requirements.
+
+The Trac configuration TracBoard assumes is, in brief:
+* development sprints correspond to _milestones_
+* milestones are named in the form YYYYMMDD_*, with special-meaning _TBD_ and _Backlog_ milestones
+* tickets are organized into _Pipelines_, implemented as custom fields, representing streams of work (teams, in our case)
+* ticket types are _story_, _defect_, _feature_, and _task_, where story tickets have special meaning
+ and are assumed to have dependent tickets representing the elements of work that need to be completed for the story
+
+## FIXME
+
+### Feature Requests
+
+* move subtickets when moving pris on parent ticket (probably some more general version of this is possible as well)
+
+* save state for which coloring groups are on/off
+
+* lighter fonts when tickets have dark color
+
+* make story/ticket id copyable
+
+* coloring:
+ * "enable all" and "disable all" for coloring
+ * hide rows
+
+* in swimlane, make stories have their own appearance
+
+* in sprint view, be able to drag between columns to change status
+
+* in swimlane view, ability to add new top-level stories
+
+* in swimlane view, allow tickets to be dragged into other swimlanes (meaning a re-parent)
+
+* add wontfix quick-action in edit view
+
+* when doing drag and drop:
+ * should be able to drop into groupings (not just columns)
+ * should show up right away in the new location, not wait for a column refresh
+ * shouldn't be able to drop into the region where it already is
+
+* be able to limit/filter views to only a certain component, for individual planning (use tracboard itself as an example, or maybe "data request"). maybe "any" field as well, some kind of regex or something
+
+* Projector stylesheet
+
+* More device-specific/optimized display on ipad
+
+* make colors for color-by-who static, not dynamic (so people always get the same color)
+
+* notification to other connected clients when items are moved
+
+### Possible Bugs
+
+* cards should wrap in rows, aligned to top (in Chrome, they wrap at bottom)
+
+* make sure counts in group and column headers update when dragging and hiding (inc and dec appropriately)
+
+
+
+
+
2 deploy.sh
@@ -0,0 +1,2 @@
+rsync -rvz --delete src/webroot/ web@tracboard.clearspring.local:sites/tracboard.clearspring.local/r0001/
+
43 src/webroot/auth.inc.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright 2011 Clearspring Technologies
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Makes sure the page has these vars defined:
+ * - tracUsername
+ * - tracPassword
+ *
+ * If they aren't, this will issue an auth request to the user and attempt to get them.
+ */
+
+$currPage = $_SERVER['REQUEST_URI'];
+
+function mustAuth() {
+ echo '<p>Sorry, you need to authenticate with Trac to use this.</p>';
+ echo '<p><a href="' . $currPage . '">try again</a></p>';
+ exit;
+}
+
+// If we don't have any credentials, or if there's a cookie that tells us they are bad, re-prompt
+if (isset($_COOKIE['reauth']) || (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))) {
+ setcookie("reauth", "", 1);
+ header('WWW-Authenticate: Basic realm="Your Trac credentials?"');
+ header('HTTP/1.0 401 Unauthorized');
+ mustAuth();
+} else {
+ $tracUsername = $_SERVER['PHP_AUTH_USER'];
+ $tracPassword = $_SERVER['PHP_AUTH_PW'];
+}
72 src/webroot/config.inc.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Copyright 2011 Clearspring Technologies
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Specify configuration details for your team and Trac deployment
+ */
+
+/* The Trac milestone that your team uses to represent its backlog (see the README for workflow) */
+define("BACKLOG_MILESTONE", "Backlog");
+
+/* Your team's Trac server */
+define("TRAC_SERVER", "trac.clearspring.local");
+
+/* Your team's pipelines (see the README for workflow) */
+$PIPELINES = array(
+ "addthis",
+ "advertising",
+ "internal",
+ "clearspring",
+ "TBD"
+ );
+
+/* Your team (likely a subset of all Trac users) */
+$ASSIGNEES = array(
+ "abramsm",
+ "angel",
+ "arunr",
+ "cfr",
+ "christopher",
+ "densil",
+ "drew",
+ "foo",
+ "greg",
+ "hugh",
+ "jeff",
+ "jim",
+ "jithin",
+ "jorbin",
+ "justin",
+ "kacy",
+ "kori",
+ "mano",
+ "marty",
+ "matt",
+ "mkuruvila",
+ "myles",
+ "nishin",
+ "philip",
+ "protas",
+ "rahf",
+ "rich",
+ "sherin",
+ "stenoien",
+ "stephen",
+ "stewart",
+ "will",
+ "yuesong"
+ );
1,028 src/webroot/css/main.css
@@ -0,0 +1,1028 @@
+/**
+ * Copyright 2011 Clearspring Technologies
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* reset */
+body,h1,h2,h3,h4,h5,h6,ol,ul,li,p {
+margin: 0;
+padding: 0;
+}
+
+body {
+font: 12px "Lucida Sans Unicode", sans-serif;
+background-image: url('../images/graph.gif');
+}
+
+.clearer {
+clear: both;
+font-size: 1px;
+line-height: 1px;
+}
+
+h1,h2 {
+font-family: "Lucida Sans Unicode", sans-serif;
+font-style: normal;
+font-weight: normal;
+text-transform: normal;
+letter-spacing: -1px;
+line-height: 1.2em;
+}
+
+h1 {
+font-size: 22px;
+}
+
+h2 {
+font-size: 16px;
+color: #c0c0c0;
+border-bottom: 1px dotted #c0c0c0;
+margin-bottom: 5px;
+padding-bottom: 2px;
+}
+
+a {
+text-decoration: none;
+}
+
+a:hover {
+text-decoration: underline;
+}
+
+#header {
+padding-left: 10px;
+padding-right: 10px;
+padding-top: 5px;
+padding-bottom: 5px;
+margin: 0;
+/*border-bottom: 1px solid #222;*/
+background:#606060;
+color: #fff;
+}
+
+#header h1 {
+margin: 0;
+padding: 0;
+}
+
+#header h1 a {
+font-size: 18px;
+}
+
+#header .auth {
+font-size: 10px;
+float: right;
+}
+
+#header .auth a {
+font-size: 10px;
+}
+
+#header .navlinks a {
+font-size: 15px;
+margin: 0 2px;
+/*padding: 8px 5px 8px 0;*/
+color:#fff;
+}
+
+#header .navlinks a.nav-active {
+font-weight: bold;
+}
+
+#header .navlinks a.nav-active:hover {
+text-decoration: under;
+}
+
+#colorkey {
+margin-bottom: 0px;
+margin-top: 4px;
+margin-left: 0px;
+margin-right: 0px;
+padding-left: 0px;
+padding-right: 0px;
+padding-top: 3px;
+padding-bottom: 3px;
+}
+
+#plan-actionbar {
+margin-bottom: 5px;
+margin-top: 1px;
+margin-left: 0px;
+margin-right: 0px;
+padding-left: 10px;
+padding-right: 0px;
+padding-top: 5px;
+padding-bottom: 5px;
+}
+
+#filterset {
+margin: 0 0 10px 0;
+/* border-top: 1px dotted #222; */
+border-bottom: 1px dotted #222;
+background: #F0F0F0;
+padding: 3px 10px;
+}
+
+#filterset ul {
+list-style: none outside none;
+}
+
+#filterset ul li {
+float: left;
+margin-right: 15px;
+}
+
+.page-reload {
+opacity: 0.7;
+}
+
+.page-reload img {
+border: 0px;
+}
+
+#container {
+clear: both;
+padding-left: 0px;
+padding-right: 0px;
+padding-top: 0px;
+padding-bottom: 0px;
+margin-left: 1%;
+margin-right: 1%;
+margin-top: 10px;
+}
+
+.swimlane-container {
+position: relative;
+border: 1px solid #BDBDBD;
+margin-bottom: 10px;
+padding-bottom: 4px;
+border-radius: 3px 3px 3px 3px;
+min-width: 900px;
+}
+
+.swimlane-lanes {
+min-height: 10px;
+padding-left: 1px;
+padding-right: 1px;
+padding-top: 1px;
+padding-bottom: 1px;
+}
+
+.swimlane-bg-main {
+width: 100%;
+z-index: -1;
+margin-left: 10px;
+margin-right: 10px;
+margin-top: 0px;
+margin-bottom: 5px;
+padding-left: 10px;
+padding-right: 10px;
+padding-top: 3px;
+padding-bottom: 3px;
+}
+
+.swimlane-bg-storycolumn {
+float: left;
+width: 143px;
+min-height: 10px;
+}
+
+.swimlane-bg-ticketsarea {
+margin-left: 143px;
+min-height: 10px;
+}
+
+.swimlane-bg-ticketcolumn {
+min-height: 10px;
+min-width: 130px;
+width: 19%;
+float: left;
+/*border-left: 1px solid #333333;*/
+}
+
+.swimlane-bg-ticketcolumn-header {
+font-size: 11px;
+color: #303030;
+padding-left: 10px;
+font-weight: normal;
+}
+
+.swimlane-bg-storycolumn-header {
+font-size: 12px;
+color: #505050;
+font-weight: bold;
+}
+
+.swimlane-lanes-completed {
+}
+
+.swimlane-lanes-orphaned {
+}
+
+.storylane-row {
+overflow: auto;
+margin-left: 0px;
+margin-right: 0px;
+margin-top: 5px;
+margin-bottom: 5px;
+padding-left: 5px;
+padding-right: 5px;
+padding-top: 5px;
+padding-bottom: 5px;
+width: 98%;
+margin-left: auto;
+margin-right: auto;
+background: none repeat scroll 0 0 #EFEFEF;
+border-radius: 4px 4px 4px 4px;
+box-shadow: 0 0 1px #AAAAAA;
+border-bottom: 1.5px solid #AFAFAF;
+}
+
+.swimlane-lanes-completed .storylane-row {
+background: none repeat scroll 0 0 #ADADAD;
+}
+
+.swimlane-lanes-orphaned .storylane-row {
+background: none repeat scroll 0 0 #DEDEDE;
+}
+
+.swimlane-background .storylane-row {
+background: none;
+}
+
+.storylane-tickets {
+min-height: 100px;
+margin-left: 130px;
+}
+
+.storylane-storycell {
+float: left;
+margin: 4px 2px;
+min-height: 100px;
+width: 120px;
+padding: 0 0 0 0;
+padding-right: 5px;
+border-right: 2px solid #BDBDBD;
+}
+
+.storycell-body {
+padding: 0 0 0 0;
+margin: 0 0 0 0;
+/*height: 90%;*/
+}
+
+.storylane-ticketcell {
+float: left;
+padding: 0 0 0 0;
+margin: 4px 2px;
+min-height: 100px;
+min-width: 120px;
+width: 19%;
+border-right: 1px solid #DFDFDF;
+text-align: center;
+}
+
+.ticketcell-5wide {
+width: 19%;
+}
+
+.ticketcell-4wide {
+width: 24%;
+}
+
+.ticketcell-3wide {
+width: 32%;
+}
+
+.ticketcell-header {
+font-size: 10px;
+color: #505050;
+margin-bottom: 3px;
+padding-top: 3px;
+padding-left: 5px;
+padding-bottom: 2px;
+text-align: left;
+}
+
+.storycell-header {
+font-size: 10px;
+color: #505050;
+margin-bottom: 3px;
+padding-top: 3px;
+padding-left: 5px;
+padding-bottom: 2px;
+text-align: left;
+}
+
+.storycell-header-controls {
+float: right;
+}
+
+.ticketcell-header-controls {
+float: right;
+}
+
+.column {
+width: 24%;
+display: block;
+float: left;
+border: 1px solid #c0c0c0;
+padding: 0px;
+min-height: 500px;
+min-width: 230px;
+margin-right: 2px;
+margin-left: 2px;
+margin-bottom: 4px;
+font-size: 12px;
+background: #FFFFFF;
+text-align: center;
+-moz-box-shadow: 0 0 1px #aaa;
+-webkit-box-shadow: 0 0 1px #aaa;
+box-shadow: 0 0 1px #aaa;
+-moz-border-radius: 4px/4px;
+-webkit-border-radius: 4px/4px;
+border-radius: 4px/4px;
+}
+
+.priority-HI {
+/*
+border:1px solid #ff0000 !important;
+-moz-box-shadow: 0 0 3px #ff0000 !important;
+-webkit-box-shadow: 0 0 3px #ff0000 !important;
+box-shadow: 0 0 3px #ff0000 !important;
+*/
+}
+
+.column-body {
+padding: 0px;
+margin: 0px;
+margin-bottom: 5px;
+}
+
+.column-bg {
+background: #f0f0f0;
+}
+
+.column-controls {
+display: block;
+float: right;
+font-size: 10px;
+color: #555;
+padding-top: 3px;
+}
+
+.storycell-header .column-controls {
+float: left;
+}
+
+.column-expanded {
+width: 48%;
+}
+
+.triggers {
+cursor: pointer;
+}
+
+.column-control, .ui-icon {
+cursor: pointer;
+margin-right: 5px;
+width: 12px;
+height: 12px;
+display: block;
+float: left;
+background: url(../images/controls-sprite.png) no-repeat top left;
+opacity: .7;
+-moz-opacity: .7;
+-webkit-opacity: .7;
+}
+
+.column-control:hover {
+opacity: 1;
+-moz-opacity: 1;
+-webkit-opacity: 1;
+}
+
+.column-add-story {
+background-position: -32px 0px;
+}
+
+.column-expander-compact {
+background-position: -16px 0px;
+}
+
+.column-reload {
+background-position: 0px 0px;
+}
+
+.column-closer {
+background-position: -48px 0px;
+}
+
+.column-expander-compacted {
+}
+
+.column-expander-expanded {
+}
+
+.column-closer {
+}
+
+.column-header {
+font-size: 14px;
+color: #505050;
+background: #F0F0F0;
+border-bottom: 1px dotted #c0c0c0;
+margin-bottom: 3px;
+padding-top: 3px;
+padding-left: 5px;
+padding-bottom: 2px;
+text-align: left;
+-moz-border-radius: 4px 4px 0 0;
+-webkit-border-radius: 4px 4px 0 0;
+border-radius: 4px 4px 0 0;
+}
+
+.column-title {
+}
+
+.column-count {
+}
+
+/* Light yellow */
+.ticket-coloring-1, .ticket-coloring-dflt {
+background: #FCE780;
+}
+
+.ticket-coloring-alt-1, .ticket-coloring-alt-dflt {
+background: #FCD67B;
+}
+
+/* Light green */
+.ticket-coloring-2 {
+background: #CFFFAF;
+}
+
+.ticket-coloring-alt-2 {
+background: #66FF00;
+}
+
+/* Light pink */
+.ticket-coloring-3 {
+background: #FFDFFF;
+}
+
+.ticket-coloring-alt-3 {
+background: #CC99CC;
+}
+
+/* Light blue */
+.ticket-coloring-4 {
+background: #CFFFFF;
+}
+
+.ticket-coloring-alt-4 {
+background: #66FFFF;
+}
+
+/* Light orange */
+.ticket-coloring-5 {
+background: #EEEFB3;
+}
+
+.ticket-coloring-alt-5 {
+background: #CCCC00;
+}
+
+/* Light red */
+.ticket-coloring-6 {
+background: #EFC2C2;
+}
+
+.ticket-coloring-alt-6 {
+background: #DF6161;
+}
+
+/* Dark blue */
+.ticket-coloring-7 {
+background: #BFCAFF;
+}
+
+.ticket-coloring-alt-7 {
+background: #4F6EFF;
+}
+
+/* white/gray */
+.ticket-coloring-8 {
+background: #EEEEEE;
+}
+
+.ticket-coloring-alt-8 {
+background: #D0D0D0;
+}
+
+/* dark orange */
+.ticket-coloring-9 {
+background: #EF9B68;
+}
+
+.ticket-coloring-alt-9 {
+background: #d56d31;
+}
+
+/* dark green */
+.ticket-coloring-10 {
+background: #76CF67;
+}
+
+.ticket-coloring-alt-10 {
+background: #3B8F2C;
+}
+
+/* caramel */
+.ticket-coloring-11 {
+background: #EFCE95;
+}
+
+.ticket-coloring-alt-11 {
+background: #AF8B4C;
+}
+
+/* barbie variety */
+.ticket-coloring-12 {
+background: #FFBFF3;
+}
+
+.ticket-coloring-alt-12 {
+background: #FF8FE8;
+}
+
+/* grass */
+.ticket-coloring-13 {
+background: #D1EFD7;
+}
+
+.ticket-coloring-alt-13 {
+background: #B5CFBA;
+}
+
+/* black grapes */
+.ticket-coloring-14 {
+background: #BA8FFF;
+}
+
+.ticket-coloring-alt-14 {
+background: #8145DF;
+}
+
+/* flames */
+.ticket-coloring-15 {
+background: #DFC3C3;
+}
+
+.ticket-coloring-alt-15 {
+background: #AF7878;
+}
+
+/* ocean */
+.ticket-coloring-16 {
+background: #4FB0FF;
+}
+
+.ticket-coloring-alt-16 {
+background: #197DCF;
+}
+
+/* jellyfish */
+.ticket-coloring-17 {
+background: #0CCFB9;
+}
+
+.ticket-coloring-alt-17 {
+background: #009F8D;
+}
+
+/* sand */
+.ticket-coloring-18 {
+background: #FFF9DF;
+}
+
+.ticket-coloring-alt-18 {
+background: #DFD7B5;
+}
+
+/* dirty water */
+.ticket-coloring-19 {
+background: #B5DCDF;
+}
+
+.ticket-coloring-alt-19 {
+background: #26C3CF;
+}
+
+.toggleIcon {
+display: block;
+float: right;
+background: #ccc;
+width: 12px;
+background: url("../images/controls-sprite.png") no-repeat center transparent;
+background-position: -48px 50%;
+padding: 0 2px 0 2px;
+cursor: pointer;
+}
+
+#colorkey-container {
+margin-top: 8px;
+margin-bottom: 5px;
+margin-left: 3px;
+margin-right: 3px;
+padding-top: 0px;
+padding-bottom: 0px;
+padding-left: 0px;
+padding-right: 0px;
+}
+
+.colorkey-item {
+margin-left: 3px;
+margin-right: 3px;
+float: left;
+}
+
+.colorkey-item-inner {
+cursor: pointer;
+margin-top: 0px;
+margin-bottom: 0px;
+margin-left: 3px;
+margin-right: 3px;
+padding-top: 0px;
+padding-bottom: 0px;
+padding-left: 2px;
+padding-right: 2px;
+}
+
+.inactive {
+opacity: 0.8;
+-moz-opacity: 0.8;
+-webkit-opacity: 0.8;
+text-decoration: line-through;
+}
+
+/* Marker class to indicate something is draggable */
+.draggable {
+}
+
+.ticket {
+}
+
+.ticket-row {
+width: 100%;
+display: inline-table;
+margin-left: 0px;
+margin-right: 0px;
+margin-top: 1px;
+margin-bottom: 1px;
+border-top: 1px solid #AF9F57;
+border-bottom: 1px solid #AF9F57;
+padding: 0px;
+white-space: pre-wrap;
+white-space: -moz-pre-wrap !important;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+word-wrap: break-word;
+}
+
+.ticket-swimlane-head {
+font-size: 11px;
+}
+
+.ticket-card {
+width: 110px;
+display: inline-table;
+margin-left: 3px;
+margin-right: 3px;
+margin-top: 3px;
+margin-bottom: 3px;
+border: 1px solid #AF9F57;
+padding: 0px;
+-moz-box-shadow: 0 0 1px #aaa;
+-webkit-box-shadow: 0 0 1px #aaa;
+box-shadow: 0 0 1px #aaa;
+-moz-border-radius: 2px/2px;
+-webkit-border-radius: 2px/2px;
+border-radius: 2px/2px;
+white-space: pre-wrap;
+white-space: -moz-pre-wrap !important;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+word-wrap: break-word;
+}
+
+.ticket-highlighted {
+border-top: 4px solid #303030;
+border-bottom: 4px solid #303030;
+}
+
+.ticket a:link, .ticket a:visited {
+color: #000000;
+}
+
+.ticket-card .header {
+display: block;
+width: 100%;
+font-size: 9px;
+color: #000;
+border-bottom: 1px dotted gray;
+margin-top: 1px;
+margin-bottom: 0px;
+padding-left: 0px;
+padding-right: 0px;
+text-align: left;
+}
+
+.ticket-card .header .summary {
+margin-left: 1px;
+margin-right: 0px;
+margin-top: 0px;
+margin-bottom: 0px;
+}
+
+.ticket-card .header .priority-scope {
+margin-left: 0px;
+margin-right: 1px;
+margin-top: 0px;
+margin-bottom: 0px;
+float: right;
+}
+
+.ticket-card .body {
+margin-top: 1px;
+margin-bottom: 1px;
+margin-left: 3px;
+margin-right: 3px;
+text-align: left;
+width: 98px;
+font-size: 11px;
+}
+
+.ticket-card .footer {
+display: block;
+width: 100%;
+font-size: 9px;
+border-top: 1px dotted gray;
+margin-top: 0px;
+margin-bottom: 0px;
+text-align: center;
+}
+
+.ticket-card .footer .triggers {
+margin-left: 1px;
+margin-right: 2px;
+margin-top: 0px;
+margin-bottom: 0px;
+text-align: center;
+float: right;
+}
+
+.previewtrigger-outer a:hover {
+text-decoration: none;
+cursor: default;
+}
+
+.ticket .footer .assignee {
+margin-left: 2px;
+margin-right: 1px;
+margin-top: 0px;
+margin-bottom: 0px;
+padding: 0 0 0 0;
+text-align: left;
+float: left;
+cursor: default;
+}
+
+.ticket .priority-scope {
+cursor: default;
+}
+
+.ticket .summary {
+cursor: default;
+}
+
+.ticket-row .header {
+display: block;
+width: 100%;
+font-size: 9px;
+color: #404040;
+border-bottom: 1px dotted gray;
+margin-top: 0px;
+margin-bottom: 0px;
+padding-left: 0px;
+padding-right: 0px;
+text-align: left;
+}
+
+.ticket-row .header .summary {
+margin-left: 2px;
+margin-right: 0px;
+margin-top: 1px;
+margin-bottom: 0px;
+}
+
+.ticket-row .header .priority {
+margin-left: 0px;
+margin-right: 2px;
+margin-top: 0px;
+margin-bottom: 0px;
+float: right;
+}
+
+.ticket-row .body {
+margin-top: 3px;
+margin-bottom: 3px;
+margin-left: 3px;
+margin-right: 3px;
+text-align: left;
+}
+
+.ticket-row .footer {
+display: block;
+width: 100%;
+font-size: 9px;
+border-top: 1px dotted gray;
+margin-top: 0px;
+margin-bottom: 0px;
+text-align: right;
+}
+
+.ticket-row .footer .triggers {
+margin-left: 1px;
+margin-right: 2px;
+margin-top: 0px;
+margin-bottom: 0px;
+float: right;
+}
+
+.ui-draggable-dragging {
+cursor: move;
+border: 1px dashed #333;
+z-index: 9999;
+width: 100px;
+opacity: .7;
+}
+
+.ticket-middrag {
+opacity: .3;
+}
+
+.droptarget-middrag {
+background: #606060;
+}
+
+.ticket-preview {
+border: 1px solid #CCCCCC;
+padding: 5px;
+margin: 0px;
+background: #F6F6F6;
+}
+
+.ticket-preview-title {
+font-weight: bold;
+font-size: 1.3em;
+}
+
+.ticket-preview-changelog {
+font-weight: italic;
+font-size: 0.8em;
+}
+
+.ticket-preview-heading {
+font-weight: bold;
+font-size: 1em;
+}
+
+.group {
+border: none;
+margin-bottom: 2px;
+margin-top: 0px;
+margin-left: 0px;
+margin-right: 0px;
+padding: 0px;
+}
+
+.groupName {
+display: block;
+width: 100%;
+font-size: 10px;
+background: #F0F0F0;
+border-top: 1px dotted gray;
+border-bottom: 1px dotted gray;
+margin-top: 5px;
+margin-bottom: 5px;
+margin-left: 0px;
+margin-right: 0px;
+padding-left: 0px;
+padding-right: 0px;
+text-align: center;
+}
+
+.dialog-wrapper {
+display: block;
+position: absolute;
+z-index: 1;
+background: #fff;
+opacity: .5;
+top: 0;
+left: 0;
+overflow: hidden;
+display: none;
+}
+
+#add-ticket-dlg, #edit-ticket-dlg {
+background: rgb(200, 200, 200);
+-moz-border-radius: 5px/5px;
+-webkit-border-radius: 5px/5px;
+border-radius: 5px/5px;
+padding: 4px;
+z-index: 999;
+display: none;
+width: 405px;
+}
+
+#add-ticket-dlg, #edit-ticket-dlg {
+position: absolute;
+top: 135px;
+left: 20px;
+}
+#add-ticket-dlg, #edit-ticket-dlg {
+font-size: 12px;
+}
+
+#add-ticket-dlg .content-inner, #edit-ticket-dlg .content-inner {
+border: 1px solid #CCCCCC;
+padding: 10px;
+margin: 0px;
+background: #F6F6F6;
+}
+
+#add-ticket-dlg .content-outer, #edit-ticket-dlg .content-outer {
+padding: 5px;
+margin: 0px;
+background: #FFFFFF;
+}
+
+.content-inner label {
+display: block;
+margin: 0 6px 6px 0;
+float: left;
+}
+
+#ajax-loader {
+background: url(../images/ajax-loader.gif) center no-repeat;
+width: 150px;
+height: 50px;
+}
+
+.qtip {
+background: rgb(200, 200, 200);
+padding: 3px;
+-moz-border-radius: 5px 5px 5px 5px;
+border-radius: 5px 5px 5px 5px;
+}
+
+.qtip, .qtip-wrapper, .qtip-contentWrapper, .qtip-content {
+-moz-border-radius: 5px 5px 5px 5px !important;
+-webkit-border-radius: 5px 5px 5px 5px !important;
+border-radius: 5px 5px 5px 5px !important;
+}
+
+.qtip-content {
+padding: 5px;
+}
+
+#log {
+position: fixed;
+bottom: 0;
+right: 0;
+margin: 0 10px 10px 0;
+background: #fff;
+height: 60px;
+overflow: auto;
+width: 300px;
+opacity: .5;
+-webkit-opacity: .5;
+}
+
+#log h3 {
+font-size: 14px;
+font-weight: bold;
+margin-bottom: 6px;
+}
66 src/webroot/dialogs.inc.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Copyright 2011 Clearspring Technologies
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+?>
+
+<div class="dialog-wrapper"></div>
+<div id="add-ticket-dlg">
+ <div class="content-outer">
+ <div class="content-inner">
+ <label>Type: <? echo buildTypeChoiceMarkup() ?></label>
+ <label>Priority: <? echo buildPriorityChoiceMarkup() ?></label>
+ <label>To: <? echo buildOwnerChoiceMarkup() ?></label>
+ <div class="clearer"></div>
+ <label>Component: <? echo buildComponentChoiceMarkup($trac) ?></label>
+ <label>Scope: <? echo buildScopeChoiceMarkup() ?></label>
+ <div class="clearer"></div>
+ <label>Blocking: <input id="ticket-blocking" type="text" size="14"></input></label>
+ <label>Blocked by: <input id="ticket-blocked-by" type="text" size="14"></input></label>
+ <div class="clearer"></div>
+ <textarea id="ticket-summary" name="ticketSummary" class="ticket-summary" cols="35" rows="3" style="width: 100%;"></textarea><div class="clearer"></div>
+ <div style="text-align: right; padding-top: 10px;">
+ <input type="button" id="ticket-create-in-trac" name="openInTrac" value="Use Trac&apos;s Form..." />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" id="ticket-create" name="createTicket" value="Create Now" />&nbsp;&nbsp;<input type="button" id="ticket-cancel" name="ticketCancel" value="Cancel"/>
+ </div>
+ </div>
+ </div>
+</div>
+
+<div id="edit-ticket-dlg">
+ <div class="content-outer">
+ <div class="content-inner">
+ <div style="text-align: right; padding-bottom: 10px; border-bottom: 1px solid #ADADAD; width: 100%; margin-bottom: 10px;">
+ Quick Actions:
+ <span id="backlog-ticket-span" style="padding: 5px;"><input type="button" id="backlog-ticket" name="backlogTicket" value="Defer to Backlog"/></span>
+ <span id="complete-ticket-span"style="padding: 5px;"><input type="button" id="complete-ticket" name="completeTicket" value="Mark Completed" /></span>
+ <span id="reopen-ticket-span"style="padding: 5px;"><input type="button" id="reopen-ticket" name="reopenTicket" value="Reopen"/></span>
+ </div>
+ <label>Type: <? echo buildTypeChoiceMarkup() ?></label>
+ <label>Priority: <? echo buildPriorityChoiceMarkup() ?></label>
+ <label>To: <? echo buildOwnerChoiceMarkup() ?></label>
+ <div class="clearer"></div>
+ <label>Component: <? echo buildComponentChoiceMarkup($trac) ?></label>
+ <label>Scope: <? echo buildScopeChoiceMarkup() ?></label>
+ <div class="clearer"></div>
+ <label>Blocking: <input id="ticket-blocking" type="text" size="14"></input></label>
+ <label>Blocked by: <input id="ticket-blocked-by" type="text" size="14"></input></label>
+ <div class="clearer"></div>
+ <textarea name="summary" id="ticket-summary" cols="35" rows="3" style="width: 100%;"></textarea><div class="clearer"></div>
+ <div style="text-align: right; padding-top: 10px;">
+ <input type="button" id="ticket-edit" name="editTicket" value="Done"/>&nbsp;&nbsp;<input type="button" id="ticket-cancel" name="ticketCancel" value="Cancel" />
+ </div>
+ </div>
+ </div>
+</div>
BIN src/webroot/fancybox/blank.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_close.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_loading.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_nav_left.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_nav_right.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_e.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_n.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_ne.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_nw.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_s.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_se.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_sw.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_shadow_w.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_title_left.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_title_main.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_title_over.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancy_title_right.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancybox-x.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancybox-y.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN src/webroot/fancybox/fancybox.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
72 src/webroot/fancybox/jquery.easing-1.3.pack.js
@@ -0,0 +1,72 @@
+/*
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
+ *
+ * Uses the built in easing capabilities added In jQuery 1.1
+ * to offer multiple easing options
+ *
+ * TERMS OF USE - jQuery Easing
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2008 George McGinley Smith
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+*/
+
+// t: current time, b: begInnIng value, c: change In value, d: duration
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{}))
+
+/*
+ *
+ * TERMS OF USE - EASING EQUATIONS
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2001 Robert Penner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
363 src/webroot/fancybox/jquery.fancybox-1.3.1.css
@@ -0,0 +1,363 @@
+/*
+ * FancyBox - jQuery Plugin
+ * Simple and fancy lightbox alternative
+ *
+ * Examples and documentation at: http://fancybox.net
+ *
+ * Copyright (c) 2008 - 2010 Janis Skarnelis
+ *
+ * Version: 1.3.1 (05/03/2010)
+ * Requires: jQuery v1.3+
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+#fancybox-loading {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ height: 40px;
+ width: 40px;
+ margin-top: -20px;
+ margin-left: -20px;
+ cursor: pointer;
+ overflow: hidden;
+ z-index: 1104;
+ display: none;
+}
+
+* html #fancybox-loading { /* IE6 */
+ position: absolute;
+ margin-top: 0;
+}
+
+#fancybox-loading div {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 40px;
+ height: 480px;
+ background-image: url('fancybox.png');
+}
+
+#fancybox-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ background: #000;
+ z-index: 1100;
+ display: none;
+}
+
+* html #fancybox-overlay { /* IE6 */
+ position: absolute;
+ width: 100%;
+}
+
+#fancybox-tmp {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ overflow: auto;
+ display: none;
+}
+
+#fancybox-wrap {
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin: 0;
+ padding: 20px;
+ z-index: 1101;
+ display: none;
+}
+
+#fancybox-outer {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ background: #FFF;
+}
+
+#fancybox-inner {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: 0;
+ outline: none;
+ overflow: hidden;
+}
+
+#fancybox-hide-sel-frame {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: transparent;
+}
+
+#fancybox-close {
+ position: absolute;
+ top: -15px;
+ right: -15px;
+ width: 30px;
+ height: 30px;
+ background-image: url('fancybox.png');
+ background-position: -40px 0px;
+ cursor: pointer;
+ z-index: 1103;
+ display: none;
+}
+
+#fancybox_error {
+ color: #444;
+ font: normal 12px/20px Arial;
+ padding: 7px;
+ margin: 0;
+}
+
+#fancybox-content {
+ height: auto;
+ width: auto;
+ padding: 0;
+ margin: 0;
+}
+
+#fancybox-img {
+ width: 100%;
+ height: 100%;
+ padding: 0;
+ margin: 0;
+ border: none;
+ outline: none;
+ line-height: 0;
+ vertical-align: top;
+ -ms-interpolation-mode: bicubic;
+}
+
+#fancybox-frame {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ border: none;
+ display: block;
+}
+
+#fancybox-title {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ font-family: Arial;
+ font-size: 12px;
+ z-index: 1102;
+}
+
+.fancybox-title-inside {
+ padding: 10px 0;
+ text-align: center;
+ color: #333;
+}
+
+.fancybox-title-outside {
+ padding-top: 5px;
+ color: #FFF;
+ text-align: center;
+ font-weight: bold;
+}
+
+.fancybox-title-over {
+ color: #FFF;
+ text-align: left;
+}
+
+#fancybox-title-over {
+ padding: 10px;
+ background-image: url('fancy_title_over.png');
+ display: block;
+}
+
+#fancybox-title-wrap {
+ display: inline-block;
+}
+
+#fancybox-title-wrap span {
+ height: 32px;
+ float: left;
+}
+
+#fancybox-title-left {
+ padding-left: 15px;
+ background-image: url('fancybox.png');
+ background-position: -40px -90px;
+ background-repeat: no-repeat;
+}
+
+#fancybox-title-main {
+ font-weight: bold;
+ line-height: 29px;
+ background-image: url('fancybox-x.png');
+ background-position: 0px -40px;
+ color: #FFF;
+}
+
+#fancybox-title-right {
+ padding-left: 15px;
+ background-image: url('fancybox.png');
+ background-position: -55px -90px;
+ background-repeat: no-repeat;
+}
+
+#fancybox-left, #fancybox-right {
+ position: absolute;
+ bottom: 0px;
+ height: 100%;
+ width: 35%;
+ cursor: pointer;
+ outline: none;
+ background-image: url('blank.gif');
+ z-index: 1102;
+ display: none;
+}
+
+#fancybox-left {
+ left: 0px;
+}
+
+#fancybox-right {
+ right: 0px;
+}
+
+#fancybox-left-ico, #fancybox-right-ico {
+ position: absolute;
+ top: 50%;
+ left: -9999px;
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ cursor: pointer;
+ z-index: 1102;
+ display: block;
+}
+
+#fancybox-left-ico {
+ background-image: url('fancybox.png');
+ background-position: -40px -30px;
+}
+
+#fancybox-right-ico {
+ background-image: url('fancybox.png');
+ background-position: -40px -60px;
+}
+
+#fancybox-left:hover, #fancybox-right:hover {
+ visibility: visible; /* IE6 */
+}
+
+#fancybox-left:hover span {
+ left: 20px;
+}
+
+#fancybox-right:hover span {
+ left: auto;
+ right: 20px;
+}
+
+.fancy-bg {
+ position: absolute;
+ padding: 0;
+ margin: 0;
+ border: 0;
+ width: 20px;
+ height: 20px;
+ z-index: 1001;
+}
+
+#fancy-bg-n {
+ top: -20px;
+ left: 0;
+ width: 100%;
+ background-image: url('fancybox-x.png');
+}
+
+#fancy-bg-ne {
+ top: -20px;
+ right: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -162px;
+}
+
+#fancy-bg-e {
+ top: 0;
+ right: -20px;
+ height: 100%;
+ background-image: url('fancybox-y.png');
+ background-position: -20px 0px;
+}
+
+#fancy-bg-se {
+ bottom: -20px;
+ right: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -182px;
+}
+
+#fancy-bg-s {
+ bottom: -20px;
+ left: 0;
+ width: 100%;
+ background-image: url('fancybox-x.png');
+ background-position: 0px -20px;
+}
+
+#fancy-bg-sw {
+ bottom: -20px;
+ left: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -142px;
+}
+
+#fancy-bg-w {
+ top: 0;
+ left: -20px;
+ height: 100%;
+ background-image: url('fancybox-y.png');
+}
+
+#fancy-bg-nw {
+ top: -20px;
+ left: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -122px;
+}
+
+/* IE */
+
+#fancybox-loading.fancybox-ie div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
+
+.fancybox-ie #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
+.fancybox-ie #fancybox-title-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-title-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-title-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
+
+.fancybox-ie #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
+
+.fancybox-ie .fancy-bg { background: transparent !important; }
+
+.fancybox-ie #fancy-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
+.fancybox-ie #fancy-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
+.fancybox-ie #fancy-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
+.fancybox-ie #fancy-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
+.fancybox-ie #fancy-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
+.fancybox-ie #fancy-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
+.fancybox-ie #fancy-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
+.fancybox-ie #fancy-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
1,077 src/webroot/fancybox/jquery.fancybox-1.3.1.js
@@ -0,0 +1,1077 @@
+/*
+ * FancyBox - jQuery Plugin
+ * Simple and fancy lightbox alternative
+ *
+ * Examples and documentation at: http://fancybox.net
+ *
+ * Copyright (c) 2008 - 2010 Janis Skarnelis
+ *
+ * Version: 1.3.1 (05/03/2010)
+ * Requires: jQuery v1.3+
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+(function($) {
+
+ var tmp, loading, overlay, wrap, outer, inner, close, nav_left, nav_right,
+
+ selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
+
+ ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
+
+ loadingTimer, loadingFrame = 1,
+
+ start_pos, final_pos, busy = false, shadow = 20, fx = $.extend($('<div/>')[0], { prop: 0 }), titleh = 0,
+
+ isIE6 = !$.support.opacity && !window.XMLHttpRequest,
+
+ /*
+ * Private methods
+ */
+
+ fancybox_abort = function() {
+ loading.hide();
+
+ imgPreloader.onerror = imgPreloader.onload = null;
+
+ if (ajaxLoader) {
+ ajaxLoader.abort();
+ }
+
+ tmp.empty();
+ },
+
+ fancybox_error = function() {
+ $.fancybox('<p id="fancybox_error">The requested content cannot be loaded.<br />Please try again later.</p>', {
+ 'scrolling' : 'no',
+ 'padding' : 20,
+ 'transitionIn' : 'none',
+ 'transitionOut' : 'none'
+ });
+ },
+
+ fancybox_get_viewport = function() {
+ return [ $(window).width(), $(window).height(), $(document).scrollLeft(), $(document).scrollTop() ];
+ },
+
+ fancybox_get_zoom_to = function () {
+ var view = fancybox_get_viewport(),
+ to = {},
+
+ margin = currentOpts.margin,
+ resize = currentOpts.autoScale,
+
+ horizontal_space = (shadow + margin) * 2,
+ vertical_space = (shadow + margin) * 2,
+ double_padding = (currentOpts.padding * 2),
+
+ ratio;
+
+ if (currentOpts.width.toString().indexOf('%') > -1) {
+ to.width = ((view[0] * parseFloat(currentOpts.width)) / 100) - (shadow * 2) ;
+ resize = false;
+
+ } else {
+ to.width = currentOpts.width + double_padding;
+ }
+
+ if (currentOpts.height.toString().indexOf('%') > -1) {
+ to.height = ((view[1] * parseFloat(currentOpts.height)) / 100) - (shadow * 2);
+ resize = false;
+
+ } else {
+ to.height = currentOpts.height + double_padding;
+ }
+
+ if (resize && (to.width > (view[0] - horizontal_space) || to.height > (view[1] - vertical_space))) {
+ if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
+ horizontal_space += double_padding;
+ vertical_space += double_padding;
+
+ ratio = Math.min(Math.min( view[0] - horizontal_space, currentOpts.width) / currentOpts.width, Math.min( view[1] - vertical_space, currentOpts.height) / currentOpts.height);
+
+ to.width = Math.round(ratio * (to.width - double_padding)) + double_padding;
+ to.height = Math.round(ratio * (to.height - double_padding)) + double_padding;
+
+ } else {
+ to.width = Math.min(to.width, (view[0] - horizontal_space));
+ to.height = Math.min(to.height, (view[1] - vertical_space));
+ }
+ }
+
+ to.top = view[3] + ((view[1] - (to.height + (shadow * 2 ))) * 0.5);
+ to.left = view[2] + ((view[0] - (to.width + (shadow * 2 ))) * 0.5);
+
+ if (currentOpts.autoScale === false) {
+ to.top = Math.max(view[3] + margin, to.top);
+ to.left = Math.max(view[2] + margin, to.left);
+ }
+
+ return to;
+ },
+
+ fancybox_format_title = function(title) {
+ if (title && title.length) {
+ switch (currentOpts.titlePosition) {
+ case 'inside':
+ return title;
+ case 'over':
+ return '<span id="fancybox-title-over">' + title + '</span>';
+ default:
+ return '<span id="fancybox-title-wrap"><span id="fancybox-title-left"></span><span id="fancybox-title-main">' + title + '</span><span id="fancybox-title-right"></span></span>';
+ }
+ }
+
+ return false;
+ },
+
+ fancybox_process_title = function() {
+ var title = currentOpts.title,
+ width = final_pos.width - (currentOpts.padding * 2),
+ titlec = 'fancybox-title-' + currentOpts.titlePosition;
+
+ $('#fancybox-title').remove();
+
+ titleh = 0;
+
+ if (currentOpts.titleShow === false) {
+ return;
+ }
+
+ title = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(title, currentArray, currentIndex, currentOpts) : fancybox_format_title(title);
+
+ if (!title || title === '') {
+ return;
+ }
+
+ $('<div id="fancybox-title" class="' + titlec + '" />').css({
+ 'width' : width,
+ 'paddingLeft' : currentOpts.padding,
+ 'paddingRight' : currentOpts.padding
+ }).html(title).appendTo('body');
+
+ switch (currentOpts.titlePosition) {
+ case 'inside':
+ titleh = $("#fancybox-title").outerHeight(true) - currentOpts.padding;
+ final_pos.height += titleh;
+ break;
+
+ case 'over':