diff options
133 files changed, 6429 insertions, 0 deletions
@@ -0,0 +1,3 @@ +Jakub Steiner <jimmac@ximian.com> (original package, zenity-based frontend) +Tuomas Kuosmanen <tigert@tigert.com> (Nautilus script) +Larry Ewing <lewing@ximian.com> (gdk-pixbuf scaler) @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog.old b/ChangeLog.old new file mode 100644 index 0000000..4aa5c96 --- /dev/null +++ b/ChangeLog.old @@ -0,0 +1,411 @@ +2005-01-19 Jakub Steiner <jimmac@ximian.com> + + * index.php: check for comments dir writability. You can disable + comments per album by making comments not writable. + * inc/config.inc.php: add options to specify date segment to show + - ($yearsince, $yearto) + +2005-01-16 Jakub Steiner <jimmac@ximian.com> + + Should update more often, or drop this in favour of NEWS, hmm + + * convert/imgconv: added unsharp mask & saturation boost + thumbnails are stripped off EXIF tags. To do this for your + existing thumbnails, run `mogrify -strip thumbs/*jpg`. You'll gain + a lot of space if your exif header in the thumbnail includes a + thumbnail (DOH). Added a world writable flag to comments dir, + since it's required for the new feature - user comments. + + * convert/contrib: moved all the funky scripts there, please help + me maintain them, patches very welcome. + + * www/: + - Implemented user comments based on a patch by Christian + Troester. Had to add a simple form check since it was full of + spam the next day. Eek. + + - Added image access log (also needs comments dir writable) + + - Added some formatting to the PHP4 EXIF data + + - Cleaned up the default theme, now called dark. How original. + The Previous/Next thumbnails have access keys (Alt+P, Alt+N). + The previews are top aligned so they don't jump depending on + the height of the image. If you don't like any of these, feel + free to use the old stylesheet. + + - Moved the javascript to a separate file, wondered why IE + suddenly prefers not to render page, then used <script></script> + instead of <script /> + + - Made it XHTML 1.0 Strict compilant, Didn't want to get rid of + the -moz-* CSS extensions, but apart from that and the IE's + Filter it's CSS2 compilant too. Classic and Gorilla don't use + them and are compilant. + + - info.txt now accepts more date formats (You can even do + foolish things like "Today") + + * info.txt.sample: Sample info.txt file to add metainfo to your + album as described in the README. + +2004-09-28 Jakub Steiner <jimmac@ximian.com> + + * README: + * www/inc/header.inc.php: + * www/inc/www.class.inc.php: + * www/inc/config.inc.php: implement meta information loading (see README) + * www/inc/styles/default: new default style + + +2004-02-16 Jakub Steiner <jimmac@ximian.com> + + * www/inc/header.inc.php: + * www/inc/javascript.inc.php: + * www/inc/www.class.inc.php: + * www/inc/config.inc.php: make stylesheet selectable in the + document (javascript dependent). Set a cookie so it gets stored + across session. + + * www/inc/stylesheet/ie/ie.css: dummy (doesn't crash IE) + * www/inc/stylesheet/default/default.css: doesn't jump in + thumbnail view + * www/inc/stylesheet/gorilla/gorilla.css: implemented centering + of the image properly. First, I hacked up a gross javascript + kludge then figured a trivial solution with CSS. ehm + * www/index.php: solve tall images overlapping description by a + small inline style="" definition. This breaks CSS2 validity, + though? + +2004-01-10 Colin Marquardt <colin@marquardt-home.de> + + * convert/webgallery-zenity.pl: Quote $arg in system calls to + handle filenames with spaces. + + * www/index.php, + www/inc/header.inc.php, + www/inc/footer.inc.php, + www/inc/www.class.inc.php, + www/inc/funkce.inc.php: + Make it validate with W3C. + Make resulting HTML more readable. + +2003-12-15 Colin Marquardt <colin@marquardt-home.de> + + * convert/webgallery-zenity.pl: Set mtime of web-gallery directory + to the mtime of the first image with a good-looking time stamp. + Skip directories and non-image files. + Set autoflush for PROGRESS in a more readable way. + (make_dirs): Better error messages (show them to the user). + +2003-12-07 Colin Marquardt <colin@marquardt-home.de> + + * convert/webgallery-zenity.pl: Use gdk-pixbuf-convert if + available, otherwise convert. Make error messages more in spirit + of the HIG (zenity doesn't support Pango markup though?). Some + cleanup. + +2003-11-02 Jakub Steiner <jimmac@ximian.com> + + patch from Colin Marquardt <colin@marquardt-home.de>: + + * convert/gdk-pixbuf-convert.c: Add '-quality' switch. + + * convert/webgallery-zenity.pl: Use new '-quality' switch. + Make error messages nicer. + +2003-11-01 Jakub Steiner <jimmac@ximian.com> + + * www/index.php + * www/inc/exif.inc.php + * www/inc/funkce.inc.php + * www/inc/www.class.inc.php: stylesheet & $gallery_dir updates + + * www/inc/styles/gorilla/left.png + * www/inc/styles/gorilla/right.png + * www/inc/styles/gorilla/gorilla.css: stylesheet updates + + * www/inc/styles/default/bcg.png + * www/inc/styles/default/default.css + * www/inc/styles/default/left-16.png + * www/inc/styles/default/left.png + * www/inc/styles/default/logo-mini.png + * www/inc/styles/default/minus.png + * www/inc/styles/default/plus.png + * www/inc/styles/default/right-16.png + * www/inc/styles/default/right.png + * www/inc/styles/default/title.png + * www/inc/styles/default/zip.png: default stylesheet (WIP) + +2003-10-27 Jakub Steiner <jimmac@ximian.com> + + * www/inc/styles/gorilla/gorilla.css + * www/inc/styles/gorilla/minus.png + * www/inc/styles/gorilla/plus.png + * www/inc/styles/gorilla/title.png + * www/inc/header.inc.php + * www/index.php: more stylesheet work. _Some_ issues. Like + killing IE6 *ehm* ;) + + I'll concentrate on doing the original stylesheet first and let + my gorilla playground there for a while. + +2003-10-27 Jakub Steiner <jimmac@ximian.com> + + * www/index.php: + * www/inc/funkce.inc.php: applied a patch from Mark, fixing + issues with local relative paths + + Also fixed archive listing in the gallery thumbnail view. + +2003-10-27 Jakub Steiner <jimmac@ximian.com> + + * www/index.php: remove legacy style definitions + +2003-10-27 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/index.php: + (Re)Add year sorting when generating the index page. + +2003-10-26 Jakub Steiner <jimmac@ximian.com> + + * www/index.php + * www/inc/config.inc.php + * www/inc/footer.inc.php + * www/inc/funkce.inc.php + * www/inc/header.inc.php + * www/inc/www.class.inc.php: start breaking style and document + structure apart. There will be multiple styles to choose from, + including a plaintext one. The navigation and titlebar artwork + will be implemented in CSS eventually so no php-fu for this + will be required. + + Because of this, the plaintext config option will go, since + this will all be defined by using a specific stylesheet. + + Cleaned up the navigation() function. + + Header and footer are unfinished. + + * www/inc/stylesheet.inc.css: removed global stylesheet + * www/inc/styles/gorilla/gorilla.css: sample Gorilla stylesheet. + It will not be the default. It's just something to start with. + The existing artwork will go to the stylesheet directory. + +2003-10-26 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/index.php: + Change datefile format in expectance + of supporting sorting by date of the + month. + +2003-10-26 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/inc/config.inc.php: + Fix comment for $gallery_dir + +2003-10-26 Jakub Steiner <jimmac@ximian.com> + + * www/index.php: + * www/inc/www.class.inc.php: + * www/inc/funkce.inc.php: implement $gallery_dir correctly + +2003-10-26 Jakub Steiner <jimmac@ximian.com> + + * www/inc/config.inc.php: get rid of old gallery listing + + * www/inc/www.class.inc.php: rename the SortedDir() function to + be the constructor (easier-to-read code). + + * www/index.php: used spaces instead of tabs, the indentation + looked weird (3 spaces == 1 tab) + +2003-10-26 Jakub Steiner <jimmac@ximian.com> + + * www/inc/www.class.inc.php: + * www/index.php: remove old unused classes, start renaming + cz>en variables + + * TODO: prepare for the stylesheet stuff + +2003-10-26 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/inc/config.inc.php: + Remove the trailing / from $gallery_dir + + * www/index.php: + Implement using $gallery_dir preference + + * www/galleries: + Directory Added; new location for galleries + +2003-10-26 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/inc/config.inc.php: + Add gallery directory preference; still need + to make index.php use this preference. + +2003-10-25 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/index.php: + Fix include() and require() statements so that they work + on more php configurations. + +2003-10-25 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/inc/config.inc.php: + Turn off EXIF retreival by default + +2003-10-25 Colin Marquardt <colin@marquardt-home.de> + + * www/inc/config.inc.php: Set version to "0.7-cvs". + Make format more customization friendly. + + * www/inc/exif.inc.php: Quote filename given to exec in case there + are spaces in the path. + + * www/inc/config.inc.php: Add examples for jhead. + + * www/inc/exif.inc.php: Use trim() for comparisons, this makes it + work with jhead as EXIF extractor. + +2003-10-24 Colin Marquardt <colin@marquardt-home.de> + + * www/inc/www.class.inc.php: New class SortDir with SortedDir() + and Read() functions. (patch by Markus Ulbricht, thanks) + + * www/index.php: Use SortedDir() function. (patch by Markus Ulbricht) + +2003-10-24 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/index.php: + Fix navigation bar so it works with register_globals off + +2003-10-24 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/inc/header.inc.php: + Use Same header for all pages + + * www/index.php: + Add heirarchy navigation bar + +2003-10-24 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/index.php: + Fix new sorting algorithm to show newest galleries first + +2003-10-24 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/index.php: + Add the ability to use date.txt in each gallery to specify + the date for that gallery. + +2003-10-23 Mark Finlay <sisob@tuxfamilyDOTorg> + + * www/inc/footer.inc.php: + * www/inc/header.inc.php: + ADDED; Make the header image a link to the root of the site + instead of the Original Home Page. + + * www/index.php: + Modified to use new header and footer include files; + Added comments to sepporate different pages + +2003-10-22 Colin Marquardt <colin@marquardt-home.de> + + * www/index.php: + * www/inc/config.inc.php: + * www/inc/exif.inc.php: + * www/inc/funkce.inc.php: + * www/inc/www.class.inc.php: + + Make it work with register_globals = Off in php.ini. + +2003-10-22 Colin Marquardt <colin@marquardt-home.de> + + * convert/Makefile (uninstall): New target. + +2003-10-21 Colin Marquardt <colin@marquardt-home.de> + + * convert/gdk-pixbuf-convert.c: #include + <gdk-pixbuf/gdk-pixbuf.h>, not local file. + (main): Add meaningful usage text. + + * convert/Makefile: New file. + +2003-10-21 Mark Finlay <sisob@tuxfamilyDOTorg> + + Initial Checkin of Original to CVS + +2003-08-22 Jakub Steiner <jimmac@ximian.com> + + * convert/webgallery-zenity.pl: modification of Tuomas' script. + Uses gnome2's zenity for progress bars, no gtk-perl magic + * convert/gdk-pixbuf-convert.c: Larry Ewing's pixbuf-based + scaler. This thing is fast! + +2002-11-19 Jakub Steiner <jimmac@ximian.com> + + * convert/imgconv: + * convert/webgallery.pl: go back to ImageMagcik. It keeps EXIF + info while scaling, jpeg thumbnails + * www/index.php, www/inc/config.inc.php, www/inc/exif.inc.php: + - nicer index + - jpeg thumbnail support + - don't show EXIF mode switch when no EXIF info available + - fix portrait thumbnail scaling (should work fo most aspect + ratios now) + - previous/next image thumbnails (in image mode) + - Mozilla's link navigation (First, Previous, Next, Last, Top) + * www/left.png, right.png, top.png, plus.png, minus.png: new icons (from + gorilla) + * logo.xcf.bz2, www/logo.png, www/logo-mini.png: pretty logo + +2002-04-01 Jakub Steiner <jimmac@ximian.com> + + * convert/imgconv: + * convert/webgallery.pl: use netpbm instead of ImageMagick; + imgconv now uses the same subdir as webgallery.pl + + * www/index.php, www/inc/config.inc.php: portrait thumbnails are now the + same height as the landscape ones. Also incorporated suggestion from + Eduardo Prez <100018135@alumnos.uc3m.es> to support ISO 8601 + date format instead of the US format. + + And last but not least the imgconv has a commented-out line to + tar up or zip the HQ or MQ images. index.php links to those in + the thumbnail view if you have them uploaded. The minithumbnail + view also has a small floppy icon (zip.png) for the HQ version. + + +2001-10-27 Jakub Steiner <jimmac@ximian.com> + + * www/inc/config.inc.php: + * www/inc/exif.inc.php: php4 exif handling (untested); also added + config option to have fixed thumbnails (looks better on + portrait photos) + * convert/webgallery.pl: use nautilus metafile to get comments + +2001-10-16 Jakub Steiner <jimmac@ximian.com> + + * www/index.php: mini thumbnails + * www/inc/exif.inc.php: EXIF stuff (using Metacam), check + REQUIREMENTS + +2001-04-14 Jakub Steiner <jimmac@ximian.com> + + * REQUIREMENTS: Imagemagick, perl, gtk-perl, bash ;) + * convert/webgallery.pl: Tigert's Nautilus web-gallery + script for Nautilus. It simply rocks! + * *.png: I accidentaly left the gif images in the + distribution + * index.php: check for mq and hq dirs before creating a link + + +16.10.2000 - few configuration addditions + - dropped nasty GIF format for the navigation + (1bit mask is screwed under NN4, but its CSS support + is so crap, so that the default theme is unusable for it) + also imgconv is using png fro thumbnails (64 colors should + be enough for everyone (tm)) +15.10.2000 - first public release @@ -0,0 +1,76 @@ +Version 0.11 +------------ + + Convert script + -------------- + - New scripts from Boris de Laage <bdelaage@free.fr> with + more parameters, interactive mode, help and other goodies + - iPhoto->Original script (Stephen Gerstacker) + + Web script + ---------- + - Localisation (partial fr and cs locales). Language taken from + UA's accept language. Based on patch by some good soul I can't + seem to find the identity for. + - Security and polishing (Lennart Poettering and Stephan Poehlsen). + + +Version 0.10 +------------ + + Convert script + -------------- + + - I added unsharp mask & saturation boost. + - Thumbnails are stripped off EXIF tags. To do this for your existing + thumbnails, run `mogrify -strip thumbs/*jpg`. You'll gain a lot of space if + your exif header in the thumbnail includes a thumbnail (DOH). + - Added a world writable flag to comments dir, since it's required for the + new feature - user comments. + + * convert/contrib: moved all the funky scripts there, please help + me maintain them, patches very welcome. + + Web scripts + ----------- + + - Implemented user comments based on a patch by Christian + Troester. Had to add a simple form check since it was full of + spam the next day. Eek. + + - Added image access log (also needs comments dir writable) + + - Added some formatting to the PHP4 EXIF data + + - Cleaned up the default theme, now called dark. How original. + The Previous/Next thumbnails have access keys (Alt+P, Alt+N). + The previews are top aligned so they don't jump depending on + the height of the image. If you don't like any of these, feel + free to use the old stylesheet. + + - Moved the javascript to a separate file, wondered why IE + suddenly prefers not to render page, then used <script></script> + instead of <script /> + + - Made it XHTML 1.0 Strict compilant, Didn't want to get rid of + the -moz-* CSS extensions, but apart from that and the IE's + Filter it's CSS2 compilant too. Classic and Gorilla don't use + them and are compilant. + + - info.txt now accepts more date formats (You can even do + foolish things like "Today") + + * info.txt.sample: Sample info.txt file to add metainfo to your + album as described in the README. + + +version 0.9 +----------- +* New default stylesheet. Is pwetty and doesn't crash IE, yay! +* Optional per-gallery meta information. Finally you can now edit a fancy name + (utf8), add a short description, specify author or override dir date. + More on this in the README. +* Restricted Galleries (using info.txt). Note you need to make sure info.txt + isn't readable (imgconv generated an appropriate .htaccess) +* Customizable sorting within month. $sortinmonth defines whether you want + theitems sorted alphabetically or descending date. @@ -0,0 +1,55 @@ +This package includes two separate applications. In the www dir, there is the +PHP frontend app, the convert dir includes a simple (too simple i guess) script +that converts your wildcard of images into three subdirs in the current +directory. You can easily create and upload all images using: + + mkdir temp + cd $_ + /path/to/imgconv *.png *.gif *.{jpeg,jpg} + scp -rp ./web-gallery me@my_server:public_html/galleries/gallery_name + +and that's it. + +Tuomas Kuosmannen (tigert@tigert.com) has created a Nautilus script to create +"original" galleries (check the REQUIREMENTS file). Just copy the +convert/contrib/webgallery.pl file to ~/.gnome2/nautilus-scripts and make sure it's got +the execute bit set. + +# UPDATE + + Apart from using netpbm package (http://sourceforge.net/projects/netpbm/) for + scaling images, the new webgallery-zenity.pl script uses Larry Ewing's + gdk-pixbuf-based scaler. See REQUIREMENTS for details. + + Latest versions of the tools can be found at + http://jimmac.musichall.cz/original.php3 + +Various Notes +============= + +Gallery Dates +------------- +By default, original uses the directory timestamp to figure out the date of the +gallery. If I need to tweak it, i use `touch -d`. However some folks requested +a more convenient (is it?) way, using a "$gallery/date.txt" file. This +functionality has been replaced by the mew meta info file - info.txt: + + Info.txt format + --------------- + + The file is a simple text of "key|value" pairs on separate lines. The '|' + separator is used, since you may want to use '=' and ':' as you're free to + use html markup in the file. Make sure you use a utf8 capable editor. + + Some useful keys: + ----------------- + + date - can be used to override the timestamp of the directory + name - you can override the dir name if you prefer not using utf8 filenames + description - _short_ dexcription. Will be show in the index page. + author - Useful if the photographer isn't you. + + + +-- +Jakub 'Jimmac' Steiner <jimmac@linux.com> diff --git a/REQUIREMENTS b/REQUIREMENTS new file mode 100644 index 0000000..119c570 --- /dev/null +++ b/REQUIREMENTS @@ -0,0 +1,44 @@ +The web backend requires to have a PHP scripting engine running on +your web server. + +There are two scripts doing the scaling work. convert/imgconv is a plain +bash script using Imagemagick to generate thumbnails and scaling images. +You can get Imagemagick at http://www.imagemagick.org/. + +# UPDATES # + +* netpbm + ------ + You can use netpbm tools instead of ImageMagick for better speed. You can + grab netpbm at http://sourceforge.net/projects/netpbm/ but ususally your + distro ships with it already. My YDL distro has all the toos in netpbm-progs + package. + +* webgallery.pl + ------------- + + Tuomas Kuosmannen created a nautilus script that operates on selection + of images. It's way cooler than the bash script. Because the operation + can take a while, it has a nifty progressbar. The script itself is in + Perl, so you obviously need a functiuoning installation of Perl. For the + progressbar to work, you need gtk-perl bindings. You can get them at + ftp://ftp.gtk.org. Nautilus is a GUI file manager that rocks for photo + management. you can grab it at http://www.eazel.com. + +* webgallery-zenity.pl + -------------------- + + I hacked up Tuomas' script to use only gnome's zenity for the progress bars, + so there's no more gtk-perl dependency. Also this script uses Larry Ewing's + cool gdk-pixbuf scaler. It is an alternative to ImageMagick's convert + (sharing the basic commandline parameters) that discards EXIF information + (yet), but is 5 to 8 times as fast. You can really tell on large galleries. + You can find both at the convert/ directory. Instructions how to compile + gdk-pixbuf-convert.c are included in the file header. + + +If you wan't to have advanced EXIF information for your photos, make sure you +use a recent ImageMagick so that convert doesn't throw away this info when +scaling down. Also grab Metacam +(http://www.cheeseplant.org/~daniel/pages/metacam.html) and configure the path +to it in inc/config.inc.php. @@ -0,0 +1,6 @@ +- sqlite dependency + - page views + - rating + - comments + + - tags + search? diff --git a/convert/contrib/Original_Script.scpt b/convert/contrib/Original_Script.scpt Binary files differnew file mode 100644 index 0000000..5ff3bd5 --- /dev/null +++ b/convert/contrib/Original_Script.scpt diff --git a/convert/contrib/imgconv.rb b/convert/contrib/imgconv.rb new file mode 100644 index 0000000..676ef42 --- /dev/null +++ b/convert/contrib/imgconv.rb @@ -0,0 +1,94 @@ +#!/usr/bin/ruby + +require 'fileutils' + +if ARGV.size < 2 + puts "Usage: #$0 source_images gallery_name" + exit 1 +end + +class Gallery + + CONF = {} + CONF[:thumbs] = { :target => 'thumbs', :geom => '120x120', :quality => '60' } + CONF[:lq] = { :target => 'lq', :geom => '640x480', :quality => '90' } + CONF[:mq] = { :target => 'mq', :geom => '800x600', :quality => '80' } + + def initialize(source_dir = '.', gallery = 'web-gallery') + @source_dir = source_dir + @gallery = gallery + end + + def setup_dirs + %w(thumbs lq mq hq zip comments).each do |dir| + target = File.join(@gallery, dir) + + if File.exists? target + warn "Skipping creation of, #{target}, already exists." + next + end + + FileUtils.mkdir_p target + end + end + + def setup_access + ht = File.join(@gallery, ".htaccess") + + open(ht, 'w') do |fp| + fp.puts "<Files info.txt>" + fp.puts " deny from all" + fp.puts "</Files>" + end + end + + def create_comment(num) + comment_file = File.join(@gallery, 'comments', "#{num}.txt") + + open(comment_file, 'w') do |fp| + fp.puts "<span>image #{num}</span>" + end + end + + def convert_image(conf, src, num) + target = File.join(@gallery, conf[:target], "img-#{num}.jpg") + + cmd = "convert -geometry #{conf[:geom]} -unsharp 1x5 " + cmd += "-quality #{conf[:quality]} #{src} #{target}" + + system cmd + end + + def build_zip_files + puts "Building zip files." + system("zip -R #@gallery/zip/mq.zip #@gallery/mq/*.jpg"); + system("zip -R #@gallery/zip/hq.zip #@gallery/hq/*.jpg"); + end + + def create + setup_dirs + setup_access + + num = 1 + + Dir["#@source_dir/*.jpg"].sort.each do |src| + puts "Working on: #{src}" + + FileUtils.cp(src, File.join(@gallery, 'hq', "img-#{num}.jpg")) + + convert_image(CONF[:thumbs], src, num) + convert_image(CONF[:lq], src, num) + convert_image(CONF[:mq], src, num) + + create_comment(num) + + num += 1 + end + + build_zip_files + end +end + +gal = Gallery.new ARGV[0], ARGV[1] +gal.create + diff --git a/convert/contrib/web-gallery b/convert/contrib/web-gallery new file mode 100644 index 0000000..952f8fe --- /dev/null +++ b/convert/contrib/web-gallery @@ -0,0 +1,105 @@ +#!/bin/bash + +# Nautilus script to generate image galleries for use with original +# uses Gnome's zenity for user dialogs +# uses ImageMagick's convert +# (c) 2005 boris de laage <bdelaage@free.fr> +# based on imgconv bu Jakub Steiner + +set -e + +name=`basename $0` + +# convert options +convertor=`which convert` +extra_ops="-strip" + +#default options +dir=./web-gallery + +files=$(echo $@ | sed 's/ /\n/g' | sort) +numfiles=$# + +if [ -z $convertor ]; then + zenity --title $name --error --error-text "convert not found !" + exit 1 +fi + +if [ $numfiles == 0 ]; then + zenity --title $name --error --error-text "No input files !" + exit 1 +fi + +#progressbar stuff +steps=5 +increment=`expr 100 / \( $numfiles \* $steps \) ` +progress=0 + + +mkdir -p $dir/thumbs +mkdir -p $dir/lq +mkdir -p $dir/mq +mkdir -p $dir/hq +mkdir -p $dir/zip +mkdir -p $dir/comments +chmod o+w $dir/comments + +echo "<Files info.txt>" > $dir/.htaccess +echo " deny from all" >> $dir/.htaccess +echo "</Files>" >> $dir/.htaccess + + +i=1 + +for imagefile in $files + do + process="converting $imagefile" + + # Thumbnail + echo "#$process : thumbnail" + $convertor -geometry 120x120 -modulate 100,140,100 -unsharp 1x20 \ + -quality 60 $extra_opts $imagefile $dir/thumbs/img-$i.jpg + progress=`expr $progress + $increment` + echo $progress + + # LQ + echo "#$process : lq" + $convertor -geometry 640x480 -modulate 100,130,100 -unsharp 1x5 \ + -quality 90 $imagefile $dir/lq/img-$i.jpg + progress=`expr $progress + $increment` + echo $progress + + #MQ + echo "#$process : mq" + $convertor -geometry 1024x768 -modulate 100,130,100 -unsharp 1x5 \ + -quality 80 $imagefile $dir/mq/img-$i.jpg + progress=`expr $progress + $increment` + echo $progress + + #HQ + echo "#$process : hq" + cp $imagefile $dir/hq/img-$i.jpg + progress=`expr $progress + $increment` + echo $progress + + #Comments + echo "#$process : comments" + # template for comment + echo "<span>Photo $i</span>
" > $dir/comments/$i.txt + progress=`expr $progress + $increment` + echo $progress + + i=`expr $i + 1` + +done | zenity --progress --title="Scaling images, please wait..." --auto-close + + +( + echo "1" + echo "#Making archives" + zip -R $dir/zip/mq.zip web-gallery/mq/*.jpg + zip -R $dir/zip/hq.zip web-gallery/hq/*.jpg + echo "100" +) | zenity --progress --pulsate --auto-close --title="Zipping images" + +zenity --title $name --info --info-text "Your <b>O.R.I.G.I.N.A.L</b> gallery is ready." diff --git a/convert/contrib/webgallery-zenity.pl b/convert/contrib/webgallery-zenity.pl new file mode 100755 index 0000000..7f06826 --- /dev/null +++ b/convert/contrib/webgallery-zenity.pl @@ -0,0 +1,160 @@ +#!/usr/bin/perl -w + +# little script to generate image galleries for use with original PHP backend +# uses Gnome's zenity for user dialogs +# uses gdk-pixbuf-convert if available, otherwise convert (from ImageMagick) +# (c) 2003-2004 Jakub 'jimmac' Steiner, (c) 2003-2004 Colin Marquardt +# based on webgallery.pl by Tuomas Kuosmanen + +use strict; +use warnings; +use FileHandle; + +my $num_of_args = scalar @ARGV; + +if (!@ARGV or ($num_of_args == 0)) { + exec("zenity --error --title \"\" --text \"No args\n\nYou have to select images to work on.\""); + exit; +} + +my $GdkPixbufConvert = "gdk-pixbuf-convert"; +my $Convert = "convert"; +my $dir = "web-gallery"; + + +# try to find a scaler program +my $scaler; +$scaler = `which $GdkPixbufConvert`; +if ($scaler eq "") { + $scaler = `which $Convert`; +} +if ($scaler eq "") { + exec("zenity --error --title \"\" --text \"No scaling program\n\nYou need to have '$GdkPixbufConvert' or '$Convert' available.\""); + exit; +} +chomp $scaler; + +my @args = sort(@ARGV); +my $NumOfIncrements = 5; # 5 increments per file (as we are + # expecting to create 5 files for each + # image) +my $increment = 100 / ($num_of_args * $NumOfIncrements); +my $progress=0; +my $reply=""; + +sub make_dirs { + my $ErrMsg; + unless (-d "$dir") { + mkdir("./$dir") or + $ErrMsg .= "Could not create './$dir'!\n"; + } + unless (-d "$dir/thumbs") { + mkdir("./$dir/thumbs") or + $ErrMsg .= "Could not create './$dir/thumbs'!\n"; + } + unless (-d "$dir/lq") { + mkdir("./$dir/lq") or + $ErrMsg .= "Could not create './$dir/lq'!\n"; + } + unless (-d "$dir/mq") { + mkdir("./$dir/mq") or + $ErrMsg .= "Could not create './$dir/mq'!\n"; + } + unless (-d "$dir/hq") { + mkdir("./$dir/hq") or + $ErrMsg .= "Could not create './$dir/hq'!\n"; + } + unless (-d "$dir/comments") { + mkdir("./$dir/comments") or + $ErrMsg .= "Could not create './$dir/comments'!\n"; + } + unless (-d "$dir/zip") { + mkdir("./$dir/zip") or + $ErrMsg .= "Could not create './$dir/zip'!\n"; + } + if ($ErrMsg ne "") { + exec("zenity --error --title \"Giving Up\" --text \"Fatal Error\n\n$ErrMsg\""); + die "Errors occurred:\n$ErrMsg"; + } +} +make_dirs(); + +# ------------------------------------------------------------------------ +open(PROGRESS,"| zenity --progress --auto-close --title=\"\" \\ + --text=\"Scaling images, please wait\""); +PROGRESS->autoflush(1); + +my $i=1; +my $SetDirDate = 0; +foreach my $arg (@args) { + if (-d $arg) { # argument is a directory, skip it + $progress += ($increment * $NumOfIncrements); + print PROGRESS "$progress\n"; + next; + } + my $FileType = `file "$arg"`; + unless ($FileType =~ /image data/i) { # check for valid file type + # maybe check for JPEG and PNG explicitly? + #print $FileType; + $progress += ($increment * $NumOfIncrements); + print PROGRESS "$progress\n"; + next; + } + if ($SetDirDate == 0) { # we are looking at the first image + $SetDirDate = (stat $arg)[9]; # get mtime + if ($SetDirDate > 0) { + # (can also return -1 if strange mtime, don't use this + # time stamp then) + # set mtime of gallery directory to the one of the first + # image file: + $reply .= `touch -r "$arg" $dir`; + print "Setting mtime of $dir to $SetDirDate\n"; + } else { + # give it another try the next time around: + $SetDirDate = 0; + } + } + # thumbnails + $reply .= `$scaler -geometry 120x120 -quality 60 "$arg" $dir/thumbs/img-$i\.jpg 2>&1`; + $progress += $increment; + print PROGRESS "$progress\n"; + # LQ size + $reply .= `$scaler -geometry 640x480 -quality 75 "$arg" $dir/lq/img-$i\.jpg 2>&1`; + $progress += $increment; + print PROGRESS "$progress\n"; + # MQ size + $reply .= `$scaler -geometry 800x600 -quality 75 "$arg" $dir/mq/img-$i\.jpg 2>&1`; + $progress += $increment; + print PROGRESS "$progress\n"; + # HQ size (just copy the original) + $reply .= `cp "$arg" $dir/hq/img-$i\.jpg 2>&1`; + $progress += $increment; + print PROGRESS "$progress\n"; + # comment + open(COMM, ">$dir/comments/$i\.txt"); + print(COMM "<span>image $i</span>\n"); + close(COMM); + $progress += $increment; + print PROGRESS "$progress\n"; + $i++; + + # an error occurred: + if ($reply ne "") { + print PROGRESS "100\n"; + close(PROGRESS); + exec("zenity --error --title \"\" --text \"Fatal Error\n\n$reply\""); + die("Error while scaling"); + } +} +print PROGRESS "100\n"; +close(PROGRESS); + +# ------------------------------------------------------------------------ +open(PROGRESS, "| zenity --progress --pulsate --auto-close \\ +--title \"\" --text \"Zipping images\""); +PROGRESS->autoflush(1); +print PROGRESS "1"; +system("zip -R $dir/zip/mq.zip $dir/mq/*.jpg"); +system("zip -R $dir/zip/hq.zip $dir/hq/*.jpg"); +print PROGRESS "100\n"; +close(PROGRESS); diff --git a/convert/contrib/webgallery.pl b/convert/contrib/webgallery.pl new file mode 100755 index 0000000..d8a7ce7 --- /dev/null +++ b/convert/contrib/webgallery.pl @@ -0,0 +1,154 @@ +#!/usr/bin/perl -w +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# # +# Web Gallery script for Nautilus - Depends on "original" web backend # +# for displaying the gallery. # +# # +# Written in perl because I suck more with sh scripting. # +# Also needs gnome-utils for gdialog. # +# # +# Hacked together by Tuomas Kuosmanen <tigert@ximian.com> # +# Tweaked to use NetPBM by Jakub Steiner <jimmac@ximian.com> # +# Released under the GPL license. # +# # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +die "No files to convert" unless @ARGV; + +use Gtk; +init Gtk; + +@files = sort(@ARGV); + +my $dir = "web-gallery"; + +sub make_dirs { + + unless (-d "$dir") { + mkdir("./$dir") or die "Aargh.\n"; + } + unless (-d "$dir/thumbs") { + mkdir("./$dir/thumbs") or die "Aargh.\n"; + } + unless (-d "$dir/lq") { + mkdir("./$dir/lq") or die "Aargh.\n"; + } + unless (-d "$dir/mq") { + mkdir("./$dir/mq") or die "Aargh.\n"; + } + unless (-d "$dir/hq") { + mkdir("./$dir/hq") or die "Aargh.\n"; + } + unless (-d "$dir/comments") { + mkdir("./$dir/comments") or die "Aargh.\n"; + } +} + +sub make_gallery_fake { + my $foo = shift; + print ("PARAM: $foo\n"); + sleep 1; +} + + +$w = new Gtk::Window; +$label = new Gtk::Label(' Web Gallery generation in progress... '); +$pbar = new Gtk::ProgressBar; +$vb = new Gtk::VBox(0, 0); +$b = new Gtk::Button('Cancel'); +$w->add($vb); +$vb->add($label); +$vb->add($pbar); +$vb->add($b); + +$b->signal_connect('clicked', sub {Gtk->exit(0)}); +$w->signal_connect('destroy', sub {Gtk->exit(0)}); + +$w->show_all(); +$i = 0; +$pbar->update($i); + +@files = sort(@ARGV); +$num_of_files = scalar @files; +$increment = 1 / ( 5 * $num_of_files ); +$i = 1; +$progress = 0; + +make_dirs(); +#read nautilus metafile if available +open(METAXML, "./.nautilus-metafile.xml") or print("no metafile"); +@meta_xml = <METAXML>; +close(METAXML); + + +foreach $file (@files) { + + $pbar->update($progress); + $pbar->set_show_text(1); + $pbar->set_format_string("$i of $num_of_files"); + $progress += $increment; + while (Gtk->events_pending) { + Gtk->main_iteration; + } + + # do the stuff, collect error messages to a variable. + #$reply=`convert -geometry 120x120 -colors 64 -dither $file $dir/thumbs/img-$i\.png 2>&1`; + $reply=`convert -geometry 120x120 $file $dir/thumbs/img-$i\.jpg 2>&1`; + #$reply =`jpegtopnm $file | pnmscale -xysize 120 120 | ppmquant -floyd 16 | pnmtopng -interlace -compression 9 > $dir/thumbs/img-$i\.png 2>&1`; + + $pbar->update($progress); + $progress += $increment; + while (Gtk->events_pending) { + Gtk->main_iteration; + } + + $reply = $reply . `convert -geometry 640x640 $file $dir/lq/img-$i.jpg 2>&1`; + #$reply = $reply . `jpegtopnm $file | pnmscale -xysize 640 640 | ppmtojpeg --quality 80 --progressive > $dir/lq/img-$i.jpg 2>&1`; + + $pbar->update($progress); + $progress += $increment; + while (Gtk->events_pending) { + Gtk->main_iteration; + } + + $reply = $reply . `convert -geometry 800x800 $file $dir/mq/img-$i.jpg 2>&1`; + #$reply = $reply . `jpegtopnm $file | pnmscale -xysize 800 800 | ppmtojpeg --quality 80 --progressive > $dir/mq/img-$i.jpg 2>&1`; + + $pbar->update($progress); + $progress += $increment; + while (Gtk->events_pending) { + Gtk->main_iteration; + } + + $reply = $reply . `cp $file $dir/hq/img-$i.jpg 2>&1`; + + $pbar->update($progress); + $progress += $increment; + while (Gtk->events_pending) { + Gtk->main_iteration; + } + + # comment + open (COMM, ">$dir/comments/$i\.txt"); + print(COMM "<span>image $i: </span>\n"); + #check for comments in the metafile + #maybe using a proper XML parser would make sense in future + foreach $radek (@meta_xml) { + chomp($radek); + if ($radek =~ m/.*name="([^"]*)".*annotation="([^"]*).*"/) { + if ($1 eq $file) { + print(COMM "<span>$2</span>\n"); + } + } + } + close(COMM); + + $i++; + + # print possible error messages + if ($reply ne "") { + print("There was an error message: $reply\n"); + } +} + diff --git a/convert/gdk-pixbuf-convert/Makefile b/convert/gdk-pixbuf-convert/Makefile new file mode 100644 index 0000000..e350747 --- /dev/null +++ b/convert/gdk-pixbuf-convert/Makefile @@ -0,0 +1,44 @@ +PREFIX = /usr/local + +GTKCFLAGS = `pkg-config --cflags gtk+-2.0` +GTKLDFLAGS += `pkg-config --libs gtk+-2.0` +GDKPIXBUFCFLAGS = `pkg-config --cflags gdk-pixbuf-2.0` +GDKPIXBUFLDFLAGS += `pkg-config --libs gdk-pixbuf-2.0` + +CPPFLAGS = $(GTKCFLAGS) -D_GNU_SOURCE +ifeq ($(DEBUG),yes) +CFLAGS += -O2 -g +LDFLAGS = -g #-lefence +else +CFLAGS += -Os -fomit-frame-pointer +endif +CFLAGS += -Wall +CPPFLAGS += -DPACKAGE=\"$(PACKAGE)\" -DPREFIX=\"$(PREFIX)\" -DPACKAGE_LOCALE_DIR=\"$(PREFIX)/share/locale\" +CFLAGS += -MD + +MEMBERS = gdk-pixbuf-convert +LIB_MEMBERS = + +OBJS = $(patsubst %,%.o,$(MEMBERS)) +SOURCES = $(patsubst %,%.c,$(MEMBERS) $(LIB_MEMBERS)) +LIB_OBJS = $(patsubst %,%.o,$(LIB_MEMBERS)) +LIB_SOURCES = $(patsubst %,%.c,$(LIB_MEMBERS)) + +DEPS = $(patsubst %,%.d,$(MEMBERS) $(LIB_MEMBERS)) + + +all: gdk-pixbuf-convert + +gdk-pixbuf-convert: $(OBJS) + $(CC) -o $@ $^ $(GDKPIXBUFCFLAGS) $(GDKPIXBUFLDFLAGS) $(LDFLAGS) -L. + +clean: + rm -f $(MEMBERS) $(OBJS) $(DEPS) + +install: all + mkdir -p $(PREFIX)/bin + install -s $(MEMBERS) $(PREFIX)/bin/ + +uninstall: + $(RM) $(PREFIX)/bin/$(MEMBERS) + diff --git a/convert/gdk-pixbuf-convert/gdk-pixbuf-convert.c b/convert/gdk-pixbuf-convert/gdk-pixbuf-convert.c new file mode 100644 index 0000000..2bdbeca --- /dev/null +++ b/convert/gdk-pixbuf-convert/gdk-pixbuf-convert.c @@ -0,0 +1,226 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ + +/* + * gdk-pixbuf-convert.c gdk pixbuf replacement for convert geometry commands + * + * Copyright (C) 2003 Ximian Inc. + * + * Author: Larry Ewing <lewing@ximian.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +/* + * build with + * gcc `pkg-config --cflags gdk-pixbuf-2.0` gdk-pixbuf-convert.c -o gdk-pixbuf-convert `pkg-config --libs gdk-pixbuf-2.0` + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <glib-object.h> + +#define d(x) x + +typedef enum { + SAVE_JPG, + SAVE_PNG +} OutputType; + +GdkPixbuf * +scale (GdkPixbuf *src, char *geom) +{ + GdkPixbuf *dest = NULL; + char *s, *e; + guint w; + guint h; + guint src_w, dest_w; + guint src_h, dest_h; + double scale_w = 1.0; + double scale_h = 1.0; + gboolean force = FALSE; + + src_w = gdk_pixbuf_get_width (src); + src_h = gdk_pixbuf_get_height (src); + + /* d(printf ("%d %d ", src_w, src_h);) */ + + s = e = geom; + + w = strtol (s, &e, 10); + /* d(printf ("%d ", w);) */ + if (e != s) { + scale_w = w / (double)src_w; + } else { + w = 100; + } + + + if (*e == 'x') + e++; + else + return NULL; + + s = e; + + h = strtol (s, &e, 10); + /* d(printf ("%d ", h);) */ + if (e != s) { + scale_h = h / (double)src_h; + } else { + h = 100; + } + + if (*e == '%') { + scale_h = h / 100.0; + scale_w = w / 100.0; + e++; + } + + /* d(printf ("%f %f\n", scale_w, scale_h);) */ + + while (*e) { + switch (*e) { + case '!': + force = TRUE; + break; + case '>': + if (scale_w >= 1.0 && scale_h >= 1.0) + scale_w = scale_h = 1.0; + break; + case '<': + if (scale_w < 1.0 || scale_h <= 1.0) + scale_w = scale_h = 1.0; + break; + default: + break; + } + e++; + } + + if (!force) { + /* Keep aspect ratio */ + scale_w = scale_h = MIN (scale_h, scale_w); + } + + dest_w = (int)(src_w * scale_w + 0.5); + dest_h = (int)(src_h * scale_h + 0.5); + + /* printf ("%dx%d\n", dest_w, dest_h); */ + + /* dest = gdk_pixbuf_scale_simple (src, dest_w, dest_h, GDK_INTERP_BILINEAR);*/ + dest = gdk_pixbuf_scale_simple (src, dest_w, dest_h, GDK_INTERP_HYPER); + + return dest; +} + +OutputType +get_filetype (char *filename) +{ + gint len = strlen (filename); + + if (len > 4 && g_ascii_strncasecmp (filename + len - 4, ".png", 4)== 0) + return SAVE_PNG; + else + return SAVE_JPG; +} + +int +convert (char *geom, char *quality, char *sfile, char *dfile) +{ + GdkPixbuf *src; + GdkPixbuf *dest; + GError *error = NULL; + + src = gdk_pixbuf_new_from_file (sfile, &error); + + if (!src) { + fprintf (stderr, "Unable to open input file"); + return 1; + } + + if (geom) { + dest = scale (src, geom); + } else { + dest = src; + g_object_ref (dest); + } + + if (!dest) + return 1; + + unlink (dfile); + if (get_filetype (dfile) == SAVE_JPG) + gdk_pixbuf_save (dest, dfile, "jpeg", &error, + "quality", quality, NULL); + else + gdk_pixbuf_save (dest, dfile, "png", &error, NULL); + + g_object_unref (src); + g_object_unref (dest); + + if (error) { + return 1; + } + + return 0; +} + +int +main (int argc, char **argv) +{ + char *dfile; + char *sfile; + char *geom = NULL; + char *quality = "100"; + + g_type_init (); + + if (argc > 4) { + int i = 1; + if (!g_ascii_strcasecmp (argv[i], "-geometry")) { + i++; + geom = argv[i++]; + if (argc < 5) + goto usage; + } + if (!g_ascii_strcasecmp (argv[i], "-quality")) { + i++; + quality = argv[i++]; + if (argc < 7) + goto usage; + if ((atoi(quality) < 0) || (atoi(quality) > 100)) { + g_print ("Value for '-quality' must be in range 0-100!\n"); + goto usage; + } + } + sfile = argv[i++]; + dfile = argv[i++]; + } else { + goto usage; + } + + return convert (geom, quality, sfile, dfile); + + usage: + g_print ("Usage:\n"); + g_print (" gdk-pixbuf-convert -geometry <X>x<Y> [-quality <0-100>] <input> <output>\n"); + g_print ("\n"); + g_print ("Example:\n"); + g_print (" gdk-pixbuf-convert -geometry 120x120 -quality 75 foo.jpg bar.jpg\n"); + exit (2); +} diff --git a/convert/imgconv b/convert/imgconv new file mode 100755 index 0000000..854b664 --- /dev/null +++ b/convert/imgconv @@ -0,0 +1,238 @@ +#!/bin/bash + +# little script to generate image galleries for use with original. +# uses imagemagick's convert +# (c) 2005 boris de laage <bdelaage@free.fr> +# based on imgconv by Jakub Steiner +# +#The 'help' section sucks, as my english does. + + +#default options +dir=./web-gallery +zip=0 +mq=0 +hq=0 +interactive=0 +verbose=echo + +#info.txt stuff +gal_auth="" +gal_name="" +gal_desc="" +gal_date="" +gal_user="" +gal_pass="" + +# convert options +convertor=`which convert` +extra_ops="-strip" + +# This script +name=`basename $0` + +# getopt stuff +shortopts="a:hHin:d:D:Mqo:Z" +longopts="author:quiet,help,interactive,name:,date:,description:,\ +mq,hq,output:,archive" + + + +function echo_help { +cat <<EOF +Usage : $1 [OPTIONS]... [FILE]... +Convert FILEs + + -o, --output DIR make gallery in DIR + -M, --mq include 1024x768 images (MQ) + -H, --hq include original images (HQ) + -Z, --archive make archives + -i, --interactive edit gallery informations interactively + -a, --author NAME set author's name + -n, --name NAME set gallery's name + -d, --date DATE set date to DATE + -D, --description DESC description + -q, --quiet don't say anything + -h, --help display this help and exit + +FILEs must be JPEG or PNG. if DIR is not given, the +gallery will be created in $dir. + +EOF + +} + +good_file() { + local ftype + + ftype=`file -b "$1" | cut -d " " -f 1` + + if [ "$ftype" == "JPEG" ] || [ "$ftype" == "PNG" ] + then + return 0 + else + return 1 + fi + +} + + +# If we don't have ImageMagick, cry & exit +if [ -z $convertor ]; then + echo "convert not found... Please install ImageMagick." + exit 1 +fi + + +# Parse options +TEMP=`getopt -o $shortopts --long $longopts -n $name -- "$@"` +[ $? != 0 ] && exit 1 + +eval set -- "$TEMP" +while true; do + case "$1" in + -h|--help) + echo_help $name ; exit 0 ;; + + -i|--interactive) + interactive=1 ; shift ;; + + -n|--name) + gal_name=$2 ; shift 2 ;; + + -d|--date) + gal_date=$2 ; shift 2 ;; + + -D|--description) + gal_desc=$2 ; shift 2 ;; + + -a|--author) + gal_auth=$2 ; shift 2 ;; + + -o|--output) + dir=$2 ; shift 2 ;; + + -Z|--zip) + zip=1 ; shift ;; + + -q|--quiet) + verbose=false ; shift ;; + + -M|--mq) + mq=1 ; shift ;; + + -H|--hq) + hq=1 ; shift ;; + + --) + shift ; break ;; + + *) + echo "OOops.. getopt error !" ; echo $@ ; exit 1 ;; + esac +done + + +# If no input files are given, display usage & exit +if [ $# == 0 ]; then + cat <<EOF +Usage: $name [-hMHZ] [-o directory] file... + $name -o Gallery *.jpg +Try \`$name --help' for more information. +EOF + exit 1 +fi + +# make dirs +mkdir -p $dir/thumbs +mkdir -p $dir/lq +mkdir -p $dir/comments +chmod o+w $dir/comments +[ $mq -gt 0 ] && mkdir -p $dir/mq +[ $hq -gt 0 ] && mkdir -p $dir/hq +[ $zip -gt 0 ] && mkdir -p $dir/zip + +# Protect info.txt, even if we don't make it. +echo "<Files info.txt>" > $dir/.htaccess +echo " deny from all" >> $dir/.htaccess +echo "</Files>" >> $dir/.htaccess + + +$verbose "Generating O.R.I.G.I.N.A.L gallery in $dir" + +files=$(echo $@ | sed 's/ /\n/g' | sort) + +#files=$@ + +i=1 +for imagefile in $files; do + + good_file "$imagefile" + if [ $? != 0 ]; then + $verbose "$imagefile is not a JPEG or PNG file, skipped" + continue + fi + + $verbose -n "converting $imagefile " + + $verbose -n "." + $convertor -geometry 120x120 -modulate 100,140,100 -unsharp 1x20 \ + -quality 60 $extra_opts "$imagefile" $dir/thumbs/img-$i.jpg + + $verbose -n "." + $convertor -geometry 640x480 -modulate 100,130,100 -unsharp 1x5 \ + -quality 90 "$imagefile" $dir/lq/img-$i.jpg + + if [ $mq -gt 0 ]; then + $verbose -n "." + $convertor -geometry 1024x768 -modulate 100,130,100 -unsharp 1x5 \ + -quality 80 "$imagefile" $dir/mq/img-$i.jpg + fi + + if [ $hq -gt 0 ] ; then + $verbose -n "." + cp "$imagefile" $dir/hq/img-$i.jpg + fi + + # template for comment + echo "<span>Photo $i</span>
" > $dir/comments/$i.txt + + + i=`expr $i + 1` + $verbose " done" +done + +#zip stuff +if [ $zip -gt 0 ]; then + $verbose "archiving" + [ $mq ] && zip -R $dir/zip/mq.zip web-gallery/mq/*.jpg + [ $hq ] && zip -R $dir/zip/hq.zip web-gallery/hq/*.jpg +fi + +#info.txt +protect=n +if [ $interactive == 1 ]; then + echo -n "Gallery name [$gal_name]: " + read gal_name + echo -n "Description: " + read gal_desc + echo -n "Author [$gal_auth]: " + read gal_auth + echo -n "Date [$gal_date]: " + read gal_date + echo -n "Resctrict access ? [y/N]: " + read protect + if [ "$protect" == "y" ] || [ "$protect" == "Y" ]; then + echo -n "restricted user [$gal_user]: " + read gal_user + echo -n "restricted password [$gal_pass]: " + read gal_pass + fi +fi + +[ "$gal_name" != "" ] && echo "name|$gal_name" >> $dir/info.txt +[ "$gal_auth" != "" ] && echo "author|$gal_auth" >> $dir/info.txt +[ "$gal_date" != "" ] && echo "date|$gal_date" >> $dir/info.txt +[ "$gal_desc" != "" ] && echo "description|$gal_desc" >> $dir/info.txt +[ "$gal_user" != "" ] && echo "restricted_user|$gal_user" >> $dir/info.txt +[ "$gal_pass" != "" ] && echo "restricted_password|$gal_pass" >> $dir/info.txt diff --git a/info.txt.sample b/info.txt.sample new file mode 100644 index 0000000..5a5f0e8 --- /dev/null +++ b/info.txt.sample @@ -0,0 +1,6 @@ +name|Sample Gallery +description|This is a short description +author|Joe Doe +date|18.01.2005 +restricted_user|cl3v3r +restricted_password|44S diff --git a/logo.xcf.bz2 b/logo.xcf.bz2 Binary files differnew file mode 100644 index 0000000..73268eb --- /dev/null +++ b/logo.xcf.bz2 diff --git a/www/bcg.png b/www/bcg.png Binary files differnew file mode 100644 index 0000000..d4f7ac8 --- /dev/null +++ b/www/bcg.png diff --git a/www/favicon.ico b/www/favicon.ico Binary files differnew file mode 100644 index 0000000..6d93ef7 --- /dev/null +++ b/www/favicon.ico diff --git a/www/inc/comment.inc.php b/www/inc/comment.inc.php new file mode 100644 index 0000000..627a747 --- /dev/null +++ b/www/inc/comment.inc.php @@ -0,0 +1,33 @@ +<?php +/* + * The HTML contained in this file is valid XHTML 1.0 Strict + */ + +echo "<div id=\"comment_block\">\n"; + +?> + <?php echo"<div id=\"showhideform\"><strong> " . __('Post a Comment') . "</strong>:"; ?> + <span class="comment_toggle"> + [ + <?php echo"<a href=\"javascript:toggle_comment()\"><span id=\"showlink\">" . __('Show Form') . "</span><span id=\"hidelink\" style=\"display:none;\">" . __('Hide Form') . "</span></a>"; ?> + ] + </span> + </div> + + <div id="comment_form" style="display: none;"> +<?php +$page->form_start($ThisUrl, "post", NULL); +$page->input("text", "commentname", $username, __('Name:'), NULL, _('Enter your name.') ); +$page->input("checkbox", "savecommentname", "1", __('Remember Name:'), "yes", + __('Should the browser remember your name?')); +$magic_number = random_digits(4); +//temporary. should generate an image instead +echo "<div class=\"row\"><div class=\"control\">$magic_number</div></div>\n"; +$page->input("hidden", "commentkolacek", md5($magic_number), NULL, NULL, NULL); +$page->input("text", "commentspamcheck", "", __('Retype PIN Above:'), NULL, __('Enter the number shown above.')); +$page->input("textarea", "commentdata", "", __('Comment') . " :" , NULL, __('Allowed HTML tags: a,b,i,ul,li,blockquote,br.') ); +$page->input("submit", "", __('Send') , NULL, NULL, NULL); +$page->form_end(); +?> + </div> +</div> diff --git a/www/inc/config.inc.php b/www/inc/config.inc.php new file mode 100644 index 0000000..1f0bbd3 --- /dev/null +++ b/www/inc/config.inc.php @@ -0,0 +1,119 @@ +<?php +#base dirname + //dirname("__FILE__/..") + eregi("^(.*)/[^/]*$", $ScriptFileName, $x); + $root = $x[1]; +# =========================================================================== +# dir index + $sortinmonth = 0;// 1 - alphabetically + // 0 - by date (reverse) + +# =========================================================================== +# default languages +# use UA's accept language +require_once("$root/inc/l10nget.inc.php"); //get from UA +if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) { + $sclang = get_lang_from_agent($_SERVER["HTTP_ACCEPT_LANGUAGE"]); +} else { + $sclang = "en"; +} +l10n::set("$root/l10n/".$GLOBALS['sclang']."/exif.lang"); + +# =========================================================================== +#Name to dsplay on the gallery +$scnamegallery = "Photo Gallery Index"; + + +# =========================================================================== +# albums to show + $yearsince = 1999; + $yearto = 2005; +#images FIXME - this is stylesheet's job + $img["left"] = "left.png"; + $img["right"] = "right.png"; + $img["top"] = "top.png"; +# =========================================================================== +#thumbnail behaviour + //keep this unset for dynamic thumbnail size + //$thumbsize = "fixed"; + //How the previous and Next thumbnails should be scaled + // 1 is 1:1, >1 is smaller, <1 is bigger + $PNthumbScale = 1.5; +# Photos Copyright +# CHANGE THIS! I am not trying to take over the world ;) + $copy = "Copyright © 1999-2005 Jakub Steiner"; +#app info + $app["name"] = "Original"; // opensource remote image gallery, + // initialy not as lovely + $app["url"] = "http://jimmac.musichall.cz/original.php3"; + $app["version"] = "0.11"; +# =========================================================================== +# EXIF metadata app path (helper app for php3 and older php4) +# uncomment the method you want to use if you want EXIF data reported +# --------------------------------------------------------------------------- +## use internal function of PHP 4: + $exif_prog = "php4"; + $exif_show = array("DateTime"=>__("Time Taken"), + "Make"=>__("Camera Manufacturer"), + "Model"=>__("Camera Model"), + "FocalLength"=>__("Real Focal Length"), + "FocalLengthIn35mmFilm"=>__("Focal Length Relative to 35mm Film"), + "FNumber"=>__("F Stop"), + "ExposureTime"=>__("Time of Exposure"), + "ISOSpeedRatings"=>__("Film/Chip Sensitivity"), + "Flash"=>__("Flash")); +# --------------------------------------------------------------------------- +## use metacam (give absolute path to the binary on the server): +# $exif_prog = "/usr/local/bin/metacam"; +## what EXIF data to show (if unset, all will be shown) +## some example fields for metacam: +# $exif_show = array("Image Capture Date", "Make", "Model", +# "Exposure Program", "Exposure Mode", +# "Focal Length", "Exposure Time", +# "Aperture Value", "ISO Speed Rating", "White Balance", +# "Flash", "Scene Capture Type", +# "Metering Mode", "Max Aperture Value", "Shutter Speed Value" +# ); +# --------------------------------------------------------------------------- +## use jhead (give absolute path to the binary on the server): +# $exif_prog = "/usr/local/bin/jhead"; +## what EXIF data to show (if unset, all will be shown) +## some example fields for jhead: +# $exif_show = array( +# "Date/Time", +# "Camera make", +# "Camera model", +# "Focal length", +# "Exposure time", +# "Aperture Value", +# "ISO equiv.", +# "Exposure", +# ); +# =========================================================================== +## Gallery Directory +# This is a path relative to the directory where original is installed +# eg. it can be "../galleries" to use a galleries dir above the original dir. + $gallery_dir="../galleries"; + +# This controls wheather web visitors will be able to post +# comments to images +$comments = 1; + +# Access Log/Counter +# $log_access = 0; // no access logging +# $log_access = 1; // simple counter +# $log_access = 2; // detailed log FIXME: TODO (not sure about doing this, as + // it duplicates server's access log and tends to grow large +$log_access = 1; + +#css styles + $themes = array( + "dark" => "inc/styles/dark/dark.css", + "classic" => "inc/styles/classic/classic.css", + "gorilla" => "inc/styles/gorilla/gorilla.css" + ); + + + + +?> diff --git a/www/inc/exif.inc.php b/www/inc/exif.inc.php new file mode 100644 index 0000000..f78741e --- /dev/null +++ b/www/inc/exif.inc.php @@ -0,0 +1,223 @@ +<?php + + +function formatEXIF ($k,$v) { + // format some special cases + // dunno if EXIF support formats it so weirdly everywhere. + // Sure does in my php4 + + switch ($k) { + case "FocalLength": + $out = eval("return $v;"); + $out .= "mm"; + return $out; + break; + case "FNumber": + $out = "f/"; + $out .= eval("return $v;"); + return $out; + break; + case "ExposureTime": + // numerator = cistatel; jmenovatel = denominator :) + $x = explode("/",$v,2); + if ($x[0]>=100) { + $out = eval("return ${x[0]}/${x[1]};"); + $out .= "s"; + return $out; + } else { + return "1/".(1.0/($x[0]/$x[1]))."s"; + } + break; + case "Flash"; + if ($v=="0") { + return "No Flash"; + } else { + return $v; + } + break; + case "ISOSpeedRatings": + return "ISO" . $v; + break; + case "GainControl"; + return "EV" . $v; + break; + case "FocalLengthIn35mmFilm": + return $v . "mm"; + break; + case "DateTime": + //return date("M d Y H:i:s", $v); + ereg("^([0-9]{4}):([0-9]{1,2}):([0-9]{1,2}) (.*)",$v,$x); + return $x[1] . "/" . $x[2] . "/" . $x[3] . " " . $x[4]; + break; + default: + return $v; + } +} + + +if ($exif_prog=="php4") { + // php internal handling + // $file is LQ image + $exif_array = exif_read_data("$file"); + reset($exif_array); + if ($exif_show) reset($exif_show); + + if ($exif_array["Make"]) { // only render all this + // if there is EXIF header + // fancy table look + echo "<div id=\"exif_table\" style=\"display: none;\">\n"; + echo "<table class=\"exif\" border=\"0\">\n"; + //co ukazat (podle exif_show) + if ($exif_show) { + while (list($kx,$x) = each($exif_show)) { + while(list($k,$v)=each($exif_array)) { + if ($kx==$k) { + echo "<tr>"; + echo "<td align=\"right\">"; + echo $x; + echo ": </td>"; + echo "<td><b>"; + echo formatEXIF($k,$v); + echo "</b></td>"; + echo "</tr>\n"; + } + } + reset($exif_array); + } + } else { + //ukaze vsechno v tabulce + while(list($k,$v)=each($exif_array)) { + echo "<tr>"; + echo "<td align=\"right\">"; + echo $k; + echo ": </td>"; + echo "<td><b>"; + echo formatEXIF($k,$v); + echo "</b></td>"; + echo "</tr>\n"; + } + } + echo "<tr>\n"; + echo "<td></td>"; + echo "<td><a href=\"javascript:toggle_exif()\">" . __("Less info"); + echo "</a></td>"; + echo "</tr>\n"; + echo "</table>\n"; + echo "</div>\n"; + + + + + + // selected EXIF header on one line + echo "<div id=\"exif_line\">\n"; + echo "<p class=\"exif\">"; + reset($exif_array); + if ($exif_show) reset($exif_show); + if ($exif_show) { + while (list($kx,$x) = each($exif_show)) { + while(list($k,$v)=each($exif_array)) { + if ($kx==$k) { + echo "<span title=\"$x\">"; + echo formatEXIF($k,$v); + echo "</span> | "; + } + } + reset($exif_array); + } + } else { + /* vsechny exif headers inline */ + while(list($k,$v)=each($exif_array)) { + echo "<span title=\""; + echo $k; + echo "\">"; + echo formatEXIF($k,$v); + echo "</span> | "; + } + } + + echo "<a href=\"javascript:toggle_exif()\">" . __("More info"); + echo "</a></p>\n"; + echo "</div>\n"; + } + + + + + + + + + +} else { + // the old code, handles e.g. metacam and jhead as EXIF extractors + // loading lq means it won't work if the convertor doesn't copy EXIF data + // (newer ImageMagick can) + // PATCHES WELCOME + exec("$exif_prog \"$gallery_dir/$galerie/lq/img-$snimek.jpg\"", $exif_data, $exif_status); + if ($exif_status!="2") { + if ($exif_style=="descriptive") { + // fancy table look + echo "<table border=\"0\" align=\"center\" class=\"exif\">\n"; + while ($x = current($exif_data)) { + eregi("^ *([^:]*): *(.*)", $x, $y); + //filter according to $exif_show array + if (!$exif_show) { //all fields shown + echo "<tr>"; + echo "<td align=\"right\">$y[1] :</td>"; + echo "<td><b>$y[2]</b></td>"; + echo "</tr>\n"; + } else { + reset($exif_show); + while ($z = current($exif_show)) { + //echo ".$z. ::: .$y[1].<br>"; + if (trim($z) == trim($y[1])) { + echo "<tr>"; + echo "<td align=\"right\">$y[1] :</td>"; + echo "<td><b>$y[2]</b></td>"; + echo "</tr>\n"; + } + next($exif_show); + } + } + next($exif_data); + } + echo "<tr>\n"; + echo "<td></td>"; + # only show if EXIF header exists + if ($y[1]!="File") { // don't show when no EXIF + echo "<td><a href=\"$ThisScript?galerie=$galerie&photo=$snimek"; + echo "&exif_style=simple&show_thumbs=$show_thumbs\">"; + echo "<b>display in-line</b></a></td>\n"; + } + echo "</tr>\n"; + echo "</table>\n"; + } else { + //simple plaintext look + echo "<p class=\"exif\" align=\"center\">"; + while ($x = current($exif_data)) { + eregi("^ *([^:]*): *(.*)", $x, $y); + if (!$exif_show) { //all fields shown + echo "$y[2] |"; + } else { + reset($exif_show); + while ($z = current($exif_show)) { + if (trim($z) == trim($y[1])) { + echo "$y[2] | "; + } + next($exif_show); + } + } + next($exif_data); + } + # only show if EXIF header exists + if ($y[1]!="File") { + echo "<a href=\"$ThisScript?galerie=$galerie&photo=$snimek"; + echo "&exif_style=descriptive&show_thumbs=$show_thumbs\">"; + echo "<b>display table</b></a>\n"; + echo "</p>\n"; + } + } + } +} +?> diff --git a/www/inc/footer.inc.php b/www/inc/footer.inc.php new file mode 100644 index 0000000..28b4eee --- /dev/null +++ b/www/inc/footer.inc.php @@ -0,0 +1,29 @@ +<?php + +/* +echo "<p class=\"copyright\">\n"; +echo "<a href=\"http://jigsaw.w3.org/css-validator/validator?uri="; +echo "http://$HostName$ThisScript\">"; +echo "<img align=\"top\" style=\"border:0;width:88px;height:31px\""; +echo " src=\"http://jigsaw.w3.org/css-validator/images/vcss\""; +echo " alt=\"Valid CSS!\">"; +echo "</a>\n"; + +echo "<a href=\"http://validator.w3.org/check?uri="; +echo "http://$HostName$ThisScript\">"; +echo "<img align=\"top\" style=\"border:0;width:88px;height:31px\""; +echo " src=\"http://www.w3.org/Icons/valid-html401\""; +echo " alt=\"Valid HTML 4.01!\">"; +echo "</a>\n"; +*/ + +echo "\n\n<div class=\"footer\">"; +echo "$copy"; +echo "<br />" . __('Generated by') . "\n <em>"; +echo "<a href=\"" . $app["url"] . "\">"; +echo $app["name"]; +echo "</a>"; +echo " ver. " . $app["version"]; +echo "</em>\n"; +echo "</div>\n"; +?> diff --git a/www/inc/funkce.inc.php b/www/inc/funkce.inc.php new file mode 100644 index 0000000..be897f7 --- /dev/null +++ b/www/inc/funkce.inc.php @@ -0,0 +1,197 @@ +<?php +function navigation ($gallery, $snapshot, $image) { + global $gallery_dir, $root, $ThisScript, $textnav, $img, + $show_thumbs, $exif_style, $PNthumbScale; + + $next = $snapshot + 1; + $prev = $snapshot - 1; + + if (!$image) { // this will render a navigation bar - max 3 buttons + echo "\n<div class=\"navbuttons\">\n"; + echo "<div class=\"navbuttonsshell\">\n"; + if ($snapshot > 1) { //previous + echo "<a id=\"previcon\" href=\"$ThisScript?galerie=$gallery&photo=$prev"; + echo "&exif_style=$exif_style&show_thumbs=$show_thumbs\""; + echo " accesskey=\"p\">"; + echo "< <span class=\"accesskey\">P</span>revious</a>\n"; + } + echo " "; + if (is_file("$gallery_dir/$gallery/lq/img-$next.jpg")) { //next + echo "<a id=\"nexticon\" href=\"$ThisScript?galerie=$gallery&photo=$next"; + echo "&exif_style=$exif_style&show_thumbs=$show_thumbs\""; + echo " accesskey=\"n\">"; + echo "<span class=\"accesskey\">N</span>ext ></a>\n"; + } + echo "</div>\n</div>\n"; + } elseif ($image=="prev") { //previous thumbnail + if ($snapshot > 1) { //previous + echo "<div class=\"prevthumb\">"; + echo "<a href=\"$ThisScript?galerie=$gallery&photo=$prev"; + echo "&exif_style=$exif_style&show_thumbs=$show_thumbs\">"; + if (file_exists("$gallery_dir/$gallery/thumbs/img-$prev.png")) { + $Pthumb = "$gallery_dir/$gallery/thumbs/img-$prev.png"; + } else { + $Pthumb = "$gallery_dir/$gallery/thumbs/img-$prev.jpg"; + } + $v = getimagesize("$root/$Pthumb"); + echo "<img alt=\"Previous\" src=\""; + echo $Pthumb . "\" width=\"" . round($v[0]/$PNthumbScale); + echo "\" height=\"" . round($v[1]/$PNthumbScale) . "\" />"; + echo "<br />" . __('Previous'); + echo "</a></div>\n"; + } + } else { //next thumbnail + if (is_file("$gallery_dir/$gallery/lq/img-$next.jpg")) { + echo "<div class=\"nextthumb\">"; + echo "<a href=\"$ThisScript?galerie=$gallery&photo=$next"; + echo "&exif_style=$exif_style&show_thumbs=$show_thumbs\">"; + if (file_exists("$gallery_dir/$gallery/thumbs/img-$next.png")) { + $Nthumb = "$gallery_dir/$gallery/thumbs/img-$next.png"; + } else { + $Nthumb = "$gallery_dir/$gallery/thumbs/img-$next.jpg"; + } + $v = getimagesize("$root/$Nthumb"); + echo "<img alt=\"Next\" src=\""; + echo $Nthumb . "\" width=\"" . round($v[0]/$PNthumbScale); + echo "\" height=\"" . round($v[1]/$PNthumbScale) . "\" />"; + //echo "<br /><span class=\"accesskey\">N</span>ext"; + echo "<br />" . __('Next') ; + echo "</a></div>\n"; + } + } + +} + +function check($file) { + global $gallery_dir, $page; + +# if (eregi("[^0-9a-z\_\-\ ]",$file) || !file_exists("$gallery_dir/$file")) { +# if (eregi("CVS",$file) || !file_exists("$gallery_dir/$file")) { + if (!file_exists("$gallery_dir/$file")) { + echo "funkce.inc.php/check(): Bad input"; + $page->footer(); + exit; + } +} + +function browserCheck() { + global $HTTP_USER_AGENT; + + $HTTP_USER_AGENT=$_SERVER["HTTP_USER_AGENT"]; + if (eregi("(MSIE.[456789]).*Mac.*",$HTTP_USER_AGENT)) { + return("macie4+"); + } elseif (eregi("(MSIE.[678])",$HTTP_USER_AGENT)) { + return("ie6+"); + } elseif (eregi("(MSIE.[45])",$HTTP_USER_AGENT)) { + return("ie4+"); + } elseif (eregi("Opera",$HTTP_USER_AGENT)) { + return("opera"); + } elseif (eregi("(Mozilla.4)",$HTTP_USER_AGENT)) { + return("netscape4"); + } elseif (eregi("(Mozilla.[5-9])",$HTTP_USER_AGENT)) { + return("mozilla"); + } elseif (eregi("KMeleon",$HTTP_USER_AGENT)) { + return("mozilla"); + } else { + return("Netscape3"); + } +} + +function infoParse ($infofile) { + + $info_array = file($infofile); + foreach ($info_array as $line) { + list($key,$value) = split("\|",$line); + $result[$key]=$value; + } + return $result; +} + +function readInfo ($infofile, $file) { + global $galerieyear, $galeriemonth, $galerieday, $galeriedesc, $galerieauthor, + $galeriename, $galerielogin, $galeriepw, $gallery_dir; + + if (file_exists($infofile)) { + //read from info.txt + $info_array = infoParse($infofile); + if ($info_array["date"]) { + // try to be a little smarter about format + if (ereg("([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})", + $info_array["date"])) { + // remain compatible - DD.MM.YYYY + list($day,$month,$year) = split("\.", $info_array["date"]); + rtrim($year); + rtrim($month); + rtrim($day); + $info_array["date"] = "$year-$month-$day"; //make it US date + } + // US date format at this point + $tstamp = strtotime($info_array["date"]); + } else { + $tstamp = filemtime("$gallery_dir/$file");// Get from filesystem + } + $galerieyear["$file"] = date("Y", $tstamp); + $galeriemonth["$file"] = date("m", $tstamp); + $galerieday["$file"] = date("d", $tstamp); + + if (@$info_array["description"]) { + $galeriedesc["$file"] = rtrim($info_array["description"]); + } + + if (@$info_array["author"]) { + $galerieauthor["$file"] = rtrim($info_array["author"]); + } + + if (@$info_array["name"]) { + $galeriename["$file"] = rtrim($info_array["name"]); + } + + if (@$info_array["restricted_user"]) { + $galerielogin["$file"] = rtrim($info_array["restricted_user"]); + $galeriepw["$file"] = rtrim($info_array["restricted_password"]); + } + } else { // Get Dates from modification stamp + $mtime = filemtime("$gallery_dir/$file"); + $galerieyear["$file"] = date("Y", $mtime); + $galeriemonth["$file"] = date("m", $mtime); //F + $galerieday["$file"] = date("d", $mtime); + } +} + +function access_check($login, $password,$realm) { + if (!($_SERVER['PHP_AUTH_USER']=="$login" && $_SERVER['PHP_AUTH_PW']=="$password")) { + header("WWW-authenticate: Basic Realm=$realm"); + Header("HTTP/1.0 401 Unauthorized"); + $err = new C_www; + $err->header("Access Denied"); + echo "<div class=\"error\">\n"; + echo "<h1>Access Denied</h1>\n"; + echo "<p>Sorry, this gallery is restricted</p>\n"; + echo "<p><a href=\"index.php\">Return to index</a></p>\n"; + echo "</div>\n"; + $err->footer(); + exit; + } + +} + +function random_digits($times) { + $random=""; + for ($i=0;$i<$times;$i++) { + $random .= rand(0,9); + } + return $random; +} + +function get_photo_title($galerie, $id) { + global $gallery_dir; + if ($title = @file_get_contents("$gallery_dir/$galerie/comments/${id}.txt")) { + $title = trim(preg_replace('/[\s\n\r]+/', ' ', strip_tags($title))); + if (strlen($title) > 80) + $title = trim(substr($title, 0, 77)) . "..."; + } else + $title = "Photo ${id}"; + return $title; +} + +?> diff --git a/www/inc/global.js b/www/inc/global.js new file mode 100644 index 0000000..ff8ec21 --- /dev/null +++ b/www/inc/global.js @@ -0,0 +1,79 @@ +function setActiveStyleSheet(title) { + var i, a, main; + for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { + if(a.getAttribute("rel").indexOf("style") != -1 + && a.getAttribute("title")) { + a.disabled = true; + if(a.getAttribute("title") == title) a.disabled = false; + } + } + if (title!="") { + writeCookie(title); + } +} + +function getInactiveStyleSheet() { + var i, a; + for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { + if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && a.disabled) return a.getAttribute("title"); + } + return null; +} + +function readCookie() { + var theme = document.cookie; + var theme = unescape(theme); + + return theme; +} + +function writeCookie(theme) { + //FIXME - set expires + var original_cookie = "theme=" + escape(theme); + document.cookie = original_cookie; +} + +function checkForTheme() { + var theme = readCookie(); + //alert(theme); + if (theme=="undefined") { + var theme = "none"; + } +} + +// what a kludge. Luckily I found a clean way +function alignForGorilla() { +var image_preview = document.getElementById('preview'); +image_preview.style.marginLeft = "-" + (image_preview.width/2 + 16) + "px"; +} + +// to hide and show the comment block +// inspired by www.wikipedia.org +function toggle_comment() { + var comment_form = document.getElementById('comment_form'); + var showlink=document.getElementById('showlink'); + var hidelink=document.getElementById('hidelink'); + if(comment_form.style.display == 'none') { + comment_was = comment_form.style.display; + comment_form.style.display = ''; + hidelink.style.display=''; + showlink.style.display='none'; + } else { + comment_form.style.display = comment_was; + hidelink.style.display='none'; + showlink.style.display=''; + } +} + +function toggle_exif() { + var exif_table = document.getElementById('exif_table'); + var exif_line = document.getElementById('exif_line'); + if(exif_table.style.display == 'none') { + exif_table.style.display = 'block'; + exif_line.style.display = 'none'; + } else { + exif_table.style.display = 'none'; + exif_line.style.display = 'block'; + } +} + diff --git a/www/inc/header.inc.php b/www/inc/header.inc.php new file mode 100644 index 0000000..483b6ef --- /dev/null +++ b/www/inc/header.inc.php @@ -0,0 +1,14 @@ +<div class="stylenavbar"> +[ style: +<?php +foreach ($themes as $skin => $url) { + echo "<a href=\"#\" title=\"$skin\""; + echo " onclick=\"setActiveStyleSheet('$skin')\">"; + echo "$skin</a> \n"; +} +?> +] +</div> +<?php +echo "<h1 class=\"title\"><a href=\"http://$HostName$ThisScript\">Photo Gallery<span /></a></h1>\n\n"; +?> diff --git a/www/inc/l10nget.inc.php b/www/inc/l10nget.inc.php new file mode 100644 index 0000000..f04b18c --- /dev/null +++ b/www/inc/l10nget.inc.php @@ -0,0 +1,17 @@ +<?php + +function get_lang_from_agent($accept) { + + $acceptarr = explode("," , $accept); + foreach ($acceptarr as $lang) { + //get rid of trailing garbage + $lang = ereg_replace("^(.*)\;.*","\\1", $lang); + if (is_dir("l10n/$lang")) { + return $lang; + exit; + } + //no translation for accept language + return "en"; + } +} +?> diff --git a/www/inc/styles/classic/bcg.png b/www/inc/styles/classic/bcg.png Binary files differnew file mode 100644 index 0000000..d4f7ac8 --- /dev/null +++ b/www/inc/styles/classic/bcg.png diff --git a/www/inc/styles/classic/classic.css b/www/inc/styles/classic/classic.css new file mode 100644 index 0000000..da56645 --- /dev/null +++ b/www/inc/styles/classic/classic.css @@ -0,0 +1,338 @@ +/* Default stylesheet + ================== + + stylesheet & artwork + (c) 2003 Jakub 'jimmac' Steiner + +*/ + +body { + background-color: #f6f6f6; + background: url("bcg.png") top left repeat; + /* + margin: 0px 50px 0px 50px; + width: auto; + */ + margin: auto; + width: 770px; + font-family: "Bitstream Vera Sans", sans-serif; + font-size: 10pt; +} + +img { + border: 0px; +} + +.bigthumbnails img { + width: 120px; + height: 80px; +} + +.bigthumbnails a.portrait img { + width: 52px; +} + +a:link { + color: #909090; +} + +a:visited { + color: #808080; +} + +a:hover { + color: #f0f0f0; + background-color: #707070; +} + + +h1.title { + background-color: #a7a9a6; + font-size: 16pt; + color: #808080; + width: 100%; + margin-bottom: 0px; + padding: 5px; + +} + +.title a { + display: block; + position:relative; + width:100%; + height:48px; + margin:0; padding:0; +} + +.title a:hover { + border: 0px; + background-color: #a7a9a6; +} + +.title a span { + /* this overlays text below with an image */ + display: block; + position:absolute; left:0; top:0; z-index:1; + width:338px; height:48px; + margin:0; padding:0; + background-image: url("title.png"); + background-attachment: top left; + background-repeat: no-repeat; +} + +div.thumbroll { + margin: 10px 0px 4px 0px; + min-height: 29px; +} + +p.bigthumbnails { + text-align: center; +} + +p.bigthumbnails a { + padding: 0px; + margin: 0px; + border: 0px; + +} +/* +p.bigthumbnails a:link img { + border: 1px solid white; +} + +p.bigthumbnails a:hover img { + border: 1px solid #909090; + +} +*/ + +a#minus,a#plus { + display: block; + position: relative; + float: left; + width:24px; + height:24px; + margin:0px; padding:0px; +} + +a#minus { + background: url("minus.png") top left no-repeat; +} + +a#plus { + background: url("plus.png") top left no-repeat; +} + +a#zip { + /* display: block; */ + position: relative; + width:16px; + height:16px; + margin:0px; padding:0px; + font-size: 9px; +} + +a#zip span { + background: url("zip.png") top left no-repeat; + position:absolute; left:0; top:0; z-index:1; + width:16px; height:16px; +} + +div.navigation { + background-color: #f6f6f6; + width: 100%; + padding: 5px; + font-size: 10px; +} + +div.navigation a { + color: #a0a0a0; + font-weight: bold; +} + +div.footer { + font-size: 9px; + width: 100%; + margin-top: 40px; + padding: 5px 5px 20px 5px; + clear: both; + border-top: 1px dotted #909090; +} + +div.year { + font-size: 11pt; + float: left; + margin: 10px; +} + +div.month { + margin: 0px 0px 0px 2em; + padding: 2px; +} + +div.month h4 { + margin: 0px 0px 3px 0px; +} + +.author, .date, .desc { + display: block; +} + +.date { + color: gray; +} + +.date:before { + content: ">>"; +} + +/* ul won't work on safari with float: left */ +div.month p { + margin: 2px; + padding: 0px 0px 0px 6px; + list-style: none; + font-size: 10px; +} + +div.month p.restricted { + background: transparent url("restricted.png") top left no-repeat; + padding: 0px 0px 3px 16px; +} + +div#image { + /* width: 800px; */ + display: block; + position: relative; + clear: both; + margin-left: auto; + margin-right: auto; + /* border: 1px solid black; */ + min-height: 480px; /* only works in gecko :/ */ +} + +img#preview { + position: relative; + float: left; + margin-right: 8px; +} + +div.comment { + margin: 2em 0px; + color: #808080; + font-size: 9px; +} + +div.comment span { + color: black; + font-weight: bold; + font-size: 10px; +} + +div.navbuttons { + position: absolute; + top: 580px; left: 50%; + margin-left: 260px; /* 260px to the right of the center of the page */ + width: 64px; height: 32px; + z-index: 1; +} + +div.navbuttonsshell { + position: relative; + width: 100%; + margin: 2px; +} + +div.navbuttonsshell a#previcon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px; padding: 0; + top: 0px; + left: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the oveflow text */ + background: url("left.png") top left no-repeat; /* have a pixmap */ +} + +div.navbuttonsshell a#nexticon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px 4px 2px auto; padding: 0; + right: 4px; top: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the overflow text */ + background: url("right.png") top left no-repeat; /* have a pixmap */ +} + + +div.prevthumb,div.nextthumb { + margin-bottom: 1em; +} + +div.nextthumb a,div.prevthumb a { + text-decoration: none; +} + +div#mqhq { + margin: 2px 2px 4px 0px; + height: 32px; +} + +div#mqhq a { + display: block; + border: 1px solid #909090; + padding: 2px; + font-size: 10px; + background-color: #f6f6f6; + color: black; + float: left; + width: 48px; + text-align: center; + margin: 2px; + -moz-border-radius: 2px; +} + +div#mqhq a:hover { + background-color: #909090; + border: 1px solid black; + color: white; +} + +div.stylenavbar { + position:relative; + font-size: 9px; + margin: 4px 0px; + padding-bottom: 0px; +} + +/* Formatting of the user comments */ +/* +div.commententry { + border: 1px dotted pink; +} +*/ + +#comment_block .comment_toggle { + font-size: smaller; +} + +div.commentdata { + margin-bottom: 10px; +} + +div.name { + border-bottom: 1px dotted grey; + font-size: 10pt; + margin-bottom: 2px; +} + +textarea, input { + font-family: "Bitstream Vera Sans", sans-serif; + font-size: 10pt; + -moz-border-radius: 3px; +} diff --git a/www/inc/styles/classic/classic.css.net b/www/inc/styles/classic/classic.css.net new file mode 100644 index 0000000..c8a0f3f --- /dev/null +++ b/www/inc/styles/classic/classic.css.net @@ -0,0 +1,386 @@ +/* Default stylesheet + ================== + + stylesheet & artwork + (c) 2003 Jakub 'jimmac' Steiner + +*/ + +body { + background-color: #f6f6f6; + background: url("bcg.png") top left repeat; + /* + margin: 0px 50px 0px 50px; + width: auto; + */ + margin: auto; + width: 770px; + font-family: "Bitstream Vera Sans", sans-serif; + font-size: 10pt; +} + +img { + border: 0px; + width: 120px; + height: 80px; +} + +img#preview { + width: inherit; + height: inherit; +} + +a.portrait img { + width: 58px; +} + +a:link { + color: #909090; +} + +a:visited { + color: #808080; +} + +a:hover { + color: #f0f0f0; + background-color: #707070; +} + +a.hascomments { + background-image: url('hascomments.png'); + background-position: bottom right; + background-repeat: no-repeat; +} + +.month p>a { + display: block; +} + +.author, .description, .date { + display: block; + padding: 2px 0px 1em 4px; +} + +.date { + color: #666; +} + +.date:before { + content: ">> "; +} + +h1.title { + background-color: #a7a9a6; + font-size: 16pt; + color: #808080; + width: 100%; + margin-bottom: 0px; + padding: 5px; + +} + +.title a { + display: block; + position:relative; + width:100%; + height:48px; + margin:0; padding:0; +} + +.title a:hover { + border: 0px; + background-color: #a7a9a6; +} + +.title a span { + /* this overlays text below with an image */ + display: block; + position:absolute; left:0; top:0; z-index:1; + width:338px; height:48px; + margin:0; padding:0; + background-image: url("title.png"); + background-position: top left; + background-repeat: no-repeat; +} + +div.thumbroll { + margin: 10px 0px 4px 0px; + min-height: 29px; +} + +p.bigthumbnails { + text-align: center; +} + +p.bigthumbnails a { + display: block; + float: left; + padding: 0px 0px 18px 0px; + margin: 4px; + border: 0px; +} + +p { + clear: both; +} +/* +p.bigthumbnails a:link img { + border: 1px solid white; +} + +p.bigthumbnails a:hover img { + border: 1px solid #909090; + +} +*/ + +a#minus,a#plus { + display: block; + position: relative; + float: left; + width:24px; + height:24px; + margin:0px; padding:0px; +} + +a#minus { + background: url("minus.png") top left no-repeat; +} + +a#plus { + background: url("plus.png") top left no-repeat; +} + +a#zip { + /* display: block; */ + position: relative; + width:16px; + height:16px; + margin:0px; padding:0px; + font-size: 9px; +} + +a#zip span { + background: url("zip.png") top left no-repeat; + position:absolute; left:0; top:0; z-index:1; + width:16px; height:16px; +} + +div.navigation { + background-color: #f6f6f6; + width: 100%; + padding: 5px; + font-size: 10px; +} + +div.navigation a { + color: #a0a0a0; + font-weight: bold; +} + +div.footer { + font-size: 9px; + width: 100%; + margin-top: 40px; + padding: 5px 5px 20px 5px; + clear: both; + border-top: 1px dotted #909090; +} + +div.year { + font-size: 11pt; + float: left; + margin: 10px; +} + +div.month { + margin: 0px 0px 0px 2em; + padding: 2px; +} + +div.month h4 { + margin: 0px 0px 3px 0px; +} + +/* ul won't work on safari with float: left */ +div.month p { + margin: 2px; + padding: 0px 0px 0px 6px; + list-style: none; + font-size: 10px; +} + +div.month p.restricted { + background: transparent url("restricted.png") top left no-repeat; + padding: 0px 0px 3px 16px; +} + +div#image { + /* width: 800px; */ + display: block; + position: relative; + clear: both; + margin-left: auto; + margin-right: auto; + /* border: 1px solid black; */ + min-height: 480px; /* only works in gecko :/ */ +} + +img#preview { + position: relative; + float: left; + margin-right: 8px; +} + +div.comment { + margin: 2em 0px; + color: #808080; + font-size: 10pt; +} + +div.comment span { + color: black; + font-weight: bold; +} + +div.navbuttons { + position: absolute; + top: 580px; left: 50%; + margin-left: 260px; /* 260px to the right of the center of the page */ + width: 64px; height: 32px; + z-index: 1; +} + +div.navbuttonsshell { + position: relative; + width: 100%; + margin: 2px; +} + +div.navbuttonsshell a#previcon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px; padding: 0; + top: 0px; + left: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the oveflow text */ + background: url("left.png") top left no-repeat; /* have a pixmap */ +} + +div.navbuttonsshell a#nexticon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px 4px 2px auto; padding: 0; + right: 4px; top: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the overflow text */ + background: url("right.png") top left no-repeat; /* have a pixmap */ +} + + +div.prevthumb,div.nextthumb { + margin-bottom: 1em; +} + +div.nextthumb a,div.prevthumb a { + text-decoration: none; + background-color: transparent; +} + +div.nextthumb a:hover,div.prevthumb a:hover { + color: black; +} + +div#mqhq { + margin: 2px 2px 4px 0px; + height: 32px; +} + +div#mqhq a { + display: block; + border: 1px solid #909090; + padding: 2px; + font-size: 10px; + background-color: #f6f6f6; + color: black; + float: left; + width: 48px; + text-align: center; + margin: 2px; +} + +div#mqhq a:hover { + background-color: #909090; + border: 1px solid black; + color: white; +} + +div.stylenavbar { + position:relative; + font-size: 9px; + margin: 4px 0px; + padding-bottom: 0px; +} + +/* Formatting of the user comments */ + +div#comment_block { + margin-bottom: 40px; +} + +div#comment_form { + margin-top: 1em; +} + +div.commentdata { + padding-left: 1em; + color: black; + margin-bottom: 2em; +} + +div.user_comment { + background-color: #f6f6f6; + padding: 4px; +} + +div.name { + color: gray; + font-size: 9pt; + margin-bottom: 2px; +} + +textarea, input { + font-family: "Bitstream Vera Sans", sans-serif; + font-size: 10pt; +} + +input[type="text"],textarea { + width: 300px; +} + +div.row { + margin-bottom: 1em; + } + +div.label { + margin-bottom: 4px; +} + +div.label a { + text-decoration: none; + cursor: help; + color: black; + border-bottom: 1px dotted gray; +} + +div.label a:hover { + background-color: transparent; +} diff --git a/www/inc/styles/classic/hascomments.png b/www/inc/styles/classic/hascomments.png Binary files differnew file mode 100644 index 0000000..957a459 --- /dev/null +++ b/www/inc/styles/classic/hascomments.png diff --git a/www/inc/styles/classic/left-16.png b/www/inc/styles/classic/left-16.png Binary files differnew file mode 100644 index 0000000..625a1ab --- /dev/null +++ b/www/inc/styles/classic/left-16.png diff --git a/www/inc/styles/classic/left.png b/www/inc/styles/classic/left.png Binary files differnew file mode 100644 index 0000000..bd5607c --- /dev/null +++ b/www/inc/styles/classic/left.png diff --git a/www/inc/styles/classic/logo-mini.png b/www/inc/styles/classic/logo-mini.png Binary files differnew file mode 100644 index 0000000..8949154 --- /dev/null +++ b/www/inc/styles/classic/logo-mini.png diff --git a/www/inc/styles/classic/minus.png b/www/inc/styles/classic/minus.png Binary files differnew file mode 100644 index 0000000..19eaef3 --- /dev/null +++ b/www/inc/styles/classic/minus.png diff --git a/www/inc/styles/classic/plus.png b/www/inc/styles/classic/plus.png Binary files differnew file mode 100644 index 0000000..062d005 --- /dev/null +++ b/www/inc/styles/classic/plus.png diff --git a/www/inc/styles/classic/restricted.png b/www/inc/styles/classic/restricted.png Binary files differnew file mode 100644 index 0000000..33091eb --- /dev/null +++ b/www/inc/styles/classic/restricted.png diff --git a/www/inc/styles/classic/right-16.png b/www/inc/styles/classic/right-16.png Binary files differnew file mode 100644 index 0000000..42e783f --- /dev/null +++ b/www/inc/styles/classic/right-16.png diff --git a/www/inc/styles/classic/right.png b/www/inc/styles/classic/right.png Binary files differnew file mode 100644 index 0000000..bc5bcc5 --- /dev/null +++ b/www/inc/styles/classic/right.png diff --git a/www/inc/styles/classic/title.png b/www/inc/styles/classic/title.png Binary files differnew file mode 100644 index 0000000..8a6ad6b --- /dev/null +++ b/www/inc/styles/classic/title.png diff --git a/www/inc/styles/classic/zip.png b/www/inc/styles/classic/zip.png Binary files differnew file mode 100644 index 0000000..0bc44ab --- /dev/null +++ b/www/inc/styles/classic/zip.png diff --git a/www/inc/styles/dark/bcg.png b/www/inc/styles/dark/bcg.png Binary files differnew file mode 100644 index 0000000..d4f7ac8 --- /dev/null +++ b/www/inc/styles/dark/bcg.png diff --git a/www/inc/styles/dark/dark.css b/www/inc/styles/dark/dark.css new file mode 100644 index 0000000..78f82eb --- /dev/null +++ b/www/inc/styles/dark/dark.css @@ -0,0 +1,553 @@ +/* Default stylesheet + ================== + + The default stylesheet needed a remake. Photos + simply look better on dark background. The color + scheme is derived form the Novell palette. + + Should not crash Internet Explorer anymore. + + stylesheet & artwork + (c) 2004 Jakub 'jimmac' Steiner + +*/ + +body { + /* + margin: 0px 50px 0px 50px; + width: auto; + */ + margin: 20px 20px 20px 100px; + font-family: Georgia, "Bitstream Vera Sans", sans-serif; + font-size: 13pt; + color: #eeeeec; + background: #2e3436 url('title.png') top left no-repeat fixed; +} + +img { + border: 0px; +} + +a:link { + color: #ffb02f; +} + +a:visited { + color: #e88000; +} + +a:hover { + color: #ffcc7a; +} + + +h1.title { + display: none; +} + +/* mini thumbnails */ + +div.thumbroll { + margin: 10px 0px 4px 0px; + min-height: 29px; +} + +div.thumbroll img { + border: 1px solid #6b6c69; + -moz-border-radius: 3px; + Filter: Gray; /* IE only */ +} + +div.thumbroll a:hover img { + border: 1px solid #ffb02f; + Filter: none; +} + +a#minus,a#plus { + display: block; + position: relative; + float: left; + width:16px; + height:16px; + margin:0px; padding:0px; +} + +a#minus { + background: url("minus-inactive.png") top left no-repeat; +} + +a#minus:hover { + background: url("minus.png") top left no-repeat; +} + +a#plus { + background: url("plus-inactive.png") top left no-repeat; +} + +a#plus:hover { + background: url("plus.png") top left no-repeat; +} + +a#zip { + display: inline-block; + position: relative; + width:16px; + height:16px; + margin:0px; padding:0px; + font-size: 9px; + color: #2e3436; +} + +a#zip span { + background: url("zip-inactive.png") top left no-repeat; + position:absolute; left:0; top:0; z-index:1; + width:16px; height:16px; +} + +a#zip:hover span { + background: url("zip.png") top left no-repeat; +} + +.month p { + display: block; + width: 200px; +} + +p span.desc, p span.author { + font-size: 10px; + margin-left: 5px; +} + +.month p>a:after, p span.desc:after, p span.author:after { + content: ", "; +} + +p span.date { + font-size: 9px; + margin-left: 5px; + color: #777; +} + +/* in the thumbnail page */ + +div#info { + margin-left: 6px; + padding-top: 6px; + clear: both; + font-size: 11px; +} + +div#info span.key { + font-weight: bold; +} + +p { + clear: both; +} + +p.bigthumbnails { + text-align: left; +} + +p.bigthumbnails a { + display: block; + float: left; + width: 130px; + height: 80px; + text-align: center; + padding: 30px 4px; + background-color: #232729; + margin: 4px; + border: 1px solid #6b6c69; + -moz-border-radius: 3px; + /* Neat, but too slow + opacity: .5; + */ + Filter: Gray; /* IE - I wish we had that in gecko */ +} + +p.bigthumbnails a.portrait { + padding: 10px 29px; + width: 80px; + height: 120px; /* why the extra pixels? */ +} + +p.bigthumbnails img { + /* landscapes */ + display: inline; + width: 120px; + height: 80px; +} + +a.portrait img { + /* portrait */ + width: 80px; + height: 120px; +} + +p.bigthumbnails a:hover { + background-color: #2b2c29; + margin: 3px; + border: 2px solid #ffb02f; + Filter: none; /* IE */ +} + +a.hascomments { + background: #232729 url('hascomments.png') 95% 95% no-repeat; +} + +div.navigation { + margin-top: 20px; + background-color: #5b5c59; + width: 100%; + padding: 5px; + font-size: 12px; + -moz-border-radius: 3px; +} + +div.navigation a:first-child { + padding-left: 24px; + background: url('home-inactive.png') top left no-repeat; +} + +div.navigation a:first-child:hover { + background: url('home.png') top left no-repeat; +} + +div.footer { + font-size: 11px; + width: 100%; + margin-top: 20px; + padding: 5px 5px 20px 5px; + clear: both; + border-top: 1px dotted #6b6c69; + color: #6b6c69; +} + +div.year { + color: #6b6c69; + font-size: 13pt; + float: left; + margin: 10px; +} + +div.month { + color: #babdb6; + margin: 0px 0px 0px 2em; + padding: 2px; +} + +div.month h4 { + margin: 10px 0px 5px 0px; +} + +/* ul won't work on safari with float: left */ +div.month p { + margin: 2px; + padding: 4px 4px 6px 6px; + list-style: none; + font-size: 12px; + border: 1px solid #444; + -moz-border-radius: 5px; +} + +div.month p.restricted>a { + background: transparent url("restricted-inactive.png") top left no-repeat; + padding: 0px 0px 3px 14px; +} + + +div.month p.restricted>a:hover { + background: transparent url("restricted.png") top left no-repeat; +} + +div#image { + /* width: 800px; */ + display: block; + position: relative; + clear: both; +} + +img#preview { + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + border: 10px solid #232729; + background-color: #6b6c69; + padding: 1px; + -moz-border-radius: 7px; + left: 0px; + margin-left: auto; + margin-right: auto; +} + +* html img#preview { /* should only match on IE; how pathetic */ + margin-left: -320px; + left: 50%; +} + +div.comment { + margin: 10px 0px 6px 0px; + color: #babdb6; + font-size: 11pt; + /* max-width: 50em; */ +} + +div.comment span { + color: #6b6c69; + font-weight: bold; +} + +div#log { + margin: 4px 0px 30px 0px; + font-size: 9pt; + color: #6b6c69; +} + +div.navbuttons { + display: none; +} + +div.prevthumb { + position: absolute; + margin-bottom: 1em; + font-size: 10px; + top: top; + left: 0px; + text-align: right; + padding: 4px; + /* background-color: #2e3436; */ + background-color: #232729; + -moz-border-radius: 5px; + opacity: .7; /* gecko, khtml */ + filter: alpha(opacity=70); /* IE */ +} + +div.nextthumb { + position: absolute; + margin-bottom: 1em; + font-size: 10px; + right: 0px; + top: top; + margin-left: auto; + padding: 4px; + /* background-color: #2e3436; */ + background-color: #232729; + -moz-border-radius: 5px; + opacity: .7; /* gecko, khtml */ + filter: alpha(opacity=70); /* IE */ +} + +div.nextthumb img, div.prevthumb img { + margin: 1px; + border: 1px solid #6b6c69; + -moz-border-radius: 3px; +} + +div.prevthumb a { + display: block; + text-decoration: none; + background: transparent url('left-inactive.png') bottom left no-repeat; + padding: 2px; +} + +div.nextthumb a { + display: block; + text-decoration: none; + background: transparent url('right-inactive.png') bottom right no-repeat; + padding: 2px; +} + +div.prevthumb a:hover { + background: transparent url('left.png') bottom left no-repeat; +} + +div.nextthumb a:hover { + background: transparent url('right.png') bottom right no-repeat; +} + +div.nextthumb a img,div.prevthumb a img { + Filter: Gray; /* IE - I wish we had that in gecko */ +} + +div.nextthumb a:hover img,div.prevthumb a:hover img { + border: 2px solid #ffb02f; + margin: 0px; + Filter: none; +} + +.exif { + color: #555; + margin: 20px auto 30px auto; + font-size: 8pt; + width: auto; + text-align: center; +} + +.exif tr td:first-child { + color: #babdb6; +} + +.exif td + td { + text-align: left; +} + +.exif span { + cursor: help; + border-bottom: 1px dotted #6b6c69; +} + +.exif a { + color: #9f4000; +} + +div#mqhq { + margin: 10px 2px 4px 0px; + height: 32px; +} + +div#mqhq a { + display: block; + border: 2px solid #6b6c69; + padding: 2px; + font-size: 10px; + background-color: #ffb02f; + color: black; + float: left; + width: 48px; + text-align: center; + margin: 2px; + -moz-border-radius: 3px; +} + +div#mqhq a:hover { + background-color: #2e3436; + border: 2px solid #ffb02f; + color: #ffb02f; +} + +div.stylenavbar { + position:absolute; + top: 0px; + right: 0px; + font-size: 9px; + padding: 4px; + opacity: 0.4; +} + +p.archives { + padding-top: 20px; + font-size: 9pt; + color: #444; +} + +p.archives a { + padding-left: 20px; + background: transparent url("zip-inactive.png") top left no-repeat; + text-decoration: none; + padding-bottom: 2px; + border-bottom: 1px dotted #df900f; + opacity: 0.5; +} + +p.archives a:hover { + background: transparent url("zip.png") top left no-repeat; + opacity: 1; +} + +.accesskey { + text-decoration: underline; +} +/* Formatting of the user comment stuff */ + +form { + padding-bottom: 40px; + clear: both; +} + +form #comment_block { + clear: both; + color: #ccc; + font-size: 10px; +} + +#comment_block #showhideform { + font-size: x-small; + margin-bottom: 10px; +} + +#comment_form { + font-size: 9pt; + padding-top: 20px; + width: 420px; + margin-bottom: 20px; + -moz-border-radius: 3px; +} + +.row { + clear: both !important; +} + +div.label { + float: left; + width: 110px; +} + +.label a { + color: white; + cursor: help; + border-bottom: 1px dotted #6b6c69; + text-decoration: none; +} + +div.control { + padding: 4px; + float: right; + width: 270px; +} + +div.user_comment { + clear: both; + margin-top: 40px; + background-color: #3a3a3a; + padding: 10px; + -moz-border-radius: 7px; +} + +div.user_comment div.commentdata { + margin: 10px; + font-size: 10pt; + margin-bottom: 20px; +} + +div.user_comment div.name { + color: #666; + font-size: 9pt; + margin-bottom: 2px; +} +div.user_comment div.name em { + font-weight: bold; +} + +textarea, input[type="text"] { + font-family: Georgia, "Bitstream Vera Sans", sans-serif; + font-size: 9pt; + color: #eeeeec; + background-color: #5b5c59; + -moz-border-radius: 3px; + border: 1px solid #888; + width: 100%; + padding: 4px; +} +input[type="submit"] { + -moz-border-radius: 3px; + border: 1px solid #888; + padding: 4px; + background-color: #5b5c59; + font-family: Georgia, "Bitstream Vera Sans", sans-serif; + font-size: 10pt; + color: #eeeeec; +} + + diff --git a/www/inc/styles/dark/hascomments.png b/www/inc/styles/dark/hascomments.png Binary files differnew file mode 100644 index 0000000..44729de --- /dev/null +++ b/www/inc/styles/dark/hascomments.png diff --git a/www/inc/styles/dark/home-inactive.png b/www/inc/styles/dark/home-inactive.png Binary files differnew file mode 100644 index 0000000..16718e2 --- /dev/null +++ b/www/inc/styles/dark/home-inactive.png diff --git a/www/inc/styles/dark/home.png b/www/inc/styles/dark/home.png Binary files differnew file mode 100644 index 0000000..d1f87e9 --- /dev/null +++ b/www/inc/styles/dark/home.png diff --git a/www/inc/styles/dark/left-16.png b/www/inc/styles/dark/left-16.png Binary files differnew file mode 100644 index 0000000..625a1ab --- /dev/null +++ b/www/inc/styles/dark/left-16.png diff --git a/www/inc/styles/dark/left-inactive.png b/www/inc/styles/dark/left-inactive.png Binary files differnew file mode 100644 index 0000000..38f572d --- /dev/null +++ b/www/inc/styles/dark/left-inactive.png diff --git a/www/inc/styles/dark/left.png b/www/inc/styles/dark/left.png Binary files differnew file mode 100644 index 0000000..62985d9 --- /dev/null +++ b/www/inc/styles/dark/left.png diff --git a/www/inc/styles/dark/logo-mini.png b/www/inc/styles/dark/logo-mini.png Binary files differnew file mode 100644 index 0000000..8949154 --- /dev/null +++ b/www/inc/styles/dark/logo-mini.png diff --git a/www/inc/styles/dark/minus-inactive.png b/www/inc/styles/dark/minus-inactive.png Binary files differnew file mode 100644 index 0000000..e29159f --- /dev/null +++ b/www/inc/styles/dark/minus-inactive.png diff --git a/www/inc/styles/dark/minus.png b/www/inc/styles/dark/minus.png Binary files differnew file mode 100644 index 0000000..c0f3241 --- /dev/null +++ b/www/inc/styles/dark/minus.png diff --git a/www/inc/styles/dark/plus-inactive.png b/www/inc/styles/dark/plus-inactive.png Binary files differnew file mode 100644 index 0000000..57a6186 --- /dev/null +++ b/www/inc/styles/dark/plus-inactive.png diff --git a/www/inc/styles/dark/plus.png b/www/inc/styles/dark/plus.png Binary files differnew file mode 100644 index 0000000..10332ae --- /dev/null +++ b/www/inc/styles/dark/plus.png diff --git a/www/inc/styles/dark/restricted-inactive.png b/www/inc/styles/dark/restricted-inactive.png Binary files differnew file mode 100644 index 0000000..b572e84 --- /dev/null +++ b/www/inc/styles/dark/restricted-inactive.png diff --git a/www/inc/styles/dark/restricted.png b/www/inc/styles/dark/restricted.png Binary files differnew file mode 100644 index 0000000..99bd4d5 --- /dev/null +++ b/www/inc/styles/dark/restricted.png diff --git a/www/inc/styles/dark/right-16.png b/www/inc/styles/dark/right-16.png Binary files differnew file mode 100644 index 0000000..42e783f --- /dev/null +++ b/www/inc/styles/dark/right-16.png diff --git a/www/inc/styles/dark/right-inactive.png b/www/inc/styles/dark/right-inactive.png Binary files differnew file mode 100644 index 0000000..ceb394f --- /dev/null +++ b/www/inc/styles/dark/right-inactive.png diff --git a/www/inc/styles/dark/right.png b/www/inc/styles/dark/right.png Binary files differnew file mode 100644 index 0000000..a656dc3 --- /dev/null +++ b/www/inc/styles/dark/right.png diff --git a/www/inc/styles/dark/title.png b/www/inc/styles/dark/title.png Binary files differnew file mode 100644 index 0000000..45286e0 --- /dev/null +++ b/www/inc/styles/dark/title.png diff --git a/www/inc/styles/dark/zip-inactive.png b/www/inc/styles/dark/zip-inactive.png Binary files differnew file mode 100644 index 0000000..547dceb --- /dev/null +++ b/www/inc/styles/dark/zip-inactive.png diff --git a/www/inc/styles/dark/zip.png b/www/inc/styles/dark/zip.png Binary files differnew file mode 100644 index 0000000..1c3bda1 --- /dev/null +++ b/www/inc/styles/dark/zip.png diff --git a/www/inc/styles/default/bcg.png b/www/inc/styles/default/bcg.png Binary files differnew file mode 100644 index 0000000..d4f7ac8 --- /dev/null +++ b/www/inc/styles/default/bcg.png diff --git a/www/inc/styles/default/default.css b/www/inc/styles/default/default.css new file mode 100644 index 0000000..4ff7fb6 --- /dev/null +++ b/www/inc/styles/default/default.css @@ -0,0 +1,386 @@ +/* Default stylesheet + ================== + + The default stylesheet needed a remake. Photos + simply look better on dark background. The color + scheme is derived form the Novell palette. + + Should not crash Internet Explorer anymore. + + stylesheet & artwork + (c) 2004 Jakub 'jimmac' Steiner + +*/ + +body { + /* + margin: 0px 50px 0px 50px; + width: auto; + */ + margin: 20px 20px 20px 100px; + font-family: Georgia, "Bitstream Vera Sans", sans-serif; + font-size: 13pt; + color: #eeeeec; + background: #2e3436 url('title.png') top left no-repeat fixed; +} + +img { + border: 0px; +} + +a:link { + color: #ffb02f; +} + +a:visited { + color: #e88000; +} + +a:hover { + color: #ffcc7a; +} + + +h1.title { + display: none; +} + +/* mini thumbnails */ + +div.thumbroll { + margin: 10px 0px 4px 0px; + min-height: 29px; +} + +div.thumbroll img { + border: 1px solid #6b6c69; + -moz-border-radius: 3px; + Filter: Gray; /* IE only */ +} + +div.thumbroll a:hover img { + border: 1px solid #ffb02f; + Filter: none; +} + +a#minus,a#plus { + display: block; + position: relative; + float: left; + width:16px; + height:16px; + margin:0px; padding:0px; +} + +a#minus { + background: url("minus-inactive.png") top left no-repeat; +} + +a#minus:hover { + background: url("minus.png") top left no-repeat; +} + +a#plus { + background: url("plus-inactive.png") top left no-repeat; +} + +a#plus:hover { + background: url("plus.png") top left no-repeat; +} + +a#zip { + display: inline-block; + position: relative; + width:16px; + height:16px; + margin:0px; padding:0px; + font-size: 9px; + color: #2e3436; +} + +a#zip span { + background: url("zip-inactive.png") top left no-repeat; + position:absolute; left:0; top:0; z-index:1; + width:16px; height:16px; +} + +a#zip:hover span { + background: url("zip.png") top left no-repeat; +} + +p span.desc, p span.author { + font-size: 10px; + margin-left: 10px; +} + +p span.date { + font-size: 9px; + margin-left: 80px; + color: #777; +} + +/* in the thumbnail page */ + +div#info { + font-size: 11px; +} + +div#info span.key { + font-weight: bold; +} + +p.bigthumbnails { + text-align: left; +} + +p.bigthumbnails img { + padding: 10px 4px; + background-color: #232729; + margin: 1px; + border: 1px solid #6b6c69; + -moz-border-radius: 3px; + /* Neat, but too slow + opacity: .5; + */ + Filter: Gray; /* IE - I wish we had that in gecko */ +} + +p.bigthumbnails a:hover img { + margin: 0px; + border: 2px solid #ffb02f; + Filter: none; /* IE */ +} + + + + +div.navigation { + margin-top: 20px; + background-color: #5b5c59; + width: 100%; + padding: 5px; + font-size: 12px; + -moz-border-radius: 3px; +} + +div.navigation a:first-child { + padding-left: 24px; + background: url('home-inactive.png') top left no-repeat; +} + +div.navigation a:first-child:hover { + background: url('home.png') top left no-repeat; +} + +div.footer { + font-size: 11px; + width: 100%; + margin-top: 20px; + padding: 5px 5px 20px 5px; + clear: both; + border-top: 1px dotted #6b6c69; + color: #6b6c69; +} + +div.year { + color: #6b6c69; + font-size: 13pt; + float: left; + margin: 10px; +} + +div.month { + color: #babdb6; + margin: 0px 0px 0px 2em; + padding: 2px; +} + +div.month h4 { + margin: 10px 0px 5px 0px; +} + +/* ul won't work on safari with float: left */ +div.month p { + margin: 2px; + padding: 4px 4px 6px 6px; + list-style: none; + font-size: 12px; + border: 1px solid #444; + -moz-border-radius: 5px; +} + +div.month p.restricted>a { + background: transparent url("restricted-inactive.png") top left no-repeat; + padding: 0px 0px 3px 14px; +} + + +div.month p.restricted>a:hover { + background: transparent url("restricted.png") top left no-repeat; +} + +div#image { + /* width: 800px; */ + display: block; + position: relative; + clear: both; +} + +img#preview { + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + border: 10px solid #232729; + background-color: #6b6c69; + padding: 1px; + -moz-border-radius: 7px; + left: 0px; + margin-left: auto; + margin-right: auto; +} + +* html img#preview { /* should only match on IE; how pathetic */ + margin-left: -320px; + left: 50%; +} + +div.comment { + margin: 2px 0px; + color: #babdb6; + font-size: 12px; +} + +div.comment span { + color: #6b6c69; + font-weight: bold; + font-size: 12px; +} + +div.navbuttons { + display: none; +} + +div.prevthumb { + position: absolute; + margin-bottom: 1em; + font-size: 10px; + top: 40%; + left: 0px; + text-align: right; + padding: 4px; + /* background-color: #2e3436; */ + background-color: #232729; + -moz-border-radius: 5px; + border: 1px solid #6b6c69; + opacity: .7; /* gecko, khtml */ + filter: alpha(opacity=70); /* IE */ +} + +div.nextthumb { + position: absolute; + margin-bottom: 1em; + font-size: 10px; + right: 0px; + top: 40%; + margin-left: auto; + padding: 4px; + /* background-color: #2e3436; */ + background-color: #232729; + -moz-border-radius: 5px; + border: 1px solid #6b6c69; + opacity: .7; /* gecko, khtml */ + filter: alpha(opacity=70); /* IE */ +} + +div.nextthumb img, div.prevthumb img { + margin: 1px; + border: 1px solid #6b6c69; + -moz-border-radius: 3px; +} + +div.prevthumb a { + display: block; + text-decoration: none; + background: transparent url('left-inactive.png') bottom left no-repeat; + padding: 2px; +} + +div.nextthumb a { + display: block; + text-decoration: none; + background: transparent url('right-inactive.png') bottom right no-repeat; + padding: 2px; +} + +div.prevthumb a:hover { + background: transparent url('left.png') bottom left no-repeat; +} + +div.nextthumb a:hover { + background: transparent url('right.png') bottom right no-repeat; +} + +div.nextthumb a img,div.prevthumb a img { + Filter: Gray; /* IE - I wish we had that in gecko */ +} + +div.nextthumb a:hover img,div.prevthumb a:hover img { + border: 2px solid #ffb02f; + margin: 0px; + Filter: none; +} + +.exif { + margin-top: 20px; + font-size: 12px; + margin-left: auto; + margin-right: auto; + width: auto; + text-align: center; +} + +.exif tr td:first-child { + color: #babdb6; +} + +.exif td + td { + text-align: left; +} + +.exif span { + cursor: help; + border-bottom: 1px dotted #6b6c69; +} + +div#mqhq { + margin: 10px 2px 4px 0px; + height: 32px; +} + +div#mqhq a { + display: block; + border: 2px solid #6b6c69; + padding: 2px; + font-size: 10px; + background-color: #ffb02f; + color: black; + float: left; + width: 48px; + text-align: center; + margin: 2px; + -moz-border-radius: 3px; +} + +div#mqhq a:hover { + background-color: #2e3436; + border: 2px solid #ffb02f; + color: #ffb02f; +} + +div.stylenavbar { + position:relative; + font-size: 9px; + margin: 4px 0px; + padding-bottom: 0px; +} diff --git a/www/inc/styles/default/home-inactive.png b/www/inc/styles/default/home-inactive.png Binary files differnew file mode 100644 index 0000000..1d756bd --- /dev/null +++ b/www/inc/styles/default/home-inactive.png diff --git a/www/inc/styles/default/home.png b/www/inc/styles/default/home.png Binary files differnew file mode 100644 index 0000000..46fce7c --- /dev/null +++ b/www/inc/styles/default/home.png diff --git a/www/inc/styles/default/left-16.png b/www/inc/styles/default/left-16.png Binary files differnew file mode 100644 index 0000000..625a1ab --- /dev/null +++ b/www/inc/styles/default/left-16.png diff --git a/www/inc/styles/default/left-inactive.png b/www/inc/styles/default/left-inactive.png Binary files differnew file mode 100644 index 0000000..38f572d --- /dev/null +++ b/www/inc/styles/default/left-inactive.png diff --git a/www/inc/styles/default/left.png b/www/inc/styles/default/left.png Binary files differnew file mode 100644 index 0000000..62985d9 --- /dev/null +++ b/www/inc/styles/default/left.png diff --git a/www/inc/styles/default/logo-mini.png b/www/inc/styles/default/logo-mini.png Binary files differnew file mode 100644 index 0000000..8949154 --- /dev/null +++ b/www/inc/styles/default/logo-mini.png diff --git a/www/inc/styles/default/minus-inactive.png b/www/inc/styles/default/minus-inactive.png Binary files differnew file mode 100644 index 0000000..e29159f --- /dev/null +++ b/www/inc/styles/default/minus-inactive.png diff --git a/www/inc/styles/default/minus.png b/www/inc/styles/default/minus.png Binary files differnew file mode 100644 index 0000000..c0f3241 --- /dev/null +++ b/www/inc/styles/default/minus.png diff --git a/www/inc/styles/default/plus-inactive.png b/www/inc/styles/default/plus-inactive.png Binary files differnew file mode 100644 index 0000000..57a6186 --- /dev/null +++ b/www/inc/styles/default/plus-inactive.png diff --git a/www/inc/styles/default/plus.png b/www/inc/styles/default/plus.png Binary files differnew file mode 100644 index 0000000..10332ae --- /dev/null +++ b/www/inc/styles/default/plus.png diff --git a/www/inc/styles/default/restricted-inactive.png b/www/inc/styles/default/restricted-inactive.png Binary files differnew file mode 100644 index 0000000..ccd0268 --- /dev/null +++ b/www/inc/styles/default/restricted-inactive.png diff --git a/www/inc/styles/default/restricted.png b/www/inc/styles/default/restricted.png Binary files differnew file mode 100644 index 0000000..23ad5b5 --- /dev/null +++ b/www/inc/styles/default/restricted.png diff --git a/www/inc/styles/default/right-16.png b/www/inc/styles/default/right-16.png Binary files differnew file mode 100644 index 0000000..42e783f --- /dev/null +++ b/www/inc/styles/default/right-16.png diff --git a/www/inc/styles/default/right-inactive.png b/www/inc/styles/default/right-inactive.png Binary files differnew file mode 100644 index 0000000..ceb394f --- /dev/null +++ b/www/inc/styles/default/right-inactive.png diff --git a/www/inc/styles/default/right.png b/www/inc/styles/default/right.png Binary files differnew file mode 100644 index 0000000..a656dc3 --- /dev/null +++ b/www/inc/styles/default/right.png diff --git a/www/inc/styles/default/title.png b/www/inc/styles/default/title.png Binary files differnew file mode 100644 index 0000000..45286e0 --- /dev/null +++ b/www/inc/styles/default/title.png diff --git a/www/inc/styles/default/zip-inactive.png b/www/inc/styles/default/zip-inactive.png Binary files differnew file mode 100644 index 0000000..547dceb --- /dev/null +++ b/www/inc/styles/default/zip-inactive.png diff --git a/www/inc/styles/default/zip.png b/www/inc/styles/default/zip.png Binary files differnew file mode 100644 index 0000000..1c3bda1 --- /dev/null +++ b/www/inc/styles/default/zip.png diff --git a/www/inc/styles/gorilla/gorilla.css b/www/inc/styles/gorilla/gorilla.css new file mode 100644 index 0000000..0b8cc9b --- /dev/null +++ b/www/inc/styles/gorilla/gorilla.css @@ -0,0 +1,350 @@ +/* Gorilla stylesheet + ================== + + stylesheet & artwork + (c) 2003 Jakub 'jimmac' Steiner + + bugs/TODO: + + * navbuttons overlap minithubroll if there are many images +*/ + +body { + background-color: #dedfce; + margin: 0px 50px 0px 50px; + width: auto; + /* + margin: auto; + width: 780px; + */ + font-family: "Bitstream Vera Sans", sans-serif; + font-size: 10pt; + color: #000000; +} + +img { + border: 0px; +} + +.bigthumbnails img { + width: inherit; + height: inherit; +} + +a { +} + +a:hover { +} + +h1.title { + background-color: black; + font-size: 16pt; + color: #808080; + width: 100%; + margin-bottom: 0px; + padding: 5px; + +} + +.title a { + display: block; + position:relative; + width:100%; + height:48px; + margin:0; padding:0; +} + +.title a span { + /* this overlays text below with an image */ + display: block; + position:absolute; left:0; top:0; z-index:1; + width:400px; height:48px; + margin:0; padding:0; + background-image: url('title.png'); + background-position: top left; + background-repeat: no-repeat; +} + +div.thumbroll { + position: relative; + margin: 10px 0px 4px 0px; + min-height: 28px; +} + +a#minus,a#plus { + display: block; + position: relative; + float: left; + width:24px; + height:24px; + margin:0px; padding:0px; +} + +a#minus { + background: url("minus.png") top left no-repeat; +} + +a#plus { + background: url("plus.png") top left no-repeat; +} + + +.month p { + display: block; + min-width: 300px; +} + +p span.desc, p span.author { + font-size: 10px; + margin-left: 5px; +} + +.month p>a:after, p span.desc:after, p span.author:after { + content: ", "; +} + +p span.date { + font-size: 9px; + margin-left: 5px; + color: #777; +} + + +.navigation { + background-color: #505050; + width: 100%; + padding: 5px; + font-size: 10px; + clear: both; +} + +.navigation a { + color: #a0a0a0; + font-weight: bold; +} + +div.footer { + font-size: 9px; + background-color: #d9dac9; + width: 100%; + margin-top: 2em; + padding: 5px 5px 20px 5px; + clear: both; +} + +div.year { + font-size: 11pt; + float: left; + margin: 10px; +} + +div.month { + margin: 0px 0px 0px 2em; + padding: 2px; +} + +div.month h4 { + margin: 0px 0px 3px 0px; +} + +/* ul won't work on safari with float: left */ +div.month p { + margin: 2px; + padding: 0px 0px 0px 6px; + list-style: none; + font-size: 10px; +} + +div#image { + position: relative; + display: block; + clear: both; + margin-left: auto; + margin-right: auto; + /* border: 1px solid black; */ + min-height: 480px; /* only works in gecko :/ */ + height: 500px; +} + +img#preview { + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + margin-left: auto; + margin-right: auto; + /* margin-left: -320px; later fixed by javascript; what a kludge this was */ +} + +div.comment { + margin: 2em 0px; + color: #808080; + font-size: 9px; +} + +div.comment span { + color: black; + font-weight: bold; + font-size: 10px; +} + +div.prevthumb,div.nextthumb { + position: absolute; + margin-bottom: 1em; + width: 120px; + height: 140px; +} + +div.prevthub { + top: 0px; + left: 0px; + text-align: right; +} + +div.nextthumb { + margin-left: auto; + right: 0px; + top: 0px; +} + +div.nextthumb a,div.prevthumb a { + text-decoration: none; +} + +.exif { + display: block; + width: 400px; + margin: 0px auto; + padding: 4px; + background-color: #d9dac9; +} + +.exif span { + cursor: help; + border-bottom: 1px dotted gray; +} + +div#mqhq a { + display: block; + border: 2px solid black; + padding: 2px; + font-size: 10px; + font-weight: bold; + background-color: #d1940c; + color: black; + float: left; + width: 48px; + text-align: center; + margin: 2px; + +} + +div.navbuttons { + position: absolute; + top: 140px; left: 50%; + margin-left: -50px; + width: 64px; height: 32px; + z-index: 1; +} + +div.navbuttonsshell { + position: relative; + width: 100%; + margin: 2px; +} + +div.navbuttonsshell a#previcon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px; padding: 0; + top: 0px; + left: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the oveflow text */ + background: url("left.png") top left no-repeat; /* have a pixmap */ +} + +div.navbuttonsshell a#nexticon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px 4px 2px auto; padding: 0; + right: 4px; top: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the overflow text */ + background: url("right.png") top left no-repeat; /* have a pixmap */ +} +div#mqhq { + margin: 2px 2px 4px 0px; + height: 32px; +} + +div.stylenavbar { + position:relative; + /* + left: 0px; + right: auto; + top:auto; + bottom:0px; + */ + margin: 2px; + font-size: 9px; +} + +/* Formatting of the user comments */ + +div#comment_block { + margin-bottom: 40px; +} + +div#comment_form { + margin-top: 1em; +} + +div.commentdata { + padding-left: 1em; + color: black; + margin-bottom: 2em; +} + +div.user_comment { + background-color: #d9dac9; + padding: 4px; +} + +div.name { + color: gray; + font-size: 9pt; + margin-bottom: 2px; +} + +textarea, input { + font-family: "Bitstream Vera Sans", sans-serif; + font-size: 10pt; +} + +input[type="text"],textarea { + width: 300px; +} + +div.row { + margin-bottom: 1em; + } + +div.label { + margin-bottom: 4px; +} + +div.label a { + text-decoration: none; + cursor: help; + color: black; + border-bottom: 1px dotted gray; +} diff --git a/www/inc/styles/gorilla/left.png b/www/inc/styles/gorilla/left.png Binary files differnew file mode 100644 index 0000000..63d306c --- /dev/null +++ b/www/inc/styles/gorilla/left.png diff --git a/www/inc/styles/gorilla/minus.png b/www/inc/styles/gorilla/minus.png Binary files differnew file mode 100644 index 0000000..bc7a830 --- /dev/null +++ b/www/inc/styles/gorilla/minus.png diff --git a/www/inc/styles/gorilla/plus.png b/www/inc/styles/gorilla/plus.png Binary files differnew file mode 100644 index 0000000..6b103cd --- /dev/null +++ b/www/inc/styles/gorilla/plus.png diff --git a/www/inc/styles/gorilla/right.png b/www/inc/styles/gorilla/right.png Binary files differnew file mode 100644 index 0000000..f998098 --- /dev/null +++ b/www/inc/styles/gorilla/right.png diff --git a/www/inc/styles/gorilla/title.png b/www/inc/styles/gorilla/title.png Binary files differnew file mode 100644 index 0000000..275528f --- /dev/null +++ b/www/inc/styles/gorilla/title.png diff --git a/www/inc/styles/grey/grey.css b/www/inc/styles/grey/grey.css new file mode 100644 index 0000000..9b23168 --- /dev/null +++ b/www/inc/styles/grey/grey.css @@ -0,0 +1,258 @@ +/* Gorilla stylesheet + ================== + + stylesheet & artwork + (c) 2003 Jakub 'jimmac' Steiner + + bugs/TODO: + + * navbuttons overlap minithubroll if there's many images +*/ + +body { + background-color: #dedfce; + margin: 0px 50px 0px 50px; + width: auto; + /* + margin: auto; + width: 780px; + */ + font-family: "Bitstream Vera Sans", sans-serif; + font-size: 10pt; +} + +img { + border: 0px; +} + +a { +} + +a:hover { +} + +h1.title { + background-color: black; + font-size: 16pt; + color: #808080; + width: 100%; + margin-bottom: 0px; + padding: 5px; + +} + +.title a { + display: block; + position:relative; + width:100%; + height:48px; + margin:0; padding:0; +} + +.title a span { + /* this overlays text below with an image */ + display: block; + position:absolute; left:0; top:0; z-index:1; + width:400px; height:48px; + margin:0; padding:0; + background-image: url("title.png"); + background-attachment: top left; + background-repeat: no-repeat; +} + +div.thumbroll { + position: relative; + margin: 10px 0px 4px 0px; + min-height: 28px; +} + +a#minus,a#plus { + display: block; + position: relative; + float: left; + width:24px; + height:24px; + margin:0px; padding:0px; +} + +a#minus { + background: url("minus.png") top left no-repeat; +} + +a#plus { + background: url("plus.png") top left no-repeat; +} + +.navigation { + background-color: #505050; + width: 100%; + padding: 5px; + font-size: 10px; + clear: both; +} + +.navigation a { + color: #a0a0a0; + font-weight: bold; +} + +div.footer { + font-size: 9px; + background-color: #d9dac9; + width: 100%; + margin-top: 2em; + padding: 5px 5px 20px 5px; + clear: both; +} + +div.year { + font-size: 11pt; + float: left; + margin: 10px; +} + +div.month { + margin: 0px 0px 0px 2em; + padding: 2px; +} + +div.month h4 { + margin: 0px 0px 3px 0px; +} + +/* ul won't work on safari with float: left */ +div.month p { + margin: 2px; + padding: 0px 0px 0px 6px; + list-style: none; + font-size: 10px; +} + +div#image { + position: relative; + display: block; + clear: both; + margin-left: auto; + margin-right: auto; + /* border: 1px solid black; */ + min-height: 480px; /* only works in gecko :/ */ + height: 500px; +} + +img#preview { + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + margin-left: auto; + margin-right: auto; + /* margin-left: -320px; later fixed by javascript; what a kludge this was */ +} + +div.comment { + margin: 2em 0px; + color: #808080; + font-size: 9px; +} + +div.comment span { + color: black; + font-weight: bold; + font-size: 10px; +} + +div.prevthumb,div.nextthumb { + position: absolute; + margin-bottom: 1em; + width: 120px; + height: 140px; +} + +div.prevthub { + top: 0px; + left: 0px; + text-align: right; +} + +div.nextthumb { + margin-left: auto; + right: 0px; + top: 0px; +} + +div.nextthumb a,div.prevthumb a { + text-decoration: none; +} + +div#mqhq a { + display: block; + border: 2px solid black; + padding: 2px; + font-size: 10px; + font-weight: bold; + background-color: #d1940c; + color: black; + float: left; + width: 48px; + text-align: center; + margin: 2px; + +} + +div.navbuttons { + position: absolute; + top: 140px; left: 50%; + margin-left: -50px; + width: 64px; height: 32px; + z-index: 1; +} + +div.navbuttonsshell { + position: relative; + width: 100%; + margin: 2px; +} + +div.navbuttonsshell a#previcon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px; padding: 0; + top: 0px; + left: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the oveflow text */ + background: url("left.png") top left no-repeat; /* have a pixmap */ +} + +div.navbuttonsshell a#nexticon { + display: block; + position: absolute; + width: 24px; height: 24px; + margin: 2px 4px 2px auto; padding: 0; + right: 4px; top: 0px; + color: #f6f6f6; + font-size: 30px; /* make unreadable */ + text-indent: 2em; /* push it off screen, since khtml doesn't do 0px fonts */ + overflow: hidden; /* hide the overflow text */ + background: url("right.png") top left no-repeat; /* have a pixmap */ +} +div#mqhq { + margin: 2px 2px 4px 0px; + height: 32px; +} + +div.stylenavbar { + position:relative; + /* + left: 0px; + right: auto; + top:auto; + bottom:0px; + */ + margin: 2px; + font-size: 9px; +} diff --git a/www/inc/styles/grey/left.png b/www/inc/styles/grey/left.png Binary files differnew file mode 100644 index 0000000..63d306c --- /dev/null +++ b/www/inc/styles/grey/left.png diff --git a/www/inc/styles/grey/minus.png b/www/inc/styles/grey/minus.png Binary files differnew file mode 100644 index 0000000..bc7a830 --- /dev/null +++ b/www/inc/styles/grey/minus.png diff --git a/www/inc/styles/grey/plus.png b/www/inc/styles/grey/plus.png Binary files differnew file mode 100644 index 0000000..6b103cd --- /dev/null +++ b/www/inc/styles/grey/plus.png diff --git a/www/inc/styles/grey/right.png b/www/inc/styles/grey/right.png Binary files differnew file mode 100644 index 0000000..f998098 --- /dev/null +++ b/www/inc/styles/grey/right.png diff --git a/www/inc/styles/grey/title.png b/www/inc/styles/grey/title.png Binary files differnew file mode 100644 index 0000000..275528f --- /dev/null +++ b/www/inc/styles/grey/title.png diff --git a/www/inc/styles/ie/ie.css b/www/inc/styles/ie/ie.css new file mode 100644 index 0000000..36cd2c4 --- /dev/null +++ b/www/inc/styles/ie/ie.css @@ -0,0 +1,8 @@ +/* IE sucks; this is the only stylesheet doesn't crash it + this is low priority for me; if you want a nice stylesheet for IE + (if such thing can be written), please send a patch to jimmac@ximian.com +*/ + +body { + font-family: Verdana, Sans-Serif; +} diff --git a/www/inc/styles/ie7/README.txt b/www/inc/styles/ie7/README.txt new file mode 100644 index 0000000..63aaa70 --- /dev/null +++ b/www/inc/styles/ie7/README.txt @@ -0,0 +1,28 @@ +Installation +------------ + +Follow these simple instructions to get IE7 working immediately on your server: + + * download the latest IE7 ZIP file (https://sourceforge.net/project/showfiles.php?group_id=109983&package_id=119707) + + * extract the contents to a directory on your server (keep the folder names used in the ZIP) + + * you will now have an IE7 directory on your server + + * include the IE7 JavaScript library in the page you wish to test + + <!-- compliance patch for microsoft browsers --> + <!--[if lt IE 7]><script src="/ie7/ie7-standard-p.js" type="text/javascript"></script><![endif]--> + + * make sure this also points to the same directory + + * open the page in your web browser + + * the page should now be IE7 enabled. + +You may extract the contents of the ZIP file to your hard disk if you do not have access to a web server. + + +Enjoy ;-) + +Dean Edwards, 17th August 2004 diff --git a/www/inc/styles/ie7/blank.gif b/www/inc/styles/ie7/blank.gif Binary files differnew file mode 100644 index 0000000..a4fe2e6 --- /dev/null +++ b/www/inc/styles/ie7/blank.gif diff --git a/www/inc/styles/ie7/ie7-box-model.js b/www/inc/styles/ie7/ie7-box-model.js new file mode 100644 index 0000000..0ae71bb --- /dev/null +++ b/www/inc/styles/ie7/ie7-box-model.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(window.IE7)IE7.addModule("ie7-box-model",function(){var NUMERIC="\x5cs*:\x5cs*\x5cd[\x5cw%]*",UNIT=/^\d\w*$/,PERCENT=/^\d+%$/,PIXEL=/^\d+(px)?$/;var MATCH=(appVersion<6)?/\b(min|max)-(width|height)\s*:\s*\d/gi:/\b(min|max)-width\s*:\s*\d/gi;var AUTO=(appVersion<5.5)?/^auto|0cm$/:/^auto$/;var ie7_tmp=tmpElement();push(IE7.recalcs,function removeTempElement(){if(ie7_tmp.parentElement)ie7_tmp.parentElement.removeChild(ie7_tmp)});CSSFixes.addFix(MATCH,function(match){return match.slice(0,3)+match.charAt(4).toUpperCase()+match.slice(5)});var viewport=(quirksMode)?document.body:documentElement;function isFixed(element){return element.style.position=="fixed"||element.currentStyle.position=="fixed"};function layoutParent(element){var layoutParent=element.offsetParent;while(layoutParent&&!hasLayout(layoutParent))layoutParent=layoutParent.offsetParent;if(!layoutParent||isFixed(element))layoutParent=viewport;return layoutParent};function fixWidth(HEIGHT){fixWidth=function(element,value){if(!element.runtimeStyle.fixedWidth&&(!isHTML||element.tagName!="HR")){if(!value)value=element.currentStyle.width;element.runtimeStyle.fixedWidth=(UNIT.test(value))?Math.max(0,getFixedWidth(element,value)):value;element.runtimeStyle.width=element.runtimeStyle.fixedWidth;boxSizing(element)}};if(quirksMode)CSSFixes.addRecalc("width\x5cs*:\x5cs*\x5cd\x5cw*[^%]",fixWidth);var getFixedWidth=(quirksMode)?function(element,value){return getPixelWidth(element,value)+getBorderWidth(element)+getPaddingWidth(element)}:function(element,value){return getPixelWidth(element,value)};function getBorderWidth(element){return element.offsetWidth-element.clientWidth};function getPaddingWidth(element){return getPixelWidth(element,element.currentStyle.paddingLeft)+getPixelWidth(element,element.currentStyle.paddingRight)};function getMarginWidth(element){return((element.currentStyle.marginLeft=="auto")?0:getPixelLeft(element,element.currentStyle.marginLeft))+((element.currentStyle.marginRight=="auto")?0:getPixelLeft(element,element.currentStyle.marginRight))};function minWidth(element){minWidth[minWidth.count++]=element;if(element.currentStyle.minHeight=="auto")element.runtimeStyle.minHeight=0;fixWidth(element);boxSizing(element);resizeWidth(element)};minWidth.count=0;CSSFixes.addRecalc("min-width"+NUMERIC,minWidth);eval(String(minWidth).replace(/min/g,"max"));maxWidth.count=0;CSSFixes.addRecalc("max-width"+NUMERIC,maxWidth);function resizeWidth(element){var rect=element.getBoundingClientRect();var width=rect.right-rect.left;if(element.currentStyle.maxWidth&&width>=getFixedWidth(element,element.currentStyle.maxWidth))element.runtimeStyle.width=getFixedWidth(element,element.currentStyle.maxWidth);else if(element.currentStyle.minWidth&&width<=getFixedWidth(element,element.currentStyle.minWidth))element.runtimeStyle.width=getFixedWidth(element,element.currentStyle.minWidth);else element.runtimeStyle.width=element.runtimeStyle.fixedWidth};function fixRight(element){if((element.currentStyle.position=="absolute"||element.currentStyle.position=="fixed")&&element.currentStyle.left!="auto"&&element.currentStyle.right!="auto"&&AUTO.test(element.currentStyle.width)){fixRight[fixRight.count++]=element;boxSizing(element);resizeRight(element)}};fixRight.count=0;CSSFixes.addRecalc("right"+NUMERIC,fixRight);function resizeRight(element){element.runtimeStyle.width="";var parentElement=layoutParent(element);var left=(element.runtimeStyle.screenLeft)?element.getBoundingClientRect().left-2:getPixelLeft(element,element.currentStyle.left);var width=parentElement.clientWidth-getPixelLeft(element,element.currentStyle.right)-left-getMarginWidth(element);if(!quirksMode)width-=getBorderWidth(element)+getPaddingWidth(element);if(width<0)width=0;if(isFixed(element)||HEIGHT||element.offsetWidth<width){element.runtimeStyle.fixedWidth=width;element.runtimeStyle.width=width}};var clientWidth=documentElement.clientWidth;addEventHandler(window,"onresize",function(){var i,wider=(clientWidth<documentElement.clientWidth);clientWidth=documentElement.clientWidth;for(i=0;i<minWidth.count;i++){var element=minWidth[i];var fixedWidth=(element.runtimeStyle.width==element.currentStyle.minWidth);if(wider&&fixedWidth)element.runtimeStyle.width="";if(wider==fixedWidth)resizeWidth(element)}for(i=0;i<maxWidth.count;i++){var element=maxWidth[i];var fixedWidth=(element.runtimeStyle.width==element.currentStyle.maxWidth);if(!wider&&fixedWidth)element.runtimeStyle.width="";if(wider!=fixedWidth)resizeWidth(element)}for(i=0;i<fixRight.count;i++)resizeRight(fixRight[i]);removeTempElement()});function getPixelWidth(element,value){if(PIXEL.test(value))return parseInt(value);if(PERCENT.test(value))return parseInt(parseFloat(value)/100*layoutParent(element).clientWidth);var parentElement=(element.canHaveChildren)?element:element.parentElement;parentElement.appendChild(ie7_tmp);ie7_tmp.style.width=value;return ie7_tmp.offsetWidth};function getPixelLeft(element,value){if(parseInt(value)>0)return getPixelWidth(element,value);if(PIXEL.test(value))return parseInt(value);element.parentElement.appendChild(ie7_tmp);ie7_tmp.style.left=value;return ie7_tmp.offsetLeft}};eval(String(fixWidth).replace(/Width/g,"Height").replace(/width/g,"height").replace(/Left/g,"Top").replace(/left/g,"top").replace(/Right/g,"Bottom").replace(/right/g,"bottom"));fixWidth();fixHeight(true)});
diff --git a/www/inc/styles/ie7/ie7-core.js b/www/inc/styles/ie7/ie7-core.js new file mode 100644 index 0000000..91cf79a --- /dev/null +++ b/www/inc/styles/ie7/ie7-core.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(!window.IE7)new function(){try{window.IE7=this;var DUMMY=this.addModule=new Function;function unHide(){if(document.body)document.body.style.visibility="visible"};this.toString=function(){return "IE7 version 0.7.3 (alpha)"};var alert=(/ie7_debug/.test(location.search))?function(message){window.alert(IE7+"\n\n"+message)}:DUMMY;var appVersion=navigator.appVersion.match(/MSIE (\d\.\d)/)[1];if(/ie7_off/.test(location.search)||appVersion<5||!/^ms_/.test(document.documentElement.uniqueID))return unHide();var quirksMode=Boolean(document.compatMode!="CSS1Compat");var isHTML=(typeof document.mimeType=="unknown")?!/\.xml$/i.test(location.pathname):Boolean(document.mimeType!="XML Document");var LINKS=":link{ie7-link:link}:visited{ie7-link:visited}";var HEADER=LINKS;if(!isHTML)HEADER+="*{margin:0}";var HTMLFixes;var documentElement=document.documentElement;var modules={};this.addModule=function(name,script,autoload){if(!modules)return;if(loaded)eval("script="+String(script));if(autoload){script();script=DUMMY}modules[name]=script};var RELATIVE=/^[\w\.]+[^:]*$/;function makePath(href,path){if(RELATIVE.test(href))href=(path||"")+href;return href};function getPath(href,path){href=makePath(href,path);return href.slice(0,href.lastIndexOf("/")+1)};var path=getPath(document.scripts[document.scripts.length-1].src);var httpRequest=new ActiveXObject("Microsoft.XMLHTTP");function load(href,path){try{href=makePath(href,path);httpRequest.open("GET",href,false);httpRequest.send();return httpRequest.responseText}catch(ignore){alert("Error [1]: could not load file "+href);return ""}};var push=function(array,item){return array.push(item)};var pop=function(array){return array.pop()};if(appVersion<5.5)eval(load("ie7-ie5.js",path));if(document.readyState=="complete"||!isHTML)document.createStyleSheet();else document.write("<style></style>");this.styleSheet=document.styleSheets[document.styleSheets.length-1];this.styleSheet.cssText=LINKS;this.styleSheet.ie7=true;var cssText={};function loadStyleSheet(styleSheet,path){var url=makePath(styleSheet.href,path);if(cssText[url])return "";cssText[url]=(styleSheet.disabled)?"":fixUrls(getCSSText(styleSheet,path),getPath(styleSheet.href,path));return cssText[url]};var getCSSText=function(styleSheet){return styleSheet.cssText};var URL=/(url\(['"]?)([\w\.]+[^:\)]*['"]?\))/gi;function fixUrls(cssText,pathname){return cssText.replace(URL,"$1"+pathname.slice(0,pathname.lastIndexOf("/")+1)+"$2")};this.recalcs=[];this.parse=DUMMY;var complete=false;function _load(){try{complete=true;var MEDIA=/\bscreen\b|\ball\b|^$/i;var styleSheets=document.styleSheets;var inlineStyles=[];var styles=document.getElementsByTagName("style");for(var i=styles.length-1;i>=0;i--){push(inlineStyles,/ie7-link/.test(styles[i].innerHTML)?"":styles[i].innerHTML)}function getCSSText(styleSheet,path){var cssText="";if(MEDIA.test(styleSheet.media)){for(var i=0;i<styleSheet.imports.length;i++){cssText+=arguments.callee(styleSheet.imports[i],getPath(styleSheet.href,path))}cssText+=((styleSheet.href)?loadStyleSheet(styleSheet,path):pop(inlineStyles))}return cssText};IE7.cssText="";for(i=0;i<styleSheets.length;i++)IE7.cssText+=getCSSText(styleSheets[i],"");IE7.cssText=encode(IE7.cssText);for(i in modules)modules[i]();delete modules;if(HTMLFixes)HTMLFixes.apply();CSSFixes.apply();IE7.parse();IE7.styleSheet.cssText=HEADER+decode(IE7.cssText);for(i=0;i<styleSheets.length;i++){if(!styleSheets[i].disabled&&!styleSheets[i].ie7)styleSheets[i].cssText=""}IE7.recalc();alert("loaded successfully")}catch(error){alert("Error [2]: "+error.description)}finally{unHide()}};this.recalc=function(){CSSFixes.recalc();for(var i=0;i<this.recalcs.length;i++)this.recalcs[i]()};var CSSFixes=new function(){var fixes=[];this.addFix=function(){push(fixes,arguments)};var recalcs=[];this.addRecalc=function(pattern,fix){var reg=new RegExp("([^{}]*)\x5c{([^}]*[^\x5cw-])?"+pattern,"gi");var cssText=IE7.cssText;pattern=[];while(match=reg.exec(cssText)){push(pattern,match[1]);if(appVersion<5.5)cssText=cssText.slice(match.lastIndex)}if(pattern.length){pattern=pattern.toString();push(recalcs,arguments)}};this.apply=function(){for(var i=0;i<fixes.length;i++){IE7.cssText=IE7.cssText.replace(fixes[i][0],fixes[i][1])}this.addRecalc("box-sizing\x5cs*:\x5cs*content-box",boxSizing);this.addRecalc("position\x5cs*:\x5cs*absolute",function(element){if(element.offsetParent.currentStyle.position=="relative")boxSizing(element.offsetParent)})};this.recalc=function(){for(var i=0;i<recalcs.length;i++){var elements=cssQuery(recalcs[i][0]);for(var j=0;j<elements.length;j++)recalcs[i][1](elements[j])}};this.addFix(/(float\s*:\s*(left|right))/gi,"display:inline;$1");if(appVersion<6)this.addFix(/display\s*:\s*list-item/gi,"display:block");if(quirksMode){var SIZES="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");for(var i=0;i<SIZES.length;i++)SIZES[SIZES[i]]=SIZES[i-1]||"xx-small";function replace($,$1,$2,$3){return $1+SIZES[$3]};this.addFix(new RegExp("(font(-size)?\x5cs*:\x5cs*)("+SIZES.join("|")+")","gi"),replace)}};var STANDARD_SELECT=/^[^>\+~\s]/;var STREAM=/[\s>\+~:@#\.\(\)]|[^\s>\+~:@#\.\(\)]+/g;var NAMESPACE=/\|/;var IMPLIED_SELECTOR=/([\s>~\,]|[^(]\+|^)([\.:#@])/g;var ASTERISK="$1*$2";var cssCache={};function cssQuery(selector,from){var useCache=!from;var base=(from)?(from.constructor==Array)?from:[from]:[document];var selectors=selector.replace(IMPLIED_SELECTOR,ASTERISK).split(",");var match=[];for(var i=0;i<selectors.length;i++){selector=toStream(selectors[i]);if(selector.slice(0,3).join("")==" *#"){selector=selector.slice(2);from=selectById(base,selector[1])}else from=base;var j=0,token,filter,filterArgs,cacheSelector="";while(j<selector.length){token=selector[j++];filter=selector[j++];cacheSelector+=token+filter;filterArgs="";if(selector[j]=="("){while(selector[j++]!=")")filterArgs+=selector[j];filterArgs=filterArgs.slice(0,-1);cacheSelector+="("+filterArgs+")"}from=(useCache&&cssCache[cacheSelector])?cssCache[cacheSelector]:select(from,token,filter,filterArgs);if(useCache)cssCache[cacheSelector]=from}match=match.concat(from)}return match};function toStream(selector){if(STANDARD_SELECT.test(selector))selector=" "+selector;return selector.match(STREAM)};function select(from,token,filter,filterArgs){var scopeName="";if(NAMESPACE.test(filter)){filter=filter.split("|");scopeName=filter[0];filter=filter[1]}var filtered=[];if(selectors[token])selectors[token](filtered,from,filter,scopeName||filterArgs);return filtered};function selectById(from,id){var filtered=[],i,j;for(i=0;i<from.length;i++){var match=from[i].all.item(id);if(match){if(match.length==null)push(filtered,match);else for(j=0;j<match.length;j++)push(filtered,match[j])}}return filtered};var selectors={" ":function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var subset=(filter=="*"&&from[i].all)?from[i].all:from[i].getElementsByTagName(filter);for(var j=0;j<subset.length;j++){if(isElement(subset[j])&&(!scopeName||subset[j].scopeName==scopeName))push(filtered,subset[j])}}},"#":function(filtered,from,filter){for(var i=0;i<from.length;i++)if(from[i].id==filter)push(filtered,from[i])},".":function(filtered,from,filter){filter=new RegExp("(^|\x5cs)"+filter+"(\x5cs|$)");for(var i=0;i<from.length;i++)if(filter.test(from[i].className))push(filtered,from[i])},":":function(filtered,from,filter,filterArgs){filter=pseudoClasses[filter];if(filter)for(var i=0;i<from.length;i++)if(filter(from[i],filterArgs))push(filtered,from[i])}};var attributeTests="";var pseudoClasses={toString:function(){var toString=[];for(var pseudoClass in this){if(pseudoClass!="link"&&pseudoClass!="visited"){if(this[pseudoClass].length>1)pseudoClass+="\x5c([^)]*\x5c)";push(toString,pseudoClass)}}return toString.join("|")},"link":function(element){return Boolean(element.currentStyle["ie7-link"]=="link")},"visited":function(element){return Boolean(element.currentStyle["ie7-link"]=="visited")}};var dynamicPseudoClasses={toString:pseudoClasses.toString};function compareTagName(element,tagName,scopeName){if(scopeName&&element.scopeName!=scopeName)return false;return(tagName=="*")?isElement(element):(isHTML)?(element.tagName==tagName.toUpperCase()):(element.tagName==tagName)};var strings=[];function getString(string){return QUOTED.test(string)?strings[string.slice(1,-1)]:string};var encode=function(cssText){return cssText.replace(/(\x2f\*[^\*]*\*+([^\x2f][^\*]*\*+)*\x2f)|('[^']*')|("[^"]*")/g,function(match){return(match.charAt(0)=="/")?"":"'"+(push(strings,match.slice(1,-1))-1)+"'"}).replace(/@(namespace|import)[^;\n]+[;\n]|<!\-\-|\-\->/g,"").replace(/\x5c:/g,"|").replace(/^\s+|\s*([\{\}\+\,>~\s;])\s*|\s+$/g,"$1")};function decode(cssText){return cssText.replace(/\|/g,"\x5c:").replace(/'(\d+)'/g,function(match,key){return strings[key]})};var handlers=[];function addEventHandler(element,type,handler){element.attachEvent(type,handler);push(handlers,arguments)};function removeEventHandler(element,type,handler){try{element.detachEvent(type,handler)}catch(ignore){}};window.attachEvent("onbeforeunload",function(){while(handlers.length){var handler=pop(handlers);removeEventHandler(handler[0],handler[1],handler[2])}});var hasLayout=(appVersion<6)?function(element){return element.clientWidth}:function(element){return element.currentStyle.hasLayout};function boxSizing(element){if(!hasLayout(element)){element.contentEditable=false;fixMargins(firstChildElement(element))}};function fixMargins(element){while(element){element.runtimeStyle.marginTop=element.currentStyle.marginTop;element=nextElement(element)}};var QUOTED=/('[^']*')|("[^"]*")/;function quote(value){return(QUOTED.test(value))?value:"'"+value+"'"};function unquote(value){return(QUOTED.test(value))?value.slice(1,-1):value};function tmpElement(tagName){var element=document.createElement(tagName||"object");element.style.cssText="position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999";return element};function isElement(node){return Boolean(node&&node.nodeType==1&&node.tagName!="!"&&!node.ie7_anon)};function previousElement(element){while(element&&(element=element.previousSibling)&&!isElement(element))continue;return element};function nextElement(element){while(element&&(element=element.nextSibling)&&!isElement(element))continue;return element};function firstChildElement(element){element=element.firstChild;return(isElement(element))?element:nextElement(element)};var loaded=true;if(document.readyState=="complete")_load();else addEventHandler(document,"onreadystatechange",function(){if(!complete&&document.readyState=="complete")setTimeout(_load,0)})}catch(error){unHide();alert("Error [0]: "+error.description)}finally{}}();
diff --git a/www/inc/styles/ie7/ie7-css-strict.js b/www/inc/styles/ie7/ie7-css-strict.js new file mode 100644 index 0000000..7ed03d2 --- /dev/null +++ b/www/inc/styles/ie7/ie7-css-strict.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(window.IE7)IE7.addModule("ie7-strict",function(){if(!modules["ie7-css2"])return;var NONE=[],ID=/#/g,CLASS=/[:@\.]/g,TAG=/^\w|[\s>+~]\w/g;IE7.parser.parse=function(cssText){var DYNAMIC=new RegExp("(.*):("+dynamicPseudoClasses+")(.*)");function addRule(selector,cssText){var match=selector.match(DYNAMIC);if(match)new DynamicRule(selector,match[1],match[2],match[3],cssText);else new Rule(selector,cssText)};cssText=cssText.replace(IE7.PseudoElement.ALL,IE7.PseudoElement.ID);var RULE=/([^\{]+)\{(\d+)\}/g,match;while(match=RULE.exec(cssText)){addRule(match[1],match[2]);if(appVersion<5.5)cssText=cssText.slice(match.lastIndex)}IE7.classes.sort(Rule.compare);return IE7.classes.join("\n")};function Rule(selector,cssText){this.cssText=cssText;this.specificity=Rule.score(selector);this.inherit=IE7.Class;this.inherit(selector)};Rule.prototype=new IE7.Class.ancestor;Rule.prototype.toString=function(){return "."+this.name+"{"+this.cssText+"}"};Rule.score=function(selector){return(selector.match(ID)||NONE).length*10000+(selector.match(CLASS)||NONE).length*100+(selector.match(TAG)||NONE).length};Rule.compare=function(rule1,rule2){return rule1.specificity-rule2.specificity};function DynamicRule(selector,attach,dynamicPseudoClass,target,cssText){this.cssText=cssText;this.specificity=Rule.score(selector);this.inherit=IE7.DynamicStyle;this.inherit(selector,attach,dynamicPseudoClass,target)};DynamicRule.prototype=new IE7.DynamicStyle.ancestor;DynamicRule.prototype.toString=Rule.prototype.toString});
diff --git a/www/inc/styles/ie7/ie7-css2.js b/www/inc/styles/ie7/ie7-css2.js new file mode 100644 index 0000000..a9a03b7 --- /dev/null +++ b/www/inc/styles/ie7/ie7-css2.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(window.IE7)IE7.addModule("ie7-css2",function(){var CHILD=/>/g,ANCHOR=/(\ba(\.[\w-]+)?)$/i;IE7.classes=[];IE7.parser=new Parser;IE7.Class=Class;IE7.DynamicStyle=DynamicStyle;IE7.PseudoElement=PseudoElement;IE7.parse=function(){with(this.parser)this.cssText=decode(parse(encode(this.cssText)));for(var i=0;i<IE7.classes.length;i++)IE7.classes[i].exec();for(i=0;i<pseudoElements.length;i++)pseudoElements[i].create()};getCSSText=function(styleSheet,path){return load(styleSheet.href,path)};var encoded=[];function Parser(){this.parse=function(cssText){Class.ALL=new RegExp("[^},\x5cs]*([>+~][^:@,\x5cs{]+|:("+pseudoClasses+")|\x5c.[\x5cw-]+\x5c.[\x5cw-.]+|@[@\x5cd]+)","g");Class.COMPLEX=new RegExp("[^\x5cs(]+[+~]|@\x5cd+|:(link|visited|"+pseudoClasses+"|"+dynamicPseudoClasses+")|\x5c.[\x5cw-.]+","g");DynamicStyle.ALL=new RegExp("([^}]*):("+dynamicPseudoClasses+")([^{]*)","g");return cssText.replace(PseudoElement.ALL,PseudoElement.ID).replace(DynamicStyle.ALL,DynamicStyle.ID).replace(Class.ALL,Class.ID)};this.encode=function(cssText){AttributeSelector.ALL=new RegExp("\x5c[([^"+attributeTests+"=\x5c]]+)(["+attributeTests+"]?=?)([^\x5c]]+)?\x5c]","g");return cssText.replace(AttributeSelector.ALL,AttributeSelector.ID).replace(/\{[^\}]*\}/g,function($){return "{"+(push(encoded,$)-1)+"}"}).replace(/::/g,":").replace(/([^\}\s]*\,[^\{]*)(\{\d+\})/g,function(match,left,right){return left.split(",").join(right)+right})};this.decode=function(cssText){return cssText.replace(/\{(\d+)\}/g,function($,$1){return encoded[$1]})}};function _Class(){this.toString=function(){return "."+this.name};this.add=function(element){element.className+=" "+this.name};this.remove=function(element){element.className=element.className.replace(this.MATCH,"")};this.exec=function(){var match=cssQuery(this.selector);for(var i=0;i<match.length;i++)this.add(match[i])}};function Class(selector,cssText){this.id=IE7.classes.length;this.name=Class.PREFIX+this.id;this.selector=selector;this.MATCH=new RegExp("\x5cs"+this.name+"\x5cb","g");push(IE7.classes,this)};Class.ancestor=_Class;Class.prototype=new _Class;Class.PREFIX="ie7_";Class.ID=function(match){return simpleSelector(match)+new Class(match)};function _DynamicStyle(){this.exec=function(){var match=cssQuery(this.attach);for(var i=0;i<match.length;i++){var target=(this.target)?cssQuery(this.target,match[i]):[match[i]];if(target)this.dynamicPseudoClass(match[i],target,this)}}};_DynamicStyle.prototype=new _Class;function DynamicStyle(selector,attach,dynamicPseudoClass,target){this.attach=attach;this.dynamicPseudoClass=dynamicPseudoClasses[dynamicPseudoClass];this.target=target;this.inherit=Class;this.inherit(selector)};DynamicStyle.ancestor=_DynamicStyle;DynamicStyle.prototype=new _DynamicStyle;DynamicStyle.ID=function(match,attach,dynamicPseudoClass,target){if(isHTML&&dynamicPseudoClass!="focus"&&ANCHOR.test(attach)&&!/[+>~]/.test(target))return match;return simpleSelector(match)+new DynamicStyle(match,attach,dynamicPseudoClass,target)};HEADER+=".ie7_anon{vertical-align:top;display:inline}";var HEX=/\x5c([a-fA-F\d]+)/g;function unicode(match,code){return eval("'\x5cu"+"0000".slice(code.length)+code+"'")};var pseudoElements=[];function _PseudoElement(){this.content=null;this.toString=function(){return ""};this.specificity=0;function addTimer(object,content,cssText){var timer=setInterval(function(){try{if(!object.load)return;object.load(object,content,cssText);clearInterval(timer)}catch(ignore){clearInterval(timer)}},10)};this.create=function(){if(this.content==null)return;for(var i=0;i<this.match.length;i++){var target=this.match[i];var pseudoElement=target.runtimeStyle[this.position];if(pseudoElement){var parentElement=target.canHaveChildren?target:target.parentElement;var isURL=/^url\(.*\)$/.test(this.content);var element=document.createElement(isURL?PseudoElement.OBJECT:"!");element.ie7_anon=true;element.runtimeStyle.cssText=pseudoElement.cssText;if(!isURL)element.innerText=pseudoElement.content;if(this.position=="before"){parentElement.insertBefore(element,parentElement.firstChild)}else{parentElement.appendChild(element)}if(isURL)addTimer(element,pseudoElement.content,pseudoElement.cssText);target.runtimeStyle[this.position]=null}}};this.exec=function(){this.match=cssQuery(this.selector);for(var i=0;i<this.match.length;i++){var runtimeStyle=this.match[i].runtimeStyle;if(!runtimeStyle[this.position])runtimeStyle[this.position]={cssText:""};runtimeStyle[this.position].cssText+=";"+this.cssText;if(this.content!=null)runtimeStyle[this.position].content=this.content}}};_PseudoElement.prototype=new _Class;function PseudoElement(selector,position,cssText){this.position=position;this.cssText=encoded[cssText].slice(1,-1);var content=this.cssText.match(PseudoElement.CONTENT);if(content)this.content=getString(content[1]).replace(HEX,unicode);this.inherit=Class;this.inherit(selector);push(pseudoElements,this)};PseudoElement.ancestor=_PseudoElement;PseudoElement.prototype=new _PseudoElement;PseudoElement.ID=function(match,selector,position,cssText){return new PseudoElement(selector,position,cssText)};PseudoElement.ALL=/([^}]*):(before|after)[^{]*\{([^}]*)\}/g;PseudoElement.CONTENT=/content\s*:\s*([^;]*)(;|$)/;PseudoElement.OBJECT="<object class=ie7_anon data='"+makePath("ie7-content.htm",path)+"' width=100% height=0 type=text/x-scriptlet>";selectors[">"]=function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var subset=from[i].children;for(var j=0;j<subset.length;j++)if(compareTagName(subset[j],filter,scopeName))push(filtered,subset[j])}};selectors["+"]=function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var adjacent=nextElement(from[i]);if(adjacent&&compareTagName(adjacent,filter,scopeName))push(filtered,adjacent)}};selectors["@"]=function(filtered,from,filter){filter=attributeSelectors[filter];for(var i=0;i<from.length;i++)if(filter(from[i]))push(filtered,from[i])};pseudoClasses["first-child"]=function(element){return!previousElement(element)};pseudoClasses["lang"]=function(element,filterArgs){filterArgs=new RegExp("^"+filterArgs,"i");while(element&&!element.getAttribute("lang"))element=element.parentNode;return element&&filterArgs.test(element.getAttribute("lang"))};dynamicPseudoClasses.hover=function(element){var instance=arguments;addEventHandler(element,"onmouseover",function(){IE7.Event.hover.register(instance)});addEventHandler(element,"onmouseout",function(){IE7.Event.hover.unregister(instance)})};dynamicPseudoClasses.active=function(element){var instance=arguments;addEventHandler(element,"onmousedown",function(){IE7.Event.active.register(instance)})};dynamicPseudoClasses.focus=function(element){var instance=arguments;addEventHandler(element,"onfocus",function(){IE7.Event.focus.register(instance)});addEventHandler(element,"onblur",function(){IE7.Event.focus.unregister(instance)});if(element==document.activeElement){IE7.Event.focus.register(instance)}};addEventHandler(document,"onmouseup",function(){var ie7Event=IE7.Event.active;var instances=ie7Event.instances,i;for(i in instances)ie7Event.unregister(instances[i]);ie7Event=IE7.Event.hover;instances=ie7Event.instances;for(i in instances)if(!instances[i][0].contains(event.srcElement))ie7Event.unregister(instances[i])});var attributeSelectors=[];var ESCAPE=/([/()[\]?{}|*+])/g;function AttributeSelector(attribute,compare,value){value=getString(value);this.id=attributeSelectors.length;switch(attribute.toLowerCase()){case "id":attribute="element.id.replace(/ms_\x5cd+/g,'')";break;case "class":attribute="element.className.replace(/\x5cb\x5cs*ie7_\x5cd+/g,'')";break;default:attribute="element.getAttribute('"+attribute+"')"}compare=attributeTests[compare];push(attributeSelectors,new Function("element","return "+compare(attribute,value)))};AttributeSelector.ID=function(match,attribute,compare,value){return new AttributeSelector(attribute,compare,value)};AttributeSelector.prototype.toString=function(){return AttributeSelector.PREFIX+this.id};attributeTests={toString:function(){var toString=[];for(var i in this)if(i&&i!="escape")push(toString,i);return toString.join("").replace(/=/g,"")},escape:function(value){return value.replace(ESCAPE,"\x5c$1")},"":function(attribute){return attribute},"=":function(attribute,value){return attribute+"=="+quote(value)},"~=":function(attribute,value){return "/(^|\x5cs)"+attributeTests.escape(value)+"(\x5cs|$)/.test("+attribute+")"},"|=":function(attribute,value){return "/^"+attributeTests.escape(value)+"(-|$)/.test("+attribute+")"}};AttributeSelector.PREFIX="@";function _ie7Event(){this.register=function(instance){var element=instance[0];var target=instance[1];var Class=instance[2];for(var i=0;i<target.length;i++)Class.add(target[i]);this.instances[Class.id+element.uniqueID]=instance};this.unregister=function(instance){var element=instance[0];var target=instance[1];var Class=instance[2];for(var i=0;i<target.length;i++)Class.remove(target[i]);delete this.instances[Class.id+element.uniqueID]}};IE7.Event=function(type){this.type=type;this.instances={};IE7.Event[type]=this};IE7.Event.prototype=new _ie7Event;new IE7.Event("hover");new IE7.Event("active");new IE7.Event("focus");function simpleSelector(selector){return selector.replace(Class.COMPLEX,"").replace(CHILD," ")}},true);
diff --git a/www/inc/styles/ie7/ie7-css3.js b/www/inc/styles/ie7/ie7-css3.js new file mode 100644 index 0000000..56d312e --- /dev/null +++ b/www/inc/styles/ie7/ie7-css3.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(window.IE7)IE7.addModule("ie7-css3",function(){if(!modules["ie7-css2"])return;selectors["~"]=function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var adjacent=from[i];while(adjacent=nextElement(adjacent)){if(adjacent&&compareTagName(adjacent,filter,scopeName))push(filtered,adjacent)}}};var documentElement=(isHTML)?document.documentElement:firstChildElement(document.body);pseudoClasses["root"]=function(element){return Boolean(element==documentElement||element==document.body)};pseudoClasses["empty"]=function(element){return!firstChildElement(element)&&!element.innerText};pseudoClasses["last-child"]=function(element){return!nextElement(element)};pseudoClasses["only-child"]=function(element){return(element.parentNode&&childElements(element.parentNode).length==1)};pseudoClasses["nth-child"]=function(element,filterArgs,step){return nthChild(element,filterArgs,previousElement)};pseudoClasses["nth-last-child"]=function(element,filterArgs){return nthChild(element,filterArgs,nextElement)};function nthChild(element,filterArgs,traverse){switch(filterArgs){case "n":return true;case "even":filterArgs="2n";break;case "odd":filterArgs="2n+1"}var children=childElements(element.parentNode);function checkIndex(index){index=(traverse==nextElement)?children.length-index:index-1;return children[index]==element};if(!isNaN(filterArgs))return checkIndex(filterArgs);filterArgs=filterArgs.split("n");var multiplier=parseInt(filterArgs[0]);var step=parseInt(filterArgs[1]);if(isNaN(multiplier)||(multiplier==1))return true;if(multiplier==0&&!isNaN(step))return checkIndex(step);if(isNaN(step))step=0;var count=1;while(element=traverse(element))count++;return((count%multiplier)==step)};function childElements(element){var childElements=[],i;for(i=0;i<element.childNodes.length;i++){if(isElement(element.childNodes[i]))push(childElements,element.childNodes[i])}return childElements};attributeTests["^="]=function(attribute,value){return "/^"+attributeTests.escape(value)+"/.test("+attribute+")"};attributeTests["$="]=function(attribute,value){return "/"+attributeTests.escape(value)+"$/.test("+attribute+")"};attributeTests["*="]=function(attribute,value){return "/"+attributeTests.escape(value)+"/.test("+attribute+")"}});
diff --git a/www/inc/styles/ie7/ie7-fixed.js b/www/inc/styles/ie7/ie7-fixed.js new file mode 100644 index 0000000..f3c5b7a --- /dev/null +++ b/www/inc/styles/ie7/ie7-fixed.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(window.IE7)IE7.addModule("ie7-fixed",function(){var PERCENT=/^\d+%$/;CSSFixes.addRecalc("position\x5cs*:\x5cs*fixed",positionFixed);CSSFixes.addRecalc("background[\x5cw\x5cs-]*:[^};]*fixed",backgroundFixed);var body=document.body;var viewport$=(quirksMode)?"body":"documentElement";var viewport=eval(viewport$);function fixBackground(){if(body.currentStyle.backgroundAttachment!="fixed"){if(body.currentStyle.backgroundImage=="none"){body.runtimeStyle.backgroundImage="url("+location.protocol+")"}body.runtimeStyle.backgroundAttachment="fixed"}fixBackground=DUMMY};var ie7_tmp=tmpElement("img");function topFunction(leftFunction){return String(leftFunction).replace(/Left/g,"Top").replace(/left/g,"top").replace(/Width/g,"Height").replace(/X/g,"Y")};function backgroundFixed(element){if(element.currentStyle.backgroundAttachment!="fixed")return;if(!element.contains(body)){fixBackground();backgroundFixed[backgroundFixed.count++]=element;backgroundLeft(element);backgroundTop(element);backgroundPosition(element)}};backgroundFixed.count=0;function backgroundPosition(element){ie7_tmp.src=element.currentStyle.backgroundImage.slice(5,-2);var parentElement=(element.canHaveChildren)?element:element.parentElement;parentElement.appendChild(ie7_tmp);setOffsetLeft(element);setOffsetTop(element);parentElement.removeChild(ie7_tmp)};function backgroundLeft(element){element.style.backgroundPositionX=element.currentStyle.backgroundPositionX;if(!isFixed(element)){var expression="(parseInt(runtimeStyle.offsetLeft)+document."+viewport$+".scrollLeft)||0";element.runtimeStyle.setExpression("backgroundPositionX",expression)}};eval(topFunction(backgroundLeft));function setOffsetLeft(element){var propertyName=isFixed(element)?"backgroundPositionX":"offsetLeft";element.runtimeStyle[propertyName]=getOffsetLeft(element,element.style.backgroundPositionX)-element.getBoundingClientRect().left-element.clientLeft};eval(topFunction(setOffsetLeft));function isFixed(element){if(!element)return false;if(element.style.position=="fixed"||element.currentStyle.position=="fixed")return true;return arguments.callee(element.parentElement)};function getOffsetLeft(element,position){switch(position){case "left":case "top":return 0;case "right":case "bottom":return viewport.clientWidth-ie7_tmp.offsetWidth;case "center":return(viewport.clientWidth-ie7_tmp.offsetWidth)/2;default:if(PERCENT.test(position)){return parseInt((viewport.clientWidth-ie7_tmp.offsetWidth)*parseFloat(position)/100)}ie7_tmp.style.left=position;return ie7_tmp.offsetLeft}};eval(topFunction(getOffsetLeft));function positionFixed(element){if(element.currentStyle.position!="fixed")return;fixBackground();positionFixed[positionFixed.count++]=element;element.style.position="fixed";element.runtimeStyle.position="absolute";foregroundPosition(element)};positionFixed.count=0;function foregroundPosition(element,recalc){positionLeft(element,recalc);positionTop(element,recalc);if(!recalc||element.runtimeStyle.autoTop){if(parseInt(element.currentStyle.bottom)==0)element.runtimeStyle.screenTop++}};function positionLeft(element,recalc){if(!recalc&&PERCENT.test(element.currentStyle.width))element.runtimeStyle.fixWidth=element.currentStyle.width;if(element.runtimeStyle.fixWidth)element.runtimeStyle.width=parseInt(parseFloat(element.runtimeStyle.fixWidth)/100*viewport.clientWidth);if(recalc){if(!element.runtimeStyle.autoLeft)return}else{element.runtimeStyle.autoLeft=element.currentStyle.right!="auto"&&element.currentStyle.left=="auto"}element.runtimeStyle.left="";element.runtimeStyle.screenLeft=getScreenLeft(element);if(element.currentStyle.marginLeft!="auto"){element.parentElement.appendChild(ie7_tmp);ie7_tmp.style.left=element.currentStyle.marginLeft;element.runtimeStyle.screenLeft-=ie7_tmp.offsetLeft;element.parentElement.removeChild(ie7_tmp)}if(isFixed(element.offsetParent))element.runtimeStyle.pixelLeft=element.runtimeStyle.screenLeft;else if(!recalc)element.runtimeStyle.setExpression("pixelLeft","runtimeStyle.screenLeft+document."+viewport$+".scrollLeft")};eval(topFunction(positionLeft).replace(/right/g,"bottom").replace(/width/g,"height"));function getScreenLeft(element){var getScreenLeft=element.offsetLeft,nested=false;var fixed=isFixed(element.offsetParent)&&element.runtimeStyle.autoLeft;while(element=element.offsetParent){if(!fixed&&element.currentStyle.position!="static")nested=true;getScreenLeft+=element.offsetLeft*(nested?-1:1)}return getScreenLeft};eval(topFunction(getScreenLeft));function resize(){for(var i=0;i<backgroundFixed.count;i++)backgroundPosition(backgroundFixed[i]);for(i=0;i<positionFixed.count;i++)foregroundPosition(positionFixed[i],true);timer=0};var timer;addEventHandler(window,"onresize",function(){if(!timer)timer=setTimeout(resize,10)})});
diff --git a/www/inc/styles/ie7/ie7-html4.js b/www/inc/styles/ie7/ie7-html4.js new file mode 100644 index 0000000..86a4c95 --- /dev/null +++ b/www/inc/styles/ie7/ie7-html4.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(window.IE7)IE7.addModule("ie7-html4",function(){if(isHTML)HTMLFixes=new function(){var fixes=[];function fix(element){var fixedElement=document.createElement("<HTML:"+element.outerHTML.slice(1));if(element.outerHTML.slice(-2)!="/>"){var endTag="</"+element.tagName+">",nextSibling;while((nextSibling=element.nextSibling)&&nextSibling.outerHTML!=endTag){element.parentNode.removeChild(nextSibling);fixedElement.appendChild(nextSibling)}if(nextSibling)element.parentNode.removeChild(nextSibling)}element.parentNode.replaceChild(fixedElement,element);return fixedElement};this.add=function(){push(fixes,arguments)};this.apply=function(){try{if(appVersion>5)document.namespaces.add("HTML","http://www.w3.org/1999/xhtml")}catch(ignore){}finally{for(var i=0;i<fixes.length;i++){var elements=cssQuery(fixes[i][0]);for(var j=0;j<elements.length;j++)fixes[i][1](elements[j])}}};this.add("label",function(element){if(!element.htmlFor){var input=cssQuery("input,select,textarea",element)[0];if(input){if(!input.id)input.id=input.uniqueID;element.htmlFor=input.id}}});this.add("abbr",function(element){fix(element);delete cssCache[" abbr"]});this.add("button,input",function(element){if(element.tagName=="BUTTON"){var match=element.outerHTML.match(/ value="([^"]*)"/i);element.runtimeStyle.value=(match)?match[1]:""}if(element.type=="submit"){addEventHandler(element,"onclick",function(){element.runtimeStyle.clicked=true;setTimeout("document.all."+element.uniqueID+".runtimeStyle.clicked=false",1)})}});this.add("form",function(element){var UNSUCCESSFUL=/^(submit|reset|button)$/;addEventHandler(element,"onsubmit",function(){for(var i=0;i<element.length;i++){if(UNSUCCESSFUL.test(element[i].type)&&!element[i].disabled&&!element[i].runtimeStyle.clicked){element[i].disabled=true;setTimeout("document.all."+element[i].uniqueID+".disabled=false",1)}else if(element[i].tagName=="BUTTON"&&element[i].type=="submit"){setTimeout("document.all."+element[i].uniqueID+".value='"+element[i].value+"'",1);element[i].value=element[i].runtimeStyle.value}}})})}},true);
\ No newline at end of file diff --git a/www/inc/styles/ie7/ie7-ie5.js b/www/inc/styles/ie7/ie7-ie5.js new file mode 100644 index 0000000..4529d95 --- /dev/null +++ b/www/inc/styles/ie7/ie7-ie5.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(isHTML){HEADER+="address,blockquote,body,dd,div,dl,dt,fieldset,form,frame,"+"frameset,h1,h2,h3,h4,h5,h6,iframe,noframes,object,p,applet,center,"+"dir,hr,menu,pre{display:block;height:0cm}li,ol,ul{display:block}"}if(![].push)push=function(array,item){array[array.length]=item;return array.length};if(![].pop)pop=function(array){var item=array[array.length-1];array.length--;return item};if("i".replace(/i/,function(){return""})){var a=String.prototype.replace,b=function(r,w){var m,n="",s=this;while((m=r.exec(s))){n+=s.slice(0,m.index)+w(m[0],m[1],m[2],m[3],m[4]);s=s.slice(m.lastIndex)}return n+s};String.prototype.replace=function(r,w){this.replace=(typeof w=="function")?b:a;return this.replace(r,w)}}
\ No newline at end of file diff --git a/www/inc/styles/ie7/ie7-lite-p.js b/www/inc/styles/ie7/ie7-lite-p.js new file mode 100644 index 0000000..887f62f --- /dev/null +++ b/www/inc/styles/ie7/ie7-lite-p.js @@ -0,0 +1,3 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+eval(function(A,r,s,e,n,a,l){s=function(e){return((e<a)?'':s(e/a))+n[l[340]](e%a+161)};while(++r<474)l[r]=(r<378)?'/'+l[r]+'/':'"'+l[r]+'"';while(--r>=0)A=A.replace(new RegExp(s(r),'g'),l[r]);return A}('if(!.) (){{.=; =.= ; (){if(.)...=};.=(){ }; =(.(.))?(){.(++)}:; =..()[1];if(.(.)||<5||!.(..)) (); =(.!=); =( .==)?!i.(.):(.!=); =; =;if(!)+=; ; =.; ={};.=(,,){if(!);if()(+());if(){();=}[]=}; =; (,){if(.())=(||)+; }; (,){=(,); .(0,.()+1)}; =(.[..-1].); = (); (,){{=(,);.(,,);.(); .}(){(+); }}; =(,){ .()}; =(){ .()};if(<5.5)((,));if(.==||!).(); .();.=.[..-1];..=;..=; ={}; (,){ =(.,);if([]) ;[]=(.)?:((,),(.,)); []}; =(){ .}; =gi; (,){ .(,+.(0,.()+1)+)};.=[];.=; =; _(){{=; =i; =.; =[]; =.();( i=.-1;i>=0;i--){(,.([i].)?:[i].)} (,){ =;if(.(.)){( i=0;i<..;i++){+=.(.[i],(.,))}+=((.)?(,):())} };.=;(i=0;i<.;i++).+=([i],);.=(.);(i in )[i](); ;if().();.();.();..=+(.);(i=0;i<.;i++){if(![i].&&![i].)[i].=}.();()}(){(+.)}{()}};.=(){.();( i=0;i<..;i++).[i]()}; = (){ =[];.=(){(,)}; =[];.=(,){ = (+,); =.;=[];(=.()){(,[1]);if(<5.5)=.(.)}if(.){=.();(,)}};.=(){( i=0;i<.;i++){.=..([i][0],[i][1])}.(,);.(,(){if(...==)(.)})};.=(){( i=0;i<.;i++){ =([i][0]);( j=0;j<.;j++)[i][1]([j])}};.(gi,);if(<6).(gi,);if(){ =.();( i=0;i<.;i++)[[i]]=[i-1]||; ($,$1,$2,$3){ $1+[$3]};.( (+.()+,),)}}; =; =g; =; =g; =; ={}; (,){ =!; =()?(.==)?:[]:[]; =.(,).(); =[];( i=0;i<.;i++){=([i]);if(.(0,3).()==){=.(2);=(,[1])} =; j=0,,,,=;(j<.){=[j++];=[j++];+=+;=;if([j]==){([j++]!=)+=[j];=.(0,-1);+=++}=(&&[])?[]:(,,,);if()[]=}=.()} }; (){if(.())=+; .()}; (,,,){ =;if(.()){=.();=[0];=[1]} =[];if([])[](,,,||); }; (,id){ =[],i,j;(i=0;i<.;i++){ =[i]..(id);if(){if(.==)(,); (j=0;j<.;j++)(,[j])}} }; ={:(,,,){( i=0;i<.;i++){ =(==&&[i].)?[i].:[i].();( j=0;j<.;j++){if(([j])&&(!||[j].==))(,[j])}}},:(,,){( i=0;i<.;i++)if([i].id==)(,[i])},:(,,){= (++);( i=0;i<.;i++)if(.([i].))(,[i])},:(,,,){=[];if()( i=0;i<.;i++)if(([i],))(,[i])}}; =; ={:(){ =[];( in ){if(!=&&!=){if([].>1)+=;(,)}} .()},:(){ (.[]==)},:(){ (.[]==)}}; ={:.}; (,,){if(&&.!=) ;(==)?():()?(.==.()):(.==)}; =[]; (){ .()?[.(1,-1)]:}; =(){ .(g,(){(.(0)==)?:+((,.(1,-1))-1)+}).(g,).(g,).(g,)}; (){ .(g,).(g,(,){ []})}; =[]; (,,){.(,);(,)}; (,,){{.(,)}(){}};.(,(){(.){ =();([0],[1],[2])}}); =(<6)?(){ .}:(){ ..}; (){if(!()){.=;(())}}; (){(){..=..;=()}}; =; (){(.())?:++}; (){(.())?.(1,-1):}; (){ =.(||);..=; }; (){ (&&.==1&&.!=&&!.)}; (){(&&(=.)&&!()); }; (){(&&(=.)&&!()); }; (){=.;(())?:()}; =;.(,(){if()= (){ =[]; (){ =.(+..(1));if(..(-2)!=){ =+.+,;((=.)&&.!=){..();.()}if()..()}..(,); };.=(){(,)};.=(){{if(>5)..(,)}(){}{( i=0;i<.;i++){ =([i][0]);( j=0;j<.;j++)[i][1]([j])}}};.(,(){if(!.){ =(,)[0];if(){if(!.id).id=.;.=.id}}});.(,(){(); []});.(,(){if(.==){ =..(i);..=()?[1]:}if(.==){(,,(){..=;(+.+,1)})}});.(,(){ =;(,,(){( i=0;i<.;i++){if(.([i].)&&![i].&&![i]..){[i].=;(+[i].+,1)} if([i].==&&[i].==){(+[i].++[i].+,1);[i].=[i]..}}})})}},);.(,(){ =,=,=,=; =(<6)?gi:gi; =(<5.5)?:; =();(., (){if(.)..()});.(,(){ .(0,3)+.(4).()+.(5)}); =()?.:; (){ ..==||..==}; (){ =.;(&&!())=.;if(!||())=; }; (){=(,){if(!..&&(!||.!=)){if(!)=..;..=(.())?.(0,(,)):;..=..;()}};if().(,); =()?(,){ (,)+()+()}:(,){ (,)}; (){ .-.}; (){ (,..)+(,..)}; (){((..==)?0:(,..))+((..==)?0:(,..))}; (){[.++]=;if(..==)..=0;();();()};.=0;.(+,);(().(g,));.=0;.(+,); (){ =.(); =.-.;if(..&&>=(,..))..=(,..); if(..&&<=(,..))..=(,..); ..=..}; (){if((..==||..==)&&..!=&&..!=&&.(..)){[.++]=;();()}};.=0;.(+,); (){..=; =(); =(..)?.().-2:(,..); =.-(,..)--();if(!)-=()+();if(<0)=0;if(()||||.<){..=;..=}}; =.;(,,(){ i,=(<.);=.;(i=0;i<.;i++){ =[i]; =(..==..);if(&&)..=;if(==)()}(i=0;i<.;i++){ =[i]; =(..==..);if(!&&)..=;if(!=)()}(i=0;i<.;i++)([i]);()}); (,){if(.()) ();if(.()) (()/100*().); =(.)?:.;.();..=; .}; (,){if(()>0) (,);if(.()) ();..();..=; .}};(().(g,).(g,).(g,).(g,).(g,).(g,));();()});=;if(.==)_(); (,,(){if(!&&.==)(_,0)})}(){();(+.)}{}}();',340,0,/./,String,95,'element`var`function`return`value`from`cssText`width`currentStyle`this`document`match`length`filter`for`runtimeStyle`test`href`replace`IE7`selector`styleSheet`push`filtered`path`tagName`slice`minWidth`x5cs`layoutParent`fixedWidth`scopeName`filterArgs`left`ie7_tmp`clientWidth`appVersion`ie7`fixes`link`styleSheets`while`recalcs`nextSibling`style`parentElement`count`maxWidth`CSSFixes`input`new`handler`toString`else`true`fixRight`documentElement`addRecalc`auto`position`type`false`token`SIZES`pattern`alert`load`complete`fixWidth`right`getPixelWidth`quirksMode`boxSizing`getFixedWidth`isHTML`all`add`elements`isElement`pseudoClass`selectors`cacheSelector`modules`script`catch`addEventHandler`getPixelLeft`wider`window`max`addFix`uniqueID`disabled`cssCache`try`arguments`node`Boolean`x5c`visited`subset`url`error`unHide`setTimeout`loaded`eval`parseInt`resizeWidth`NUMERIC`rect`min`offsetParent`hasLayout`addModule`outerHTML`cssQuery`apply`fixedElement`HTMLFixes`display`QUOTED`handlers`pop`strings`string`item`small`recalc`getCSSText`getPath`styles`DUMMY`pathname`makePath`array`httpRequest`finally`Error`readyState`String`appendChild`PIXEL`offsetWidth`resizeRight`isFixed`getPaddingWidth`getBorderWidth`fixed`absolute`x5cw`body`removeChild`box`submit`clicked`fix`select`ignore`parentNode`nextElement`x2f`pseudoClasses`join`RegExp`split`useCache`base`large`HEADER`inlineStyles`LINKS`location`description`height`PERCENT`removeTempElement`HEIGHT`getMarginWidth`getBoundingClientRect`AUTO`minHeight`marginRight`marginLeft`x5cd`UNIT`viewport`toUpperCase`charAt`MATCH`tmpElement`BUTTON`UNSUCCESSFUL`button`abbr`delete`htmlFor`HTML`endTag`createElement`firstChildElement`continue`block`marginTop`fixMargins`removeEventHandler`attachEvent`key`decode`encode`getElementsByTagName`selectById`NAMESPACE`STREAM`STANDARD_SELECT`toStream`ASTERISK`IMPLIED_SELECTOR`reg`parse`loadStyleSheet`imports`MEDIA`innerHTML`lastIndexOf`URL`fixUrls`scripts`RELATIVE`name`autoload`mimeType`search`message`onreadystatechange`fixHeight`bottom`Bottom`Right`top`Top`Left`Height`Width`offsetLeft`canHaveChildren`parseFloat`onresize`screenLeft`paddingRight`paddingLeft`Math`model`onsubmit`reset`form`onclick`textarea`label`xhtml`org`www`http`namespaces`replaceChild`html4`firstChild`previousSibling`previousElement`ie7_anon`nodeType`clip`none`border`padding`object`unquote`quote`contentEditable`onbeforeunload`detachEvent`import`namespace`getString`compareTagName`dynamicPseudoClasses`attributeTests`className`null`concat`Array`constructor`size`font`medium`list`inline`float`relative`content`sizing`lastIndex`exec`successfully`callee`media`ball`bscreen`write`createStyleSheet`ie5`file`not`could`responseText`send`GET`open`XMLHTTP`Microsoft`ActiveXObject`src`margin`Document`XML`xml`unknown`typeof`CSS1Compat`compatMode`ms_`ie7_off`MSIE`navigator`ie7_debug`alpha`version`visible`visibility`Function`fromCharCode`` (\\d\\.\\d)``^`\\.$`^[\\w\\.]+[^:]*$`(\\([\x27"]?)([\\w\\.]+[^:\\)]*[\x27"]?\\))`\\\\b|\\\\b|^$`-`(\\s*:\\s*(|))`\\s*:\\s*-`^[^>\\+~\\s]`[\\s>\\+~:@#\\.\\(\\)]|[^\\s>\\+~:@#\\.\\(\\)]+`\\|`([\\s>~\\,]|[^(]\\+|^)([\\.:#@])`(\\\\*[^\\*]*\\*+([^\\][^\\*]*\\*+)*\\)|(\x27[^\x27]*\x27)|("[^"]*")`@(|)[^;\\n]+[;\\n]|<!\\-\\-|\\-\\->`\\:`^\\s+|\\s*([\\{\\}\\+\\,>~\\s;])\\s*|\\s+$`\x27(\\d+)\x27`(\x27[^\x27]*\x27)|("[^"]*")` ="([^"]*)"`^(||)$`^\\d\\w*$`^\\d+%$`^\\d+(px)?$`\\b(|)-(|)\\s*:\\s*\\d`\\b(|)-\\s*:\\s*\\d`^|0cm$`^$````````` 0.7.3 ()`\\n\\n``` `:{-:}:{-:}`*{:0}`=``/`.`` [1]: `-.js``<></>`$1`$2`` ` [2]: `([^{}]*)\\{([^}]*[^\\-])?`gi`-\\*:\\*-`\\*:\\*``:;$1`:`xx-,x-,,,,x-,xx-`,`xx-`((-)?\\*:\\*)(`|`)`$1*$2` *#`(` `*`#`.`(^|\\)`(\\|$)`:```\\([^)]*\\)`-`\x27`\\:```:;:0;:;:;:(0 0 0 0);:-9999`!`-`<:`/>`</`>``://.w3./1999/``,,`` `,````..`..=```.=`.=\x27`--`\\*:\\*\\[\\%]*``HR`\\*:\\*\\\\*[^%]``-``-``````````` [0]: '.split('\x60')));
+/* packed with http://dean.edwards.name/packer/ */
diff --git a/www/inc/styles/ie7/ie7-lite.js b/www/inc/styles/ie7/ie7-lite.js new file mode 100644 index 0000000..493d8f1 --- /dev/null +++ b/www/inc/styles/ie7/ie7-lite.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(!window.IE7)new function(){try{window.IE7=this;var DUMMY=this.addModule=new Function;function unHide(){if(document.body)document.body.style.visibility="visible"};this.toString=function(){return "IE7 version 0.7.3 (alpha)"};var alert=(/ie7_debug/.test(location.search))?function(message){window.alert(IE7+"\n\n"+message)}:DUMMY;var appVersion=navigator.appVersion.match(/MSIE (\d\.\d)/)[1];if(/ie7_off/.test(location.search)||appVersion<5||!/^ms_/.test(document.documentElement.uniqueID))return unHide();var quirksMode=Boolean(document.compatMode!="CSS1Compat");var isHTML=(typeof document.mimeType=="unknown")?!/\.xml$/i.test(location.pathname):Boolean(document.mimeType!="XML Document");var LINKS=":link{ie7-link:link}:visited{ie7-link:visited}";var HEADER=LINKS;if(!isHTML)HEADER+="*{margin:0}";var HTMLFixes;var documentElement=document.documentElement;var modules={};this.addModule=function(name,script,autoload){if(!modules)return;if(loaded)eval("script="+String(script));if(autoload){script();script=DUMMY}modules[name]=script};var RELATIVE=/^[\w\.]+[^:]*$/;function makePath(href,path){if(RELATIVE.test(href))href=(path||"")+href;return href};function getPath(href,path){href=makePath(href,path);return href.slice(0,href.lastIndexOf("/")+1)};var path=getPath(document.scripts[document.scripts.length-1].src);var httpRequest=new ActiveXObject("Microsoft.XMLHTTP");function load(href,path){try{href=makePath(href,path);httpRequest.open("GET",href,false);httpRequest.send();return httpRequest.responseText}catch(ignore){alert("Error [1]: could not load file "+href);return ""}};var push=function(array,item){return array.push(item)};var pop=function(array){return array.pop()};if(appVersion<5.5)eval(load("ie7-ie5.js",path));if(document.readyState=="complete"||!isHTML)document.createStyleSheet();else document.write("<style></style>");this.styleSheet=document.styleSheets[document.styleSheets.length-1];this.styleSheet.cssText=LINKS;this.styleSheet.ie7=true;var cssText={};function loadStyleSheet(styleSheet,path){var url=makePath(styleSheet.href,path);if(cssText[url])return "";cssText[url]=(styleSheet.disabled)?"":fixUrls(getCSSText(styleSheet,path),getPath(styleSheet.href,path));return cssText[url]};var getCSSText=function(styleSheet){return styleSheet.cssText};var URL=/(url\(['"]?)([\w\.]+[^:\)]*['"]?\))/gi;function fixUrls(cssText,pathname){return cssText.replace(URL,"$1"+pathname.slice(0,pathname.lastIndexOf("/")+1)+"$2")};this.recalcs=[];this.parse=DUMMY;var complete=false;function _load(){try{complete=true;var MEDIA=/\bscreen\b|\ball\b|^$/i;var styleSheets=document.styleSheets;var inlineStyles=[];var styles=document.getElementsByTagName("style");for(var i=styles.length-1;i>=0;i--){push(inlineStyles,/ie7-link/.test(styles[i].innerHTML)?"":styles[i].innerHTML)}function getCSSText(styleSheet,path){var cssText="";if(MEDIA.test(styleSheet.media)){for(var i=0;i<styleSheet.imports.length;i++){cssText+=arguments.callee(styleSheet.imports[i],getPath(styleSheet.href,path))}cssText+=((styleSheet.href)?loadStyleSheet(styleSheet,path):pop(inlineStyles))}return cssText};IE7.cssText="";for(i=0;i<styleSheets.length;i++)IE7.cssText+=getCSSText(styleSheets[i],"");IE7.cssText=encode(IE7.cssText);for(i in modules)modules[i]();delete modules;if(HTMLFixes)HTMLFixes.apply();CSSFixes.apply();IE7.parse();IE7.styleSheet.cssText=HEADER+decode(IE7.cssText);for(i=0;i<styleSheets.length;i++){if(!styleSheets[i].disabled&&!styleSheets[i].ie7)styleSheets[i].cssText=""}IE7.recalc();alert("loaded successfully")}catch(error){alert("Error [2]: "+error.description)}finally{unHide()}};this.recalc=function(){CSSFixes.recalc();for(var i=0;i<this.recalcs.length;i++)this.recalcs[i]()};var CSSFixes=new function(){var fixes=[];this.addFix=function(){push(fixes,arguments)};var recalcs=[];this.addRecalc=function(pattern,fix){var reg=new RegExp("([^{}]*)\x5c{([^}]*[^\x5cw-])?"+pattern,"gi");var cssText=IE7.cssText;pattern=[];while(match=reg.exec(cssText)){push(pattern,match[1]);if(appVersion<5.5)cssText=cssText.slice(match.lastIndex)}if(pattern.length){pattern=pattern.toString();push(recalcs,arguments)}};this.apply=function(){for(var i=0;i<fixes.length;i++){IE7.cssText=IE7.cssText.replace(fixes[i][0],fixes[i][1])}this.addRecalc("box-sizing\x5cs*:\x5cs*content-box",boxSizing);this.addRecalc("position\x5cs*:\x5cs*absolute",function(element){if(element.offsetParent.currentStyle.position=="relative")boxSizing(element.offsetParent)})};this.recalc=function(){for(var i=0;i<recalcs.length;i++){var elements=cssQuery(recalcs[i][0]);for(var j=0;j<elements.length;j++)recalcs[i][1](elements[j])}};this.addFix(/(float\s*:\s*(left|right))/gi,"display:inline;$1");if(appVersion<6)this.addFix(/display\s*:\s*list-item/gi,"display:block");if(quirksMode){var SIZES="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");for(var i=0;i<SIZES.length;i++)SIZES[SIZES[i]]=SIZES[i-1]||"xx-small";function replace($,$1,$2,$3){return $1+SIZES[$3]};this.addFix(new RegExp("(font(-size)?\x5cs*:\x5cs*)("+SIZES.join("|")+")","gi"),replace)}};var STANDARD_SELECT=/^[^>\+~\s]/;var STREAM=/[\s>\+~:@#\.\(\)]|[^\s>\+~:@#\.\(\)]+/g;var NAMESPACE=/\|/;var IMPLIED_SELECTOR=/([\s>~\,]|[^(]\+|^)([\.:#@])/g;var ASTERISK="$1*$2";var cssCache={};function cssQuery(selector,from){var useCache=!from;var base=(from)?(from.constructor==Array)?from:[from]:[document];var selectors=selector.replace(IMPLIED_SELECTOR,ASTERISK).split(",");var match=[];for(var i=0;i<selectors.length;i++){selector=toStream(selectors[i]);if(selector.slice(0,3).join("")==" *#"){selector=selector.slice(2);from=selectById(base,selector[1])}else from=base;var j=0,token,filter,filterArgs,cacheSelector="";while(j<selector.length){token=selector[j++];filter=selector[j++];cacheSelector+=token+filter;filterArgs="";if(selector[j]=="("){while(selector[j++]!=")")filterArgs+=selector[j];filterArgs=filterArgs.slice(0,-1);cacheSelector+="("+filterArgs+")"}from=(useCache&&cssCache[cacheSelector])?cssCache[cacheSelector]:select(from,token,filter,filterArgs);if(useCache)cssCache[cacheSelector]=from}match=match.concat(from)}return match};function toStream(selector){if(STANDARD_SELECT.test(selector))selector=" "+selector;return selector.match(STREAM)};function select(from,token,filter,filterArgs){var scopeName="";if(NAMESPACE.test(filter)){filter=filter.split("|");scopeName=filter[0];filter=filter[1]}var filtered=[];if(selectors[token])selectors[token](filtered,from,filter,scopeName||filterArgs);return filtered};function selectById(from,id){var filtered=[],i,j;for(i=0;i<from.length;i++){var match=from[i].all.item(id);if(match){if(match.length==null)push(filtered,match);else for(j=0;j<match.length;j++)push(filtered,match[j])}}return filtered};var selectors={" ":function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var subset=(filter=="*"&&from[i].all)?from[i].all:from[i].getElementsByTagName(filter);for(var j=0;j<subset.length;j++){if(isElement(subset[j])&&(!scopeName||subset[j].scopeName==scopeName))push(filtered,subset[j])}}},"#":function(filtered,from,filter){for(var i=0;i<from.length;i++)if(from[i].id==filter)push(filtered,from[i])},".":function(filtered,from,filter){filter=new RegExp("(^|\x5cs)"+filter+"(\x5cs|$)");for(var i=0;i<from.length;i++)if(filter.test(from[i].className))push(filtered,from[i])},":":function(filtered,from,filter,filterArgs){filter=pseudoClasses[filter];if(filter)for(var i=0;i<from.length;i++)if(filter(from[i],filterArgs))push(filtered,from[i])}};var attributeTests="";var pseudoClasses={toString:function(){var toString=[];for(var pseudoClass in this){if(pseudoClass!="link"&&pseudoClass!="visited"){if(this[pseudoClass].length>1)pseudoClass+="\x5c([^)]*\x5c)";push(toString,pseudoClass)}}return toString.join("|")},"link":function(element){return Boolean(element.currentStyle["ie7-link"]=="link")},"visited":function(element){return Boolean(element.currentStyle["ie7-link"]=="visited")}};var dynamicPseudoClasses={toString:pseudoClasses.toString};function compareTagName(element,tagName,scopeName){if(scopeName&&element.scopeName!=scopeName)return false;return(tagName=="*")?isElement(element):(isHTML)?(element.tagName==tagName.toUpperCase()):(element.tagName==tagName)};var strings=[];function getString(string){return QUOTED.test(string)?strings[string.slice(1,-1)]:string};var encode=function(cssText){return cssText.replace(/(\x2f\*[^\*]*\*+([^\x2f][^\*]*\*+)*\x2f)|('[^']*')|("[^"]*")/g,function(match){return(match.charAt(0)=="/")?"":"'"+(push(strings,match.slice(1,-1))-1)+"'"}).replace(/@(namespace|import)[^;\n]+[;\n]|<!\-\-|\-\->/g,"").replace(/\x5c:/g,"|").replace(/^\s+|\s*([\{\}\+\,>~\s;])\s*|\s+$/g,"$1")};function decode(cssText){return cssText.replace(/\|/g,"\x5c:").replace(/'(\d+)'/g,function(match,key){return strings[key]})};var handlers=[];function addEventHandler(element,type,handler){element.attachEvent(type,handler);push(handlers,arguments)};function removeEventHandler(element,type,handler){try{element.detachEvent(type,handler)}catch(ignore){}};window.attachEvent("onbeforeunload",function(){while(handlers.length){var handler=pop(handlers);removeEventHandler(handler[0],handler[1],handler[2])}});var hasLayout=(appVersion<6)?function(element){return element.clientWidth}:function(element){return element.currentStyle.hasLayout};function boxSizing(element){if(!hasLayout(element)){element.contentEditable=false;fixMargins(firstChildElement(element))}};function fixMargins(element){while(element){element.runtimeStyle.marginTop=element.currentStyle.marginTop;element=nextElement(element)}};var QUOTED=/('[^']*')|("[^"]*")/;function quote(value){return(QUOTED.test(value))?value:"'"+value+"'"};function unquote(value){return(QUOTED.test(value))?value.slice(1,-1):value};function tmpElement(tagName){var element=document.createElement(tagName||"object");element.style.cssText="position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999";return element};function isElement(node){return Boolean(node&&node.nodeType==1&&node.tagName!="!"&&!node.ie7_anon)};function previousElement(element){while(element&&(element=element.previousSibling)&&!isElement(element))continue;return element};function nextElement(element){while(element&&(element=element.nextSibling)&&!isElement(element))continue;return element};function firstChildElement(element){element=element.firstChild;return(isElement(element))?element:nextElement(element)};var loaded=false;IE7.addModule("ie7-html4",function(){if(isHTML)HTMLFixes=new function(){var fixes=[];function fix(element){var fixedElement=document.createElement("<HTML:"+element.outerHTML.slice(1));if(element.outerHTML.slice(-2)!="/>"){var endTag="</"+element.tagName+">",nextSibling;while((nextSibling=element.nextSibling)&&nextSibling.outerHTML!=endTag){element.parentNode.removeChild(nextSibling);fixedElement.appendChild(nextSibling)}if(nextSibling)element.parentNode.removeChild(nextSibling)}element.parentNode.replaceChild(fixedElement,element);return fixedElement};this.add=function(){push(fixes,arguments)};this.apply=function(){try{if(appVersion>5)document.namespaces.add("HTML","http://www.w3.org/1999/xhtml")}catch(ignore){}finally{for(var i=0;i<fixes.length;i++){var elements=cssQuery(fixes[i][0]);for(var j=0;j<elements.length;j++)fixes[i][1](elements[j])}}};this.add("label",function(element){if(!element.htmlFor){var input=cssQuery("input,select,textarea",element)[0];if(input){if(!input.id)input.id=input.uniqueID;element.htmlFor=input.id}}});this.add("abbr",function(element){fix(element);delete cssCache[" abbr"]});this.add("button,input",function(element){if(element.tagName=="BUTTON"){var match=element.outerHTML.match(/ value="([^"]*)"/i);element.runtimeStyle.value=(match)?match[1]:""}if(element.type=="submit"){addEventHandler(element,"onclick",function(){element.runtimeStyle.clicked=true;setTimeout("document.all."+element.uniqueID+".runtimeStyle.clicked=false",1)})}});this.add("form",function(element){var UNSUCCESSFUL=/^(submit|reset|button)$/;addEventHandler(element,"onsubmit",function(){for(var i=0;i<element.length;i++){if(UNSUCCESSFUL.test(element[i].type)&&!element[i].disabled&&!element[i].runtimeStyle.clicked){element[i].disabled=true;setTimeout("document.all."+element[i].uniqueID+".disabled=false",1)}else if(element[i].tagName=="BUTTON"&&element[i].type=="submit"){setTimeout("document.all."+element[i].uniqueID+".value='"+element[i].value+"'",1);element[i].value=element[i].runtimeStyle.value}}})})}},true);IE7.addModule("ie7-box-model",function(){var NUMERIC="\x5cs*:\x5cs*\x5cd[\x5cw%]*",UNIT=/^\d\w*$/,PERCENT=/^\d+%$/,PIXEL=/^\d+(px)?$/;var MATCH=(appVersion<6)?/\b(min|max)-(width|height)\s*:\s*\d/gi:/\b(min|max)-width\s*:\s*\d/gi;var AUTO=(appVersion<5.5)?/^auto|0cm$/:/^auto$/;var ie7_tmp=tmpElement();push(IE7.recalcs,function removeTempElement(){if(ie7_tmp.parentElement)ie7_tmp.parentElement.removeChild(ie7_tmp)});CSSFixes.addFix(MATCH,function(match){return match.slice(0,3)+match.charAt(4).toUpperCase()+match.slice(5)});var viewport=(quirksMode)?document.body:documentElement;function isFixed(element){return element.style.position=="fixed"||element.currentStyle.position=="fixed"};function layoutParent(element){var layoutParent=element.offsetParent;while(layoutParent&&!hasLayout(layoutParent))layoutParent=layoutParent.offsetParent;if(!layoutParent||isFixed(element))layoutParent=viewport;return layoutParent};function fixWidth(HEIGHT){fixWidth=function(element,value){if(!element.runtimeStyle.fixedWidth&&(!isHTML||element.tagName!="HR")){if(!value)value=element.currentStyle.width;element.runtimeStyle.fixedWidth=(UNIT.test(value))?Math.max(0,getFixedWidth(element,value)):value;element.runtimeStyle.width=element.runtimeStyle.fixedWidth;boxSizing(element)}};if(quirksMode)CSSFixes.addRecalc("width\x5cs*:\x5cs*\x5cd\x5cw*[^%]",fixWidth);var getFixedWidth=(quirksMode)?function(element,value){return getPixelWidth(element,value)+getBorderWidth(element)+getPaddingWidth(element)}:function(element,value){return getPixelWidth(element,value)};function getBorderWidth(element){return element.offsetWidth-element.clientWidth};function getPaddingWidth(element){return getPixelWidth(element,element.currentStyle.paddingLeft)+getPixelWidth(element,element.currentStyle.paddingRight)};function getMarginWidth(element){return((element.currentStyle.marginLeft=="auto")?0:getPixelLeft(element,element.currentStyle.marginLeft))+((element.currentStyle.marginRight=="auto")?0:getPixelLeft(element,element.currentStyle.marginRight))};function minWidth(element){minWidth[minWidth.count++]=element;if(element.currentStyle.minHeight=="auto")element.runtimeStyle.minHeight=0;fixWidth(element);boxSizing(element);resizeWidth(element)};minWidth.count=0;CSSFixes.addRecalc("min-width"+NUMERIC,minWidth);eval(String(minWidth).replace(/min/g,"max"));maxWidth.count=0;CSSFixes.addRecalc("max-width"+NUMERIC,maxWidth);function resizeWidth(element){var rect=element.getBoundingClientRect();var width=rect.right-rect.left;if(element.currentStyle.maxWidth&&width>=getFixedWidth(element,element.currentStyle.maxWidth))element.runtimeStyle.width=getFixedWidth(element,element.currentStyle.maxWidth);else if(element.currentStyle.minWidth&&width<=getFixedWidth(element,element.currentStyle.minWidth))element.runtimeStyle.width=getFixedWidth(element,element.currentStyle.minWidth);else element.runtimeStyle.width=element.runtimeStyle.fixedWidth};function fixRight(element){if((element.currentStyle.position=="absolute"||element.currentStyle.position=="fixed")&&element.currentStyle.left!="auto"&&element.currentStyle.right!="auto"&&AUTO.test(element.currentStyle.width)){fixRight[fixRight.count++]=element;boxSizing(element);resizeRight(element)}};fixRight.count=0;CSSFixes.addRecalc("right"+NUMERIC,fixRight);function resizeRight(element){element.runtimeStyle.width="";var parentElement=layoutParent(element);var left=(element.runtimeStyle.screenLeft)?element.getBoundingClientRect().left-2:getPixelLeft(element,element.currentStyle.left);var width=parentElement.clientWidth-getPixelLeft(element,element.currentStyle.right)-left-getMarginWidth(element);if(!quirksMode)width-=getBorderWidth(element)+getPaddingWidth(element);if(width<0)width=0;if(isFixed(element)||HEIGHT||element.offsetWidth<width){element.runtimeStyle.fixedWidth=width;element.runtimeStyle.width=width}};var clientWidth=documentElement.clientWidth;addEventHandler(window,"onresize",function(){var i,wider=(clientWidth<documentElement.clientWidth);clientWidth=documentElement.clientWidth;for(i=0;i<minWidth.count;i++){var element=minWidth[i];var fixedWidth=(element.runtimeStyle.width==element.currentStyle.minWidth);if(wider&&fixedWidth)element.runtimeStyle.width="";if(wider==fixedWidth)resizeWidth(element)}for(i=0;i<maxWidth.count;i++){var element=maxWidth[i];var fixedWidth=(element.runtimeStyle.width==element.currentStyle.maxWidth);if(!wider&&fixedWidth)element.runtimeStyle.width="";if(wider!=fixedWidth)resizeWidth(element)}for(i=0;i<fixRight.count;i++)resizeRight(fixRight[i]);removeTempElement()});function getPixelWidth(element,value){if(PIXEL.test(value))return parseInt(value);if(PERCENT.test(value))return parseInt(parseFloat(value)/100*layoutParent(element).clientWidth);var parentElement=(element.canHaveChildren)?element:element.parentElement;parentElement.appendChild(ie7_tmp);ie7_tmp.style.width=value;return ie7_tmp.offsetWidth};function getPixelLeft(element,value){if(parseInt(value)>0)return getPixelWidth(element,value);if(PIXEL.test(value))return parseInt(value);element.parentElement.appendChild(ie7_tmp);ie7_tmp.style.left=value;return ie7_tmp.offsetLeft}};eval(String(fixWidth).replace(/Width/g,"Height").replace(/width/g,"height").replace(/Left/g,"Top").replace(/left/g,"top").replace(/Right/g,"Bottom").replace(/right/g,"bottom"));fixWidth();fixHeight(true)});loaded=true;if(document.readyState=="complete")_load();else addEventHandler(document,"onreadystatechange",function(){if(!complete&&document.readyState=="complete")setTimeout(_load,0)})}catch(error){unHide();alert("Error [0]: "+error.description)}finally{}}();
diff --git a/www/inc/styles/ie7/ie7-logo.gif b/www/inc/styles/ie7/ie7-logo.gif Binary files differnew file mode 100644 index 0000000..fe4a7bc --- /dev/null +++ b/www/inc/styles/ie7/ie7-logo.gif diff --git a/www/inc/styles/ie7/ie7-png.js b/www/inc/styles/ie7/ie7-png.js new file mode 100644 index 0000000..f9c7e80 --- /dev/null +++ b/www/inc/styles/ie7/ie7-png.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(window.IE7)IE7.addModule("ie7-png",function(){if(appVersion<5.5)return;var FILTER="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=%1,sizingMethod='scale')";var NULL=(/\bSV1\b/.test(navigator.userAgent))?makePath("blank.gif",path):"javascript:'#define x_width 1\x5cn#define x_height 1\x5cnstatic char x_bits[]={0x00}'";var pngTest=new RegExp((window.IE7_PNG_SUFFIX||"-trans.png")+"$","i");function addFilter(element,src){element.runtimeStyle.filter=FILTER.replace(/%1/,src)};var MATCH=/background(-image)?\s*:([^(};]*)url\(([^\)]+)\)([^;}]*)/gi;CSSFixes.addFix(MATCH,function replace(match,image,prefix,url,suffix){url=getString(url);return pngTest.test(url)?"filter:"+FILTER.replace(/scale/,"crop").replace(/%1/,url)+";zoom:1;background"+(image||"")+":"+(prefix||"")+"none"+(suffix||""):match});if(HTMLFixes){function fixImg(element){if(pngTest.test(element.src)){var width=element.width,height=element.height;addFilter(element,element.src);element.src=NULL;element.width=width;element.height=height}else element.runtimeStyle.filter=""};HTMLFixes.add("img,input",function(element){if(element.tagName=="INPUT"&&element.type!="image")return;fixImg(element);addEventHandler(element,"onpropertychange",function(){if(event.propertyName=="src")fixImg(element)})})}});
diff --git a/www/inc/styles/ie7/ie7-server.css b/www/inc/styles/ie7/ie7-server.css new file mode 100644 index 0000000..47c7edd --- /dev/null +++ b/www/inc/styles/ie7/ie7-server.css @@ -0,0 +1,43 @@ +body, td, dd {font: 10pt Verdana, Arial, Helvetica, sans-serif; color: black;} +body {margin: 8px; background: #333;} +h1 {margin: 0;} +h1 a:hover {background-color: transparent;} +h2 {font-size: 1.75em;} +h3 {font-size: 1.1em;} +a:active {color: #ff0000;} +a:link {color: #0a6cce;} +a:visited {color: #0a6cce;} +code, *.code {font-family: monospace; font-size: 100%; font-style: normal; white-space: nowrap; + padding: 0 1px; background: #f2f3f8; border: #d6d9e9 1px solid;} +code.box {display: block; padding: 10px; margin: 0.5em 0;} +ul {list-style-type: square;} +dd {margin: .2em 0 .5em 1em;} +dl.library dt {display: list-item; margin-left: 3em; list-style-type: square;} +dl.library dd {font-style: italic; margin-left: 3em;} +dt {font-weight: bold;} +dt.pack {color: brown;} +a img {border-style: none;} +hr {height: 1px; color: #000; border-style: solid;} +hr.short {height: 2px; width: 100px;} +div.document {background: #eef; padding: 20px 20px 5px 20px; width: 600px; border: 1px solid black;} +hr {border-bottom-width: 0px;} +div.header hr {color: #0a6cce; background-color: #0a6cce;} +div.content {min-height: 100px;} +div.footer hr {color: #898e79; background-color: #898e79; } +div.header, div.header a:link, div.header a:visited, h3 a:link, h3 a:visited {text-decoration: none;} +a:hover {color: #fff; background-color: #0a6cce; text-decoration: none;} +div.footer a:hover {background-color: transparent; text-decoration: none;} +div.header .menu {text-align: right;} +div.footer {font-size: x-small; margin-top: 8px;} +div.footnote {font-family: "times new roman", times; font-style: italic; margin-top: 10px;} +#license {margin-top: 5px; font-size: xx-small;} +table {border-top: 1px solid #000; border-left: 1px solid #000;} +th {background-color: #fff; text-align: left;} +th, td {border-right: 1px solid #000; border-bottom: 1px solid #000;} +th.small {width: 100px;} +th.medium {width: 200px;} +th.large {width: 270px;} +th.x-large {width: 408px;} +table.fixed {table-layout: fixed;} +span.comment {color: #666;} + diff --git a/www/inc/styles/ie7/ie7-standard-p.js b/www/inc/styles/ie7/ie7-standard-p.js new file mode 100644 index 0000000..8dfb5e0 --- /dev/null +++ b/www/inc/styles/ie7/ie7-standard-p.js @@ -0,0 +1,3 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+eval(function(A,r,s,e,n,a,l){s=function(e){return((e<a)?'':s(e/a))+n[l[493]](e%a+161)};while(++r<735)l[r]=(r<549)?'/'+l[r]+'/':'"'+l[r]+'"';while(--r>=0)A=A.replace(new RegExp(s(r),'g'),l[r]);return A}('if(!.) (){{.=; =.= ; (){if(.)...=};.=(){ }; =(.(.))?(){.(++)}:; =..()[1];if(.(.)||<5||!.(..)) (); =(.!=); =( .==)?!i.(.):(.!=); =; =;if(!)+=; ; =.; ={};.=(,,){if(!);if()(+());if(){();=}[]=}; =; (,){if(.())=(||)+; }; (,){=(,); .(0,.()+1)}; =(.[..-1].); = (); (,){{=(,);.(,,);.(); .}(){(+); }}; =(,){ .()}; =(){ .()};if(<5.5)((,));if(.==||!).(); .();.=.[..-1];..=;..=; ={}; (,){ =(.,);if([]) ;[]=(.)?:((,),(.,)); []}; =(){ .}; =gi; (,){ .(,+.(0,.()+1)+)};.=[];.=; =; _(){{=; =i; =.; =[]; =.();( i=.-1;i>=0;i--){(,.([i].)?:[i].)} (,){ =;if(.(.)){( i=0;i<..;i++){+=.(.[i],(.,))}+=((.)?(,):())} };.=;(i=0;i<.;i++).+=([i],);.=(.);(i in )[i](); ;if().();.();.();..=+(.);(i=0;i<.;i++){if(![i].&&![i].)[i].=}.();()}(){(+.)}{()}};.=(){.();( i=0;i<..;i++).[i]()}; = (){ =[];.=(){(,)}; =[];.=(,){ = (+,); =.;=[];(=.()){(,[1]);if(<5.5)=.(.)}if(.){=.();(,)}};.=(){( i=0;i<.;i++){.=..([i][0],[i][1])}.(,);.(,(){if(...==)(.)})};.=(){( i=0;i<.;i++){ =([i][0]);( j=0;j<.;j++)[i][1]([j])}};.(gi,);if(<6).(gi,);if(){ =.();( i=0;i<.;i++)[[i]]=[i-1]||; ($,$1,$2,$3){ $1+[$3]};.( (+.()+,),)}}; =; =g; =; =g; =; ={}; (,){ =!; =()?(.==)?:[]:[]; =.(,).(); =[];( i=0;i<.;i++){=([i]);if(.(0,3).()==){=.(2);=(,[1])} =; j=0,,,,=;(j<.){=[j++];=[j++];+=+;=;if([j]==){([j++]!=)+=[j];=.(0,-1);+=++}=(&&[])?[]:(,,,);if()[]=}=.()} }; (){if(.())=+; .()}; (,,,){ =;if(.()){=.();=[0];=[1]} =[];if([])[](,,,||); }; (,id){ =[],i,j;(i=0;i<.;i++){ =[i]..(id);if(){if(.==)(,); (j=0;j<.;j++)(,[j])}} }; ={:(,,,){( i=0;i<.;i++){ =(==&&[i].)?[i].:[i].();( j=0;j<.;j++){if(([j])&&(!||[j].==))(,[j])}}},:(,,){( i=0;i<.;i++)if([i].id==)(,[i])},:(,,){= (++);( i=0;i<.;i++)if(.([i].))(,[i])},:(,,,){=[];if()( i=0;i<.;i++)if(([i],))(,[i])}}; =; ={:(){ =[];( in ){if(!=&&!=){if([].>1)+=;(,)}} .()},:(){ (.[]==)},:(){ (.[]==)}}; ={:.}; (,,){if(&&.!=) ;(==)?():()?(.==.()):(.==)}; =[]; (){ .()?[.(1,-1)]:}; =(){ .(g,(){(.(0)==)?:+((,.(1,-1))-1)+}).(g,).(g,).(g,)}; (){ .(g,).(g,(,){ []})}; =[]; (,,){.(,);(,)}; (,,){{.(,)}(){}};.(,(){(.){ =();([0],[1],[2])}}); =(<6)?(){ .}:(){ ..}; (){if(!()){.=;(())}}; (){(){..=..;=()}}; =; (){(.())?:++}; (){(.())?.(1,-1):}; (){ =.(||);..=; }; (){ (&&.==1&&.!=&&!.)}; (){(&&(=.)&&!()); }; (){(&&(=.)&&!()); }; (){=.;(())?:()}; =;.(,(){if()= (){ =[]; (){ =.(+..(1));if(..(-2)!=){ =+.+,;((=.)&&.!=){..();.()}if()..()}..(,); };.=(){(,)};.=(){{if(>5)..(,)}(){}{( i=0;i<.;i++){ =([i][0]);( j=0;j<.;j++)[i][1]([j])}}};.(,(){if(!.){ =(,)[0];if(){if(!.id).id=.;.=.id}}});.(,(){(); []});.(,(){if(.==){ =..(i);..=()?[1]:}if(.==){(,,(){..=;(+.+,1)})}});.(,(){ =;(,,(){( i=0;i<.;i++){if(.([i].)&&![i].&&![i]..){[i].=;(+[i].+,1)} if([i].==&&[i].==){(+[i].++[i].+,1);[i].=[i]..}}})})}},);.(,(){ =,=,=,=; =(<6)?gi:gi; =(<5.5)?:; =();(., (){if(.)..()});.(,(){ .(0,3)+.(4).()+.(5)}); =()?.:; (){ ..==||..==}; (){ =.;(&&!())=.;if(!||())=; }; (){=(,){if(!..&&(!||.!=)){if(!)=..;..=(.())?.(0,(,)):;..=..;()}};if().(,); =()?(,){ (,)+()+()}:(,){ (,)}; (){ .-.}; (){ (,..)+(,..)}; (){((..==)?0:(,..))+((..==)?0:(,..))}; (){[.++]=;if(..==)..=0;();();()};.=0;.(+,);(().(g,));.=0;.(+,); (){ =.(); =.-.;if(..&&>=(,..))..=(,..); if(..&&<=(,..))..=(,..); ..=..}; (){if((..==||..==)&&..!=&&..!=&&.(..)){[.++]=;();()}};.=0;.(+,); (){..=; =(); =(..)?.().-2:(,..); =.-(,..)--();if(!)-=()+();if(<0)=0;if(()||||.<){..=;..=}}; =.;(,,(){ i,=(<.);=.;(i=0;i<.;i++){ =[i]; =(..==..);if(&&)..=;if(==)()}(i=0;i<.;i++){ =[i]; =(..==..);if(!&&)..=;if(!=)()}(i=0;i<.;i++)([i]);()}); (,){if(.()) ();if(.()) (()/100*().); =(.)?:.;.();..=; .}; (,){if(()>0) (,);if(.()) ();..();..=; .}};(().(g,).(g,).(g,).(g,).(g,).(g,));();()});.(,(){ =g,=i;.=[];.= ;.=;.=;.=;.=(){(.).=(((.)));( i=0;i<..;i++).[i].();(i=0;i<.;i++)[i].()};=(,){ (.,)}; =[]; (){.=(){.= (++,);.= (++++,);.= (++,); .(.,.ID).(.,.ID).(.,.ID)};.=(){.= (++++,); .(.,.ID).(g,($){ +((,$)-1)+}).(g,).(g,(,,){ .().()+})};.=(){ .(g,($,$1){ [$1]})}}; _(){.=(){ +.};.=(){.+=+.};.=(){.=..(.,)};.=(){ =(.);( i=0;i<.;i++).([i])}}; (,){.id=..;.=.+.id;.=;.= (+.+,);(.,)};.=_;.= _;.=;.ID=(){ ()+ ()}; _(){.=(){ =(.);( i=0;i<.;i++){ =(.)?(.,[i]):[[i]];if().([i],,)}}};_.= _; (,,,){.=;.=[];.=;.=;.()};.=_;.= _;.ID=(,,,){if(&&!=&&.()&&!.()) ; ()+ (,,,)};+=; =g; (,){ (+.(.)++)}; =[]; _(){.=;.=(){ };.=0; (,,){ =((){{if(!.);.(,,);()}(){()}},10)};.=(){if(.==);( i=0;i<..;i++){ =.[i]; =.[.];if(){ =.?:.; =.(.); =.(?.:);.=;..=.;if(!).=.;if(.==){.(,.)}{.()}if()(,.,.);.[.]=}}};.=(){.=(.);( i=0;i<..;i++){ =.[i].;if(![.])[.]={:};[.].+=+.;if(.!=)[.].=.}}};_.= _; (,,){.=;.=[].(1,-1); =..(.);if().=([1]).(,);.=;.();(,)};.=_;.= _;.ID=(,,,){ (,,)};.=g;.=;.=+(,)+;[]=(,,,){( i=0;i<.;i++){ =[i].;( j=0;j<.;j++)if(([j],,))(,[j])}};[]=(,,,){( i=0;i<.;i++){ =([i]);if(&&(,,))(,)}};[]=(,,){=[];( i=0;i<.;i++)if(([i]))(,[i])};[]=(){!()};[]=(,){= (+,);(&&!.())=.; &&.(.())};.=(){ =;(,,(){...()});(,,(){...()})};.=(){ =;(,,(){...()})};.=(){ =;(,,(){...()});(,,(){...()});if(==.){...()}};(,,(){ =..; =.,i;(i in ).([i]);=..;=.;(i in )if(![i][0].(.)).([i])}); =[]; =g; (,,){=();.id=.;(.()){ :=;; :=;;:=++}=[];(, (,+(,)))};.ID=(,,,){ (,,)};..=(){ .+.id};={:(){ =[];( i in )if(i&&i!=)(,i); .().(g,)},:(){ .(,)},:(){ },:(,){ ++()},:(,){ +.()+++},:(,){ +.()+++}};.=; _(){.=(){ =[0]; =[1]; =[2];( i=0;i<.;i++).([i]);.[.id+.]=};.=(){ =[0]; =[1]; =[2];( i=0;i<.;i++).([i]); .[.id+.]}};.=(){.=;.={};.[]=};..= _; .(); .(); .(); (){ .(.,).(,)}},);.(,(){if(<5.5); =; =(.(.))?(,):; = ((.||)+,); (,){..=.(,)}; =gi;.(, (,,,,){=(); .()?+.(,).(,)++(||)++(||)++(||):});if(){ (){if(.(.)){ =.,=.;(,.);.=;.=;.=} ..=};.(,(){if(.==&&.!=);();(,,(){if(.==)()})})}});.(,(){ =;.(,);.(,); =.; $=()?:; =($); (){if(..!=){if(..==){..=+.+}..=}=}; =(); (){ ().(g,).(g,).(g,).(g,)}; (){if(..!=);if(!.()){();[.++]=;();();()}};.=0; (){.=...(5,-2); =(.)?:.;.();();();.()}; (){..=..;if(!()){ =+$+;..(,)}};(()); (){ =()?:;.[]=(,..)-.().-.};(()); (){if(!) ;if(..==||..==) ; .(.)}; (,){(){ : : 0; : : .-.; :(.-.)/2;:if(.()){ ((.-.)*()/100)}..=; .}};(()); (){if(..!=);();[.++]=;..=;..=;()};.=0; (,){(,);(,);if(!||..){if((..)==0)..++}}; (,){if(!&&.(..))..=..;if(..)..=((..)/100*.);if(){if(!..)}{..=..!=&&..==}..=;..=();if(..!=){..();..=..;..-=.;..()}if((.))..=..; if(!)..(,+$+)};(().(g,).(g,)); (){ =.,=; =(.)&&..;(=.){if(!&&..!=)=;+=.*(?-1:1)} };(()); (){( i=0;i<.;i++)([i]);(i=0;i<.;i++)([i],);=0}; ;(,,(){if(!)=(,10)})});=;if(.==)_(); (,,(){if(!&&.==)(_,0)})}(){();(+.)}{}}();',493,0,/./,String,95,'element`function`var`this`return`runtimeStyle`match`cssText`value`IE7`currentStyle`replace`from`for`length`width`filter`document`position`selector`test`new`Class`push`ie7_tmp`target`x5cs`filtered`parentElement`href`styleSheet`left`path`instance`PseudoElement`attribute`content`slice`fixed`toString`filterArgs`scopeName`count`style`clientWidth`ie7`tagName`Event`x5c`DynamicStyle`addEventHandler`url`type`true`right`recalc`instances`minWidth`else`eval`while`viewport`body`CSSFixes`appVersion`link`layoutParent`fixedWidth`auto`add`RegExp`fixes`styleSheets`load`false`fixWidth`arguments`src`addRecalc`input`AttributeSelector`selectors`subset`recalcs`nextSibling`isFixed`height`parseInt`documentElement`ie7Event`ALL`cssQuery`maxWidth`handler`timer`window`positionFixed`backgroundFixed`offsetLeft`offsetParent`case`quirksMode`x5cw`addModule`prototype`uniqueID`attributeTests`dynamicPseudoClasses`pseudoClasses`dynamicPseudoClass`attach`isHTML`fixRight`token`SIZES`pattern`alert`catch`complete`getScreenLeft`topFunction`appendChild`offsetWidth`HTMLFixes`MATCH`addFix`makePath`focus`compare`x5cd`object`pseudoElement`try`name`visited`getPixelWidth`boxSizing`getFixedWidth`all`elements`isElement`pseudoClass`cacheSelector`modules`script`setTimeout`screenLeft`removeChild`PERCENT`backgroundPositionX`DUMMY`hover`unregister`register`join`className`null`exec`display`classes`parse`getCSSText`getPixelLeft`wider`max`disabled`cssCache`node`Boolean`error`unHide`loaded`bottom`marginLeft`absolute`fixBackground`top`String`location`image`getString`active`PREFIX`escape`attributeSelectors`x2f`parentNode`adjacent`nextElement`ie7_anon`pseudoElements`inherit`encoded`isURL`ignore`HEADER`decode`split`encode`resizeWidth`NUMERIC`rect`min`hasLayout`outerHTML`apply`fixedElement`QUOTED`handlers`pop`strings`string`item`small`getPath`styles`pathname`array`httpRequest`finally`Error`readyState`foregroundPosition`backgroundPosition`nested`autoLeft`positionLeft`parseFloat`getOffsetLeft`setOffsetLeft`getBoundingClientRect`propertyName`backgroundLeft`canHaveChildren`backgroundImage`backgroundAttachment`tmpElement`none`background`fixImg`pngTest`FILTER`simpleSelector`delete`getAttribute`lang`compareTagName`ancestor`createElement`code`PIXEL`resizeRight`getPaddingWidth`getBorderWidth`box`submit`clicked`fix`select`useCache`base`large`inlineStyles`LINKS`description`resize`onresize`scrollLeft`pixelLeft`setExpression`default`switch`callee`expression`contains`Height`Width`Top`Left`leftFunction`img`event`NULL`addFilter`suffix`prefix`scale`png`define`navigator`Microsoft`CHILD`COMPLEX`remove`quote`ESCAPE`Function`break`ie7_`x5cb`class`ms_`previousElement`OBJECT`CONTENT`before`unicode`HEX`addTimer`firstChild`create`clearInterval`inline`ANCHOR`Parser`parser`removeTempElement`HEIGHT`getMarginWidth`AUTO`minHeight`marginRight`UNIT`toUpperCase`charAt`BUTTON`UNSUCCESSFUL`button`abbr`htmlFor`HTML`endTag`firstChildElement`continue`block`marginTop`fixMargins`removeEventHandler`attachEvent`key`getElementsByTagName`selectById`NAMESPACE`STREAM`STANDARD_SELECT`toStream`ASTERISK`IMPLIED_SELECTOR`reg`loadStyleSheet`imports`MEDIA`innerHTML`lastIndexOf`URL`fixUrls`scripts`RELATIVE`autoload`mimeType`search`message`onreadystatechange`static`screenTop`autoTop`positionTop`center`clientLeft`setOffsetTop`backgroundTop`protocol`onpropertychange`INPUT`zoom`crop`trans`IE7_PNG_SUFFIX`x00`x_bits`char`x5cnstatic`x_height`x5cn`x_width`javascript`gif`blank`userAgent`bSV1`sizingMethod`AlphaImageLoader`DXImageTransform`progid`toLowerCase`srcElement`onmouseup`activeElement`onblur`onfocus`onmousedown`onmouseout`onmouseover`child`first`children`scriptlet`text`htm`data`after`insertBefore`innerText`setInterval`specificity`x5cu`align`vertical`with`css2`fixHeight`Bottom`Right`paddingRight`paddingLeft`Math`model`onsubmit`reset`form`onclick`textarea`label`xhtml`org`www`http`namespaces`replaceChild`html4`previousSibling`nodeType`clip`border`padding`unquote`contentEditable`onbeforeunload`detachEvent`import`namespace`concat`Array`constructor`size`font`medium`list`float`relative`sizing`lastIndex`successfully`media`ball`bscreen`write`createStyleSheet`ie5`file`not`could`responseText`send`GET`open`XMLHTTP`ActiveXObject`margin`Document`XML`xml`unknown`typeof`CSS1Compat`compatMode`ie7_off`MSIE`ie7_debug`alpha`version`visible`visibility`fromCharCode`` (\\d\\.\\d)``^`\\.$`^[\\w\\.]+[^:]*$`(\\([\x27"]?)([\\w\\.]+[^:\\)]*[\x27"]?\\))`\\\\b|\\\\b|^$`-`(\\s*:\\s*(|))`\\s*:\\s*-`^[^>\\+~\\s]`[\\s>\\+~:@#\\.\\(\\)]|[^\\s>\\+~:@#\\.\\(\\)]+`\\|`([\\s>~\\,]|[^(]\\+|^)([\\.:#@])`(\\\\*[^\\*]*\\*+([^\\][^\\*]*\\*+)*\\)|(\x27[^\x27]*\x27)|("[^"]*")`@(|)[^;\\n]+[;\\n]|<!\\-\\-|\\-\\->`\\:`^\\s+|\\s*([\\{\\}\\+\\,>~\\s;])\\s*|\\s+$`\x27(\\d+)\x27`(\x27[^\x27]*\x27)|("[^"]*")` ="([^"]*)"`^(||)$`^\\d\\w*$`^\\d+%$`^\\d+(px)?$`\\b(|)-(|)\\s*:\\s*\\d`\\b(|)-\\s*:\\s*\\d`^|0cm$`^$````````>`(\\ba(\\.[\\w-]+)?)$`\\{[^\\}]*\\}`::`([^\\}\\s]*\\,[^\\{]*)(\\{\\d+\\})`\\{(\\d+)\\}`[+>~]`\\([a-fA-F\\d]+)`^\\(.*\\)$`([^}]*):(|)[^{]*\\{([^}]*)\\}`\\s*:\\s*([^;]*)(;|$)`([\\()[\\]?{}|*+])`=`\\\\b`%1`(-)?\\s*:([^(};]*)\\(([^\\)]+)\\)([^;}]*)``X`` 0.7.3 ()`\\n\\n``` `:{-:}:{-:}`*{:0}`=``/`.`` [1]: `-.js``<></>`$1`$2`` ` [2]: `([^{}]*)\\{([^}]*[^\\-])?`gi`-\\*:\\*-`\\*:\\*``:;$1`:`xx-,x-,,,,x-,xx-`,`xx-`((-)?\\*:\\*)(`|`)`$1*$2` *#`(` `*`#`.`(^|\\)`(\\|$)`:```\\([^)]*\\)`-`\x27`\\:```:;:0;:;:;:(0 0 0 0);:-9999`!`-`<:`/>`</`>``://.w3./1999/``,,`` `,````..`..=```.=`.=\x27`--`\\*:\\*\\[\\%]*``HR`\\*:\\*\\\\*[^%]``-``-``````````-`[^},\\]*([>+~][^:@,\\{]+|:(`)|\\.[\\-]+\\.[\\-.]+|@[@\\]+)`g`[^\\(]+[+~]|@\\+|:(||`)|\\.[\\-.]+`([^}]*):(`)([^{]*)`\\[([^`=\\]]+)([`]?=?)([^\\]]+)?\\]`{`}`\\`\\```.{-:;:}`\x27\\`0000``;`< = =\x27`-.`\x27 =100% =0 =/x->`+`@`-``^`i```````id`.id.(/\\+/g,\x27\x27)``..(/\\\\*\\+/g,\x27\x27)`.(\x27`\x27)`` ``\\$1`=`==`~=`/(^|\\)`(\\|$)/.(`|=`/^`(-|$)/.(```-`:..(=%1,=\x27\x27)`.`:\x27# 1\\# 1\\ []={0}\x27`-.`$`:``;:1;``,`````-`\\*:\\*`[\\\\-]*:[^};]*```(``Y`((.)+.`.)||0``````.+.`.``` [0]: '.split('\x60')));
+/* packed with http://dean.edwards.name/packer/ */
diff --git a/www/inc/styles/ie7/ie7-standard.js b/www/inc/styles/ie7/ie7-standard.js new file mode 100644 index 0000000..85608fb --- /dev/null +++ b/www/inc/styles/ie7/ie7-standard.js @@ -0,0 +1,2 @@ +/* IE7 version 0.7.3 (alpha) 2004/09/18 */
+if(!window.IE7)new function(){try{window.IE7=this;var DUMMY=this.addModule=new Function;function unHide(){if(document.body)document.body.style.visibility="visible"};this.toString=function(){return "IE7 version 0.7.3 (alpha)"};var alert=(/ie7_debug/.test(location.search))?function(message){window.alert(IE7+"\n\n"+message)}:DUMMY;var appVersion=navigator.appVersion.match(/MSIE (\d\.\d)/)[1];if(/ie7_off/.test(location.search)||appVersion<5||!/^ms_/.test(document.documentElement.uniqueID))return unHide();var quirksMode=Boolean(document.compatMode!="CSS1Compat");var isHTML=(typeof document.mimeType=="unknown")?!/\.xml$/i.test(location.pathname):Boolean(document.mimeType!="XML Document");var LINKS=":link{ie7-link:link}:visited{ie7-link:visited}";var HEADER=LINKS;if(!isHTML)HEADER+="*{margin:0}";var HTMLFixes;var documentElement=document.documentElement;var modules={};this.addModule=function(name,script,autoload){if(!modules)return;if(loaded)eval("script="+String(script));if(autoload){script();script=DUMMY}modules[name]=script};var RELATIVE=/^[\w\.]+[^:]*$/;function makePath(href,path){if(RELATIVE.test(href))href=(path||"")+href;return href};function getPath(href,path){href=makePath(href,path);return href.slice(0,href.lastIndexOf("/")+1)};var path=getPath(document.scripts[document.scripts.length-1].src);var httpRequest=new ActiveXObject("Microsoft.XMLHTTP");function load(href,path){try{href=makePath(href,path);httpRequest.open("GET",href,false);httpRequest.send();return httpRequest.responseText}catch(ignore){alert("Error [1]: could not load file "+href);return ""}};var push=function(array,item){return array.push(item)};var pop=function(array){return array.pop()};if(appVersion<5.5)eval(load("ie7-ie5.js",path));if(document.readyState=="complete"||!isHTML)document.createStyleSheet();else document.write("<style></style>");this.styleSheet=document.styleSheets[document.styleSheets.length-1];this.styleSheet.cssText=LINKS;this.styleSheet.ie7=true;var cssText={};function loadStyleSheet(styleSheet,path){var url=makePath(styleSheet.href,path);if(cssText[url])return "";cssText[url]=(styleSheet.disabled)?"":fixUrls(getCSSText(styleSheet,path),getPath(styleSheet.href,path));return cssText[url]};var getCSSText=function(styleSheet){return styleSheet.cssText};var URL=/(url\(['"]?)([\w\.]+[^:\)]*['"]?\))/gi;function fixUrls(cssText,pathname){return cssText.replace(URL,"$1"+pathname.slice(0,pathname.lastIndexOf("/")+1)+"$2")};this.recalcs=[];this.parse=DUMMY;var complete=false;function _load(){try{complete=true;var MEDIA=/\bscreen\b|\ball\b|^$/i;var styleSheets=document.styleSheets;var inlineStyles=[];var styles=document.getElementsByTagName("style");for(var i=styles.length-1;i>=0;i--){push(inlineStyles,/ie7-link/.test(styles[i].innerHTML)?"":styles[i].innerHTML)}function getCSSText(styleSheet,path){var cssText="";if(MEDIA.test(styleSheet.media)){for(var i=0;i<styleSheet.imports.length;i++){cssText+=arguments.callee(styleSheet.imports[i],getPath(styleSheet.href,path))}cssText+=((styleSheet.href)?loadStyleSheet(styleSheet,path):pop(inlineStyles))}return cssText};IE7.cssText="";for(i=0;i<styleSheets.length;i++)IE7.cssText+=getCSSText(styleSheets[i],"");IE7.cssText=encode(IE7.cssText);for(i in modules)modules[i]();delete modules;if(HTMLFixes)HTMLFixes.apply();CSSFixes.apply();IE7.parse();IE7.styleSheet.cssText=HEADER+decode(IE7.cssText);for(i=0;i<styleSheets.length;i++){if(!styleSheets[i].disabled&&!styleSheets[i].ie7)styleSheets[i].cssText=""}IE7.recalc();alert("loaded successfully")}catch(error){alert("Error [2]: "+error.description)}finally{unHide()}};this.recalc=function(){CSSFixes.recalc();for(var i=0;i<this.recalcs.length;i++)this.recalcs[i]()};var CSSFixes=new function(){var fixes=[];this.addFix=function(){push(fixes,arguments)};var recalcs=[];this.addRecalc=function(pattern,fix){var reg=new RegExp("([^{}]*)\x5c{([^}]*[^\x5cw-])?"+pattern,"gi");var cssText=IE7.cssText;pattern=[];while(match=reg.exec(cssText)){push(pattern,match[1]);if(appVersion<5.5)cssText=cssText.slice(match.lastIndex)}if(pattern.length){pattern=pattern.toString();push(recalcs,arguments)}};this.apply=function(){for(var i=0;i<fixes.length;i++){IE7.cssText=IE7.cssText.replace(fixes[i][0],fixes[i][1])}this.addRecalc("box-sizing\x5cs*:\x5cs*content-box",boxSizing);this.addRecalc("position\x5cs*:\x5cs*absolute",function(element){if(element.offsetParent.currentStyle.position=="relative")boxSizing(element.offsetParent)})};this.recalc=function(){for(var i=0;i<recalcs.length;i++){var elements=cssQuery(recalcs[i][0]);for(var j=0;j<elements.length;j++)recalcs[i][1](elements[j])}};this.addFix(/(float\s*:\s*(left|right))/gi,"display:inline;$1");if(appVersion<6)this.addFix(/display\s*:\s*list-item/gi,"display:block");if(quirksMode){var SIZES="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");for(var i=0;i<SIZES.length;i++)SIZES[SIZES[i]]=SIZES[i-1]||"xx-small";function replace($,$1,$2,$3){return $1+SIZES[$3]};this.addFix(new RegExp("(font(-size)?\x5cs*:\x5cs*)("+SIZES.join("|")+")","gi"),replace)}};var STANDARD_SELECT=/^[^>\+~\s]/;var STREAM=/[\s>\+~:@#\.\(\)]|[^\s>\+~:@#\.\(\)]+/g;var NAMESPACE=/\|/;var IMPLIED_SELECTOR=/([\s>~\,]|[^(]\+|^)([\.:#@])/g;var ASTERISK="$1*$2";var cssCache={};function cssQuery(selector,from){var useCache=!from;var base=(from)?(from.constructor==Array)?from:[from]:[document];var selectors=selector.replace(IMPLIED_SELECTOR,ASTERISK).split(",");var match=[];for(var i=0;i<selectors.length;i++){selector=toStream(selectors[i]);if(selector.slice(0,3).join("")==" *#"){selector=selector.slice(2);from=selectById(base,selector[1])}else from=base;var j=0,token,filter,filterArgs,cacheSelector="";while(j<selector.length){token=selector[j++];filter=selector[j++];cacheSelector+=token+filter;filterArgs="";if(selector[j]=="("){while(selector[j++]!=")")filterArgs+=selector[j];filterArgs=filterArgs.slice(0,-1);cacheSelector+="("+filterArgs+")"}from=(useCache&&cssCache[cacheSelector])?cssCache[cacheSelector]:select(from,token,filter,filterArgs);if(useCache)cssCache[cacheSelector]=from}match=match.concat(from)}return match};function toStream(selector){if(STANDARD_SELECT.test(selector))selector=" "+selector;return selector.match(STREAM)};function select(from,token,filter,filterArgs){var scopeName="";if(NAMESPACE.test(filter)){filter=filter.split("|");scopeName=filter[0];filter=filter[1]}var filtered=[];if(selectors[token])selectors[token](filtered,from,filter,scopeName||filterArgs);return filtered};function selectById(from,id){var filtered=[],i,j;for(i=0;i<from.length;i++){var match=from[i].all.item(id);if(match){if(match.length==null)push(filtered,match);else for(j=0;j<match.length;j++)push(filtered,match[j])}}return filtered};var selectors={" ":function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var subset=(filter=="*"&&from[i].all)?from[i].all:from[i].getElementsByTagName(filter);for(var j=0;j<subset.length;j++){if(isElement(subset[j])&&(!scopeName||subset[j].scopeName==scopeName))push(filtered,subset[j])}}},"#":function(filtered,from,filter){for(var i=0;i<from.length;i++)if(from[i].id==filter)push(filtered,from[i])},".":function(filtered,from,filter){filter=new RegExp("(^|\x5cs)"+filter+"(\x5cs|$)");for(var i=0;i<from.length;i++)if(filter.test(from[i].className))push(filtered,from[i])},":":function(filtered,from,filter,filterArgs){filter=pseudoClasses[filter];if(filter)for(var i=0;i<from.length;i++)if(filter(from[i],filterArgs))push(filtered,from[i])}};var attributeTests="";var pseudoClasses={toString:function(){var toString=[];for(var pseudoClass in this){if(pseudoClass!="link"&&pseudoClass!="visited"){if(this[pseudoClass].length>1)pseudoClass+="\x5c([^)]*\x5c)";push(toString,pseudoClass)}}return toString.join("|")},"link":function(element){return Boolean(element.currentStyle["ie7-link"]=="link")},"visited":function(element){return Boolean(element.currentStyle["ie7-link"]=="visited")}};var dynamicPseudoClasses={toString:pseudoClasses.toString};function compareTagName(element,tagName,scopeName){if(scopeName&&element.scopeName!=scopeName)return false;return(tagName=="*")?isElement(element):(isHTML)?(element.tagName==tagName.toUpperCase()):(element.tagName==tagName)};var strings=[];function getString(string){return QUOTED.test(string)?strings[string.slice(1,-1)]:string};var encode=function(cssText){return cssText.replace(/(\x2f\*[^\*]*\*+([^\x2f][^\*]*\*+)*\x2f)|('[^']*')|("[^"]*")/g,function(match){return(match.charAt(0)=="/")?"":"'"+(push(strings,match.slice(1,-1))-1)+"'"}).replace(/@(namespace|import)[^;\n]+[;\n]|<!\-\-|\-\->/g,"").replace(/\x5c:/g,"|").replace(/^\s+|\s*([\{\}\+\,>~\s;])\s*|\s+$/g,"$1")};function decode(cssText){return cssText.replace(/\|/g,"\x5c:").replace(/'(\d+)'/g,function(match,key){return strings[key]})};var handlers=[];function addEventHandler(element,type,handler){element.attachEvent(type,handler);push(handlers,arguments)};function removeEventHandler(element,type,handler){try{element.detachEvent(type,handler)}catch(ignore){}};window.attachEvent("onbeforeunload",function(){while(handlers.length){var handler=pop(handlers);removeEventHandler(handler[0],handler[1],handler[2])}});var hasLayout=(appVersion<6)?function(element){return element.clientWidth}:function(element){return element.currentStyle.hasLayout};function boxSizing(element){if(!hasLayout(element)){element.contentEditable=false;fixMargins(firstChildElement(element))}};function fixMargins(element){while(element){element.runtimeStyle.marginTop=element.currentStyle.marginTop;element=nextElement(element)}};var QUOTED=/('[^']*')|("[^"]*")/;function quote(value){return(QUOTED.test(value))?value:"'"+value+"'"};function unquote(value){return(QUOTED.test(value))?value.slice(1,-1):value};function tmpElement(tagName){var element=document.createElement(tagName||"object");element.style.cssText="position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999";return element};function isElement(node){return Boolean(node&&node.nodeType==1&&node.tagName!="!"&&!node.ie7_anon)};function previousElement(element){while(element&&(element=element.previousSibling)&&!isElement(element))continue;return element};function nextElement(element){while(element&&(element=element.nextSibling)&&!isElement(element))continue;return element};function firstChildElement(element){element=element.firstChild;return(isElement(element))?element:nextElement(element)};var loaded=false;IE7.addModule("ie7-html4",function(){if(isHTML)HTMLFixes=new function(){var fixes=[];function fix(element){var fixedElement=document.createElement("<HTML:"+element.outerHTML.slice(1));if(element.outerHTML.slice(-2)!="/>"){var endTag="</"+element.tagName+">",nextSibling;while((nextSibling=element.nextSibling)&&nextSibling.outerHTML!=endTag){element.parentNode.removeChild(nextSibling);fixedElement.appendChild(nextSibling)}if(nextSibling)element.parentNode.removeChild(nextSibling)}element.parentNode.replaceChild(fixedElement,element);return fixedElement};this.add=function(){push(fixes,arguments)};this.apply=function(){try{if(appVersion>5)document.namespaces.add("HTML","http://www.w3.org/1999/xhtml")}catch(ignore){}finally{for(var i=0;i<fixes.length;i++){var elements=cssQuery(fixes[i][0]);for(var j=0;j<elements.length;j++)fixes[i][1](elements[j])}}};this.add("label",function(element){if(!element.htmlFor){var input=cssQuery("input,select,textarea",element)[0];if(input){if(!input.id)input.id=input.uniqueID;element.htmlFor=input.id}}});this.add("abbr",function(element){fix(element);delete cssCache[" abbr"]});this.add("button,input",function(element){if(element.tagName=="BUTTON"){var match=element.outerHTML.match(/ value="([^"]*)"/i);element.runtimeStyle.value=(match)?match[1]:""}if(element.type=="submit"){addEventHandler(element,"onclick",function(){element.runtimeStyle.clicked=true;setTimeout("document.all."+element.uniqueID+".runtimeStyle.clicked=false",1)})}});this.add("form",function(element){var UNSUCCESSFUL=/^(submit|reset|button)$/;addEventHandler(element,"onsubmit",function(){for(var i=0;i<element.length;i++){if(UNSUCCESSFUL.test(element[i].type)&&!element[i].disabled&&!element[i].runtimeStyle.clicked){element[i].disabled=true;setTimeout("document.all."+element[i].uniqueID+".disabled=false",1)}else if(element[i].tagName=="BUTTON"&&element[i].type=="submit"){setTimeout("document.all."+element[i].uniqueID+".value='"+element[i].value+"'",1);element[i].value=element[i].runtimeStyle.value}}})})}},true);IE7.addModule("ie7-box-model",function(){var NUMERIC="\x5cs*:\x5cs*\x5cd[\x5cw%]*",UNIT=/^\d\w*$/,PERCENT=/^\d+%$/,PIXEL=/^\d+(px)?$/;var MATCH=(appVersion<6)?/\b(min|max)-(width|height)\s*:\s*\d/gi:/\b(min|max)-width\s*:\s*\d/gi;var AUTO=(appVersion<5.5)?/^auto|0cm$/:/^auto$/;var ie7_tmp=tmpElement();push(IE7.recalcs,function removeTempElement(){if(ie7_tmp.parentElement)ie7_tmp.parentElement.removeChild(ie7_tmp)});CSSFixes.addFix(MATCH,function(match){return match.slice(0,3)+match.charAt(4).toUpperCase()+match.slice(5)});var viewport=(quirksMode)?document.body:documentElement;function isFixed(element){return element.style.position=="fixed"||element.currentStyle.position=="fixed"};function layoutParent(element){var layoutParent=element.offsetParent;while(layoutParent&&!hasLayout(layoutParent))layoutParent=layoutParent.offsetParent;if(!layoutParent||isFixed(element))layoutParent=viewport;return layoutParent};function fixWidth(HEIGHT){fixWidth=function(element,value){if(!element.runtimeStyle.fixedWidth&&(!isHTML||element.tagName!="HR")){if(!value)value=element.currentStyle.width;element.runtimeStyle.fixedWidth=(UNIT.test(value))?Math.max(0,getFixedWidth(element,value)):value;element.runtimeStyle.width=element.runtimeStyle.fixedWidth;boxSizing(element)}};if(quirksMode)CSSFixes.addRecalc("width\x5cs*:\x5cs*\x5cd\x5cw*[^%]",fixWidth);var getFixedWidth=(quirksMode)?function(element,value){return getPixelWidth(element,value)+getBorderWidth(element)+getPaddingWidth(element)}:function(element,value){return getPixelWidth(element,value)};function getBorderWidth(element){return element.offsetWidth-element.clientWidth};function getPaddingWidth(element){return getPixelWidth(element,element.currentStyle.paddingLeft)+getPixelWidth(element,element.currentStyle.paddingRight)};function getMarginWidth(element){return((element.currentStyle.marginLeft=="auto")?0:getPixelLeft(element,element.currentStyle.marginLeft))+((element.currentStyle.marginRight=="auto")?0:getPixelLeft(element,element.currentStyle.marginRight))};function minWidth(element){minWidth[minWidth.count++]=element;if(element.currentStyle.minHeight=="auto")element.runtimeStyle.minHeight=0;fixWidth(element);boxSizing(element);resizeWidth(element)};minWidth.count=0;CSSFixes.addRecalc("min-width"+NUMERIC,minWidth);eval(String(minWidth).replace(/min/g,"max"));maxWidth.count=0;CSSFixes.addRecalc("max-width"+NUMERIC,maxWidth);function resizeWidth(element){var rect=element.getBoundingClientRect();var width=rect.right-rect.left;if(element.currentStyle.maxWidth&&width>=getFixedWidth(element,element.currentStyle.maxWidth))element.runtimeStyle.width=getFixedWidth(element,element.currentStyle.maxWidth);else if(element.currentStyle.minWidth&&width<=getFixedWidth(element,element.currentStyle.minWidth))element.runtimeStyle.width=getFixedWidth(element,element.currentStyle.minWidth);else element.runtimeStyle.width=element.runtimeStyle.fixedWidth};function fixRight(element){if((element.currentStyle.position=="absolute"||element.currentStyle.position=="fixed")&&element.currentStyle.left!="auto"&&element.currentStyle.right!="auto"&&AUTO.test(element.currentStyle.width)){fixRight[fixRight.count++]=element;boxSizing(element);resizeRight(element)}};fixRight.count=0;CSSFixes.addRecalc("right"+NUMERIC,fixRight);function resizeRight(element){element.runtimeStyle.width="";var parentElement=layoutParent(element);var left=(element.runtimeStyle.screenLeft)?element.getBoundingClientRect().left-2:getPixelLeft(element,element.currentStyle.left);var width=parentElement.clientWidth-getPixelLeft(element,element.currentStyle.right)-left-getMarginWidth(element);if(!quirksMode)width-=getBorderWidth(element)+getPaddingWidth(element);if(width<0)width=0;if(isFixed(element)||HEIGHT||element.offsetWidth<width){element.runtimeStyle.fixedWidth=width;element.runtimeStyle.width=width}};var clientWidth=documentElement.clientWidth;addEventHandler(window,"onresize",function(){var i,wider=(clientWidth<documentElement.clientWidth);clientWidth=documentElement.clientWidth;for(i=0;i<minWidth.count;i++){var element=minWidth[i];var fixedWidth=(element.runtimeStyle.width==element.currentStyle.minWidth);if(wider&&fixedWidth)element.runtimeStyle.width="";if(wider==fixedWidth)resizeWidth(element)}for(i=0;i<maxWidth.count;i++){var element=maxWidth[i];var fixedWidth=(element.runtimeStyle.width==element.currentStyle.maxWidth);if(!wider&&fixedWidth)element.runtimeStyle.width="";if(wider!=fixedWidth)resizeWidth(element)}for(i=0;i<fixRight.count;i++)resizeRight(fixRight[i]);removeTempElement()});function getPixelWidth(element,value){if(PIXEL.test(value))return parseInt(value);if(PERCENT.test(value))return parseInt(parseFloat(value)/100*layoutParent(element).clientWidth);var parentElement=(element.canHaveChildren)?element:element.parentElement;parentElement.appendChild(ie7_tmp);ie7_tmp.style.width=value;return ie7_tmp.offsetWidth};function getPixelLeft(element,value){if(parseInt(value)>0)return getPixelWidth(element,value);if(PIXEL.test(value))return parseInt(value);element.parentElement.appendChild(ie7_tmp);ie7_tmp.style.left=value;return ie7_tmp.offsetLeft}};eval(String(fixWidth).replace(/Width/g,"Height").replace(/width/g,"height").replace(/Left/g,"Top").replace(/left/g,"top").replace(/Right/g,"Bottom").replace(/right/g,"bottom"));fixWidth();fixHeight(true)});IE7.addModule("ie7-css2",function(){var CHILD=/>/g,ANCHOR=/(\ba(\.[\w-]+)?)$/i;IE7.classes=[];IE7.parser=new Parser;IE7.Class=Class;IE7.DynamicStyle=DynamicStyle;IE7.PseudoElement=PseudoElement;IE7.parse=function(){with(this.parser)this.cssText=decode(parse(encode(this.cssText)));for(var i=0;i<IE7.classes.length;i++)IE7.classes[i].exec();for(i=0;i<pseudoElements.length;i++)pseudoElements[i].create()};getCSSText=function(styleSheet,path){return load(styleSheet.href,path)};var encoded=[];function Parser(){this.parse=function(cssText){Class.ALL=new RegExp("[^},\x5cs]*([>+~][^:@,\x5cs{]+|:("+pseudoClasses+")|\x5c.[\x5cw-]+\x5c.[\x5cw-.]+|@[@\x5cd]+)","g");Class.COMPLEX=new RegExp("[^\x5cs(]+[+~]|@\x5cd+|:(link|visited|"+pseudoClasses+"|"+dynamicPseudoClasses+")|\x5c.[\x5cw-.]+","g");DynamicStyle.ALL=new RegExp("([^}]*):("+dynamicPseudoClasses+")([^{]*)","g");return cssText.replace(PseudoElement.ALL,PseudoElement.ID).replace(DynamicStyle.ALL,DynamicStyle.ID).replace(Class.ALL,Class.ID)};this.encode=function(cssText){AttributeSelector.ALL=new RegExp("\x5c[([^"+attributeTests+"=\x5c]]+)(["+attributeTests+"]?=?)([^\x5c]]+)?\x5c]","g");return cssText.replace(AttributeSelector.ALL,AttributeSelector.ID).replace(/\{[^\}]*\}/g,function($){return "{"+(push(encoded,$)-1)+"}"}).replace(/::/g,":").replace(/([^\}\s]*\,[^\{]*)(\{\d+\})/g,function(match,left,right){return left.split(",").join(right)+right})};this.decode=function(cssText){return cssText.replace(/\{(\d+)\}/g,function($,$1){return encoded[$1]})}};function _Class(){this.toString=function(){return "."+this.name};this.add=function(element){element.className+=" "+this.name};this.remove=function(element){element.className=element.className.replace(this.MATCH,"")};this.exec=function(){var match=cssQuery(this.selector);for(var i=0;i<match.length;i++)this.add(match[i])}};function Class(selector,cssText){this.id=IE7.classes.length;this.name=Class.PREFIX+this.id;this.selector=selector;this.MATCH=new RegExp("\x5cs"+this.name+"\x5cb","g");push(IE7.classes,this)};Class.ancestor=_Class;Class.prototype=new _Class;Class.PREFIX="ie7_";Class.ID=function(match){return simpleSelector(match)+new Class(match)};function _DynamicStyle(){this.exec=function(){var match=cssQuery(this.attach);for(var i=0;i<match.length;i++){var target=(this.target)?cssQuery(this.target,match[i]):[match[i]];if(target)this.dynamicPseudoClass(match[i],target,this)}}};_DynamicStyle.prototype=new _Class;function DynamicStyle(selector,attach,dynamicPseudoClass,target){this.attach=attach;this.dynamicPseudoClass=dynamicPseudoClasses[dynamicPseudoClass];this.target=target;this.inherit=Class;this.inherit(selector)};DynamicStyle.ancestor=_DynamicStyle;DynamicStyle.prototype=new _DynamicStyle;DynamicStyle.ID=function(match,attach,dynamicPseudoClass,target){if(isHTML&&dynamicPseudoClass!="focus"&&ANCHOR.test(attach)&&!/[+>~]/.test(target))return match;return simpleSelector(match)+new DynamicStyle(match,attach,dynamicPseudoClass,target)};HEADER+=".ie7_anon{vertical-align:top;display:inline}";var HEX=/\x5c([a-fA-F\d]+)/g;function unicode(match,code){return eval("'\x5cu"+"0000".slice(code.length)+code+"'")};var pseudoElements=[];function _PseudoElement(){this.content=null;this.toString=function(){return ""};this.specificity=0;function addTimer(object,content,cssText){var timer=setInterval(function(){try{if(!object.load)return;object.load(object,content,cssText);clearInterval(timer)}catch(ignore){clearInterval(timer)}},10)};this.create=function(){if(this.content==null)return;for(var i=0;i<this.match.length;i++){var target=this.match[i];var pseudoElement=target.runtimeStyle[this.position];if(pseudoElement){var parentElement=target.canHaveChildren?target:target.parentElement;var isURL=/^url\(.*\)$/.test(this.content);var element=document.createElement(isURL?PseudoElement.OBJECT:"!");element.ie7_anon=true;element.runtimeStyle.cssText=pseudoElement.cssText;if(!isURL)element.innerText=pseudoElement.content;if(this.position=="before"){parentElement.insertBefore(element,parentElement.firstChild)}else{parentElement.appendChild(element)}if(isURL)addTimer(element,pseudoElement.content,pseudoElement.cssText);target.runtimeStyle[this.position]=null}}};this.exec=function(){this.match=cssQuery(this.selector);for(var i=0;i<this.match.length;i++){var runtimeStyle=this.match[i].runtimeStyle;if(!runtimeStyle[this.position])runtimeStyle[this.position]={cssText:""};runtimeStyle[this.position].cssText+=";"+this.cssText;if(this.content!=null)runtimeStyle[this.position].content=this.content}}};_PseudoElement.prototype=new _Class;function PseudoElement(selector,position,cssText){this.position=position;this.cssText=encoded[cssText].slice(1,-1);var content=this.cssText.match(PseudoElement.CONTENT);if(content)this.content=getString(content[1]).replace(HEX,unicode);this.inherit=Class;this.inherit(selector);push(pseudoElements,this)};PseudoElement.ancestor=_PseudoElement;PseudoElement.prototype=new _PseudoElement;PseudoElement.ID=function(match,selector,position,cssText){return new PseudoElement(selector,position,cssText)};PseudoElement.ALL=/([^}]*):(before|after)[^{]*\{([^}]*)\}/g;PseudoElement.CONTENT=/content\s*:\s*([^;]*)(;|$)/;PseudoElement.OBJECT="<object class=ie7_anon data='"+makePath("ie7-content.htm",path)+"' width=100% height=0 type=text/x-scriptlet>";selectors[">"]=function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var subset=from[i].children;for(var j=0;j<subset.length;j++)if(compareTagName(subset[j],filter,scopeName))push(filtered,subset[j])}};selectors["+"]=function(filtered,from,filter,scopeName){for(var i=0;i<from.length;i++){var adjacent=nextElement(from[i]);if(adjacent&&compareTagName(adjacent,filter,scopeName))push(filtered,adjacent)}};selectors["@"]=function(filtered,from,filter){filter=attributeSelectors[filter];for(var i=0;i<from.length;i++)if(filter(from[i]))push(filtered,from[i])};pseudoClasses["first-child"]=function(element){return!previousElement(element)};pseudoClasses["lang"]=function(element,filterArgs){filterArgs=new RegExp("^"+filterArgs,"i");while(element&&!element.getAttribute("lang"))element=element.parentNode;return element&&filterArgs.test(element.getAttribute("lang"))};dynamicPseudoClasses.hover=function(element){var instance=arguments;addEventHandler(element,"onmouseover",function(){IE7.Event.hover.register(instance)});addEventHandler(element,"onmouseout",function(){IE7.Event.hover.unregister(instance)})};dynamicPseudoClasses.active=function(element){var instance=arguments;addEventHandler(element,"onmousedown",function(){IE7.Event.active.register(instance)})};dynamicPseudoClasses.focus=function(element){var instance=arguments;addEventHandler(element,"onfocus",function(){IE7.Event.focus.register(instance)});addEventHandler(element,"onblur",function(){IE7.Event.focus.unregister(instance)});if(element==document.activeElement){IE7.Event.focus.register(instance)}};addEventHandler(document,"onmouseup",function(){var ie7Event=IE7.Event.active;var instances=ie7Event.instances,i;for(i in instances)ie7Event.unregister(instances[i]);ie7Event=IE7.Event.hover;instances=ie7Event.instances;for(i in instances)if(!instances[i][0].contains(event.srcElement))ie7Event.unregister(instances[i])});var attributeSelectors=[];var ESCAPE=/([\x2f()[\]?{}|*+])/g;function AttributeSelector(attribute,compare,value){value=getString(value);this.id=attributeSelectors.length;switch(attribute.toLowerCase()){case "id":attribute="element.id.replace(/ms_\x5cd+/g,'')";break;case "class":attribute="element.className.replace(/\x5cb\x5cs*ie7_\x5cd+/g,'')";break;default:attribute="element.getAttribute('"+attribute+"')"}compare=attributeTests[compare];push(attributeSelectors,new Function("element","return "+compare(attribute,value)))};AttributeSelector.ID=function(match,attribute,compare,value){return new AttributeSelector(attribute,compare,value)};AttributeSelector.prototype.toString=function(){return AttributeSelector.PREFIX+this.id};attributeTests={toString:function(){var toString=[];for(var i in this)if(i&&i!="escape")push(toString,i);return toString.join("").replace(/=/g,"")},escape:function(value){return value.replace(ESCAPE,"\x5c$1")},"":function(attribute){return attribute},"=":function(attribute,value){return attribute+"=="+quote(value)},"~=":function(attribute,value){return "/(^|\x5cs)"+attributeTests.escape(value)+"(\x5cs|$)/.test("+attribute+")"},"|=":function(attribute,value){return "/^"+attributeTests.escape(value)+"(-|$)/.test("+attribute+")"}};AttributeSelector.PREFIX="@";function _ie7Event(){this.register=function(instance){var element=instance[0];var target=instance[1];var Class=instance[2];for(var i=0;i<target.length;i++)Class.add(target[i]);this.instances[Class.id+element.uniqueID]=instance};this.unregister=function(instance){var element=instance[0];var target=instance[1];var Class=instance[2];for(var i=0;i<target.length;i++)Class.remove(target[i]);delete this.instances[Class.id+element.uniqueID]}};IE7.Event=function(type){this.type=type;this.instances={};IE7.Event[type]=this};IE7.Event.prototype=new _ie7Event;new IE7.Event("hover");new IE7.Event("active");new IE7.Event("focus");function simpleSelector(selector){return selector.replace(Class.COMPLEX,"").replace(CHILD," ")}},true);IE7.addModule("ie7-png",function(){if(appVersion<5.5)return;var FILTER="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=%1,sizingMethod='scale')";var NULL=(/\bSV1\b/.test(navigator.userAgent))?makePath("blank.gif",path):"javascript:'#define x_width 1\x5cn#define x_height 1\x5cnstatic char x_bits[]={0x00}'";var pngTest=new RegExp((window.IE7_PNG_SUFFIX||"-trans.png")+"$","i");function addFilter(element,src){element.runtimeStyle.filter=FILTER.replace(/%1/,src)};var MATCH=/background(-image)?\s*:([^(};]*)url\(([^\)]+)\)([^;}]*)/gi;CSSFixes.addFix(MATCH,function replace(match,image,prefix,url,suffix){url=getString(url);return pngTest.test(url)?"filter:"+FILTER.replace(/scale/,"crop").replace(/%1/,url)+";zoom:1;background"+(image||"")+":"+(prefix||"")+"none"+(suffix||""):match});if(HTMLFixes){function fixImg(element){if(pngTest.test(element.src)){var width=element.width,height=element.height;addFilter(element,element.src);element.src=NULL;element.width=width;element.height=height}else element.runtimeStyle.filter=""};HTMLFixes.add("img,input",function(element){if(element.tagName=="INPUT"&&element.type!="image")return;fixImg(element);addEventHandler(element,"onpropertychange",function(){if(event.propertyName=="src")fixImg(element)})})}});IE7.addModule("ie7-fixed",function(){var PERCENT=/^\d+%$/;CSSFixes.addRecalc("position\x5cs*:\x5cs*fixed",positionFixed);CSSFixes.addRecalc("background[\x5cw\x5cs-]*:[^};]*fixed",backgroundFixed);var body=document.body;var viewport$=(quirksMode)?"body":"documentElement";var viewport=eval(viewport$);function fixBackground(){if(body.currentStyle.backgroundAttachment!="fixed"){if(body.currentStyle.backgroundImage=="none"){body.runtimeStyle.backgroundImage="url("+location.protocol+")"}body.runtimeStyle.backgroundAttachment="fixed"}fixBackground=DUMMY};var ie7_tmp=tmpElement("img");function topFunction(leftFunction){return String(leftFunction).replace(/Left/g,"Top").replace(/left/g,"top").replace(/Width/g,"Height").replace(/X/g,"Y")};function backgroundFixed(element){if(element.currentStyle.backgroundAttachment!="fixed")return;if(!element.contains(body)){fixBackground();backgroundFixed[backgroundFixed.count++]=element;backgroundLeft(element);backgroundTop(element);backgroundPosition(element)}};backgroundFixed.count=0;function backgroundPosition(element){ie7_tmp.src=element.currentStyle.backgroundImage.slice(5,-2);var parentElement=(element.canHaveChildren)?element:element.parentElement;parentElement.appendChild(ie7_tmp);setOffsetLeft(element);setOffsetTop(element);parentElement.removeChild(ie7_tmp)};function backgroundLeft(element){element.style.backgroundPositionX=element.currentStyle.backgroundPositionX;if(!isFixed(element)){var expression="(parseInt(runtimeStyle.offsetLeft)+document."+viewport$+".scrollLeft)||0";element.runtimeStyle.setExpression("backgroundPositionX",expression)}};eval(topFunction(backgroundLeft));function setOffsetLeft(element){var propertyName=isFixed(element)?"backgroundPositionX":"offsetLeft";element.runtimeStyle[propertyName]=getOffsetLeft(element,element.style.backgroundPositionX)-element.getBoundingClientRect().left-element.clientLeft};eval(topFunction(setOffsetLeft));function isFixed(element){if(!element)return false;if(element.style.position=="fixed"||element.currentStyle.position=="fixed")return true;return arguments.callee(element.parentElement)};function getOffsetLeft(element,position){switch(position){case "left":case "top":return 0;case "right":case "bottom":return viewport.clientWidth-ie7_tmp.offsetWidth;case "center":return(viewport.clientWidth-ie7_tmp.offsetWidth)/2;default:if(PERCENT.test(position)){return parseInt((viewport.clientWidth-ie7_tmp.offsetWidth)*parseFloat(position)/100)}ie7_tmp.style.left=position;return ie7_tmp.offsetLeft}};eval(topFunction(getOffsetLeft));function positionFixed(element){if(element.currentStyle.position!="fixed")return;fixBackground();positionFixed[positionFixed.count++]=element;element.style.position="fixed";element.runtimeStyle.position="absolute";foregroundPosition(element)};positionFixed.count=0;function foregroundPosition(element,recalc){positionLeft(element,recalc);positionTop(element,recalc);if(!recalc||element.runtimeStyle.autoTop){if(parseInt(element.currentStyle.bottom)==0)element.runtimeStyle.screenTop++}};function positionLeft(element,recalc){if(!recalc&&PERCENT.test(element.currentStyle.width))element.runtimeStyle.fixWidth=element.currentStyle.width;if(element.runtimeStyle.fixWidth)element.runtimeStyle.width=parseInt(parseFloat(element.runtimeStyle.fixWidth)/100*viewport.clientWidth);if(recalc){if(!element.runtimeStyle.autoLeft)return}else{element.runtimeStyle.autoLeft=element.currentStyle.right!="auto"&&element.currentStyle.left=="auto"}element.runtimeStyle.left="";element.runtimeStyle.screenLeft=getScreenLeft(element);if(element.currentStyle.marginLeft!="auto"){element.parentElement.appendChild(ie7_tmp);ie7_tmp.style.left=element.currentStyle.marginLeft;element.runtimeStyle.screenLeft-=ie7_tmp.offsetLeft;element.parentElement.removeChild(ie7_tmp)}if(isFixed(element.offsetParent))element.runtimeStyle.pixelLeft=element.runtimeStyle.screenLeft;else if(!recalc)element.runtimeStyle.setExpression("pixelLeft","runtimeStyle.screenLeft+document."+viewport$+".scrollLeft")};eval(topFunction(positionLeft).replace(/right/g,"bottom").replace(/width/g,"height"));function getScreenLeft(element){var getScreenLeft=element.offsetLeft,nested=false;var fixed=isFixed(element.offsetParent)&&element.runtimeStyle.autoLeft;while(element=element.offsetParent){if(!fixed&&element.currentStyle.position!="static")nested=true;getScreenLeft+=element.offsetLeft*(nested?-1:1)}return getScreenLeft};eval(topFunction(getScreenLeft));function resize(){for(var i=0;i<backgroundFixed.count;i++)backgroundPosition(backgroundFixed[i]);for(i=0;i<positionFixed.count;i++)foregroundPosition(positionFixed[i],true);timer=0};var timer;addEventHandler(window,"onresize",function(){if(!timer)timer=setTimeout(resize,10)})});loaded=true;if(document.readyState=="complete")_load();else addEventHandler(document,"onreadystatechange",function(){if(!complete&&document.readyState=="complete")setTimeout(_load,0)})}catch(error){unHide();alert("Error [0]: "+error.description)}finally{}}();
diff --git a/www/inc/styles/ie7/ie7.gif b/www/inc/styles/ie7/ie7.gif Binary files differnew file mode 100644 index 0000000..64a2c2d --- /dev/null +++ b/www/inc/styles/ie7/ie7.gif diff --git a/www/inc/styles/ie7/license b/www/inc/styles/ie7/license new file mode 100644 index 0000000..1876e75 --- /dev/null +++ b/www/inc/styles/ie7/license @@ -0,0 +1,17 @@ +
+ This work is licensed under a Creative Commons License.
+
+ License: http://creativecommons.org/licenses/by/2.0/
+
+ You are free:
+
+ to copy, distribute, display, and perform the work
+ to make derivative works
+ to make commercial use of the work
+
+ Under the following conditions:
+
+ Attribution. You must give the original author credit
+
+ Author: Dean Edwards/2004
+ Web: http://dean.edwards.name/
diff --git a/www/inc/styles/ie7/test-trans.png b/www/inc/styles/ie7/test-trans.png Binary files differnew file mode 100644 index 0000000..e187e2c --- /dev/null +++ b/www/inc/styles/ie7/test-trans.png diff --git a/www/inc/stylesheet.inc.css b/www/inc/stylesheet.inc.css new file mode 100644 index 0000000..9415271 --- /dev/null +++ b/www/inc/stylesheet.inc.css @@ -0,0 +1,141 @@ +<!-- + body { + <?php if ($this->background) echo "background-image: url('" . $this->background . "');\n";?> + background-color: <?php echo $this->bgcolor?>; + font-family: <?php echo $this->font?>; + font-size: <?php echo $this->fontsize?>; + color: <?php echo $this->textcol?>; + } + + a:link { + color: <?php echo $this->link?>; + } + + a:visited { + color: <?php echo $this->vlink?>; + } + + a:active { + color: <?php echo $this->alink?>; + } + + a:hover { + color: <?php echo $this->hover?>; + } + + td { + font-family: <?php echo $this->font?>; + font-size: <?php echo $this->fontsize?>; + } + + input { + font-family: <?php echo $this->font?>; + font-size: <?php echo $this->fontsize?>; + } + .navigation { + color: white; + background-color: #808080; + padding-top: 2px; + padding-bottom: 3px; + padding-left: 4px; + padding-right: 4px; + } + + p.exif { + font-size: 9px; + } + + p.navigation a { + color: #f0f0f0; + font-weight: bold; + padding-top: 2px; + padding-bottom: 2px; + border: 0px; + text-align: left; + } + + p.copyright { + clear: both; + padding-top: 4ex; + font-size: 9px; + text-align: left; + text-decoration: none; + } + + h1 { + letter-spacing: .5em; + } + + img { + /* makes really interesting stuff on nn4 ;) + display: inline; */ + margin: 2px; + border-top: solid black 1px; + border-bottom: solid black 1px; + border-left: dotted #808080 1px; + border-right: dotted #808080 1px; + } + + .navigation img, div.title img { + border: 0px; + margin: 0px; + text-align: left; + } + + div.title { + font-size: 16pt; + font-weight: bold; + letter-spacing: .5em; + } + + div.title a { + text-decoration: none; + } + + p.image img { + /* margin-left: 10px; */ + border: 0px; + margin: 0px; + text-align: center; + /* + border-bottom: 0px; + margin-bottom: 0px; + */ + } + + p.comment { + font-size: 10px; + text-align: justify; + color: #606060; + width: 640px; + /* margin-left: 130px; */ + } + + span { + color: black; + font-weight: bold; + } + + img.thumb { + border: 1px black solid; + margin-top: 2px; + margin-bottom: 2px; + } + + a:hover img.thumb { + border: 1px white solid; + } + + div.year { + float: left; + margin: 2px 1em; + } + + div.year p { + margin: 2px 2em; + } + + div.year h4 { + margin: 1em 1em 2px 1em; + } +--> diff --git a/www/inc/www.class.inc.php b/www/inc/www.class.inc.php new file mode 100644 index 0000000..2206382 --- /dev/null +++ b/www/inc/www.class.inc.php @@ -0,0 +1,221 @@ +<?php +// www.class.inc.php +class C_www { + var $background, $bgcolor, $link, $vlink, $alink, $hover, $language; + var $textcol, $font, $fontsize; + + //// + // !vykpise HTML hlavicku dokumentu + // Ten CSS style jeste neni moc dodelanej + function header($title) { + global $gallery_dir,$root, $snimek, $galerie, $ThisScript, $themes; + + header("Content-Type: text/html; charset=utf-8");// make sure we send in utf8 + // and override Apache + + // For some reason text/xml is + // causing trouble with stylesheets + echo "<?xml version=\"1.0\"?>\n"; + /* + echo "<?xml-stylesheet type=\"text/css\" media=\"screen\""; // doesn't work yet :/ + echo " href=\"inc/style/dark/dark.css\" ?>\n"; + */ + echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"; + echo " \"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd\">\n"; + echo "<html>\n"; + echo "<head>\n"; + + #IE hacks + echo "<!-- This makes IE6 suck less (a bit) -->\n"; + echo "<!--[if lt IE 7]>\n"; + echo "<script src=\"inc/styles/ie7/ie7-standard.js\" type=\"text/javascript\">\n"; + echo "</script>\n"; + echo "<![endif]-->\n"; + + echo " <title>$title</title>\n"; + echo "<link rel=\"icon\" href=\"stock_camera-16.png\" "; + echo "type=\"image/png\" />\n"; + echo "<link rel=\"shortcut icon\" href=\"favicon.ico\" "; + echo "type=\"image/x-icon\" />\n"; + # mozilla style links + if ($snimek && $galerie) { + #Top + echo " <link rel=\"Top\" href=\"$ThisScript\" />\n"; + #First + #Prev + $predchozi = $snimek - 1; + $dalsi = $snimek + 1; + if ($snimek > 1) { + echo " <link rel=\"First\" "; + echo " href=\"$ThisScript?galerie=$galerie&photo=1\" />\n"; + echo " <link rel=\"Previous\" "; + echo "href=\"$ThisScript?galerie=$galerie&photo=$predchozi\" />\n"; + } + #Next + if (is_file("$gallery_dir/$galerie/lq/img-$dalsi.jpg")) { + echo " <link rel=\"Next\" "; + echo " href=\"$ThisScript?galerie=$galerie&photo=$dalsi\" />\n"; + } + #Last + $adr = opendir("$gallery_dir/$galerie/thumbs/"); + $i = -2; + while ($file = readdir($adr)) { + $i++; + } + if ($i!=$snimek) { + echo " <link rel=\"Last\" "; + echo " href=\"$ThisScript?galerie=$galerie&photo=$i\" />\n"; + } + } + + /* check the theme in a cookie */ + $theme = @$_COOKIE["theme"]; + if (!$theme) { //we didn't set the cookie yet + // select first key of the themes array in config.inc.php as default + $theme_keys = array_keys($themes); + $theme = $theme_keys[0]; + } + foreach ($themes as $skin => $url) { + echo "<link type=\"text/css\" rel=\""; + if ($skin==$theme) { + echo "stylesheet"; + } else { + echo "prefertch alternate stylesheet"; + } + echo "\" href=\"$url\" title=\"$skin\""; + echo " media=\"screen\" />\n"; + } + + //require("javascript.inc.php"); + echo "<script src=\"inc/global.js\" "; + echo "type=\"text/javascript\"></script>\n"; + echo "</head>\n\n"; + echo "<body onload=\"checkForTheme()"; + echo "\">\n"; + } + + //// + // !zavre html stranku + function footer() { + echo "</body>\n"; + echo "</html>\n"; + } + + //// + // !vypise chybovou hlasku + // $title - nadpis a title HTML stranky + // $message - vlastni chybova hlaska + function error($title, $message) { + $this->header($title); + echo "<h1>$title</h1>\n"; + echo $message; + $this->footer(); + exit; //vysere se na vsechno + } + + + + //// + // !zacatek fomrulare + function form_start($action, $method, $upload) { + echo "<form "; + if ($upload) echo "enctype=\"multipart/form-data\" "; + echo "action=\""; + echo htmlentities($action,ENT_COMPAT,"UTF-8"); + echo "\" method=\"$method\">\n"; + } + + //// + // !konec formulare + function form_end() { + echo "</form>\n"; + } + + //// + // !vykresli polozku formulare + // umi text, password, submit, file, hidden, textarea, select + // u textarea je default pocet radku... + function input($type, $name, $value, $popis, $default, $title) { + echo "<div class=\"row\">\n"; + if (!$title) { + echo " <div class=\"label\">$popis</div>\n"; + } else { + echo " <div class=\"label\"><a title=\"$title\" "; + echo "href=\"#\">$popis</a></div>\n"; + } + echo " <div class=\"control\">"; + switch ($type) { + case "checkbox": + echo "<input type=\"$type\" name=\"$name\" value=\"$value\""; + if ($default) echo " checked=\"checked\""; + echo " />"; + break; + case "password": + case "text": + echo "<input type=\"$type\" size=\"30\" name=\"$name\" value=\"$value\" />"; + break; + case "file": + echo "<input type=\"$type\" size=\"30\" name=\"$name\" />"; + break; + case "hidden": + echo "<input type=\"$type\" name=\"$name\" value=\"$value\" />"; + break; + case "textarea": + echo "<textarea name=\"$name\" cols=\"40\""; + if ($default) { + echo " rows=\"$default\""; + } else { + echo " rows=\"10\""; + } + echo ">$value</textarea>"; + break; + case "select": + echo "<select name=\"$name\" size=\"1\">\n"; + while (list($optval, $option) = each($value)) { + echo "<option value=\"$optval\""; + if ($optval == $default) echo " selected"; + echo ">"; + echo $option; + echo "</option>\n"; + } + echo "</select>"; + break; + case "submit": + echo "<input type=\"$type\" name=\"$name\" value=\"$value\" />"; + break; + } + echo " </div>\n"; + echo "</div>\n"; + } + + +} + +# return dirs sorted +class SortDir { + var $items; + + function SortDir($directory) { + $handle=@opendir($directory); + if (!$handle) return; + while ($file = readdir($handle)) { + if ($file != "." && $file != "..") { + $this->items[]=$file; + } + } + closedir($handle); + if ($this->items) { + natsort($this->items); + } + } + + function Read() { + if ($this->items) { + $getback= (pos($this->items)); + next($this->items); + return $getback; + } + } +} + +?> diff --git a/www/index.php b/www/index.php new file mode 100644 index 0000000..011a614 --- /dev/null +++ b/www/index.php @@ -0,0 +1,540 @@ +<?php +# uncomment this to check for uninitialized variables etc.: +# error_reporting (E_ALL); + +# get variables from the _SERVER array in order to not +# rely on register_globals = On +# (this will not work with standalone PHP) +$ThisScript=preg_replace('/\?.*$/', '', $_SERVER['REQUEST_URI']); +$ScriptFileName=$_SERVER['SCRIPT_FILENAME']; +$HostName=$_SERVER['SERVER_NAME']; +$ThisUrl = $_SERVER['REQUEST_URI']; + +#language support +require_once ("lib/lib.l10n.php"); +require_once("inc/config.inc.php"); +require_once("inc/www.class.inc.php"); +require_once("inc/funkce.inc.php"); +//session_name("navstevnik"); +//session_register("page"); + +#set the language translation +l10n::set("$root/l10n/".$sclang."/main.lang"); +l10n::set("$root/l10n/".$sclang."/date.lang"); + + + + +# always get sorted directory entries +$adr = new SortDir("$gallery_dir"); + +# get variables passed in from the URL: +$galerie=''; +if (isset($_GET['galerie'])) $galerie=$_GET["galerie"]; +if (isset($_GET['gallery'])) $galerie=$_GET["gallery"]; +$galerie = preg_replace('/\//', '', $galerie); +if (isset($_GET["thumbsize"])) $thumbsize=$_GET["thumbsize"]; +$snimek = 0; +if (isset($_GET["snimek"])) $snimek=$_GET["snimek"]; +if (isset($_GET["photo"])) $snimek=$_GET["photo"]; +$snimek = intval($snimek); +$y=''; +if (isset($_GET['y'])) $y=$_GET["y"]; +$cmnt=''; +if (isset($_GET["cmnt"])) $cmnt=$_GET["cmnt"]; +$show_thumbs=''; +if (isset($_GET["show_thumbs"])) $show_thumbs=$_GET["show_thumbs"]; +$exif_style=''; +if (isset($_GET["exif_style"])) $exif_style=$_GET["exif_style"]; + +/* +if(!$exif_style) { + $exif_style="descriptive"; +} */ + +$page = new C_www; +//default colors + +if (!is_dir("$gallery_dir/$galerie/thumbs")) { + $galerie = ""; +} + +//read interesting stuff from info.txt +if ($galerie) { + readInfo("$root/$gallery_dir/$galerie/info.txt", $galerie); +//check for restricted access + if ($galerielogin[$galerie]) { + access_check($galerielogin[$galerie],$galeriepw[$galerie],$galerie); + } +} + +// processing of the user comment data +if($comments && @$_POST["commentdata"]) { + $username = @$_COOKIE["username"]; + $comment_name = @$_POST["commentname"]; + $save_comment_name = @$_POST["savecommentname"]; + $comment_data = @$_POST["commentdata"]; + $comment_kolacek = @$_POST["commentkolacek"]; + $comment_spamcheck = @$_POST["commentspamcheck"]; + + #check for HTML tags + + $comment_name = stripslashes(strip_tags($comment_name)); + $allowedTags = '<a><b><i><ul><li><blockquote><br>'; + $comment_data = stripslashes(strip_tags($comment_data,$allowedTags)); + // thanks google: + // http://www.google.com/googleblog/2005/01/preventing-comment-spam.html + $comment_data = eregi_replace("<a ","<a rel=\"nofollow\" ",$comment_data); + + #further comment spam + $comment_blacklist = array("pharmacy", "poker", "Viagra"); + + foreach($comment_blacklist as $blackword) { + $check = addslashes($blackword); + if (eregi($check,$comment_data)) { + #write error message + $page->error( __('No comment spam'), __('Your comment includes blacklisted word') . __('No comment spam') ); + $page->footer(); + exit; //stop everything + } + } + + if ($comment_kolacek!=md5($comment_spamcheck)) { + $page->error( __('No comment spam'), __('You ve written the check number wrong' ) ); + $page->footer(); + exit; //stop everything + } + + if (!$comment_name) { + $comment_name = $_COOKIE["username"]; + } + + // ok so we got a comment + if ($comment_name && $save_comment_name) { + // save out name in a cookie + if (!setcookie("username","$comment_name", + mktime(0, 0, 0, 12, 30, 2030))) { + print __('Could not set name cookie!'); + exit; + } + } + + // create a user_comment file if not existant or append to it + if (is_writable("$root/$gallery_dir/$galerie/comments")) { // needs perms + $comment = "$root/$gallery_dir/$galerie/comments/user_$snimek.txt"; + $fh = fopen("$comment", "a"); + + if (!$comment_name) { + $comment_name = __('Anonymous'); + } + if (!fwrite($fh, "<div class=\"commententry\">\n")) { + $page->error( __('Could not write to') . $comment . "!" ); + $page->footer(); + exit; //stop everything + } + fwrite($fh, " <div class=\"name\">" . __('Comment from') . "<em>$comment_name</em></div>\n",90); + fwrite($fh, " <div class=\"commentdata\">$comment_data</div>\n",280); + fwrite($fh, "</div>\n"); + + fclose($fh); + } +} + + +//START RENDERING + + +$page->header("Photos"); +require("inc/header.inc.php"); + +// folder > tree +//echo "<div class=\"navigation\"><a href=\"$ThisScript\">" . $scnamegallery . "</a>"; +echo "<div class=\"navigation\"><a href=\"./\">" . $scnamegallery . "</a>"; + +############################# +# Overall Gallery Index # +############################# +if (!$galerie) { + # finish off navigation bar + echo "</div>\n\n<!-- listing galleries-->\n\n"; + # I've nuked date.txt to replace it with a more generic info.txt + # It optionally supplies i18n name, camera model, author and date + # TODO: imgconv script support + while ($file = $adr->Read()) { + // checking for inc is only really needed when gallery_dir == $root + // hopefully not many galleries will be named inc ;) + if (is_dir("$gallery_dir/$file") && !ereg("\.", $file) && $file!="inc") { + // Use date file for gallery date if avaliable + // info.txt format described in README + readInfo("$root/$gallery_dir/$file/info.txt", $file); + + } + } + + if (!isset($galeriemonth)) $galeriemonth = array(); + if (!isset($galerieday)) $galerieday = array(); + //sort within month depending on $sortinmonth + if ($sortinmonth) { + //alphabetically + ksort($galeriemonth); + reset($galeriemonth); + } else {//by date + arsort($galerieday); + reset($galerieday); + } + + + $thisyear = 0; + for ($i = $yearto; $i >= $yearsince; $i--) { + for ($thismonth=12; $thismonth>0; $thismonth--) { // go year by year, month by month + // down + foreach ($galerieday as $foldername => $day) { //using $galerieday (for when sorted) + if ($galeriemonth["$foldername"] == $thismonth && + $galerieyear["$foldername"] == $i) { //such Y/M exists + + $galerieyearordered["$foldername"]=$galerieyear["$foldername"]; + $galeriemonthordered["$foldername"]=$galeriemonth["$foldername"]; + } + } + } + } + + + $months = array(__('January'), __('February'), __('March'), __('April'), __('May'), __('June'), __('July'), __('August'), + __('September'), __('October'), __('November'), __('December')); + $one_out = false; + foreach ($galerieyearordered as $foldername => $year) { + $one_out = true; + if (@$thisyear!=$year) { #if the year is not equal to the current year + #This is the first year + if (@$thisyear) { echo " </div>\n</div>\n";}// end last year if this is + // not the first one + #This is a new year + unset($thismonth); + echo "<div class=\"year\"><h3>$year</h3>\n"; + echo ""; + } + $month=$galeriemonth["$foldername"]; + # now months + if (@$thismonth!=$month) { + #first one + if (@$thismonth) { echo " </div>\n"; } // end of last month if + // this is not the first one + #new month + $monthindex = $month - 1; + $monthname = $months[$monthindex]; + echo " <div class=\"month\"><h4>$monthname</h4>\n"; + } + #galleries within month + if ($galerielogin[$foldername]) { + echo " <p class=\"restricted\"><a "; + } else { + echo " <p><a "; + } + if (@$galeriename[$foldername]) { + echo " href=\"$ThisScript?galerie=$foldername\">"; + echo $galeriename[$foldername]; + echo "</a>"; + } else { + echo " href=\"$ThisScript?galerie=$foldername\">$foldername</a>"; + } + if (@$galeriedesc[$foldername]) { + echo "<span class=\"desc\">" . $galeriedesc[$foldername]; + echo "</span>\n"; + } + if (@$galerieauthor[$foldername]) { + echo "<span class=\"author\">by " . $galerieauthor[$foldername]; + echo "</span>\n"; + } + if (@$galerieday[$foldername]) { + echo "<span class=\"date\">"; + echo "$monthname " . $galerieday[$foldername]; + echo "</span>\n"; + } + echo "</p>\n"; + $thisyear=$year; + $thismonth=$month; + } + if ($one_out) echo (" </div>\n</div>\n\n"); + +############################## +# Individual Gallery Index # +############################## +} elseif (!$snimek) { + + # finish off navigation header + + echo "\n > "; + if ($galeriename[$galerie]) { + echo $galeriename[$galerie]; + } else { + echo $galerie; + } + echo "</div>\n\n"; + + //thumbnails + echo "<p class=\"bigthumbnails\">\n"; + $path = "$gallery_dir/$galerie/thumbs"; + $imgfiles = new SortDir($path); + check($galerie); // check for nasty input + while ($file = $imgfiles->read()) { + if (is_file("$path/$file") && eregi("^img-([0-9]+)\.(png|jpe?g)", $file, $x)) { + + $thumb = "$gallery_dir/$galerie/thumbs/img-${x[1]}.${x[2]}"; + $imgsize = getimagesize("$root/$thumb"); + //check for portraits + $portrait = "false"; + $class = ""; + if($imgsize[0]<100) { + //portraits need a special class for styling + $class = "portrait"; + } + //check for number of comments per photo + if ($comments) { //there probably won't be user comments if it's off + $NumOfComments = 0; + if (file_exists("$gallery_dir/$galerie/comments/user_${x[1]}.txt")) { + if ($class) $class .= " "; + $class .= "hascomments"; + //now let's count'em + $fh = fopen("$gallery_dir/$galerie/comments/user_${x[1]}.txt","r"); + while (!feof($fh)) { + $line = fgets($fh); + if (eregi("commententry",$line)) $NumOfComments++; + } + fclose($fh); + } + if ($NumOfComments==1) { + $NumOfComments = $NumOfComments . " " . __('Comment'); + } else { + $NumOfComments = $NumOfComments . " " . __('Comments'); + } + } + if (file_exists("$gallery_dir/$galerie/comments/${x[1]}.txt") && + $title = file_get_contents("$gallery_dir/$galerie/comments/${x[1]}.txt")) { + $title = ereg_replace("(\"|\')","",trim(strip_tags($title))); + $title = ereg_replace("(.{77}).*","\\1",$title); + } else + $title = "Photo ${x[1]}"; + + echo " <a href=\"$ThisScript?galerie=$galerie&photo=${x[1]}\""; + echo " title=\"$title, $NumOfComments\""; + if ($class) echo " class=\"$class\""; + echo ">"; + echo "<img "; + if ($thumbsize) { + echo "width=\"120\" height=\"80\" "; + } else { + // scale portraits to 80 height + if ($portrait) { + //portrait + echo "width=\""; + $scaled = round($imgsize[0] / 1.5); + echo $scaled; + echo "\" height=\"${imgsize[0]}\""; + } else { + //landscape + echo $imgsize[3]; + } + } + echo " src=\"$thumb\" "; + echo "alt=\"photo No. ${x[1]}\" />"; + echo "</a>\n"; + } + } + echo "</p>\n"; + + //info + echo "<div id=\"info\">\n"; + if ($galeriedesc[$galerie]) { + echo "<p>"; + echo "<span class=\"value\">"; + echo $galeriedesc[$galerie] . "</span></p>\n"; + } + if ($galerieauthor[$galerie]) { + echo "<p><span class=\"key\">Author: </span>"; + echo "<span class=\"value\">"; + echo $galerieauthor[$galerie] . "</span></p>\n"; + } + echo "</div>\n"; + + //and links to archived images: + echo "\n<p class=\"archives\">\n"; + if (file_exists("$gallery_dir/$galerie/zip/mq.zip")) { + echo "[ <a href=\"$gallery_dir/$galerie/zip/mq.zip\">" . __('zipped MQ images') . "</a> ] "; + } + if (file_exists("$gallery_dir/$galerie/zip/mq.tar.bz2")) { + echo "[ <a href=\"$gallery_dir/$galerie/zip/mq.tar.bz2\">" . __('MQ images tarball') . "</a> ] "; + } + if (file_exists("$gallery_dir/$galerie/zip/hq.zip")) { + echo "[ <a href=\"$gallery_dir/$galerie/zip/hq.zip\">" . __('zipped HQ images') . "</a> ]"; + } + if (file_exists("$gallery_dir/$galerie/zip/hq.tar.bz2")) { + echo "[ <a href=\"$gallery_dir/$galerie/zip/hq.tar.bz2\">" . __('HQ images tarball') . "</a> ]"; + } + echo "</p>"; + +####################### +# Individual Image # +####################### +} else { //low-res image + # finish off header + echo "\n > <a href=\"$ThisScript?galerie=$galerie\">"; + if ($galeriename[$galerie]) { + echo $galeriename[$galerie]; + } else { + echo $galerie; + } + echo "</a>\n > Photo"; + echo " $snimek</div>"; + $path = "$gallery_dir/$galerie/thumbs"; + $imgfiles = new SortDir("$path"); + check($galerie); + $path = "$gallery_dir/$galerie/lq"; + $file = "$path/img-$snimek.jpg"; + if (!file_exists($file)) { + echo __('No such image'); + $page->footer(); + exit; + } + $imgsize = getimagesize("$root/$file"); + /* + navigation($galerie, $snimek, null); + */ + + // mini thumbnail roll + + if ($show_thumbs) { + echo "\n<!--mini thumbnail roll-->\n<div class=\"thumbroll\">"; + echo "<a id=\"minus\" href=\"$ThisScript?galerie=$galerie&photo=$snimek"; + echo "&exif_style=$exif_style\">"; + echo "</a>\n"; + echo " : \n"; + while ($thumbfile = $imgfiles->read()) { + if ( eregi("^img-([0-9]+)\.(png|jpe?g)", + $thumbfile, $x)) { + $thumb = "$gallery_dir/$galerie/thumbs/img-${x[1]}.${x[2]}"; + echo " <a href=\"$ThisScript?galerie=$galerie&photo=${x[1]}"; + echo "&show_thumbs=$show_thumbs\""; + echo " title=" . get_photo_title($galerie, $x[1]) . ">"; + echo "<img class=\"thumb\" "; + // hadess' hack (TM) ;) + if ($thumbsize) { + echo " width=\"24\" height=\"16\""; + } else { + $minithumb=getimagesize("$root/$thumb"); + $w=$minithumb[0]/6; + $h=$minithumb[1]/6; + echo " width=\"$w\" height=\"$h\""; + } + echo " src=\"$thumb\" "; + echo "alt=\"photo No. ${x[1]}\" />"; + echo "</a> \n"; + } + } + if (file_exists("$gallery_dir/$galerie/zip/hq.zip")) { + echo "<a id=\"zip\" href=\"$gallery_dir/$galerie/zip/hq.zip\">"; + echo "zip<span /></a>"; + } + if (file_exists("$gallery_dir/$galerie/zip/hq.tar.bz2")) { + echo "<a id=\"zip\" href=\"$gallery_dir/$galerie/zip/hq.tar.bz2\">"; + echo "zip<span /></a>"; + } + echo "</div>\n"; + } else { + // show the popup button + echo "\n<!--mini thumbnail popup-->\n<div class=\"thumbroll\">"; + echo "<a id=\"plus\" href=\"$ThisScript?galerie=$galerie&photo=$snimek"; + echo "&exif_style=$exif_style&show_thumbs=yes\""; + echo " title=\"" . __('Show Thumbnail Navigation') . "\">"; + echo "</a>\n"; + echo "</div>\n"; + } + + /* main image + thumbnail navigation (prev/next) */ + + $divheight = $imgsize[1] + 10; + echo "<div id=\"image\" style=\"height: ${divheight}px\">\n"; // extra kludge + // because of tall + // images + + echo "<img id=\"preview\" ${imgsize[3]} src=\"$file\" alt=\"$snimek\" />\n"; + navigation($galerie, $snimek, "prev"); + navigation($galerie, $snimek, "next"); + echo "</div>\n"; //image + + + if ($exif_prog) require("$root/inc/exif.inc.php"); + /* Image comment (caption really) */ + $comment = "$root/$gallery_dir/$galerie/comments/$snimek.txt"; + if (file_exists($comment)) { + echo "<div class=\"comment\">"; + include($comment); + echo "</div>"; + } + /* Counter/Access Log - also requires comments dir world writable */ + if ($log_access==1) { + //simple counter + if (is_writable("$root/$gallery_dir/$galerie/comments")) { // needs perms + $log = "$root/$gallery_dir/$galerie/comments/log_$snimek.txt"; + if (file_exists($log)){ + $fh = fopen($log, "r"); + $counter = rtrim(fgets($fh)); + fclose($fh); + } else { + $counter = 0; + } + $counter++; + $fh = fopen($log,"w"); + if (!fwrite($fh, "$counter\n")) { + $page->error( __('Could not write to') . $log . "!"); + $page->footer(); + exit; //stop everything + } + fclose($fh); + //Now display something + echo "\n<div id=\"log\">\n"; + echo __('This image has been viewed') . " "; + echo "<strong>$counter</strong>". " " . __('times') . "."; + //echo date("F dS, Y",filectime($log)); + echo "</div>\n\n"; + } else { + echo "<!-- ". __('WARNING: comment dir not writable') . "-->\n"; + } + } elseif ($logaccess==2) { + // log time, IP, UA + // TODO - is this really a good thing to do? + } + + + if (file_exists("$gallery_dir/$galerie/mq/img-$snimek.jpg") || file_exists("$gallery_dir/$galerie/hq/img-$snimek.jpg")) { + echo "<div id=\"mqhq\">"; + if (file_exists("$gallery_dir/$galerie/mq/img-$snimek.jpg")) { + echo "<a href=\"$gallery_dir/$galerie/mq/img-$snimek.jpg\">". __('MQ') . "</a> "; + } + if (file_exists("$gallery_dir/$galerie/hq/img-$snimek.jpg")) { + echo "<a href=\"$gallery_dir/$galerie/hq/img-$snimek.jpg\">" . __('HQ') . "</a>"; + } + echo "</div>\n"; //mqhq + } + + /* User comments */ + if ($comments) { + if (is_writable("$root/$gallery_dir/$galerie/comments")) { // needs perms + require("inc/comment.inc.php"); + $user_comment = "$root/$gallery_dir/$galerie/comments/user_$snimek.txt"; + + if (file_exists($user_comment)) { + echo "<div class=\"user_comment\">"; + include($user_comment); + echo "</div>"; + } + } else { + echo "<!-- WARNING: comment dir not writable -->\n"; + } + } + navigation($galerie, $snimek, null); +} + +require("inc/footer.inc.php"); +$page->footer(); +?> diff --git a/www/l10n/cs/date.lang b/www/l10n/cs/date.lang new file mode 100644 index 0000000..72a45a0 --- /dev/null +++ b/www/l10n/cs/date.lang @@ -0,0 +1,79 @@ +;Jan +Led +;Feb +Úno +;Mar +Bře +;Apr +Dub +;May +Kvě +;Jun +Čer +;Jul +Čec +;Aug +Srp +;Sep +Zář +;Oct +Říj +;Nov +Lis +;Dec +Pro + +;January +Leden +;February +Únor +;March +Březen +;April +Duben +;May +Květen +;June +Červen +;July +Červenec +;August +Srpen +;September +Září +;October +Říjen +;November +Listopad +;December +Prosinec + +;Mon +Po +;Tue +Út +;Wed +St +;Thu +Čt +;Fri +Pá +;Sat +So +;Sun +Ne + +;Monday +Pondělí +;Tuesday +Úterý +;Wednesday +Středa +;Thursday +Čtvrtek +;Friday +Pátek +;Saturday +Sobota +;Sunday +Neděle diff --git a/www/l10n/cs/exif.lang b/www/l10n/cs/exif.lang new file mode 100644 index 0000000..2fc7526 --- /dev/null +++ b/www/l10n/cs/exif.lang @@ -0,0 +1,21 @@ +;Time Taken +Čas pořízení +;Camera Manufacturer +Výrobce fotoaparátu +;Camera Model +Typ +;Real Focal Length +Ohnisková vzdálenost +;Focal Length Relative to 35mm Film +Ohnisková vzdálenost (přepočteno na 35mm) +;F Stop +Clona +;Time of Exposure +Čas expozice +;Flash +Blesk + +;More info +Více informací +;Less info +Méně informací diff --git a/www/l10n/cs/main.lang b/www/l10n/cs/main.lang new file mode 100644 index 0000000..2c2dc57 --- /dev/null +++ b/www/l10n/cs/main.lang @@ -0,0 +1,111 @@ +;No comment spam +Žádné reklamní příspěvky + +;Your comment includes blacklisted word +Váš komentář obsahuje nepovolené slovo + +;You ve written the check number wrong +Kontorlní číslo opsáno chybně + +;Could not set name cookie! +Nepovedlo se zapsat koláček se jménem + +;Anonymous +Anonymní + +;Could not write to +nepovedlo se zapsat do + +;Comment from +Komentář od + +;Comment +Komentář + +;Comments +Komentářů + +;zipped MQ images +archiv obrázků ZIP (SK) + +;MQ images tarball +archiv obrázků TGZ (SK) + +;zipped HQ images +archiv obrázků ZIP (VK) + +;HQ images tarball +archiv obrázků TGZ (VK) + +;No such image +Obrázek neexistuje + +;Show Thumbnail Navigation +Zobrazit náhledy + +;Could not write to +Nepovedlo se zapsat do + +;This image has been viewed +Obrázek již byl viděn + +;times +krát + +;WARNING: comment dir not writable +POZOR: do adresáře s komentáři není právo zápisu + +;MQ +Stř. + +;HQ +Velké + +;Generated by +Vygenerováno pomocí + +;Post a Comment +Přidej komentář + +;Show Form +Zobraz formulář + +;Hide Form +Schovej formulář + +;Name: +Jméno : + +;Enter your name. +Vložte svoje jméno. + +;Remember Name: +Zapamatuj jméno: + +;Should the browser remember your name? +Má se jméno zapamatovat pro další použití? + +;Retype PIN Above: +Vložte kontrolní číslo: + +;Enter the number shown above. +Kontrolní čislo uvedené nahoře je nutné přepsat do tohoto políčka + +;Send +Pošli + +;Allowed HTML tags: a,b,i,ul,li,blockquote,br. +Povolené HTML značky: a,b,i,ul,li,blockquote,br. + + +;display line +zobrazit na řádce + +;display table +zobrazit jako tabulku + +;Previous +Předchozí + +;Next +Následující diff --git a/www/l10n/fr/date.lang b/www/l10n/fr/date.lang new file mode 100644 index 0000000..e9d56b5 --- /dev/null +++ b/www/l10n/fr/date.lang @@ -0,0 +1,79 @@ +;Jan +Jan +;Feb +Fv +;Mar +Mar +;Apr +Avr +;May +Mai +;Jun +Juin +;Jul +Juil +;Aug +Ao +;Sep +Sep +;Oct +Oct +;Nov +Nov +;Dec +Dec + +;January +Janvier +;February +Fvrier +;March +Mars +;April +Avril +;May +Mai +;June +Juin +;July +Juillet +;August +Aot +;September +Septembre +;October +Octobre +;November +Novembre +;December +Dcembre + +;Mon +Lun +;Tue +Mar +;Wed +Mer +;Thu +Jeu +;Fri +Ven +;Sat +Sam +;Sun +Dim + +;Monday +Lundi +;Tuesday +Mardi +;Wednesday +Mercredi +;Thursday +Jeudi +;Friday +Vendredi +;Saturday +Samedi +;Sunday +Dimanche diff --git a/www/l10n/fr/main.lang b/www/l10n/fr/main.lang new file mode 100644 index 0000000..e824a4e --- /dev/null +++ b/www/l10n/fr/main.lang @@ -0,0 +1,111 @@ +;No comment spam +Ne spammer pas les commentaires + +;Your comment includes blacklisted word +Votre commentaire contient des mots interdits. + +;You ve written the check number wrong +Le code de verification est faux + +;Could not set name cookie! +Ne peu créer le nom du cookie + +;Anonymous +Anonyme + +;Could not write to +Ne peut ecrire dans + +;Comment from +Commentaire de + +;Comment + Commentaire + +;Comments +Commentaires + +;zipped MQ images +archive zip (MQ) + +;MQ images tarball +archive tgz (MQ) + +;zipped HQ images +archive zip (HQ) + +;HQ images tarball +archive tgz (HQ) + +;No such image +Aucune image + +;Show Thumbnail Navigation +Affiche les vignettes de navigation + +;Could not write to +Ne peu écrire dans + +;This image has been viewed +Cette image a été vu + +;times +fois + +;WARNING: comment dir not writable +ATENTION : le répertoire des commentaire n'est pas accessible en écriture + +;MQ +Qualité moyenne + +;HQ +haute qualité + +;Generated by +géneré par + +;Post a Comment +Laisser un commentaire + +;Show Form +Afficher le formulaire + +;Hide Form +Cacher le formulaire + +;Name: +Nom : + +;Enter your name. +Entrer votre nom. + +;Remember Name: +Se souvenir de mon nom + +;Should the browser remember your name? +Le navigateur doit-il se rappeller votre nom? + +;Retype PIN Above: +Retaper le code au dessus + +;Enter the number shown above. +Entrer le code au dessus + +;Send +Envoyer + +;Allowed HTML tags: a,b,i,ul,li,blockquote,br. +;tags HTML autorisé: a,b,i,ul,li,blockquote,br. + + +;display line +affichage en ligne + +;display table +affichage table + +;Previous +Précedente + +;Next +Suivante diff --git a/www/left.png b/www/left.png Binary files differnew file mode 100644 index 0000000..63d306c --- /dev/null +++ b/www/left.png diff --git a/www/lib/lib.l10n.php b/www/lib/lib.l10n.php new file mode 100644 index 0000000..b2bf6c2 --- /dev/null +++ b/www/lib/lib.l10n.php @@ -0,0 +1,58 @@ +<?php +# ***** BEGIN LICENSE BLOCK ***** +# This file is part of DotClear. +# Copyright (c) 2004 Olivier Meunier and contributors. All rights +# reserved. +# +# DotClear is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# DotClear is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with DotClear; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# ***** END LICENSE BLOCK ***** + + +function __($str) +{ + return (!empty($GLOBALS['__l10n'][$str])) ? $GLOBALS['__l10n'][$str] : $str; +} + +//why is this a class damnit! +//probably just to structure the functions +class l10n +{ + function init() + { + $GLOBALS['__l10n'] = array(); + $GLOBALS['__l10n_files'] = array(); + } + + function set($file) + { + if (!file_exists($file)) { + //trigger_error('l10n file not found',E_USER_NOTICE); + return false; + } + + $f = file($file); + $GLOBALS['__l10n_files'][] = $file; + + for ($i=0; $i<count($f); $i++) { + if (substr($f[$i],0,1) == ';' && !empty($f[$i+1])) { + $GLOBALS['__l10n'][trim(substr($f[$i],1))] = trim($f[$i+1]); + $i++; + } + } + } +} + +?> diff --git a/www/logo-mini.png b/www/logo-mini.png Binary files differnew file mode 100644 index 0000000..8949154 --- /dev/null +++ b/www/logo-mini.png diff --git a/www/logo.png b/www/logo.png Binary files differnew file mode 100644 index 0000000..24878c3 --- /dev/null +++ b/www/logo.png diff --git a/www/minus.png b/www/minus.png Binary files differnew file mode 100644 index 0000000..bc7a830 --- /dev/null +++ b/www/minus.png diff --git a/www/plus.png b/www/plus.png Binary files differnew file mode 100644 index 0000000..6b103cd --- /dev/null +++ b/www/plus.png diff --git a/www/right.png b/www/right.png Binary files differnew file mode 100644 index 0000000..f998098 --- /dev/null +++ b/www/right.png diff --git a/www/stock_camera-16.png b/www/stock_camera-16.png Binary files differnew file mode 100644 index 0000000..42ec54a --- /dev/null +++ b/www/stock_camera-16.png diff --git a/www/top.png b/www/top.png Binary files differnew file mode 100644 index 0000000..8cc26b4 --- /dev/null +++ b/www/top.png diff --git a/www/zip.png b/www/zip.png Binary files differnew file mode 100644 index 0000000..b52d1d7 --- /dev/null +++ b/www/zip.png |