easystruts-cvs Mailing List for EasyStruts (Page 6)
Brought to you by:
eboudrant,
pombredanne
You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
(39) |
May
(128) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(16) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(22) |
Feb
(21) |
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Philippe O. <pom...@us...> - 2005-05-16 01:22:00
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/org.easyexplore_1.0.1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/eclipse/updates/features/org.easyexplore_1.0.1 Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/org.easyexplore_1.0.1 added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:22:00
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/images/amazon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/images/amazon Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/images/amazon added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:22:00
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/_notes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/_notes Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/_notes added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:22:00
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/images In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/images Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/images added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:22:00
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/eclipse Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:22:00
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.6.1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.6.1 Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.6.1 added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:22:00
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/style In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/style Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/style added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:21:59
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/old/updatestest In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/old/updatestest Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/old/updatestest added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:21:59
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/org.easyexplore.feature_1.0.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/eclipse/updates/features/org.easyexplore.feature_1.0.0 Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/org.easyexplore.feature_1.0.0 added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:21:59
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/demo-0.5.2-light In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/demo-0.5.2-light Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/demo-0.5.2-light added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:21:59
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.6.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.6.0 Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.6.0 added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:21:54
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.5.2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15914/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.5.2 Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net/htdocs/eclipse/updates/features/com.cross.easystruts.eclipse.feature_0.5.2 added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 01:21:07
|
Update of /cvsroot/easystruts/easystruts-website-old-sf.net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15821/easystruts-website-old-sf.net Log Message: Directory /cvsroot/easystruts/easystruts-website-old-sf.net added to the repository |
From: Philippe O. <pom...@us...> - 2005-05-16 00:00:22
|
Update of /cvsroot/easystruts/CVSROOT In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3440 Added Files: .project Log Message: .PROJECT FOR ECLIPSE --- NEW FILE: .project --- <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>easystruts-CVSROOT</name> <comment></comment> <projects> </projects> <buildSpec> </buildSpec> <natures> </natures> </projectDescription> |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:49
|
Update of /cvsroot/easystruts/easystruts-website/lib/x-cbe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/lib/x-cbe Added Files: x3151_cbe4191_z4.zip license.html Log Message: Added new web site sources and data --- NEW FILE: x3151_cbe4191_z4.zip --- (This appears to be a binary file; contents omitted.) --- NEW FILE: license.html --- <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head><title>GNU Lesser General Public License - GNU Project - Free Software Foundation (FSF)</title> <link rev="made" href="mailto:web...@ww..."></head> <body bgcolor="#ffffff" text="#000000" link="#1f00ff" alink="#ff0000" vlink="#9900dd"> <h1>GNU Lesser General Public License</h1> <h2>Table of Contents</h2> <ul> <li><a name="TOC1" href="#SEC1">GNU LESSER GENERAL PUBLIC LICENSE</a> <ul> <li><a name="TOC2" href="#SEC2">Preamble</a> </li><li><a name="TOC3" href="#SEC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</a> </li><li><a name="TOC4" href="#SEC4">How to Apply These Terms to Your New Libraries</a> </li></ul> </li></ul> <p> </p><hr> <p> </p><h2><a name="SEC1" href="#TOC1">GNU LESSER GENERAL PUBLIC LICENSE</a></h2> <p> Version 2.1, February 1999 </p><p> </p><pre>Copyright (C) 1991, 1999 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. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] </pre> <h2><a name="SEC2" href="#TOC2">Preamble</a></h2> <p> The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. </p><p> This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. </p><p> When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. </p><p> To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. </p><p> For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. </p><p> We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. </p><p> To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. </p><p> Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. </p><p> Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. </p><p> When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. </p><p> We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. </p><p> For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. </p><p> In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. </p><p> Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. </p><p> The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. </p><p> </p><h2><a name="SEC3" href="#TOC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</a></h2> <p> <strong>0.</strong> This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". </p><p> A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. </p><p> The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) </p><p> "Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library. </p><p> Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. </p><p> <strong>1.</strong> You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library. </p><p> 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. </p><p> <strong>2.</strong> You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: </p><p> </p><ul> <li><strong>a)</strong> The modified work must itself be a software library. </li><li><strong>b)</strong> You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. </li><li><strong>c)</strong> You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. </li><li><strong>d)</strong> If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. <p> (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) </p><p> These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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. </p><p> 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 Library. </p><p> In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. </p></li></ul> <p> <strong>3.</strong> You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. </p><p> Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. </p><p> This option is useful when you wish to copy part of the code of the Library into a program that is not a library. </p><p> <strong>4.</strong> You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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. </p><p> If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. </p><p> <strong>5.</strong> A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. </p><p> However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. </p><p> When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. </p><p> If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) </p><p> Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. </p><p> <strong>6.</strong> As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. </p><p> You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: </p><p> </p><ul> <li><strong>a)</strong> Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) </li><li><strong>b)</strong> Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. </li><li><strong>c)</strong> Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. </li><li><strong>d)</strong> If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. </li><li><strong>e)</strong> Verify that the user has already received a copy of these materials or that you have already sent this user a copy. </li></ul> <p> For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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. </p><p> It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. </p><p> <strong>7.</strong> You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: </p><p> </p><ul> <li><strong>a)</strong> Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. </li><li><strong>b)</strong> Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. </li></ul> <p> <strong>8.</strong> You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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. </p><p> <strong>9.</strong> 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. </p><p> <strong>10.</strong> Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License. </p><p> <strong>11.</strong> 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library. </p><p> 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. </p><p> 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. </p><p> This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. </p><p> <strong>12.</strong> If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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. </p><p> <strong>13.</strong> The Free Software Foundation may publish revised and/or new versions of the Lesser 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. </p><p> Each version is given a distinguishing version number. If the Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. </p><p> <strong>14.</strong> If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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. </p><p> <strong>NO WARRANTY</strong> </p><p> <strong>15.</strong> BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. </p><p> <strong>16.</strong> 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. </p><p> </p><h2>END OF TERMS AND CONDITIONS</h2> <h2><a name="SEC4" href="#TOC4">How to Apply These Terms to Your New Libraries</a></h2> <p> If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). </p><p> To apply these terms, attach the following notices to the library. 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. </p><p> </p><pre><var>one line to give the library's name and an idea of what it does.</var> Copyright (C) <var>year</var> <var>name of author</var> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA </pre> <p> Also add information on how to contact you by electronic and paper mail. </p><p> You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: </p><p> </p><pre>Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <var>signature of Ty Coon</var>, 1 April 1990 Ty Coon, President of Vice </pre> <p> That's all there is to it! </p><hr> If you need this license in a different language or would like to read more about the GNU licenses go to <a target="x" href="http://www.gnu.org/">GNU's home page</a>. <p> Copyright notice above.<br> Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA </p><p> Updated: <!-- hhmts start --> 27 Nov 2000 paulv <!-- hhmts end --> </p><hr> </body></html> |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:49
|
Update of /cvsroot/easystruts/easystruts-website/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/x/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/x/docs Added Files: debug_tips.html x_reference.html Log Message: Added new web site sources and data --- NEW FILE: x_reference.html --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>X Library Function Reference : Cross-Browser.com</title> <meta name='author' content='Mike Foster (Cross-Browser.com)' /> <meta name='description' content='Cross-Browser DHTML Libraries and Applications' /> <meta name='keywords' content='menu,dhtml,crossbrowser,layout,css,dom,api,library,demo,javascript,code' /> <link rel='stylesheet' type='text/css' href='../../css/s6.css' /> <style type='text/css'> .topLnk { font-size:smaller; text-align:right; margin:0 0 3em 0; padding:0; } .desc { font-weight:normal; color:#000; background:transparent; margin:.5em 0 .5em 1em; } .para { font-weight:normal; color:#000; background:transparent; margin:.5em 0 .5em 2em; } .misc { font-weight:normal; color:#000; background:transparent; margin:.5em 0 .5em 1em; } </style> </head> <body id='pgTop'><a name='pgTop' class='noDisp'> </a> <div id='header'> <h1>Cross-Browser.com</h1> <div class='subtitle'>X Library Function Reference</div> </div> <!-- end header --> <div id='leftColumn' class='column'> <div class='leftContent'> <h3>Notes</h3> <div class='collapsible'> <p>Almost complete for X version 3.15.1 ;-)</p> <p>Beginning with v3.15, the main library files do not provide support for NN4. If you need NN4 support, use 'x_core_nn4.js' and 'x_event_nn4.js' instead of 'x_core.js' and 'x_event.js'. The function <a href='#lnkInclude'>xInclude</a> will do this for you automatically.</p> </div> <!-- end collapsible --> <h3>Parameter Syntax</h3> <div class='collapsible'> <p>Parameters in square brackets are optional. Parameter names use the following data type prefixes.</p> <div class="misc"> <b>b</b> - boolean<br /> <b>i</b> - signed integer<br /> <b>u</b> - unsigned integer<br /> <b>f</b> - floating point (real)<br /> <b>s</b> - string<br /> <b>fn</b> - function reference<br /> <b>o</b> - object reference </div> <p>The first parameter to most functions is an exception to the above. The <b>ele</b> argument can be an id string or an object reference (window, document, or Element).</p> </div> <!-- end collapsible --> <h3>Global Variables</h3> <div class='collapsible'> <div class="misc"> <b>xVersion</b> - X version string<br /> </div> <p>As much as possible, object-detection is used instead of browser-detection. The following variables are used.</p> <div class="misc"> <b>xUA</b> - lowercase user-agent string<br /> <b>xIE4Up</b> - true if browser is IE 4 or greater<br /> <b>xNN4</b> - true if browser is Netscape Navigator 4.x<br /> <b>xOp5or6</b> - true if browser is Opera 5.x or 6.x<br /> <b>xOp7</b> - true if browser is Opera 7.x </div> <p>For some browsers, the window resize and scroll events are simulated. Some of the following variables may be used.</p> <div class="misc"> <b>xPCW</b> - previous clientWidth<br /> <b>xPCH</b> - previous clientHeight<br /> <b>xREL</b> - resize event listener<br /> <b>xPSL</b> - previous scrollLeft<br /> <b>xPST</b> - previous scrollTop<br /> <b>xSEL</b> - scroll event listener </div> </div> <!-- end collapsible --> </div> <!-- end leftContent --> <h2>FUNCTIONS</h2> <div class='leftContent'> <div class='topLnk'><a name="lnkShow" href="#pgTop" title="Top of page">Top</a></div> <h4>xShow(ele)</h4> <div class="desc">Set the element's visibility to 'visible' ('show' for NN4).</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="misc">Uses: xGetElementById(), xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkHide" href="#pgTop" title="Top of page">Top</a></div> <h4>xHide(ele)</h4> <div class="desc">Set the element's visibility to 'hidden' ('hide' for NN4).</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="misc">Uses: xGetElementById(), xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkZIndex" href="#pgTop" title="Top of page">Top</a></div> <h4>xZIndex(ele[,uZ])</h4> <div class="desc">Return and optionally set the element's z-index.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>uZ</b> - unsigned integer z-index</div> <div class="misc">Uses: xGetElementById(), xDef(), xNum()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkColor" href="#pgTop" title="Top of page">Top</a></div> <h4>xColor(ele[,sColor])</h4> <div class="desc">Return and optionally set the element's text color.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>sColor</b> - color string</div> <div class="misc">Uses: xGetElementById(), xDef(), xStr()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkBackground" href="#pgTop" title="Top of page">Top</a></div> <h4>xBackground(ele[,sBgColor[,sBgImage]])</h4> <div class="desc">Return and optionally set the element's background color and image.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>sBgColor</b> - background color string</div> <div class="para"><b>sBgImage</b> - background image URL string</div> <div class="misc">Uses: xGetElementById(), xDef(), xStr(), xOp5or6</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkMoveTo" href="#pgTop" title="Top of page">Top</a></div> <h4>xMoveTo(ele,iX,iY)</h4> <div class="desc">Set the element's x and y coordinates.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>iX</b> - integer x coordinate</div> <div class="para"><b>iY</b> - integer y coordinate</div> <div class="misc">Uses: xLeft(), xTop()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkLeft" href="#pgTop" title="Top of page">Top</a></div> <h4>xLeft(ele[,iX])</h4> <div class="desc">Return and optionally set the element's x coordinate.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>iX</b> - integer x coordinate</div> <div class="misc">Uses: xGetElementById(), xDef(), xStr(), xNum()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkTop" href="#pgTop" title="Top of page">Top</a></div> <h4>xTop(ele[,iY])</h4> <div class="desc">Return and optionally set the element's y coordinate.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>iY</b> - integer y coordinate</div> <div class="misc">Uses: xGetElementById(), xDef(), xStr(), xNum()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkPageX" href="#pgTop" title="Top of page">Top</a></div> <h4>xPageX(ele)</h4> <div class="desc">Return the element's absolute x coordinate.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="misc">Uses: xGetElementById(), xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkPageY" href="#pgTop" title="Top of page">Top</a></div> <h4>xPageY(ele)</h4> <div class="desc">Return the element's absolute y coordinate.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="misc">Uses: xGetElementById(), xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkOffsetLeft" href="#pgTop" title="Top of page">Top</a></div> <h4>xOffsetLeft(ele)</h4> <div class="desc">Return the element's X offset within its parent element.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="misc">Uses: xGetElementById(), xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkOffsetTop" href="#pgTop" title="Top of page">Top</a></div> <h4>xOffsetTop(ele)</h4> <div class="desc">Return the element's Y offset within its parent element.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="misc">Uses: xGetElementById(), xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkScrollLeft" href="#pgTop" title="Top of page">Top</a></div> <h4>xScrollLeft(ele)</h4> <div class="desc">Return the number of pixels the element (or window) has scrolled horizontally.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference. If undefined return document scrollLeft.</div> <div class="misc">Uses: xGetElementById(), xDef(), xNum()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkScrollTop" href="#pgTop" title="Top of page">Top</a></div> <h4>xScrollTop(ele)</h4> <div class="desc">Return the number of pixels the element (or window) has scrolled vertically.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference. If undefined return document scrollTop.</div> <div class="misc">Uses: xGetElementById(), xDef(), xNum()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkSlideTo" href="#pgTop" title="Top of page">Top</a></div> <h4>xSlideTo(ele,iX,iY,iTime)</h4> <div class="desc">Animated, linear motion with sinusoidal rate. Slide the element to the target position in the given time.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>iX</b> - integer x target</div> <div class="para"><b>iY</b> - integer y target</div> <div class="para"><b>iTime</b> - total time of slide in ms</div> <div class="misc">Uses: xGetElementById(), xMoveTo()</div> <div class="misc">File: x_slide.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkResizeTo" href="#pgTop" title="Top of page">Top</a></div> <h4>xResizeTo(ele,uW,uH)</h4> <div class="desc">Set the element's width and height.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>uW</b> - unsigned integer width</div> <div class="para"><b>uH</b> - unsigned integer height</div> <div class="misc">Uses: xWidth(), xHeight()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkWidth" href="#pgTop" title="Top of page">Top</a></div> <h4>xWidth(ele[,uW])</h4> <div class="desc">Return and optionally set the element's width.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>uW</b> - unsigned integer width</div> <div class="misc">Uses: xGetElementById(), xDef(), xNum(), xStr()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkHeight" href="#pgTop" title="Top of page">Top</a></div> <h4>xHeight(ele[,uH])</h4> <div class="desc">Return and optionally set the element's height.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>uH</b> - unsigned integer height</div> <div class="misc">Uses: xGetElementById(), xDef(), xNum(), xStr()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkClip" href="#pgTop" title="Top of page">Top</a></div> <h4>xClip(ele[,iTop,iRight,iBottom,iLeft])</h4> <div class="desc">Set the element's clipping rectangle. If ele is the only argument then set clip to existing width and height. Return void.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>iTop</b> - integer y coordinate of top-left corner</div> <div class="para"><b>iRight</b> - integer x coordinate of right-bottom corner</div> <div class="para"><b>iBottom</b> - integer y coordinate of right-bottom corner</div> <div class="para"><b>iLeft</b> - integer x coordinate of top-left corner</div> <div class="misc">Uses: xGetElementById(), xNum(), nn4:xWidth(), nn4:xHeight()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkAddEventListener" href="#pgTop" title="Top of page">Top</a></div> <h4>xAddEventListener(ele,sEventType,fnEventListener,bCapture)</h4> <div class="desc">Register an event listener on the element. For some browsers the window.onscroll and window.onresize events are simulated.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>sEventType</b> - string event type (mousemove, click, resize, etc.)</div> <div class="para"><b>fnEventListener</b> - reference to the listener function</div> <div class="para"><b>bCapture</b> - boolean capture event flag</div> <div class="misc">Uses: xGetElementById()</div> <div class="misc">File: x_event.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkRemoveEventListener" href="#pgTop" title="Top of page">Top</a></div> <h4>xRemoveEventListener(ele,sEventType,fnEventListener,bCapture)</h4> <div class="desc">Unregister an event listener on the element.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>sEventType</b> - string event type ('mousemove', 'click', 'resize', etc.)</div> <div class="para"><b>fnEventListener</b> - reference to the listener function</div> <div class="para"><b>bCapture</b> - boolean capture event flag</div> <div class="misc">Uses: xGetElementById()</div> <div class="misc">File: x_event.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkEvent" href="#pgTop" title="Top of page">Top</a></div> <h4>xEvent(oEvent)</h4> <div class="desc">Resolve browser differences for selected event properties and return an object with those properties. This is an object prototype.</div> <div class="misc">Parameters:</div> <div class="para"><b>oEvent</b> - native event object (null for IE)</div> <div class="misc">The following are the current xEvent properties.</div> <div class="para"><b>type</b> - string, event type</div> <div class="para"><b>target</b> - element object, target of event</div> <div class="para"><b>pageX</b> - absolute X coordinate of mouse</div> <div class="para"><b>pageY</b> - absolute Y coordinate of mouse</div> <div class="para"><b>offsetX</b> - target-relative X coordinate of mouse</div> <div class="para"><b>offsetY</b> - target-relative Y coordinate of mouse</div> <div class="para"><b>keyCode</b> - unsigned integer</div> <div class="misc">Uses: xDef(), xPageX(), xPageY(), nn4:xLayerFromPoint()</div> <div class="misc">File: x_event.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkClientWidth" href="#pgTop" title="Top of page">Top</a></div> <h4>xClientWidth()</h4> <div class="desc">Return the inner width of the window.</div> <div class="misc">Uses: xOp5or6, xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkClientHeight" href="#pgTop" title="Top of page">Top</a></div> <h4>xClientHeight()</h4> <div class="desc">Return the inner height of the window.</div> <div class="misc">Uses: xOp5or6, xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkGetElementsByAttribute" href="#pgTop" title="Top of page">Top</a></div> <h4>xGetElementsByAttribute(sTag, sAtt, sRE)</h4> <div class="desc">Return an array of all sTag elements whose sAtt attribute matches sRE. sAtt can also be a property name but the property must be of type string.</div> <div class="misc">Parameters:</div> <div class="para"><b>sTag</b> - </div> <div class="para"><b>sAtt</b> - </div> <div class="para"><b>sRE</b> - </div> <div class="misc">Uses: none</div> <div class="misc">File: x_dom.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkGetElementsByClassName" href="#pgTop" title="Top of page">Top</a></div> <h4>xGetElementsByClassName(sClsName, oParentEle, sTagName)</h4> <div class="desc">Returns an array of elements which are descendants of parentEle and have tagName and clsName. If parentEle is null or not present, document will be used. If tagName is null or not present, "*" will be used.</div> <div class="misc">Parameters:</div> <div class="para"><b>sClsName</b> - </div> <div class="para"><b>oParentEle</b> - </div> <div class="para"><b>sTagName</b> - </div> <div class="misc">Uses: xGetElementsByTagName</div> <div class="misc">File: x_dom.js</div> <div class="misc">Demo: <a href='../examples/tooltips3.html'>xTooltip</a>, <a href='../examples/popup.html'>xPopup</a></div> <div class='topLnk'><a name="lnkGetElementsByTagName" href="#pgTop" title="Top of page">Top</a></div> <h4>xGetElementsByTagName(sTagName, oParentEle)</h4> <div class="desc">Returns an array of elements which are descendants of parentEle and have tagName. If parentEle is null or not present, document will be used. If tagName is null or not present, "*" will be used. This even works with IE4.</div> <div class="misc">Parameters:</div> <div class="para"><b>sTagName</b> - </div> <div class="para"><b>oParentEle</b> - </div> <div class="misc">Uses: none</div> <div class="misc">File: x_dom.js</div> <div class="misc">Demo: <a href='../examples/tooltips3.html'>xTooltip</a>, <a href='../examples/popup.html'>xPopup</a></div> <div class='topLnk'><a name="lnkGetComputedStyle" href="#pgTop" title="Top of page">Top</a></div> <h4>xGetComputedStyle(oEle, sProp)</h4> <div class="desc">Works in Moz and Op. For sProp use the css property name, not the object property name. (For finding width in IE this works as long as padding and border use pixel units in the CSS)</div> <div class="misc">Parameters:</div> <div class="para"><b>oEle</b> - element object</div> <div class="para"><b>sProp</b> - css property name</div> <div class="misc">Uses: none</div> <div class="misc">File: x_dom.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkWalkTree" href="#pgTop" title="Top of page">Top</a></div> <h4>xWalkTree(oNode, fnVisit)</h4> <div class="desc">Perform a preorder traversal on the subtree starting at oNode and pass each Element node to fnVisit.</div> <div class="misc">Parameters:</div> <div class="para"><b>oNode</b> - element object at which to begin traversal</div> <div class="para"><b>fnVisit</b> - this function will be called for each node and will be passed a reference to that node.</div> <div class="misc">Uses: none</div> <div class="misc">File: x_dom.js</div> <div class="misc">Demo: <a href='../examples/walktree.html'>xWalkTree</a></div> <div class='topLnk'><a name="lnkGetElementById" href="#pgTop" title="Top of page">Top</a></div> <h4>xGetElementById(ele)</h4> <div class="desc">Return a reference to an Element object or null if <b>ele</b> is invalid.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="misc">Uses: nn4:xLayer()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkLayer" href="#pgTop" title="Top of page">Top</a></div> <h4>xLayer(sId)</h4> <div class="desc">Return a reference to a Layer object or null if <b>sId</b> is invalid. This is only for NN4 and is called by xGetElementById().</div> <div class="misc">Parameters:</div> <div class="para"><b>sId</b> - id string</div> <div class="misc">Uses: none</div> <div class="misc">File: x_core_nn4.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkLayerFromPoint" href="#pgTop" title="Top of page">Top</a></div> <h4>xLayerFromPoint(iX,iY)</h4> <div class="desc">Return a reference to the topmost Layer object containing the point or null if no layer contains the point. This is only for NN4 and is called by xEvent().</div> <div class="misc">Parameters:</div> <div class="para"><b>iX</b> - integer absolute x coordinate</div> <div class="para"><b>iY</b> - integer absolute y coordinate</div> <div class="misc">Uses: none</div> <div class="misc">File: x_event_nn4.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkParent" href="#pgTop" title="Top of page">Top</a></div> <h4>xParent(ele,bNode)</h4> <div class="desc">Return a reference to the element's parent element, or null if not found.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>bNode</b> - pass true if you want parentNode, else you get offsetParent</div> <div class="misc">Uses: xGetElementById(), xDef()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkDef" href="#pgTop" title="Top of page">Top</a></div> <h4>xDef(ref[,...])</h4> <div class="desc">Return true if all arguments are defined.</div> <div class="misc">Uses: none</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkNum" href="#pgTop" title="Top of page">Top</a></div> <h4>xNum(ref)</h4> <div class="desc">Return true if typeof(ref) == 'number'.</div> <div class="misc">Uses: none</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkStr" href="#pgTop" title="Top of page">Top</a></div> <h4>xStr(ref)</h4> <div class="desc">Return true if typeof(ref) == 'string'.</div> <div class="misc">Uses: none</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkEnableDrag" href="#pgTop" title="Top of page">Top</a></div> <h4>xEnableDrag(ele,fnDragStart,fnDrag,fnDragEnd)</h4> <div class="desc">Enable dragging for ele.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>fnDragStart</b> - this function will be called on mousedown on ele</div> <div class="para"><b>fnDrag</b> - this function will be called on each mousemove during dragging</div> <div class="para"><b>fnDragEnd</b> - this function will be called on mouseup on ele</div> <div class="misc">Uses: xGetElementById(), xAddEventListener(), xRemoveEventListener(), xEvent(), xParent(), xMoveTo()</div> <div class="misc">File: x_drag.js</div> <div class="misc">Demo: <a href='../examples/drag1.html'>Drag1</a></div> <div class='topLnk'><a name="lnkImgRollSetup" href="#pgTop" title="Top of page">Top</a></div> <h4>xImgRollSetup(sPath,sOvrSuffix,sFileExt,sImgEleId[,...])</h4> <div class="desc">Can not be called before the window onload event. Pass image IDs starting with 4th argument. Assumes this image file naming convention:<br />out img = path + imgEleId + fileExt<br />over img = path + imgEleId + ovrSuffix + fileExt</div> <div class="misc">Parameters:</div> <div class="para"><b>sPath</b> - path to image files</div> <div class="para"><b>sOvrSuffix</b> - see above file name convention</div> <div class="para"><b>sFileExt</b> - see above file name convention</div> <div class="para"><b>sImgEleId</b> - pass all img ele IDs starting with the 4th argument</div> <div class="misc">Uses: xGetElementById(), xAddEventListener(), xEvent()</div> <div class="misc">File: x_img.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkName" href="#pgTop" title="Top of page">Top</a></div> <h4>xName(ref)</h4> <div class="desc">Returns a string for displaying. It first tries id, then nodeName, then tagName, else returns ele.</div> <div class="misc">Parameters:</div> <div class="para"><b>ref</b> - object reference</div> <div class="misc">Uses: none</div> <div class="misc">File: x_debug.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkLoadScript" href="#pgTop" title="Top of page">Top</a></div> <h4>xLoadScript(sUrl)</h4> <div class="desc">Load a .js file after the window.onload event.</div> <div class="misc">Parameters:</div> <div class="para"><b>sUrl</b> - URL to the .js file</div> <div class="misc">Uses: none</div> <div class="misc">File: x_debug.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkInclude" href="#pgTop" title="Top of page">Top</a></div> <h4>xInclude(sUrl1[,sUrl2[,...]])</h4> <div class="desc">Load .js and/or .css files by document.writing a script or link element into the document. This must be called before the window.onload event. Automatically loads X files with NN4 support if browser is NN4. Returns true if browser has minimal dhtml support, else returns false. Min dhtml support: <i>if (document.getElementById || document.all || document.layers)</i></div> <div class="misc">Parameters:</div> <div class="para"><b>sUrl</b> - URL to the .js or .css file</div> <div class="misc">Uses: xNN4</div> <div class="misc">File: x_load.js</div> <div class="misc">Demo: many of the examples use xInclude</div> <div class='topLnk'><a name="lnkParentChain" href="#pgTop" title="Top of page">Top</a></div> <h4>xParentChain(ele,sDelim,bNode)</h4> <div class="desc">Returns a string for displaying. Iterates up the parent chain of ele.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>sDelim</b> - for example: '\n' or '<br>'</div> <div class="para"><b>bNode</b> - pass true if you want parentNode, else you get offsetParent</div> <div class="misc">Uses: xGetElementById(), xName(), xParent()</div> <div class="misc">File: x_debug.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkHasPoint" href="#pgTop" title="Top of page">Top</a></div> <h4>xHasPoint(ele,iLeft,iTop,iClpT,iClpR,iClpB,iClpL)</h4> <div class="desc">Returns true if iLeft,iTop is contained within the clipped area of ele.</div> <div class="misc">Parameters:</div> <div class="para"><b>ele</b> - id string or object reference</div> <div class="para"><b>iLeft</b> - </div> <div class="para"><b>iTop</b> - </div> <div class="para"><b>iClpT</b> - </div> <div class="para"><b>iClpR</b> - </div> <div class="para"><b>iClpB</b> - </div> <div class="para"><b>iClpL</b> - </div> <div class="misc">Uses: xNum(), xPageX(), xPageY(), xWidth(), xHeight()</div> <div class="misc">File: x_core.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkWindow" href="#pgTop" title="Top of page">Top</a></div> <h4>xWindow(sName, uW, uH, iX, iY, loc, men, res, scr, sta, too)</h4> <div class="desc">Create an xWindow object for each child window the page will need. Pass a zero for width, height, left, and top and the window will have default size and position. Pass a zero or one for the boolean parameters (location field, menubar, etc.). For a simpler alternative see xWinOpen() in 'x_alt.js'.</div> <div class="misc">Parameters:</div> <div class="para"><b>sName</b> - the same name as the 'target' attribute of the A elements</div> <div class="para"><b>uW</b> - </div> <div class="para"><b>uH</b> - </div> <div class="para"><b>iX</b> - </div> <div class="para"><b>iY</b> - </div> <div class="para"><b>loc</b> - </div> <div class="para"><b>men</b> - </div> <div class="para"><b>res</b> - </div> <div class="para"><b>scr</b> - </div> <div class="para"><b>sta</b> - </div> <div class="para"><b>too</b> - </div> <div class="misc">Uses: none</div> <div class="misc">File: x_win.js</div> <div class="misc">Demo: <a href='../examples/xwindow.html'>xWindow</a></div> <div class='topLnk'><a name="lnkBar" href="#pgTop" title="Top of page">Top</a></div> <h4>xBar(sDir, sConStyle, sBarStyle)</h4> <div class="desc"></div> <div class="misc">Parameters:</div> <div class="para"><b>sDir</b> - direction string, one of: 'ltr', 'rtl', 'ttb', or 'btt'</div> <div class="para"><b>sConStyle</b> - classname for the bar container</div> <div class="para"><b>sBarStyle</b> - classname for the bar</div> <div class="misc">Uses: xLeft(), xTop(), xNum(), xResizeTo(), xMoveTo(), xLinearScale()</div> <div class="misc">File: x_bar.js</div> <div class="misc">Demo: <a href='../examples/bargraph.html'>xBar</a></div> <div class='topLnk'><a name="lnkPopup" href="#pgTop" title="Top of page">Top</a></div> <h4>xPopup(sTmrType, uTimeout, sPosition, sStyle, sId, sUrl)</h4> <div class="desc">An alternative to popup windows.</div> <div class="misc">Parameters:</div> <div class="para"><b>sTmrType</b> - 'timeout' or 'interval'</div> <div class="para"><b>uTimeout</b> - time in ms</div> <div class="para"><b>sPosition</b> - 'cen', 'e', 'se', etc.</div> <div class="para"><b>sStyle</b> - classname</div> <div class="para"><b>sId</b> - id</div> <div class="para"><b>sUrl</b> - popup URL</div> <div class="misc">Uses: xTimer,xSlideTo,xWidth,xHeight,xClientWidth,xClientHeight</div> <div class="misc">File: x_popup.js</div> <div class="misc">Demo: <a href='../examples/popup.html'>xPopup</a></div> <div class='topLnk'><a name="lnkTimer" href="#pgTop" title="Top of page">Top</a></div> <h4>xTimer.set(sTmrType, obj, sMethod, uTime, data)</h4> <div class="desc">Register an object method to receive a timeout or interval event.</div> <div class="misc">Parameters:</div> <div class="para"><b>sTmrType</b> - 'timeout' or 'interval'</div> <div class="para"><b>obj</b> - object to receive event</div> <div class="para"><b>sMethod</b> - string: name of one of obj's methods</div> <div class="para"><b>uTime</b> - time in ms</div> <div class="para"><b>data</b> - passed to listener at event</div> <div class="misc">Uses: none</div> <div class="misc">File: x_timer.js</div> <div class="misc">Demo: <a href='../examples/popup.html'>xPopup</a></div> <div class='topLnk'><a name="lnkEvalTextarea" href="#pgTop" title="Top of page">Top</a></div> <h4>xEvalTextarea()</h4> <div class="desc">Append a textarea and button to the current document. Click the button to evaluate the javascript in the textarea.</div> <div class="misc">Uses: none</div> <div class="misc">File: x_debug.js</div> <div class="misc">Demo: <a href=''></a></div> <div class='topLnk'><a name="lnkTooltipGroup" href="#pgTop" title="Top of page">Top</a></div> <h4>xTooltipGroup(grpClassOrIdList, tipClass, origin, xOffset, yOffset, textList)</h4> <div class="desc"></div> <div class="misc">Parameters:</div> <div class="para"><b>grpClassOrIdList</b> - The css class name which you add to any element you want to trigger a tooltip - Or - an array of id strings.</div> <div class="para"><b>tipClass</b> - The css class name applied to the tooltip triggered by elements with the grpClass class name (or elements whose id is in the IdList).</div> <div class="para"><b>origin</b> - One of 'right', 'top', or 'mouse'. For 'right' or 'top', the tooltip is positioned to the right (or top) of the trigger element. For 'mouse' the tooltip will follow the mouse. In all three cases the following offsets are applied.</div> <div class="para"><b>xOffset/yOffset</b> - The tooltip is positioned relative to the above origin, offset by these amounts.</div> <div class="para"><b>textList</b> - If grpClassOrIdList is an array of IDs, then textList provides the tooltip text for the corresponding array index. If grpClassOrIdList is a class name then textList is not needed (tooltip text is taken from the element's TITLE attribute).</div> <div class="misc">Uses: xGetElementById, xGetElementsByClassName, xAddEventListener, xPageX, xPageY, xWidth, xHeight, xMoveTo, xShow, xEvent</div> <div class="misc">File: x_tip.js</div> <div class="misc">Demo: <a href='../examples/tooltips3.html'>xTooltipGroup</a></div> </div> <!-- end leftContent --> </div> <!-- end leftColumn --> <div id='rightColumn' class='column'> <div class='rightContent'> <!-- Menu --> <div class='noDisp'> <hr /> <h4>Menu</h4> </div> <div class='mnuContainer'> <h5>Appearance</h5> <div class='mnuBox'> <p><a href="#lnkBackground">xBackground</a></p> <p><a href="#lnkColor">xColor</a></p> <p><a href="#lnkHide">xHide</a></p> <p><a href="#lnkShow">xShow</a></p> <p><a href="#lnkZIndex">xZIndex</a></p> </div> <h5>Position</h5> <div class='mnuBox'> <p><a href="#lnkHasPoint">xHasPoint</a></p> <p><a href="#lnkLeft">xLeft</a></p> <p><a href="#lnkMoveTo">xMoveTo</a></p> <p><a href="#lnkOffsetLeft">xOffsetLeft</a></p> <p><a href="#lnkOffsetTop">xOffsetTop</a></p> <p><a href="#lnkPageX">xPageX</a></p> <p><a href="#lnkPageY">xPageY</a></p> <p><a href="#lnkScrollLeft">xScrollLeft</a></p> <p><a href="#lnkScrollTop">xScrollTop</a></p> <p><a href="#lnkTop">xTop</a></p> </div> <h5>Size</h5> <div class='mnuBox'> <p><a href="#lnkClip">xClip</a></p> <p><a href="#lnkHeight">xHeight</a></p> <p><a href="#lnkResizeTo">xResizeTo</a></p> <p><a href="#lnkWidth">xWidth</a></p> </div> <h5>Event</h5> <div class='mnuBox'> <p><a href="#lnkEvent">xEvent</a></p> <p><a href="#lnkAddEventListener">xAddEventListener</a></p> <p><a href="#lnkRemoveEventListener">xRemoveEventListener</a></p> </div> <h5>DOM</h5> <div class='mnuBox'> <p><a href="#lnkGetComputedStyle">xGetComputedStyle</a></p> <p><a href="#lnkGetElementById">xGetElementById</a></p> <p><a href="#lnkGetElementsByAttribute">xGetElementsByAttribute</a></p> <p><a href="#lnkGetElementsByClassName">xGetElementsByClassName</a></p> <p><a href="#lnkGetElementsByTagName">xGetElementsByTagName</a></p> <p><a href="#lnkParent">xParent</a></p> <p><a href="#lnkWalkTree">xWalkTree</a></p> </div> <h5>Animation</h5> <div class='mnuBox'> <p><a href="#lnkBar">xBar</a></p> <p><a href="#lnkSlideTo">xSlideTo</a></p> </div> <h5>Misc</h5> <div class='mnuBox'> <p><a href="#lnkEnableDrag">xEnableDrag</a></p> <p><a href="#lnkImgRollSetup">xImgRollSetup</a></p> <p><a href="#lnkInclude">xInclude</a></p> <p><a href="#lnkPopup">xPopup</a></p> <p><a href="#lnkTimer">xTimer</a></p> <p><a href="#lnkTooltipGroup">xTooltipGroup</a></p> </div> <h5>Window</h5> <div class='mnuBox'> <p><a href="#lnkClientHeight">xClientHeight</a></p> <p><a href="#lnkClientWidth">xClientWidth</a></p> <p><a href="#lnkWindow">xWindow</a></p> </div> <h5>Type</h5> <div class='mnuBox'> <p><a href="#lnkDef">xDef</a></p> <p><a href="#lnkNum">xNum</a></p> <p><a href="#lnkStr">xStr</a></p> </div> <h5>Debug</h5> <div class='mnuBox'> <p><a href="#lnkEvalTextarea">xEvalTextarea</a></p> <p><a href="#lnkLoadScript">xLoadScript</a></p> <p><a href="#lnkName">xName</a></p> <p><a href="#lnkParentChain">xParentChain</a></p> </div> <h5>NN4</h5> <div class='mnuBox'> <p><a href="#lnkLayer">xLayer</a></p> <p><a href="#lnkLayerFromPoint">xLayerFromPoint</a></p> </div> <h5> </h5> <div class='mnuBox'> <p><a href="#pgTop">Top</a></p> <p><a href="../../">Home</a></p> <p><a href="javascript:history.back()">Back</a></p> <p><a href="javascript:history.forward()">Forward</a></p> </div> </div> <!-- end menu --> </div> <!-- end rightContent --> </div> <!-- end rightColumn --> </body> </html> --- NEW FILE: debug_tips.html --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>General Debugging Tips</title> <meta name='author' content='Mike Foster (Cross-Browser.com)' /> <meta name='description' content='Cross-Browser DHTML Libraries and Applications' /> <meta name='keywords' content='menu,dhtml,crossbrowser,layout,css,dom,api,library,demo,javascript,code' /> <link rel='stylesheet' type='text/css' href='../../css/s6.css' /> <style type='text/css'> </style> </head> <body> <div id='header'> <h1>Cross-Browser.com</h1> <div class='subtitle'>General Debugging Tips</div> </div> <!-- end header --> <div id='leftColumn' class='column'> <div class='leftContent'> <h2>Squash Those Bugs!</h2> <p>You can download some very nice Javascript debugging programs for a variety of platforms, but your initial debugging can be done with simple techniques right in your code. Most browsers will give the line number of an error - this is essential. Some browsers give better error descriptions than others. There are basically two types of errors: syntax errors, and logic errors.</p> <h3>Syntax Errors</h3> <p>A syntax error will occur when you have not followed the <i>grammer</i> of Javascript: forget to put two quotes around a string; forget to put a closing curly brace; have punctuation in the wrong place, etc. The browser will inform you of most syntax errors.</p> <h3>Logic Errors</h3> <p>After you correct your syntax errors, the script still may not work properly while running: it may be mis-calculating a value, or perhaps an <b>if</b> condition is using the logically wrong (but syntactically valid) operator. These are logic errors.</p> <p>Among the tools that most Debuggers provide for solving errors are <i>Watch Variables</i> and <i>Breakpoints</i>. You can utilize these same concepts without a debugger.</p> <h3>Watch Variables</h3> <p>A watch variable is a variable for which you want to watch the value, <i>as the script is running</i> - that is, as the page is active in a browser.</p> <p>A simple technique for using watch variables without a debugger is to use the window's <b>status bar</b> (some browsers are better at this than others). For example, in the following code fragment I want to <i>watch</i> the value of the variable <b>dx</b>. I insert line number 9. Notice the "//// debug" comment. I do this so I won't forget why I added this line, and so, later, I can search my file for "debug", and delete all those lines.</p> <p>Now I save the file, refresh the browser, and watch the value of dx on the status bar, as the script is running.</p> <pre> 1: if (cl + dx < 0) { 2: cl = 0; 3: dx = 0; 4: } 5: else if (cr + dx > this.width()) { 6: cr = cl + this.clipWidth(); 7: dx = 0; 8: } 9: window.status = "dx: " + dx; ////////////////////// debug </pre> <h3>Break Points</h3> <p>There are times when a variable's value is changing too quickly to use a watch. You need to stop the script and look at the variable. A break point is a line in the script at which <i>the script stops running</i>. You can then look at the current values of variables. When you are ready, you let the script continue running.</p> <p>A simple technique for using break points without a debugger is to use Javascript's <b>alert()</b> function. This function stops the script, displays a message, and waits for the user to click the OK button. The script then continues executing. This technique is not <i>exactly</i> like a break point, but its close enough. For example, in the following code fragment I want to see the value of dx only if it enters the <i>else if</i> block, and before it is assigned zero. I insert line number 6. <pre> 1: if (cl + dx < 0) { 2: cl = 0; 3: dx = 0; 4: } 5: else if (cr + dx > this.width()) { 6: alert("dx: " + dx); ////////////////////// debug 7: cr = cl + this.clipWidth(); 8: dx = 0; 9: } </pre> </div> <!-- end leftContent --> <div class='leftContent'> <a href='http://cross-browser.com/'>Cross-Browser.com</a> - DHTML libraries and applications. </div> <!-- end leftContent --> </div> <!-- end leftColumn --> <div id='rightColumn' class='column'> <div class='rightContent'> <p><b>Debugging Tips</b></p> <p>Syntax Errors</p> <p>Logic Errors</p> <p>Watch Variables</p> <p>Break Points</p> </div> <!-- end rightContent --> </div> <!-- end rightColumn --> </body> </html> |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:49
|
Update of /cvsroot/easystruts/easystruts-website/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/cbe/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/cbe/docs Added Files: getting_started.html cbe_reference.html core_om.html event_om.html Log Message: Added new web site sources and data --- NEW FILE: core_om.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>CBE Core Object Model Documentation</title> <meta name='author' content='Mike Foster, cross-browser.com'> <meta name='description' content="CBE is a Cross-Browser DHTML API for IE, Gecko, Opera, Netscape, Konqueror, AOL and browsers with similar object models. CBE implements some of the W3C DOM2 interfaces."> <style type='text/css'><!-- body { font-family:verdana,arial,sans-serif,helvetica; font-size:12px; color:#000000; margin:0px; padding:0px; background:#cccccc; } a:link, a:visited, a:active { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; } a:hover { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#cccccc; } p { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; } ul { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; background:#ffffff; } pre { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } xmp { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } .monoSpc { font-family:monospace; font-size:14px; } h1 { font-family:verdana,arial,sans-serif; font-size:16px; color:#3333ff; background:#cccccc; padding:2px; } h2 { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#ffffff; border-top:1px dotted #000000; margin:1em 0em 1em 0em;} h3 { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; background:transparent; } td { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; vertical-align:top; } .clsTitle { font-family:verdana,arial,sans-serif; font-size:24px; color:#ffffff; margin:0px; padding:0px; vertical-align:middle; background-color:#3333ff; border-top:1px solid #ffffff; border-left:1px solid #ffffff; border-bottom:1px solid #000000; } .clsSubTitle { font-family:verdana,arial,sans-serif; font-size:10px; color:#ffffff; margin:0px; padding:0px; vertical-align:bottom; background-color:#3333ff; text-align:right; border-top:1px solid #ffffff; border-bottom:1px solid #000000; border-right:1px solid #000000; } --></style> </head> <body marginwidth='0' marginheight='0'><a name="topofpage"></a> <!-- Title --> <table width='100%' border='0' cellspacing='0' cellpadding='4'> <tr> <td height='40' class='clsTitle'> CBE Core Object Model</td> <td height='40' class='clsSubTitle'>Cross-Browser.com </td> </tr></table> <table width='80%' align='center' cellspacing='10' cellpadding='10'><tr><td bgcolor='#ffffff'><!-- indentation table --> <h1>CBE Core Object Model</h1> <h2>Implementing W3C DOM2 Interfaces</h2> <h3>The Idea</h3> <p>When I started working on the second version of CBE, I began to rethink the interface. By that I mean the <i>names</i> of the functions and objects, and how they relate to each other. Most of the other API's I studied had proprietary interfaces. They had function names like <i>getX()</i>, <i>setX()</i>, etc. There's nothing wrong with this type of interface - in fact I really liked it. So I began to think about what to name <i>my</i> functions, but I didn't want to use the names someone else had already used. Well... I'm not really good at coming up with cool names ;)</p> <p>During this time, I was studying the <a href='http://w3c.org/'>W3C</a> recommendations. I suddenly realized - all the names were there, already created for me! And not only that, but they provided a complete object model specification. I then decided that, somehow, my API should not only use the names from the W3C recommendations, but attempt also to actually implement their object model interfaces in <b>cross-browser</b> Javascript.</p> <p><b>CBE 4</b> is a partial implementation of some of the W3C DOM2 interfaces. This document discusses the CBE core object model. The CBE <a href="event_om.html">event model</a> is discussed in another document.</p> <h3>The Implementation Object</h3> <p>The following is a very simple example of programming DHTML in a DOM1 environment.</p> <p><i>Listing 1</i></p> <pre> window.onload = function() { var e1 = document.getElementById('E1'); e1.style.left = 100 + 'px'; e1.style.top = 100 + 'px'; e1.style.visibility = 'visible'; } </pre> <p>Now look at the following which uses CBE. It accomplishes the same task - positions an element at the point (100,100) and makes it visible. But this will work the same in all the different browsers CBE supports. And that's the whole purpose of CBE - to provide a programming interface as close as possible to the standard, while providing consistent, cross-browser semantics and rendering.</p> <p><i>Listing 2</i></p> <pre> function windowOnload() { var e1 = document.getElementById('E1'); e1.cbe.left(100); e1.cbe.top(100); e1.cbe.visibility('visible'); } </pre> <p>I'm sure you see the differences between the two code listings.</p> <ol> <li><i>The window.onload Event</i><br> Listing 1 directly hooks the window.onload event to initialize it's positioned element on the page. Listing 2 defines a function named <b>windowOnload()</b> to accomplish the same purpose. The actual window.onload event is hooked by the CBE system itself, and creates the CBE object model - then it calls windowOnload().</li> <li><i>The CSSP Object</i><br> In Listing 1 the CSSP object is named <i>style</i>. With CBE it is named <i>cbe</i>. Because CBE uses so many standard names, it must keep them within their own scope.</li> <li><i>Properties v/s Methods</i><br> Listing 1 reads and writes <i>properties</i> of the CSSP object. With CBE you call <i>methods</i> of the CSSP object. Browser differences are rectified within the methods.</li> <li><i>Specifying Units</i><br> In listing 1 you must specify the units. In CBE all numeric units are Pixels.</li> </ol> <p>CBE provides some <i>shortcut</i> methods. The following accomplishes the same as Listings 1 and 2, but is written the way I would normally program with CBE.</p> <p><i>Listing 3</i></p> <pre> function windowOnload() { var e1 = cbeGetElementById('E1').cbe; e1.moveTo(100,100); e1.show(); } </pre> <h3>CrossBrowserElement</h3> <!-- * --> <p>The CrossBrowserElement object is a partial implementation of the DOM2 <b>Element</b> interface. It is a <i>subclass</i> of CrossBrowserNode, and so inherits those properties and methods. CrossBrowserElement objects populate the CBE Object Tree. A CrossBrowserElement object is created for each DIV or SPAN with id!="" and added to it's associated Element object as a property named <b>cbe</b>.</p> <p>The window.onload event is received by a function in <i>cbe_core.js</i>. It calls the function cbeInitialize(), which creates the CBE object model. Consider the following HTML.</p> <pre> <div id='E1' class='clsCBE'>This is e1</div> </pre> <p>Now notice the difference between accessing the native Element object and the CrossBrowserElement object, and then compare this with listing 3.</p> <p><i>Listing 4</i></p> <pre> function windowOnload() { <b>// ne is a reference to the native Element object</b> var ne = document.getElementById('E1'); <b>/* e is a reference to the CrossBrowserElement object associated with the native Element object whose id is 'E1' */</b> var e = ne.cbe; e.moveTo(100,100); e.show(); } </pre> <h3>The CBE Object Tree</h3> <p>The function cbeInitialize() connects all the CrossBrowserElement objects into a <i>tree structure</i> using property names from the DOM2 Node interface. This tree structure models the <i>parent/child</i> (nesting) relationships among the CrossBrowserElement objects. When cbeInitialize() has finished creating the object model, it calls windowOnload(), if you have defined it. The window.on<b>un</b>load event is also received by a CBE function. It first calls windowOnunload(), if you have defined it, then nulls the cbe property of each positioned Element.</p> <p>The following illustrates the tree structure that is created for the HTML in listing 5. Notice that there are two additional CrossBrowserElement objects in the tree. One is associated with the native <b>window</b> object, and the other is associated with the native <b>document</b> object. Their respective id's are the values of the variables <b>window.idWindow</b> and <b>window.idDocument</b>.</p> <table border='0' cellspacing='0' cellpadding='20'><tr> <td valign='top'> <p><i>Listing 5</i></p> <pre> <div id='P1' class='clsCBE'> <div id='P1C1' class='clsCBE'> </div> <div id='P1C2' class='clsCBE'> </div> </div> <div id='P2' class='clsCBE'> <div id='P2C1' class='clsCBE'> </div> <div id='P2C2' class='clsCBE'> </div> </div> </pre> </td> <td><img border='0' src='../graphics/cbe_tree.gif'></td> </tr></table> <p>There are common terms used to describe the relationships between objects in a tree structure. In the descriptions below I'll refer to the tree built from listing 5.</p> <ul> <li><i>node</i> - Each individual item in the tree.</li> <li><i>root</i> - The first node of the tree. <i>window.cbe</i> is the root node of the CBE object tree.</li> <li><i>parent</i> - The node one level up. P1 is the parent of P1C1 and P1C2.</li> <li><i>child</i> - The node one level down. P1C1 and P1C2 are the children of P1.</li> <li><i>Sibling</i> - Nodes on the same level. P1C1 and P1C2 are siblings (they have the same parent).</li> <li><i>Ancestor</i> - Any of the nodes as you follow the connections up to the root. <i>document.cbe</i> is not the parent of P1C1, but is it's ancestor.</li> <li><i>Descendant</i> - Any of the nodes as you follow the connections down. The opposite of ancestor. P1C1 is a descendant of <i>window.cbe</i>.</li> </ul> <h3>CrossBrowserNode</h3> <!-- * --> <p>The CrossBrowserNode object is a partial implementation of the DOM2 <b>Node</b> interface. It's properties provide for the implementation of the CBE Object Tree.</p> <p>CrossBrowserNode Properties:</p> <ul> <li>childNodes</li> <li>firstChild</li> <li>lastChild</li> <li>nextSibling</li> <li>parentNode</li> <li>previousSibling</li> </ul> <p>In CBE, <i>childNodes</i> is an integer, and is simply the number of child nodes. The remaining properties point to CrossBrowserElement objects.</p> <p>With the CrossBrowserNode properties you can <i>traverse</i> (walk) the tree, that is, <i>visit</i> (apply a function to) each node in the tree (or sub-tree). I've also provided a function named <a target="cbeRefWin" href="../cbe_reference.html#cbeTraverseTreeLink">cbeTraverseTree()</a> which will perform a pre-order traversal of the entire tree (or sub-tree). If you need post-order traversal let me know and I'll provide that function.</p> <p>For the following example, imagine that the nodes P1 and P2 are containers for a dhtml <i>window</i>. Within them may be many different positioned elements, nested at different levels. When the user clicks anywhere within the container we want to raise the container's z-index, to make it come to the top of any other <i>windows</i>. The following function would be useful, and it makes use of the CrossBrowserNode properties and the tree structure.</p> <p><i>Listing 6</i></p> <pre> function getTopContainer(oThis) { var ancestor = oThis; while (ancestor.id != window.idDocument) { ancestor = ancestor.parentNode; } return ancestor; } </pre> <h3>ClientSnifferJr</h3> <!-- * --> <p>There is one <a target="cbeRefWin" href="../cbe_reference.html#ClientSnifferJrPropertiesLink">ClientSnifferJr</a> object, named <b>is</b>. It is the client detection object, which is available immediately after <i>cbe_core.js</i> has loaded. With the <b>is</b> object you can determine which browser your page is currently running on.</p> <p><i>Listing 7</i></p> <pre> function windowOnload() { var s = "Welcome "; if (is.opera) s += "Opera"; else if (is.gecko) s += "Gecko"; else if (is.nav) s += "Navigator"; window.defaultStatus = s + " User!"; } </pre> <p>See the object reference for a complete list of events, properties and methods for all the objects discussed in this document.</p> </td></tr></table><!-- end indentation table --> </body> </html> --- NEW FILE: getting_started.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Getting Started with CBE</title> <meta name='author' content='Mike Foster, cross-browser.com'> <meta name='description' content="CBE is a Cross-Browser DHTML API for IE, Gecko, Opera, Netscape, Konqueror, AOL and browsers with similar object models. CBE implements some of the W3C DOM2 interfaces."> <style type='text/css'><!-- body { font-family:verdana,arial,sans-serif,helvetica; font-size:12px; color:#000000; margin:0px; padding:0px; background:#cccccc; } a:link, a:visited, a:active { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; } a:hover { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#cccccc; } p { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; } ul { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; background:#ffffff; } pre { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } xmp { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } .monoSpc { font-family:monospace; font-size:14px; } h1 { font-family:verdana,arial,sans-serif; font-size:16px; color:#3333ff; background:#cccccc; padding:2px; } h2 { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#ffffff; border-top:1px dotted #000000; margin:1em 0em 1em 0em;} h3 { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; background:transparent; } td { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; vertical-align:top; } .clsTitle { font-family:verdana,arial,sans-serif; font-size:24px; color:#ffffff; margin:0px; padding:0px; vertical-align:middle; background-color:#3333ff; border-top:1px solid #ffffff; border-left:1px solid #ffffff; border-bottom:1px solid #000000; } .clsSubTitle { font-family:verdana,arial,sans-serif; font-size:10px; color:#ffffff; margin:0px; padding:0px; vertical-align:bottom; background-color:#3333ff; text-align:right; border-top:1px solid #ffffff; border-bottom:1px solid #000000; border-right:1px solid #000000; } --></style> </head> <body marginwidth='0' marginheight='0'><a name="topofpage"></a> <!-- Title --> <table width='100%' border='0' cellspacing='0' cellpadding='4'> <tr> <td height='40' class='clsTitle'> Getting Started with CBE</td> <td height='40' class='clsSubTitle'>Cross-Browser.com </td> </tr></table> <table width='80%' align='center' cellspacing='10' cellpadding='10'><tr><td bgcolor='#ffffff'><!-- indentation table --> <h1>Getting Started with CBE</h1> <ul> <li><a href='#ifsLink'>Initial File Setup</a> <br>Install the Library <br>Start a Project <br>Include? <br>Test Your Setup </li> <li><a href='#threeLink'>DHTML</a> <br>CSS <br>HTML <br>Javascript <li><a href='#etLink'>First Experiment</a> <br>Color <br>Size <br>Position <br>Visibility <br>Initialization </li> <li><a href='#esLink'>Preparation for Development</a> <br>Study the CBE Object & Event Models <br>Get Familiar with the Library <br>Create a Development Environment </li> <li><a href='#dtLink'>Debugging Tips</a> <br>Syntax Errors <br>Logic Errors <br>Watch Variables <br>Break Points <br>CBE Debug Window </li> </ul> <a name='ifsLink'></a> <h2>Initial File Setup</h2> <h3>Install the Library</h3> <p>Create a new folder for the CBE project on your hard-drive. <a href="javascript:showC(2)">Download</a> the latest version of the CBE library into the new folder and unzip it there.</p> <h3>Start a Project</h3> <p>The following template is included with the download as the file <a href="../cbe_template.html">cbe_template.html</a>. When you start a CBE project, use a <i>copy</i> of the template file.</p> <pre> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>CBE Template</title> <style type='text/css'><!-- body { color:#000000; background:#FFFFFF; margin:0px; padding:0px; } .clsCBE { position:absolute; visibility:hidden; width:100%; height:100%; clip:rect(0,100%,100%,0); color:#000000; margin:0px; padding:0px; } --></style> <script type='text/javascript' src='cbe_core.js'></script> <script type='text/javascript'><!-- var e1; function windowOnload() { with (e1 = cbeGetElementById('E1').cbe) { color('#FFFFFF'); background('#0000FF'); resizeTo(200,200); moveTo('center'); show(); } } //--></script> </head> <body marginwidth='0' marginheight='0'> <div id='E1' class='clsCBE'>E1</div> </body> </html> </pre> <h3>Include?</h3> <p>Often I'll use the phrase <i>include a javascript file</i>. What do I mean by <i>include</i>? It is a preprocessor directive for the C language. It directs the preprocessor to literally <i>include</i> (insert) the referenced file into the current file. Javascript doesn't have a corresponding keyword - but it does provide similar functionality.</p> <p>Refer to the template above. The first SCRIPT element is empty - it doesn't have any Javascript between the opening and closing tags. But it does assign a value to the <b>src</b> attribute. This value specifies the URL of a Javascript file that is to be <i>included</i> at that point in the template copy. In this case, it specifies that <i>cbe_core.js</i> is in the same folder as the template copy.</p> <p>The second SCRIPT element is not empty, it has Javascript between the opening and closing tags, and so it does not assign a value to the <b>src</b> attribute.</p> <p>The CBE library consists of several different Javascript files. The object reference indicates what file needs to be <i>included</i> to enable a particular feature.</p> <h3>Test Your Setup</h3> <p>Make a copy of the template file (I'll assume its named "proj.html"), and open it in your favorite Browser. You will see a blue square in the center of the browser window. The white text "E1" will be in the upper-left corner of the square. I refer to the square in general as an <i>element</i>. This element's <b>id</b> is <i>E1</i>, so I'll refer to that particular square as E1.</p> <a name='threeLink'></a><p align='right'><a href='#topofpage'>Top</a> | <a href='../index.html'>Home</a></p> <h2>DHTML</h2> <p>Dynamic HTML is the cooperation of three technologies: CSS, HTML, and Javascript. For each <i>positioned element</i> on the page, there must be related CSS, HTML, and Javascript. By the phrase <i>positioned element</i> I mean an element whose CSS property <b>position</b> has the value 'absolute' or 'relative'.</p> <h3>CSS</h3> <p>This CSS defines a Class named clsCBE. Its <i>position</i> property is set to 'absolute'.</p> <pre> .clsCBE { position:absolute; } </pre> <h3>HTML</h3> <p>This HTML defines an Element with its <i>id</i> attribute set to 'E1' and its <i>class</i> attribute set to 'clsCBE'. All the styles defined by the CSS Class <i>clsCBE</i> are applied to this element.</p> <pre> <div id='E1' class='clsCBE'> </div> </pre> <h3>Javascript</h3> <p>The Javascript uses the <i>id</i> attribute of the Element to access the Element <i>object</i> and it's properties.</p> <pre> window.onload = function() { var e1 = document.getElementById('E1'); e1.style.visibility = 'visible'; } </pre> <p>The Class can be applied to more than one element. The Identifier (<i>id</i> attribute) of each element must be unique.</p> <a name='etLink'></a><p align='right'><a href='#topofpage'>Top</a> | <a href='../index.html'>Home</a></p> <h2>First Experiment</h2> <p>Open proj in your favorite text editor. You now have proj open in both an editor and a browser. After you make changes to proj in the editor, save the file, go to the browser and refresh it, to see the effect of your changes.</p> <h3>Color</h3> <p>Change the <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#backgroundLink">background</a> value to '#FF0000', save the file, and refresh the browser. Now e1 is red. Change the <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#colorLink">color</a> value to '#000000', save the file, and refresh the browser. The text is now black. Here's a <a href="color_charts.html">color chart</a> with color values. It is more cross-browser to use the hex values instead of the color names.</p> <h3>Size</h3> <p>The arguments to the <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#resizeToLink">resizeTo</a> method are <i>width</i>, and <i>height</i>. Experiment with different values.</p> <h3>Position</h3> <p>Experiment with the <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#moveToLink">moveTo</a> method. Here is it's syntax: <b>moveTo(x, y)</b>, where x and y are pixel coordinates with the point <b>(0,0)</b> at the upper-left corner of the element's <i>containing</i> element.</p> <p>Move e1 to the point <b>(-200, 0)</b>. It will be at the top of the window, but half-way <i>off</i> the window to the left. So x and y can also be negative.</p> <p>The <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#moveToLink">moveTo</a> method can take arguments other than a pixel point. It can take a <i>cardinal</i> point, that is, a point designated by north, south, east, etc. The syntax follows. The square brackets indicate an optional parameter.</p> <p><b>moveTo(sCardinal [, iMargin [, bOutside ]])</b></p> <ul> <li><i>sCardinal</i><br> One of the following strings: 'n', 'ne', 'e', 'se', 's', 'sw', w, 'nw', 'center'. The element will be positioned in the corner, on the side, or in the center of it's containing CBE object.</li> <li><i>iMargin</i><br> A signed integer value, indicating the distance between the edge of the container and the element. Assumed zero, if not present.</li> <li><i>bOutside</i><br> A boolean (true/false) value. If it is true, the element will be positioned outside of the container's edge. If it is false (or not present), the element will be positioned inside the container's edge.</li> </ul> <p>Experiment with moving e1 to the different corners and sides of the window. Experiment with the <b>margin</b>. Then give an <b>outside</b> argument.</p> <h3>Visibility</h3> <p>An element's visibility is controlled by the <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#visibilityLink">visibility()</a> method. This method accepts one, optional argument of type string. This method returns a boolean value - true if the element is visible, and false if it is hidden.</p> <p>There are two shortcut methods provided, <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#showLink">show()</a> and <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#hideLink">hide()</a>, and they do exactly what they say. They do not accept arguments and have no return values.</p> <h3>Initialization</h3> <p>When the CBE object model is created, <i>nothing</i> is done to the positioned elements. You might think because size, position, and visibility are set in the CSS, that you don't have to set those properties in script - and in some browsers that's true, but in some browsers an element's properties are not initialized with the CSS values. You have to set them initially in script. At a minimum, setting <b>size</b>, <b>position</b>, and <b>visibility</b> should be part of your normal initialization for each object. A logical place to perform this initialization is in <i>windowOnload()</i>. Look at the code above for the CBE template, and notice the initialization of the element.</p> <a name='esLink'></a><p align='right'><a href='#topofpage'>Top</a> | <a href='../index.html'>Home</a></p> <h2>Preparation for Development</h2> <h3>Study the CBE Object & Event Models</h3> <p>To develop applications with CBE you need a general understanding of the CBE <a href='core_om.html'>object model</a> and <a href='event_om.html'>event model</a>. This is not a waste of time - you are not learning a <i>proprietary</i> API. The CBE API is an implementation of some of the W3C DOM2 interfaces. There are only minor differences. So by learning the CBE object and event models you are also developing your understanding of the DOM2 standards.</p> <h3>Get Familiar with the Library</h3> <p>Get familiar with the CBE library by viewing the examples I've provided, by perusing the object reference and other documentation I've provided, and especially by <i>using</i> the library. Start a new project with a copy of your CBE template file. Look through the object reference and choose a method you want to experiment with. Most entries in the reference have a <i>snippet</i> of an example. Copy the snippet and paste it into your new file. The snippets are designed to be used with that template - most of them have a <b>windowOnload()</b> function that can take the place of the same function in the template. If there's a particular example that interests you, download that example file, get it working on your own computer, then experiment with it.</p> <p>Refer to the reference for the valid values and ranges of each argument to the method you're using, and experiment with them. As before, you have your file open in an editor and a browser. Change the value of one of the arguments, save the file, and refresh the browser to see the changes.</p> <h3>Create a Development Environment</h3> <p>Learn to utilize the development/debugging tools CBE provides. Here's <a href="../examples/tools.html">a list</a> of the functions in <i>cbe_debug.js</i>.</p> <p><i>The Debug Window</i> - The Debug link on the menubar will open, close, or refresh the CBE Debug Window. This window provides development/debugging support. It shows the object tree for the current page, the properties for the selected object, provides a command line for calling methods of the selected object, and provides an area where the application can display messages by calling <a target="cbeRefWin" href="../cbe_reference.html#cbeDebugMsgLink" title="Reference Link">cbeDebugMsg()</a>. The debug window file <i>cbe_debug.html</i> is included with the CBE download. You can use the debug window as you develop applications on your own computer.</p> <p><i>The Reference Window</i> - The object reference opens in it's own window. As you study the examples, or as you are developing your own application, you can quickly view the documentation for a particular method, property, or event - without leaving the page you're studying.</p> <p><i>Development Environment</i> - The CBE debug and reference windows, the application window, and your own text editor form a <i>development environment</i>. To help with this <i>environment</i> here's a little feature: <a href="javascript:cbeTileWindows()">Tile the CBE Windows</a>. Clicking a reference link on one of my pages will cause the reference window to scroll to the appropriate entry, and then bring itself to the top (give itself the focus).</p> <p>The CBE debug and reference windows can be used on your own computer as you develop your own applications with CBE. To use the debug window, include a minimum of the following in the file you're developing. Call <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#cbeDebugWindowLink">cbeDebugWindow()</a> to open, close, or refresh the debug window.</p> <ul> <li>cbe_core.js</li> <li>cbe_event.js</li> <li>cbe_debug.js</li> </ul> <a name='dtLink'></a><p align='right'><a href='#topofpage'>Top</a> | <a href='../index.html'>Home</a></p> <h2>Debugging Tips</h2> <p>You can download some very nice Javascript debugging programs for a variety of platforms, but your initial debugging can be done with simple techniques right in your code. Most browsers will give the line number of an error - this is essential. Some browsers give better error descriptions than others. There are basically two types of errors: syntax errors, and logic errors.</p> <h3>Syntax Errors</h3> <p>A syntax error will occur when you have not followed the <i>grammer</i> of Javascript: forget to put two quotes around a string; forget to put a closing curly brace; have punctuation in the wrong place, etc. The browser will inform you of most syntax errors.</p> <h3>Logic Errors</h3> <p>After you correct your syntax errors, the script still may not work properly while running: it may be mis-calculating a value, or perhaps an <b>if</b> condition is using the logically wrong (but syntactically valid) operator. These are logic errors.</p> <p>Among the tools that most Debuggers provide for solving errors are <i>Watch Variables</i> and <i>Breakpoints</i>. You can utilize these same concepts without a debugger.</p> <h3>Watch Variables</h3> <p>A watch variable is a variable for which you want to watch the value, <i>as the script is running</i> - that is, as the page is active in a browser.</p> <p>A simple technique for using watch variables without a debugger is to use the window's <b>status bar</b> (some browsers are better at this than others). For example, in the following code fragment I want to <i>watch</i> the value of the variable <b>dx</b>. I insert line number 9. Notice the "//// debug" comment. I do this so I won't forget why I added this line, and so, later, I can search my file for "debug", and delete all those lines.</p> <p>Now I save the file, refresh the browser, and watch the value of dx on the status bar, as the script is running.</p> <pre> 1: if (cl + dx < 0) { 2: cl = 0; 3: dx = 0; 4: } 5: else if (cr + dx > this.width()) { 6: cr = cl + this.clipWidth(); 7: dx = 0; 8: } 9: window.status = "dx: " + dx; ////////////////////// debug </pre> <h3>Break Points</h3> <p>There are times when a variable's value is changing too quickly to use a watch. You need to stop the script and look at the variable. A break point is a line in the script at which <i>the script stops running</i>. You can then look at the current values of variables. When you are ready, you let the script continue running.</p> <p>A simple technique for using break points without a debugger is to use Javascript's <b>alert()</b> function. This function stops the script, displays a message, and waits for the user clik the OK button. The script then continues executing. This technique is not <i>exactly</i> like a break point, but its close enough. For example, in the following code fragment I want to see the value of dx only if it enters the <i>else if</i> block, and before it is assigned zero. I insert line number 6. <pre> 1: if (cl + dx < 0) { 2: cl = 0; 3: dx = 0; 4: } 5: else if (cr + dx > this.width()) { 6: alert("dx: " + dx); ////////////////////// debug 7: cr = cl + this.clipWidth(); 8: dx = 0; 9: } </pre> <h3>The CBE Debug Window</h3> <p>The CBE debug window provides a variety of features that help with debugging. Select an object by clicking it's <b>id</b> in the object tree, or by clicking on the object itself on the application page. Most of the selected object's properties are then displayed. You can call a method of the selected object by typing the method and it's arguments into the text field provided and pressing Enter or clicking the Call button. For example, type this: <b>hide()</b> and click Call. The selected object will be hidden. Type this: <b>background('#cccccc')</b> and click Call. The background color of the selected object will change.</p> <p>Your application script can pass a string to <a title="Reference Link" target="cbeRefWin" href="../cbe_reference.html#cbeDebugMsgLink">cbeDebugMsg()</a> and it will be displayed in the message area of the debug window.</p> </td></tr></table><!-- end indentation table --> </body> </html> --- NEW FILE: event_om.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>CBE Event Model Documentation</title> <meta name='author' content='Mike Foster, cross-browser.com'> <meta name='description' content="CBE is a Cross-Browser DHTML API for IE, Gecko, Opera, Netscape, Konqueror, AOL and browsers with similar object models. CBE implements some of the W3C DOM2 interfaces."> <style type='text/css'><!-- body { font-family:verdana,arial,sans-serif,helvetica; font-size:12px; color:#000000; margin:0px; padding:0px; background:#cccccc; } a:link, a:visited, a:active { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; } a:hover { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#cccccc; } p { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; } ul { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; background:#ffffff; } pre { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } xmp { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } .monoSpc { font-family:monospace; font-size:14px; } h1 { font-family:verdana,arial,sans-serif; font-size:16px; color:#3333ff; background:#cccccc; padding:2px; } h2 { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#ffffff; border-top:1px dotted #000000; margin:1em 0em 1em 0em;} h3 { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; background:transparent; } td { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; vertical-align:top; } .clsTitle { font-family:verdana,arial,sans-serif; font-size:24px; color:#ffffff; margin:0px; padding:0px; vertical-align:middle; background-color:#3333ff; border-top:1px solid #ffffff; border-left:1px solid #ffffff; border-bottom:1px solid #000000; } .clsSubTitle { font-family:verdana,arial,sans-serif; font-size:10px; color:#ffffff; margin:0px; padding:0px; vertical-align:bottom; background-color:#3333ff; text-align:right; border-top:1px solid #ffffff; border-bottom:1px solid #000000; border-right:1px solid #000000; } --></style> </head> <body marginwidth='0' marginheight='0'><a name="topofpage"></a> <!-- Title --> <table width='100%' border='0' cellspacing='0' cellpadding='4'> <tr> <td height='40' class='clsTitle'> CBE Event Model</td> <td height='40' class='clsSubTitle'>Cross-Browser.com </td> </tr></table> <table width='80%' align='center' cellspacing='10' cellpadding='10'><tr><td bgcolor='#ffffff'><!-- indentation table --> <h1>CBE Event Model</h1> <h2>Implementing The W3C DOM2 Event Model</h2> <h3>Overview</h3> <p>It will be helpful to first read about the CBE <a href="core_om.html">core object model</a>.</p> <p>The CBE Event Model is an implementation of the W3C DOM2 event model. Like the CBE core object model, it involves only CrossBrowserElement objects. Event listeners receive CrossBrowserEvent object arguments. CrossBrowserEvent objects flow up and down the CBE object tree in different phases of the event. You can add more than one listener of a particular event type to an object!</p> <h3>Event Listeners</h3> <p>An event <i>listener</i> is just an event handler function you provide. The function will receive one argument, a CrossBrowserEvent object. You add (or register) an event listener to a specific CrossBrowserElement object by calling the object's <a target="cbeRefWin" href="../cbe_reference.html#addEventListenerLink">addEventListener()</a> method. Let's look at it's syntax:</p> <p><b>addEventListener(eventType, eventListener, useCapture)</b></p> <p>The eventType argument is a string such as "mouseOver". The eventListener argument is a reference to a function. The useCapture argument is boolean.</p> <p>In listing 1 a mouseOver event listener is added to the E1 element. When the mouse first moves over the element, the function <i>mouseOverListener</i> will be called and passed a CrossBrowserEvent object as an argument.</p> <p><i>Listing 1</i></p> <pre> function windowOnload() { var e1 = document.getElementById('E1').cbe; e1.addEventListener('mouseOver', mouseOverListener, false); } function mouseOverListener(e) { alert('The mouse is over ' + e.cbeCurrentTarget.id); } </pre> <p>Event listeners are removed by calling the object's <a target="cbeRefWin" href="../cbe_reference.html#removeEventListenerLink">removeEventListener()</a> method. It must be passed the same arguments as were passed to addEventListener().</p> <h3>Basic Event Flow</h3> <p>CrossBrowserEvent objects are only sent to CrossBrowserElement objects. When an event occurs, a specific CrossBrowserElement object is designated as the <i>event target</i>, and is specified in the event object's <b>cbeTarget</b> property. The event then travels up and down the CBE object tree looking for event listeners registered on the same event type as the event. This occurs in three distinct phases, in this order: the CAPTURING_PHASE, the AT_TARGET phase, and the BUBBLING_PHASE.</p> <p>After an event target has been designated, an array is built which consists of every CrossBrowserElement object along the <i>parent chain</i> between the event target and the root of the object tree, but not including the event target. This <i>parent chain</i> array is used during the capturing and bubbling phases.</p> <h3>The Capturing Phase</h3> <p>The capturing phase begins at the top node of the parent chain - at <b>window.cbe</b>. The node then dispatches the event to all event listeners that have been added to the node that have the same <i>type</i> as the event and that had passed useCapture==true in the call to addEventListener(). The next node in the parent chain then dispatches the event. This continues down the parent chain until the parent of the event target node dispatches the event to it's listeners.</p> <p>A capturing event listener will not be triggered by events dispatched directly (AT_TARGET) to the event target upon which it is registered.</p> <h3>The At-Target Phase</h3> <p>After the capturing phase, the at-target phase begins. The event target node dispatches the event to all event listeners that have been added to the node that have the same <i>type</i> as the event and that had passed useCapture==false in the call to addEventListener().</p> <h3>The Bubbling Phase</h3> <p>After the at-target phase, the bubbling phase begins. This phase begins at the parent of the event target. This node dispatches the event to all event listeners that have been added to the node that have the same <i>type</i> as the event and that had passed useCapture==false in the call to addEventListener(). Then the parent of that node dispatches the event. This continues up the parent chain until the root node of the object tree dispatches the event to it's listeners. Event listeners registered as capturers will not be triggered during this phase.</p> <h2>CrossBrowserEvent</h2> <p>The CrossBrowserEvent object is a partial implementation of some of the W3C DOM2 Event interfaces. See the reference for details on each <a target="cbeRefWin" href="../cbe_reference.html#CrossBrowserEventPropertiesLink">property</a>.</p> <h3>cbeTarget & cbeCurrentTarget</h3> <p>When a listener receives an event, the event object's <b>cbeCurrentTarget</b> property points to the CrossBrowserElement object of the current listener. Effectively, it is the listener's <i>this</i> pointer. The event object's <b>cbeTarget</b> property points to the CrossBrowserElement object which is the actual target of the event.</p> <h3>stopPropagation() & preventDefault()</h3> <p>If an event listener wishes to prevent further propagation of the event (stop/prevent the capturing or bubbling phase) it may call the <b>stopPropagation()</b> method of the event object. This will prevent further propagation of the event, although the event will still be dispatched to any remaining event listeners registered on the same object.</p> <p>An EventListener may call the <b>preventDefault()</b> method of the event object to cancel any default action associated with the event.</p> <h2>CBE Supported Events</h2> <p>The following events are supported by this implementation of the DOM2 event model.</p> <ul> <li>click </li> <li>mousedown </li> <li>mouseup </li> <li>mousemove </li> <li>mouseover </li> <li>mouseout </li> <li>keypress </li> <li>keyup </li> <li>keydown </li> </ul> <p>CBE also provides support for the following events but not yet within the new event model.</p> <ul> <li>drag</li> <li>dragStart</li> <li>dragEnd</li> <li>slide</li> <li>slideStart</li> <li>slideEnd</li> <li>dragResize (specialized)</li> <li>scroll (for window object)</li> <li>resize (for window object)</li> </ul> <p>See the object reference for details on CrossBrowserElement <a target="cbeRefWin" href="../cbe_reference.html#CrossBrowserElementEventsLink">events</a>.</p> </td></tr></table><!-- end indentation table --> </body> </html> --- NEW FILE: cbe_reference.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>CBE Object Reference</title> <meta name='author' content='Mike Foster, cross-browser.com'> <meta name='description' content='Object reference for CBE, a Cross-Browser DHTML API for IE, Gecko, Opera, Netscape, Konqueror, AOL and similar browsers'> <style type='text/css'><!-- body { font-family:verdana,arial,sans-serif,helvetica; font-size:12px; color:#000000; margin:0px; padding:0px; background:#cccccc; } a:link, a:visited, a:active { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; } a:hover { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#cccccc; } p { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; } ul { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; background:#ffffff; } pre { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } xmp { font-family:"courier new",monotxt,courier; font-size:12px; color:#3333ff; background:#ffffff; } .monoSpc { font-family:monospace; font-size:14px; } h1 { font-family:verdana,arial,sans-serif; font-size:16px; color:#3333ff; background:#cccccc; padding:2px; } h2 { font-family:verdana,arial,sans-serif; font-size:12px; color:#3333ff; background:#ffffff; border-top:1px dotted #000000; margin:1em 0em 1em 0em;} h3 { font-family:verdana,arial,sans-serif; font-size:12px; color:#666666; background:transparent; } td { font-family:verdana,arial,sans-serif; font-size:12px; color:#000000; vertical-align:top; } [...1742 lines suppressed...] <a name='syntax'></a> <p align='right'><a href='#topofpage'>Top</a></p> <h2>Parameter Syntax</h2> <p>Any parameter in square brackets is optional. The OR symbol '|' is used to indicate a choice of two different parameters. Each parameter has a <i>data type prefix</i> which will be one of the following.</p> <ul> <li><b>b</b> - boolean</li> <li><b>i</b> - signed integer</li> <li><b>u</b> - unsigned integer</li> <li><b>s</b> - string</li> <li><b>c</b> - string specifying a color, preceded with '#' (use cbeHexString() to convert numbers to color strings)</li> <li><b>d</b> - date object</li> <li><b>o</b> - object reference</li> <li><b>f</b> - function reference</li> <li><b>x</b> - either a string that can be evaluated, or a function reference. cbeEval() accepts <i>x</i> arguments</li> </ul> </td></tr></table><!-- end indentation table --> </body> </html> |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:49
|
Update of /cvsroot/easystruts/easystruts-website/web-edit/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/web-edit/templates Added Files: .htaccess Log Message: Added new web site sources and data --- NEW FILE: .htaccess --- Options -Indexes |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:49
|
Update of /cvsroot/easystruts/easystruts-website/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com Added Files: license.html index_offline.html Log Message: Added new web site sources and data --- NEW FILE: license.html --- <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML> <HEAD> <TITLE>GNU Lesser General Public License - GNU Project - Free Software Foundation (FSF)</TITLE> <LINK REV="made" HREF="mailto:web...@ww..."> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD"> <H1>GNU Lesser General Public License</H1> <H2>Table of Contents</H2> <UL> <LI><A NAME="TOC1" HREF="#SEC1">GNU LESSER GENERAL PUBLIC LICENSE</A> <UL> <LI><A NAME="TOC2" HREF="#SEC2">Preamble</A> <LI><A NAME="TOC3" HREF="#SEC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A> <LI><A NAME="TOC4" HREF="#SEC4">How to Apply These Terms to Your New Libraries</A> </UL> </UL> <P> <HR> <P> <H2><A NAME="SEC1" HREF="#TOC1">GNU LESSER GENERAL PUBLIC LICENSE</A></H2> <P> Version 2.1, February 1999 <P> <PRE> Copyright (C) 1991, 1999 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. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] </PRE> <H2><A NAME="SEC2" HREF="#TOC2">Preamble</A></H2> <P> The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. <P> This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. <P> When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. <P> To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. <P> For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. <P> We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. <P> To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. <P> Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. <P> Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. <P> When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. <P> We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. <P> For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. <P> In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. <P> Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. <P> The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. <P> <H2><A NAME="SEC3" HREF="#TOC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A></H2> <P> <STRONG>0.</STRONG> This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". <P> A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. <P> The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) <P> "Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library. <P> Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. <P> <STRONG>1.</STRONG> You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library. <P> 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. <P> <STRONG>2.</STRONG> You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: <P> <UL> <LI><STRONG>a)</STRONG> The modified work must itself be a software library. <LI><STRONG>b)</STRONG> You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. <LI><STRONG>c)</STRONG> You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. <LI><STRONG>d)</STRONG> If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. <P> (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) <P> These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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. <P> 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 Library. <P> In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. </UL> <P> <STRONG>3.</STRONG> You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. <P> Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. <P> This option is useful when you wish to copy part of the code of the Library into a program that is not a library. <P> <STRONG>4.</STRONG> You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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. <P> If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. <P> <STRONG>5.</STRONG> A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. <P> However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. <P> When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. <P> If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) <P> Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. <P> <STRONG>6.</STRONG> As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. <P> You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: <P> <UL> <LI><STRONG>a)</STRONG> Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) <LI><STRONG>b)</STRONG> Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. <LI><STRONG>c)</STRONG> Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. <LI><STRONG>d)</STRONG> If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. <LI><STRONG>e)</STRONG> Verify that the user has already received a copy of these materials or that you have already sent this user a copy. </UL> <P> For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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. <P> It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. <P> <STRONG>7.</STRONG> You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: <P> <UL> <LI><STRONG>a)</STRONG> Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. <LI><STRONG>b)</STRONG> Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. </UL> <P> <STRONG>8.</STRONG> You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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. <P> <STRONG>9.</STRONG> 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. <P> <STRONG>10.</STRONG> Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License. <P> <STRONG>11.</STRONG> 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library. <P> 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. <P> 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. <P> This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. <P> <STRONG>12.</STRONG> If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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. <P> <STRONG>13.</STRONG> The Free Software Foundation may publish revised and/or new versions of the Lesser 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. <P> Each version is given a distinguishing version number. If the Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. <P> <STRONG>14.</STRONG> If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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. <P> <STRONG>NO WARRANTY</STRONG> <P> <STRONG>15.</STRONG> BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. <P> <STRONG>16.</STRONG> 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. <P> <H2>END OF TERMS AND CONDITIONS</H2> <H2><A NAME="SEC4" HREF="#TOC4">How to Apply These Terms to Your New Libraries</A></H2> <P> If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). <P> To apply these terms, attach the following notices to the library. 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. <P> <PRE> <VAR>one line to give the library's name and an idea of what it does.</VAR> Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA </PRE> <P> Also add information on how to contact you by electronic and paper mail. <P> You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: <P> <PRE> Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <VAR>signature of Ty Coon</VAR>, 1 April 1990 Ty Coon, President of Vice </PRE> <P> That's all there is to it! <HR> If you need this license in a different language or would like to read more about the GNU licenses go to <A target="x" HREF="http://www.gnu.org/">GNU's home page</A>. <P> Copyright notice above.<BR> Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA <P> Updated: <!-- hhmts start --> 27 Nov 2000 paulv <!-- hhmts end --> <HR> </BODY> </HTML> --- NEW FILE: index_offline.html --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Cross-Browser.com Offline</title> <meta name='author' content='Mike Foster (Cross-Browser.com)' /> <meta name='description' content='Cross-Browser DHTML Libraries and Applications' /> <meta name='keywords' content='dhtml,crossbrowser,menu,layout,css,dom,api,library,demo,example,javascript,code' /> <link rel='stylesheet' type='text/css' href='css/s6.css' /> <style type='text/css'> </style> <script type='text/javascript' src='x/x_load.js'></script> <script type='text/javascript'> if (xInclude('x/x_core.js', 'x/x_dom.js', 'x/s6.js')) { window.onload = winOnload; } function winOnload() { setupCollapsibleH3s(false); setupCollapsibleColumn(); } </script> </head> <body> <div id='header'> <h1>Cross-Browser.com Offline</h1> <div class='subtitle'>Mike's DHTML Toys</div> </div> <!-- end header --> <div id='leftColumn' class='column'> <!-- Begin Left Column --> <div class='leftContent'> <p>For several years now this hobby has provided me with a lot of enjoyment. It is my pleasure to share my toys with you. All I ask is that you (1) respect the LGPL license; (2) support the developer community by sharing code, participating in forums and helping others.</p> </div> <!-- end leftContent --> <h2>X 3.15.1</h2> <div class='leftContent'> <h3>X News</h3> <div class='collapsible'> <p><b>I</b> finally have IE versions 4, 5, and 6 running on the same machine. I'm in the process of retesting everything.</p> <p><b>xLib</b> is my newest project and is still in development. I'll briefly describe it, to see if anyone thinks it might be useful. xLib scans your application source files (.js, .html, .php, etc.), makes a list of all X Library functions called, then creates a custom library file containing only the functions required by your app. It performs very simple compression for now - it just removes comments and leading whitespace. It may also create a custom css file containing any required css for any X components found in the app.</p> <p><b>X v3.15.1</b> has the following changes:</p> <ul> <li>xLoad was changed to xInclude (sorry about that)</li> <li>x_load.js now has the global 'sniffer' variables - unfortunately they are also in x_core.js - I'm not sure what to do with this yet.</li> <li>I added xGetElementsByTagName() to x_dom.js. It even works in IE4 :-)</li> <li>Other minor fixes from testing with IE 4 and 5.</li> </ul> <p><b>X v3.15</b> had two very important changes:</p> <ul> <li>The functions have been moved into different files. I've tried to do this in a logical way - to decrease file sizes for those needing only core functions, and to better modularize the library.</li> <li>Beginning with v3.15 the main library files do not provide support for NN4. If you need NN4 support, use 'x_core_nn4.js' and 'x_event_nn4.js' instead of 'x_core.js' and 'x_event.js'. The function <a href='x/docs/x_reference.html#lnkInclude'>xInclude</a> will do this for you automatically.</li> </ul> <p>If all you need are the core functions (and you don't need NN4 support) then your download size has gone from 15KB to 10KB because of the above changes.</p> </div> <!-- end collapsible --> <h3>X Documentation</h3> <div class='collapsible'> <ul> <li>The <a href='x/docs/x_reference.html'>X Function Reference</a>.</li> <!-- <li><a href='x/docs/getting_started.html'>Getting Started</a> with X.</li> --> <li>General <a href='x/docs/debug_tips.html'>Debugging Tips</a>.</li> <li>More X Docs coming soon.</li> </ul> </div> <!-- end collapsible --> <h3>X Examples</h3> <div class='collapsible'> <ul> <li>xMenu4 - cascading sub-menus from nested ULs <ul> <li><a href='x/menus/xmenu4_1.html'>xMenu4 1</a> with horizontal main labels.</li> <li><a href='x/menus/xmenu4_2.html'>xMenu4 2</a> with vertical main labels.</li> </ul> </li> <li><a href='x/examples/x_3col_fm.html'>Collapsible 3-Column Layout</a> - Using an unmodified layout from BlueRobot.com (I just added a little js).</li> <li><a href='x/examples/bargraph.html'>xBar</a> - horizontal or vertical, scaled bar-graph object.</li> <li><a href='x/examples/arrowkeys.html'>Key Events</a> - move an element with the arrow keys and watch keyCode values from all Key events.</li> <li><a href='x/examples/drag1.html'>Drag Demo</a> - drag events implmented with X: dragStart, drag, and dragEnd.</li> <li><a href='x/examples/floater.html'>Floater</a> - menu floats vertically onscroll.</li> <li><a href='x/examples/slideouts.html'>Slideouts</a> - yep, they slide out when you mouseover their related element.</li> <li><a href='x/examples/popup.html'>Popup Demo</a> - the implementation of xPopup demonstrates the use of the xTimer object.</li> <li>Tooltips <ul> <li><a href='x/examples/tooltips.html'>Tooltips 1</a> - tooltips that slide in from the left. The tooltip text is taken from the trigger element's TITLE attribute.</li> <li><a href='x/examples/tooltips3.html'>Tooltips 3</a> - tooltips are positioned to the right or top of the trigger element, or follow the mouse. The tooltip text is taken from the trigger element's TITLE attribute - or you can optionally provide your own text (as html).</li> </ul> </li> <li><a href='x/examples/layout1.html'>Layout 1</a> - simple example of a dynamic, downgradable DHTML layout.</li> <li><a href='x/examples/bookmarklets.html'>Bookmarklets</a> - a little experiment with bookmarklets.</li> <li><a href='x/examples/walktree.html'>xWalkTree</a> - node traversal demo.</li> </ul> </div> <!-- end collapsible --> <h3>X Source Files</h3> <div class='collapsible'> <ul> <li><a href='x/x_alt.js'>x_alt.js</a> - Alternatives to existing X functions.</li> <li><a href='x/x_bar.js'>x_bar.js</a> - Bar graph objects.</li> <li><a href='x/x_cook.js'>x_cook.js</a> - Cookie access functions.</li> <li><a href='x/x_core.js'>x_core.js</a> - Core functions: appearance, position, size, etc.</li> <li><a href='x/x_core_nn4.js'>x_core_nn4.js</a> - Same as 'x_core.js' but with NN4 support.</li> <li><a href='x/x_debug.js'>x_debug.js</a> - Debugging utilities.</li> <li><a href='x/x_dom.js'>x_dom.js</a> - DOM query and traversal functions.</li> <li><a href='x/x_drag.js'>x_drag.js</a> - Drag events implementation.</li> <li><a href='x/x_event.js'>x_event.js</a> - Event listener registration, window resize and scroll event simulation, and cross-browser Event object.</li> <li><a href='x/x_event_nn4.js'>x_event_nn4.js</a> - Same as 'x_event.js' but with NN4 support.</li> <li><a href='x/x_img.js'>x_img.js</a> - Image rollover support.</li> <li><a href='x/x_load.js'>x_load.js</a> - For loading .js and .css files before the window.onload event.</li> <li><a href='x/x_misc.js'>x_misc.js</a> - Functions that will eventually be moved to other files.</li> <li><a href='x/x_popup.js'>x_popup.js</a> - An experiment with a dhtml alternative to popup windows.</li> <li><a href='x/x_slide.js'>x_slide.js</a> - Animation functions.</li> <li><a href='x/x_timer.js'>x_timer.js</a> - Timer object with setTimeout and setInterval methods which callback to object methods.</li> <li><a href='x/x_tip.js'>x_tip.js</a> - xTooltipGroup object.</li> <li><a href='x/x_win.js'>x_win.js</a> - Child window management functions.</li> </ul> </div> <!-- end collapsible --> <h3>Upgrading to X 3.15</h3> <div class='collapsible'> <p>The following provides tips for upgrading from a previous version of X. Come to the forums and I'll help with the upgrade. Utilize the new X reference - it provides function dependency and file information for all X functions.</p> <ul> <li>The file 'x.js' has been split into 'x_core.js', 'x_event.js', 'x_slide.js', etc.</li> <li>All event-related functions are now in 'x_event.js'.</li> <li>The function xSlideTo is now in 'x_slide.js'.</li> <li>The function xGetElementsByClassName is now in 'x_dom.js' (it was previously in 'x_util.js').</li> <li>The main library files no longer provide support for NN4. Two files were affected by this change: 'x_core.js' and 'x_event.js'. If you need NN4 support use 'x_core_nn4.js' and 'x_event_nn4.js' instead of 'x_core.js' and 'x_event.js'. The function xLoad will do this for you automatically.</li> </ul> </div> <!-- end collapsible --> </div> <!-- end leftContent --> <h2>CBE 4.19.1</h2> <div class='leftContent'> <h3>CBE News</h3> <div class='collapsible'> <p>CBE was great fun, but now I concentrate mainly on X. Soon, X will do almost everything CBE would do - with much smaller file sizes. I probably won't make many more updates to CBE.</p> </div> <!-- end collapsible --> <h3>CBE Documentation</h3> <div class='collapsible'> <ul> <li>The <a href='cbe/docs/cbe_reference.html'>CBE Object Reference</a>.</li> <li><a href='cbe/docs/getting_started.html'>Getting Started</a> with CBE.</li> <li>The CBE <a href='cbe/docs/core_om.html'>Core Object Model</a>.</li> <li>The CBE <a href='cbe/docs/event_om.html'>Event Model</a>.</li> </ul> </div> <!-- end collapsible --> <h3>CBE Source Files</h3> <div class='collapsible'> <ul> <li><a href='cbe/cbe_clip.js'>cbe_clip.js</a> - Clipping methods.</li> <li><a href='cbe/cbe_core.js'>cbe_core.js</a> - Object tree implementation and core methods.</li> <li><a href='cbe/cbe_debug.js'>cbe_debug.js</a> - Debugging utilities.</li> <li><a href='cbe/cbe_debug.html'>cbe_debug.html</a> - Provides a debug window.</li> <li><a href='cbe/cbe_event.js'>cbe_event.js</a> - Event model implementation.</li> <li><a href='cbe/cbe_slide.js'>cbe_slide.js</a> - Animation methods.</li> <li><a href='cbe/cbe_slide2.js'>cbe_slide2.js</a> - More animation methods.</li> <li><a href='cbe/cbe_util.js'>cbe_util.js</a> - Utility functions.</li> </ul> </div> <!-- end collapsible --> </div> <!-- end leftContent --> <h2>X v/s CBE</h2> <div class='leftContent'> <h3>Differences</h3> <div class='collapsible'> <p>Most of the CBE documentation does not apply to X. CBE implements its own object tree. CBE also implements the DOM2 event model in cross-browser javascript. The CBE documentation is needed to describe these 'embedded' object and event models.</p> <p>X does not implement its own object nor event models. You might say that, while CBE is an 'API', X is merely a <i>function library</i>. X uses the browser's native object and event models. Really, the only documentation you need to make use of X is...</p> <ul> <li>the X function reference, which describes how to use each function</li> <li>a small example of using the function (i'm working on more examples)</li> <li>DOM documentation from W3C, MS, NN, etc.</li> </ul> <p>So, you don't have to learn the X object model, because it doesn't have one - just study the existing browser DOMs.</p> <p>Almost all the CBE methods are tightly bound, because of their dependence on the CBE object model. Most of the X functions are independent from each other. With X it is much easier to create a custom 'x.js' file which contains only the functions used by your application. (<span style='font-size:smaller;'>I'm working on something that will automate this. ;-)</span>)</p> </div> <!-- end collapsible --> <h3>Similarities</h3> <div class='collapsible'> <p>The semantics of CBE methods and their corresponding X functions are virtually the same. For example, the concept of "width/height" is the same - the CBE methods <i>width()/height()</i> and the X functions <i>xWidth()/xHeight()</i> both provide, effectively, read and write access to <i>element.offsetWidth/element.offsetHeight</i>.</p> </div> <!-- end collapsible --> </div> <!-- end leftContent --> <h2>LGPL FAQ</h2> <div class='leftContent'> <p>X and CBE are distributed under the terms of the <a href='license.html'>LGPL</a> (GNU Lesser General Public License). I decided on this license because I want this work to remain free to the developer community.</p> <p><i>Are X and CBE free?</i><br />Yes, you may download the libraries for free.</p> <p><i>Is there free technical support?</i><br />Yes, technical support at the forums is free - but technical support by eMail is not free.</p> <p><i>May I use CBE at work, or in a commercial project?</i><br />Yes, you may use the libraries in your business projects, even if that project includes proprietary code, but the X and/or CBE library must retain its LGPL and <i>free</i> status. See the license for details.</p> <p><i>May I modify the library?</i><br />Yes, you may modify and/or extend the libraries, but the resulting library must retain its LGPL and <i>free</i> status. I have license and copyright comments at the top of each source file. Leave those comments intact and add your own comments explaining your modifications to the file. See the license for details.</p> <p><i>Do I have to give you credit?</i><br />There is a copyright and license statement at the top of each source file. Please leave that intact. A link back to Cross-Browser.com would be very nice but is not required.</p> </div> <!-- end leftContent --> <div class='leftContent'> <a href='http://cross-browser.com/'>Cross-Browser.com</a> - DHTML libraries and applications. </div> <!-- end leftContent --> </div> <!-- end leftColumn --> <div id='rightColumn' class='column'> <!-- Begin Right Column --> <div class='rightContent'> <h3>More</h3> <p>For the latest info on X and CBE visit <a href='http://cross-browser.com/'>Cross-Browser.com</a> where you'll find more documentation and many more example applications.</p> <p>If this is your first time to use X or CBE then I suggest you start with X.</p> <p>By your use of X and/or CBE you consent to the LGPL License - please <a href='license.html'>read it</a>.</p> <h3>Support</h3> <p>Myself and other DHTML developers offer free support at the following forums. I hope you visit us.</p> <p><a href='http://www.sitepoint.com/forums/forumdisplay.php?f=15'>SitePoint Javascript Forum</a></p> <p><a href='http://www.hftonline.com/forum/forumdisplay.php?forumid=16'>HFTOnline Webmastering Forum</a></p> </div> <!-- end rightContent --> </div> <!-- end rightColumn --> </body> </html> |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:48
|
Update of /cvsroot/easystruts/easystruts-website/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/templates Added Files: xhtml_template.html html4_template.html x_xhtml_template.html x_html4_template.html Log Message: Added new web site sources and data --- NEW FILE: x_xhtml_template.html --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Template</title> <meta name='author' content='Author' /> <meta name='description' content='Description' /> <meta name='keywords' content='Keywords' /> <link rel='stylesheet' type='text/css' href=''> <style type='text/css'> </style> <script type='text/javascript' src='../x_load.js'></script> <script type='text/javascript'> if (xInclude('../x_core.js')) { window.onload = winOnload; } function winOnload() { } </script> </head> <body> </body> </html> --- NEW FILE: html4_template.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Template</title> <meta name='author' content='Author'> <meta name='description' content='Description'> <meta name='keywords' content='Keywords'> <link rel='stylesheet' type='text/css' href=''> <style type='text/css'><!-- --></style> <script type='text/javascript' src=''></script> <script type='text/javascript'><!-- window.onload = function() { } //--></script> </head> <body> </body> </html> --- NEW FILE: xhtml_template.html --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Template</title> <meta name='author' content='Author' /> <meta name='description' content='Description' /> <meta name='keywords' content='Keywords' /> <link rel='stylesheet' type='text/css' href=''> <style type='text/css'> </style> <script type='text/javascript' src=''></script> <script type='text/javascript'> window.onload = function() { } </script> </head> <body> </body> </html> --- NEW FILE: x_html4_template.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Template</title> <meta name='author' content='Author'> <meta name='description' content='Description'> <meta name='keywords' content='Keywords'> <link rel='stylesheet' type='text/css' href=''> <style type='text/css'><!-- --></style> <script type='text/javascript' src='../x_load.js'></script> <script type='text/javascript'><!-- if (xInclude('../x_core.js')) { window.onload = winOnload; } function winOnload() { } //--></script> </head> <body> </body> </html> |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:45
|
Update of /cvsroot/easystruts/easystruts-website/web/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/web/templates Added Files: .htaccess Log Message: Added new web site sources and data --- NEW FILE: .htaccess --- Options -Indexes |
Update of /cvsroot/easystruts/easystruts-website/web/templates/easystruts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/web/templates/easystruts Added Files: x_event.js .htaccess nexb-print.css x_core.js search_highlight.js ViewTemplate.jsp nexb.css FindContent.jsp Log Message: Added new web site sources and data --- NEW FILE: ViewTemplate.jsp --- <!-- /* Copyright (c) 2003, 2004 nexB Inc. */ /* This code is free software; you can redistribute it and/or */ /* modify it under the terms of the GNU Lesser General Public */ /* License version 2.1 as published by the Free Software Foundation; */ /* See <a href='http://www.nexb.com'>http://www.nexb.com</a> for more details */ --> <%@ taglib prefix="wiki" uri="/WEB-INF/jspwiki.tld" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><wiki:Variable var="applicationname" />: <wiki:PageName /></title> <meta http-equiv="content-type" content="text/html; charset=<wiki:ContentEncoding />" /> <meta name="language" content="english, en"> <meta name="keywords" content="Struts, Easy Struts, Eclipse, open source, web development, java, jsp, software, nexB"> <meta name="description" content="EasyStruts is the premier Struts tooling for Eclipse"> <meta name="abstract" content="EasyStruts is the premier Struts tooling for Eclipse"> <meta name="copyright" content="©2003,2004 nexB Inc."> <meta name="revisit-after" content="3 days"> <script src="templates/<wiki:TemplateDir />/search_highlight.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="templates/<wiki:TemplateDir/>/nexb.css" title="nexB web" /> <link rel="stylesheet" type="text/css" media="print" href="templates/<wiki:TemplateDir/>/nexb-print.css" title="nexB print" /> <script type="text/javascript" src="templates/<wiki:TemplateDir/>/x_core.js"></script> <script type="text/javascript" src="templates/<wiki:TemplateDir/>/x_event.js"></script> <script type="text/javascript"> function adjustLayout() { // Get natural heights var cHeight = xHeight("bodyText"); var lHeight = xHeight("leftMenuBox"); var rHeight = xHeight("rightBox"); // Find the maximum height var maxHeight = Math.max(cHeight, Math.max(lHeight, rHeight)); // Assign maximum height to all columns xHeight("content", maxHeight); xHeight("leftMenu", maxHeight); xHeight("right", maxHeight); // Show the footer xShow("footer"); } window.onload = function() { xAddEventListener(window, "resize", adjustLayout, false); adjustLayout(); } </script> </head> <body> <!-- ###### Header ###### --> <div class="header"> <div class="headerBanner"> <div class="headerSearch"> <wiki:InsertPage page="RightMenuBar" /> <form method="get" action='<wiki:Variable var="baseURL"/>Search.jsp' accept-charset="<wiki:ContentEncoding />"> <input type="text" class="searchText" name="query" maxlength="255" /> <input type="submit" class="searchButton" name="ok" value="Search" /> </form> </div> <div class="headerTitle"> <a href="/" ><img src="templates/<wiki:TemplateDir/>/images/easystruts-small-195x44r.png" width="190" height"44" alt="nexB. Open by Design."/></a> </div> </div> <div class="menuBar"> <wiki:InsertPage page="MenuBar" /> </div> </div> <!-- ###### Content ###### --> <div class="mainContent"> <!-- ###### Left Menu ###### --> <div class="leftMenu"> <div class="leftMenuBox"> <wiki:InsertPage page="LeftMenu" /> <br /> <!-- address some display issues with Mozilla to avoid footer overlapp --> </div> </div> <!-- ###### Right Highlight box ###### --> <div class="right"> <div class="rightBox"> <!-- <wiki:InsertPage page="BodyRight" /> --> </div> </div> <!-- ###### Body Text ###### --> <div class="content"> <div class="bodyText"> <div class="breadcrumbsBar"> <p>Your trail : <wiki:Breadcrumbs maxpages="5" separator=" | "/></p> </div> <h1><wiki:PageName/></h1> <span class="bodyTextContent"> <wiki:CheckRequestContext context="view"> <wiki:InsertPage /> </wiki:CheckRequestContext> <wiki:CheckRequestContext context="find"> <wiki:Include page="FindContent.jsp" /> </wiki:CheckRequestContext> <wiki:CheckRequestContext context="error"> <wiki:InsertPage page="ErrorMessage" /> </wiki:CheckRequestContext> <br /> <!-- address some display issues with Mozilla to avoid footer overlapp --> </span> </div> </div> </div> <!-- ###### Footer ###### --> <div class="footer"> <div class="footerContent"> <div class="footerLeft"> <p> <wiki:InsertPage page="LeftFooter" /> <br />Last modified: <wiki:PageDate/> </p> </div> <div class="footerRight"> <p> <wiki:InsertPage page="RightFooter" /> </p> </div> </div> </div> </body> </html> --- NEW FILE: x_event.js --- // x_event.js // X v3.15, Cross-Browser DHTML Library from Cross-Browser.com // Copyright (c) 2002,2003,2004 Michael Foster (mi...@cr...) // This library is distributed under the terms of the LGPL (gnu.org) function xAddEventListener(e,eventType,eventListener,useCapture) { if(!(e=xGetElementById(e))) return; eventType=eventType.toLowerCase(); if((!xIE4Up && !xOp7) && e==window) { if(eventType=='resize') { window.xPCW=xClientWidth(); window.xPCH=xClientHeight(); window.xREL=eventListener; xResizeEvent(); return; } if(eventType=='scroll') { window.xPSL=xScrollLeft(); window.xPST=xScrollTop(); window.xSEL=eventListener; xScrollEvent(); return; } } var eh='e.on'+eventType+'=eventListener'; if(e.addEventListener) e.addEventListener(eventType,eventListener,useCapture); else if(e.attachEvent) e.attachEvent('on'+eventType,eventListener); else if(e.captureEvents) { if(useCapture||(eventType.indexOf('mousemove')!=-1)) { e.captureEvents(eval('Event.'+eventType.toUpperCase())); } eval(eh); } else eval(eh); } function xRemoveEventListener(e,eventType,eventListener,useCapture) { if(!(e=xGetElementById(e))) return; eventType=eventType.toLowerCase(); if((!xIE4Up && !xOp7) && e==window) { if(eventType=='resize') { window.xREL=null; return; } if(eventType=='scroll') { window.xSEL=null; return; } } var eh='e.on'+eventType+'=null'; if(e.removeEventListener) e.removeEventListener(eventType,eventListener,useCapture); else if(e.detachEvent) e.detachEvent('on'+eventType,eventListener); else if(e.releaseEvents) { if(useCapture||(eventType.indexOf('mousemove')!=-1)) { e.releaseEvents(eval('Event.'+eventType.toUpperCase())); } eval(eh); } else eval(eh); } function xEvent(evt) { // cross-browser event object prototype this.type = ''; this.target = null; this.pageX = 0; this.pageY = 0; this.offsetX = 0; this.offsetY = 0; this.keyCode = 0; var e = evt ? evt : window.event; if(!e) return; if(e.type) this.type = e.type; if(e.target) this.target = e.target; else if(e.srcElement) this.target = e.srcElement; if(xOp5or6) { this.pageX = e.clientX; this.pageY = e.clientY; } else if(xDef(e.clientX,e.clientY)) { this.pageX = e.clientX + xScrollLeft(); this.pageY = e.clientY + xScrollTop(); } if(xDef(e.offsetX,e.offsetY)) { this.offsetX = e.offsetX; this.offsetY = e.offsetY; } else { this.offsetX = this.pageX - xPageX(this.target); this.offsetY = this.pageY - xPageY(this.target); } if (e.keyCode) { this.keyCode = e.keyCode; } // for moz/fb, if keyCode==0 use which else if (xDef(e.which)) { this.keyCode = e.which; } } function xResizeEvent() { // window resize event simulation if (window.xREL) setTimeout('xResizeEvent()', 250); var cw = xClientWidth(), ch = xClientHeight(); if (window.xPCW != cw || window.xPCH != ch) { window.xPCW = cw; window.xPCH = ch; if (window.xREL) window.xREL(); } } function xScrollEvent() { // window scroll event simulation if (window.xSEL) setTimeout('xScrollEvent()', 250); var sl = xScrollLeft(), st = xScrollTop(); if (window.xPSL != sl || window.xPST != st) { window.xPSL = sl; window.xPST = st; if (window.xSEL) window.xSEL(); } } // end x_event.js --- NEW FILE: x_core.js --- // x_core.js // X v3.15.1, Cross-Browser DHTML Library from Cross-Browser.com // Copyright (c) 2002,2003,2004 Michael Foster (mi...@cr...) // This library is distributed under the terms of the LGPL (gnu.org) // Variables: var xVersion='3.15.1',xNN4=false,xOp7=false,xOp5or6=false,xIE4Up=false,xIE4=false,xIE5=false,xUA=navigator.userAgent.toLowerCase(); if(window.opera){ xOp7=(xUA.indexOf('opera 7')!=-1 || xUA.indexOf('opera/7')!=-1); if (!xOp7) xOp5or6=(xUA.indexOf('opera 5')!=-1 || xUA.indexOf('opera/5')!=-1 || xUA.indexOf('opera 6')!=-1 || xUA.indexOf('opera/6')!=-1); } else if (document.all) { xIE4Up=xUA.indexOf('msie')!=-1 && parseInt(navigator.appVersion)>=4; xIE4=xUA.indexOf('msie 4')!=-1; xIE5=xUA.indexOf('msie 5')!=-1; } // Object: function xGetElementById(e) { if(typeof(e)!='string') return e; if(document.getElementById) e=document.getElementById(e); else if(document.all) e=document.all[e]; else e=null; return e; } function xParent(e,bNode){ if (!(e=xGetElementById(e))) return null; var p=null; if (!bNode && xDef(e.offsetParent)) p=e.offsetParent; else if (xDef(e.parentNode)) p=e.parentNode; else if (xDef(e.parentElement)) p=e.parentElement; return p; } function xDef() { for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;} return true; } function xStr(s) { return typeof(s)=='string'; } function xNum(n) { return typeof(n)=='number'; } // Appearance: function xShow(e) { if(!(e=xGetElementById(e))) return; if(e.style && xDef(e.style.visibility)) e.style.visibility='visible'; } function xHide(e) { if(!(e=xGetElementById(e))) return; if(e.style && xDef(e.style.visibility)) e.style.visibility='hidden'; } function xZIndex(e,uZ) { if(!(e=xGetElementById(e))) return 0; if(e.style && xDef(e.style.zIndex)) { if(xNum(uZ)) e.style.zIndex=uZ; uZ=parseInt(e.style.zIndex); } return uZ; } function xColor(e,sColor) { if(!(e=xGetElementById(e))) return ''; var c=''; if(e.style && xDef(e.style.color)) { if(xStr(sColor)) e.style.color=sColor; c=e.style.color; } return c; } function xBackground(e,sColor,sImage) { if(!(e=xGetElementById(e))) return ''; var bg=''; if(e.style) { if(xStr(sColor)) { if(!xOp5or6) e.style.backgroundColor=sColor; else e.style.background=sColor; } if(xStr(sImage)) e.style.backgroundImage=(sImage!='')? 'url('+sImage+')' : null; if(!xOp5or6) bg=e.style.backgroundColor; else bg=e.style.background; } return bg; } // Position: function xMoveTo(e,iX,iY) { xLeft(e,iX); xTop(e,iY); } function xLeft(e,iX) { if(!(e=xGetElementById(e))) return 0; var css=xDef(e.style); if (css && xStr(e.style.left)) { if(xNum(iX)) e.style.left=iX+'px'; else { iX=parseInt(e.style.left); if(isNaN(iX)) iX=0; } } else if(css && xDef(e.style.pixelLeft)) { if(xNum(iX)) e.style.pixelLeft=iX; else iX=e.style.pixelLeft; } return iX; } function xTop(e,iY) { if(!(e=xGetElementById(e))) return 0; var css=xDef(e.style); if(css && xStr(e.style.top)) { if(xNum(iY)) e.style.top=iY+'px'; else { iY=parseInt(e.style.top); if(isNaN(iY)) iY=0; } } else if(css && xDef(e.style.pixelTop)) { if(xNum(iY)) e.style.pixelTop=iY; else iY=e.style.pixelTop; } return iY; } function xPageX(e) { if (!(e=xGetElementById(e))) return 0; var x = 0; while (e) { if (xDef(e.offsetLeft)) x += e.offsetLeft; e = xDef(e.offsetParent) ? e.offsetParent : null; } return x; } function xPageY(e) { if (!(e=xGetElementById(e))) return 0; var y = 0; while (e) { if (xDef(e.offsetTop)) y += e.offsetTop; e = xDef(e.offsetParent) ? e.offsetParent : null; } // if (xOp7) return y - document.body.offsetTop; // v3.14, temporary hack for opera bug 130324 return y; } function xOffsetLeft(e) { if (!(e=xGetElementById(e))) return 0; if (xDef(e.offsetLeft)) return e.offsetLeft; else return 0; } function xOffsetTop(e) { if (!(e=xGetElementById(e))) return 0; if (xDef(e.offsetTop)) return e.offsetTop; else return 0; } function xScrollLeft(e) { var offset=0; if (!(e=xGetElementById(e))) { if(document.documentElement && document.documentElement.scrollLeft) offset=document.documentElement.scrollLeft; else if(document.body && xDef(document.body.scrollLeft)) offset=document.body.scrollLeft; } else { if (xNum(e.scrollLeft)) offset = e.scrollLeft; } return offset; } function xScrollTop(e) { var offset=0; if (!(e=xGetElementById(e))) { if(document.documentElement && document.documentElement.scrollTop) offset=document.documentElement.scrollTop; else if(document.body && xDef(document.body.scrollTop)) offset=document.body.scrollTop; } else { if (xNum(e.scrollTop)) offset = e.scrollTop; } return offset; } function xHasPoint(ele, iLeft, iTop, iClpT, iClpR, iClpB, iClpL) { if (!xNum(iClpT)){iClpT=iClpR=iClpB=iClpL=0;} else if (!xNum(iClpR)){iClpR=iClpB=iClpL=iClpT;} else if (!xNum(iClpB)){iClpL=iClpR; iClpB=iClpT;} var thisX = xPageX(ele), thisY = xPageY(ele); return (iLeft >= thisX + iClpL && iLeft <= thisX + xWidth(ele) - iClpR && iTop >=thisY + iClpT && iTop <= thisY + xHeight(ele) - iClpB ); } // Size: function xResizeTo(e,uW,uH) { xWidth(e,uW); xHeight(e,uH); } function xWidth(e,uW) { if(!(e=xGetElementById(e))) return 0; if (xNum(uW)) { if (uW<0) uW = 0; else uW=Math.round(uW); } else uW=0; var css=xDef(e.style); if(css && xDef(e.offsetWidth) && xStr(e.style.width)) { if(uW) xSetCW(e, uW); uW=e.offsetWidth; } else if(css && xDef(e.style.pixelWidth)) { if(uW) e.style.pixelWidth=uW; uW=e.style.pixelWidth; } return uW; } function xHeight(e,uH) { if(!(e=xGetElementById(e))) return 0; if (xNum(uH)) { if (uH<0) uH = 0; else uH=Math.round(uH); } else uH=0; var css=xDef(e.style); if(css && xDef(e.offsetHeight) && xStr(e.style.height)) { if(uH) xSetCH(e, uH); uH=e.offsetHeight; } else if(css && xDef(e.style.pixelHeight)) { if(uH) e.style.pixelHeight=uH; uH=e.style.pixelHeight; } return uH; } function xGetCS(ele,sP){return parseInt(document.defaultView.getComputedStyle(ele,'').getPropertyValue(sP));} function xSetCW(ele,uW){ var pl=0,pr=0,bl=0,br=0; if(xDef(document.defaultView) && xDef(document.defaultView.getComputedStyle)){ pl=xGetCS(ele,'padding-left'); pr=xGetCS(ele,'padding-right'); bl=xGetCS(ele,'border-left-width'); br=xGetCS(ele,'border-right-width'); } else if(xDef(ele.currentStyle,document.compatMode)){ if(document.compatMode=='CSS1Compat'){ pl=parseInt(ele.currentStyle.paddingLeft); pr=parseInt(ele.currentStyle.paddingRight); bl=parseInt(ele.currentStyle.borderLeftWidth); br=parseInt(ele.currentStyle.borderRightWidth); } } else if(xDef(ele.offsetWidth,ele.style.width)){ // ? ele.style.width=uW+'px'; pl=ele.offsetWidth-uW; } if(isNaN(pl)) pl=0; if(isNaN(pr)) pr=0; if(isNaN(bl)) bl=0; if(isNaN(br)) br=0; var cssW=uW-(pl+pr+bl+br); if(isNaN(cssW)||cssW<0) return; else ele.style.width=cssW+'px'; } function xSetCH(ele,uH){ var pt=0,pb=0,bt=0,bb=0; if(xDef(document.defaultView) && xDef(document.defaultView.getComputedStyle)){ pt=xGetCS(ele,'padding-top'); pb=xGetCS(ele,'padding-bottom'); bt=xGetCS(ele,'border-top-width'); bb=xGetCS(ele,'border-bottom-width'); } else if(xDef(ele.currentStyle,document.compatMode)){ if(document.compatMode=='CSS1Compat'){ pt=parseInt(ele.currentStyle.paddingTop); pb=parseInt(ele.currentStyle.paddingBottom); bt=parseInt(ele.currentStyle.borderTopWidth); bb=parseInt(ele.currentStyle.borderBottomWidth); } } else if(xDef(ele.offsetHeight,ele.style.height)){ // ? ele.style.height=uH+'px'; pt=ele.offsetHeight-uH; } if(isNaN(pt)) pt=0; if(isNaN(pb)) pb=0; if(isNaN(bt)) bt=0; if(isNaN(bb)) bb=0; var cssH=uH-(pt+pb+bt+bb); if(isNaN(cssH)||cssH<0) return; else ele.style.height=cssH+'px'; } function xClip(e,iTop,iRight,iBottom,iLeft) { if(!(e=xGetElementById(e))) return; if(e.style) { if (xNum(iLeft)) e.style.clip='rect('+iTop+'px '+iRight+'px '+iBottom+'px '+iLeft+'px)'; else e.style.clip='rect(0 '+parseInt(e.style.width)+'px '+parseInt(e.style.height)+'px 0)'; } } // Window: function xClientWidth() { var w=0; if(xOp5or6) w=window.innerWidth; else if(!window.opera && document.documentElement && document.documentElement.clientWidth) // v3.12 w=document.documentElement.clientWidth; else if(document.body && document.body.clientWidth) w=document.body.clientWidth; else if(xDef(window.innerWidth,window.innerHeight,document.height)) { w=window.innerWidth; if(document.height>window.innerHeight) w-=16; } return w; } function xClientHeight() { var h=0; if(xOp5or6) h=window.innerHeight; else if(!window.opera && document.documentElement && document.documentElement.clientHeight) // v3.12 h=document.documentElement.clientHeight; else if(document.body && document.body.clientHeight) h=document.body.clientHeight; else if(xDef(window.innerWidth,window.innerHeight,document.width)) { h=window.innerHeight; if(document.width>window.innerWidth) h-=16; } return h; } // end x_core.js --- NEW FILE: search_highlight.js --- /* http://www.kryogenix.org/code/browser/searchhi/ */ /* Modified 20021006 to fix query string parsing and add case insensitivity */ /* Modified 20030227 by sg...@hi... to skip words with "-" and cut %2B (+) preceding pages */ function highlightWord(node,word) { // Iterate into this nodes childNodes if (node.hasChildNodes) { var hi_cn; for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) { highlightWord(node.childNodes[hi_cn],word); } } // And do this node itself if (node.nodeType == 3) { // text node tempNodeVal = node.nodeValue.toLowerCase(); tempWordVal = word.toLowerCase(); if (tempNodeVal.indexOf(tempWordVal) != -1) { pn = node.parentNode; if (pn.className != "searchword") { // word has not already been highlighted! nv = node.nodeValue; ni = tempNodeVal.indexOf(tempWordVal); // Create a load of replacement nodes before = document.createTextNode(nv.substr(0,ni)); docWordVal = nv.substr(ni,word.length); // alert( "Found: " + docWordVal ); after = document.createTextNode(nv.substr(ni+word.length)); hiwordtext = document.createTextNode(docWordVal); hiword = document.createElement("span"); hiword.className = "searchword"; hiword.appendChild(hiwordtext); pn.insertBefore(before,node); pn.insertBefore(hiword,node); pn.insertBefore(after,node); pn.removeChild(node); } } } } function googleSearchHighlight() { if (!document.createElement) return; ref = document.referrer; //or URL for highlighting in place if (ref.indexOf('?') == -1) return; qs = ref.substr(ref.indexOf('?')+1); qsa = qs.split('&'); for (i=0;i<qsa.length;i++) { qsip = qsa[i].split('='); if (qsip.length == 1) continue; // q= for Google, p= for Yahoo // query= for JSPWiki if (qsip[0] == 'query' || qsip[0] == 'q') { words = qsip[1].replace(/%2B/g,''); words = words.replace(/-\S+\s/g,''); words = unescape(words.replace(/\+/g,' ')).split(/\s+/); for (w=0;w<words.length;w++) { highlightWord(document.getElementsByTagName("body")[0],words[w]); } } } } window.onload = googleSearchHighlight; --- NEW FILE: .htaccess --- Options -Indexes --- NEW FILE: nexb.css --- /* Copyright (c) 2003, 2004 nexB Inc. */ /* This code is free software; you can redistribute it and/or */ /* modify it under the terms of the GNU Lesser General Public */ /* License version 2.1 as published by the Free Software Foundation; */ /* See <a href='http://www.nexb.com'>http://www.nexb.com</a> for more details */ /* Changes from the orange style sheet: ffc039 -> 99CCCC; ff8800 -> 3399CC 4b70aa -> 006699 */ /* ###### Global ###### */ body { color: black; background-color: white; font-family: Arial, Helvetica, sans-serif; width:99.7%; margin:0; padding:0; border-right: 1px solid #515D65; } img { border: none; } code { font-family: "lucida console", "courier new", courier, monospace; } table { border-collapse: collapse; empty-cells: show; margin: 1em; color: #515D65; background-color: white; border: 1px solid #515D65; font-size: small; } td { border: 1px solid #515D65; padding:1ex; } ul, li{ margin-bottom:0.1em; margin-top:0.1em; } input.searchButton { color: white; background-color: #3399CC; font-size:small; border: 1px solid white; vertical-align: middle; cursor: hand; /* for IE */ margin:0; padding:0; margin-left: 1em; } input.searchText { font-size:small; border: 1px solid black; vertical-align: middle; padding-top:2px; padding-bottom:2px; } /* ###### Headers ###### */ .header { color: #4B70AA; background-color: white; } .headerBanner { background-image: url(images/headerBackground-blue620x1.gif); background-repeat: repeat-y; background-attachment: scroll; background-position: right; border:none; border-bottom: 1px solid white; padding:0.5em 1em 0.5em; } .headerTitle { vertical-align: baseline; } .headerTitle h1{ display: inline; margin:0; margin-left:0.5em; padding:0; font-weight: normal; font-size: 300%; } .headerTitle a { text-decoration: none; border:0; } .headerSearch { font-size:73%; float: right; padding-top: 1.5em; } .headerSearch form { display: inline; margin:0; padding:0; } .headerSearch input.searchButton { color: white; background-color: #3399CC; font-size:small; border: 1px solid white; vertical-align: middle; cursor: hand; /* for IE */ margin:0; padding:0; margin-left: 1em; } .headerSearch input.searchText { font-size:small; border: 1px solid black; vertical-align: middle; padding-top:2px; padding-bottom:2px; } .headerSearch a { color: black; text-decoration: none; padding:0; padding-left:1em; padding-right:1em; } .headerSearch a:hover { text-decoration: underline; } /* ### Menu Bar ###### */ .menuBar { font-size: 73%; color: white; background-color: #4B70AA; border-top-width: 1px; border-top-style: solid; border-top-color: black; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: white; padding-top:0.25em; padding-bottom:0.25em; } .menuBar p { padding:0; padding-top:0.25em; padding-bottom:0.25em; margin:0; } .menuBar a { color: white; text-decoration: none; padding:0; padding-left:1em; padding-right:1em; } .menuBar a:hover { text-decoration: underline; color: #99CCCC; } /* ###### Left Menu ###### */ .leftMenuBox { background-image: url(images/leftMenuTopshadow-blue.gif); background-repeat: repeat-x; background-color: #99CCCC; width: 11em; border-right-width: 1px; border-right-style: solid; border-right-color: #515D65; text-align: left; padding:0; padding-top:4px; padding-bottom:1em; float: left; clear: left; } .leftMenuBox h2 { border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: white; } .leftMenuBox h2 a, .leftMenuBox h2 a:hover, .leftMenuBox h2 a:visited { border: 0; } .leftMenuBox h2, .leftMenuBox h2 a, .leftMenuBox h2 a:hover, .leftMenuBox h2 a:visited { color: white; background-color: #3399CC; margin:0; margin-bottom: 0.1em; padding:0; padding-top:0.04em; padding-bottom:0.09em; padding-left: 0.6em; text-align: left; text-transform: uppercase; font-size: 90%; } .leftMenuBox h2 a:hover{ color: #515D65; } .leftMenuBox a { text-decoration: none; font-weight: bold; display: block; color: #515D65; font-size: 75%; border: 1px solid #99CCCC; border-right: 0; margin-left: 1.8em; margin-bottom: 0.15em; margin-top: 0.15em; padding-bottom: 0.25em; padding-top: 0.25em; padding-left: 0.3em; } .leftMenuBox a:hover { color: #3399CC; background-color: white; border: 1px solid #515D65; border-right: 0; text-decoration: none; font-weight: bold; } .leftMenuBox p { padding:0; padding-top:0.15em; padding-bottom:0.15em; margin:0; margin-left: 1em; } /* ###### Main Content box ###### */ .mainContent { background-color: #99CCCC; } /* ### bread crumbs ###### */ .breadcrumbsBar { background-color: white; color: #515D65; padding: 0; font-size: x-small; } .breadcrumbsBar a { text-decoration: none; color:#515D65; } .breadcrumbsBar a:hover { text-decoration: underline; } /* ###### Body Text ###### */ .bodyTextContent { font-size:small; } .bodyText p , .bodyTextContent p { padding: 0.2em; margin:0.2em; } .bodyText .searchword , .bodyTextContent .searchWord { background-color: #99CCCC; color: #515D65; } .bodyText { background-image: url(images/contentTopshadow.gif); background-repeat: repeat-x; background-color: white; color: #515D65; margin: 0; margin-left: 11em; padding:0; padding-left: 1em; padding-top: 1em; border-left-width: 1px; border-left-style: solid; border-left-color: #515D65; } .bodyText h1 { font-weight: normal; font-size: x-large; padding: 0; margin: 0; } /* ###### Optional right side Text Box ###### */ .rightBox { display: inline; float: right; clear: right; border-left-color: #515D65; border-left-style:solid; border-left-width: 1px; margin:0 } /* ###### Footer ###### */ .footer { color: #515D65; clear: both; padding:0; padding-top:1em; padding-bottom:1.5em; margin:0; border-top-width: 1px; border-top-style: solid; border-top-color: #515D65; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #515D65; font-size: x-small; } .footer a{ color: #515D65; text-align: right; text-decoration: underline; } .footer a:hover { text-align: right; color: black; text-decoration: underline; } .footerLeft { float: left; text-align: left; } .footerRight { text-align: right; } .footerLeft p , .footerRight p{ margin:0; padding:0; } .footerLeft p { margin-left:1em; } .footerRight p{ margin-right:1em; } --- NEW FILE: FindContent.jsp --- <!-- /* Copyright (c) 2003, 2004 nexB Inc. */ /* This code is free software; you can redistribute it and/or */ /* modify it under the terms of the GNU Lesser General Public */ /* License version 2.1 as published by the Free Software Foundation; */ /* See <a href='http://www.nexb.com'>http://www.nexb.com</a> for more details */ --> <%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %> <%@ page import="com.ecyrd.jspwiki.*" %> <%@ page import="java.util.Collection" %> <%@ page import="java.util.Collection" %> <% Collection list = (Collection)pageContext.getAttribute( "searchresults", PageContext.REQUEST_SCOPE ); String query = (String)pageContext.getAttribute( "query", PageContext.REQUEST_SCOPE ); if( query == null ) query = ""; %> <form action="<wiki:Variable var="baseURL"/>Search.jsp" accept-charset="ISO-8859-1,UTF-8"> <p> <input type="text" class="searchText" name="query" size="40" value="<%=query%>" /> <input type="submit" class="searchButton" name="ok" value="Search" /> </p> </form> <% if( list != null ) { %> <p>Searched EasyStruts for <q><%=query%></q></p> <% if( list.size() > 0 ) { %> <p>Results 1-<%=(list.size()<20)?list.size():20%> out of <%=list.size()%></p> <ol> <wiki:SearchResultIterator list="<%=list%>" id="searchref" maxItems="20"> <li> <wiki:LinkTo><wiki:PageName/></wiki:LinkTo> </li> </wiki:SearchResultIterator> </ol> <% } else { %> <p>No pages were found containing <strong><q><%=query%></q></strong>.</p> <% } %> <% } %> --- NEW FILE: nexb-print.css --- /* * CSS intended specificly for print media * e.g: <link rel=stylesheet type="text/css" media="print" href="templates/default/jspwiki_print.css"> * This stylesheet mainly hides all the webspecific stuff. * Shows content in a print friendly way. * Author PhilipVanBogaert */ /* Webpage stuff */ .headerSearch,.menuBar,.breadcrumbsBar,.leftMenuBox { display:none; } body { font-size:9pt; } a { text-decoration:none; } |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:18
|
Update of /cvsroot/easystruts/easystruts-website/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/web Added Files: favicon.ico Edit.jsp faq.html Search.jsp Wiki.jsp .htaccess Error.jsp index.jsp Log Message: Added new web site sources and data --- NEW FILE: favicon.ico --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Wiki.jsp --- <%@ page import="org.apache.log4j.*" %> <%@ page import="com.ecyrd.jspwiki.*" %> <%@ page import="com.ecyrd.jspwiki.tags.WikiTagBase" %> <%@ page import="com.ecyrd.jspwiki.auth.permissions.ViewPermission" %> <%@ page import="com.ecyrd.jspwiki.auth.*" %> <%@ page errorPage="/Error.jsp" %> <%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %> <%! public void jspInit() { wiki = WikiEngine.getInstance( getServletConfig() ); } Category log = Category.getInstance("JSPWiki"); WikiEngine wiki; %><% WikiContext wikiContext = wiki.createContext( request, WikiContext.VIEW ); String pagereq = wikiContext.getPage().getName(); NDC.push( wiki.getApplicationName()+":"+pagereq ); log.info("Request for page '"+pagereq+"' from "+request.getRemoteHost()+" by "+request.getRemoteUser() ); String redirect = wiki.getRedirectURL( wikiContext ); if( redirect != null ) { response.sendRedirect( redirect ); return; } AuthorizationManager mgr = wiki.getAuthorizationManager(); UserProfile currentUser = wiki.getUserManager().getUserProfile( request ); if( !mgr.checkPermission( wikiContext.getPage(), currentUser, new ViewPermission() ) ) { if( mgr.strictLogins() ) { log.info("User "+currentUser.getName()+" has no access - redirecting to login page."); String msg = "Unknown user or password.<br>Please try again."; wikiContext.setVariable( "msg", msg ); String pageurl = wiki.encodeName( pagereq ); response.sendRedirect( wiki.getBaseURL()+"Login.jsp?page="+pageurl ); return; } else { // // Do a bit of sanity check here. FIXME: Should this be somewhere else? // if( pagereq.equals("LoginError") ) { throw new WikiSecurityException("Looped config detected - you must not prevent view access to page LoginError AND have strictLogins set to true!"); } log.info("User "+currentUser.getName()+" has no access - displaying message."); response.sendRedirect( wiki.getBaseURL()+"Wiki.jsp?page=LoginError" ); } } pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE ); // // Alright, then start responding. // response.setContentType("text/html; charset="+wiki.getContentEncoding() ); String contentPage = "templates/"+wikiContext.getTemplate()+"/ViewTemplate.jsp"; %><wiki:Include page="<%=contentPage%>" /><% NDC.pop(); NDC.remove(); %> --- NEW FILE: Edit.jsp --- <jsp:forward page="Wiki.jsp"/> --- NEW FILE: Error.jsp --- <%@ page isErrorPage="true" %> <%@ page import="org.apache.log4j.*" %> <%@ page import="com.ecyrd.jspwiki.*" %> <%@ page import="com.ecyrd.jspwiki.tags.WikiTagBase" %> <%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %> <%! public void jspInit() { wiki = WikiEngine.getInstance( getServletConfig() ); } Category log = Category.getInstance("JSPWiki"); WikiEngine wiki; %> <% WikiContext wikiContext = wiki.createContext( request, WikiContext.ERROR ); String pagereq = wikiContext.getPage().getName(); NDC.push( wiki.getApplicationName() + ":" + pagereq ); pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE ); response.setContentType("text/html; charset="+wiki.getContentEncoding() ); String msg = "An unknown error was caught by Error.jsp"; if( exception != null ) { msg = exception.getMessage(); if( msg == null || msg.length() == 0 ) { msg = "An unknown exception "+exception.getClass().getName()+" was caught by Error.jsp."; } } log.debug("Error.jsp exception is: ",exception); // // This allows us to get the actual cause of the exception. // Note the cast; at least Tomcat has two classes called "JspException" // imported in JSP pages. // Throwable realcause = null; if( exception instanceof javax.servlet.jsp.JspException ) { log.debug("IS JSPEXCEPTION"); realcause = ((javax.servlet.jsp.JspException)exception).getRootCause(); log.debug("REALCAUSE="+realcause); } if( realcause == null ) realcause = exception; pageContext.setAttribute( "message", msg, PageContext.REQUEST_SCOPE ); %> <h3>JSPWiki has detected an error</h3> <dl> <dt><b>Error Message</b></dt> <dd> <%=pageContext.getAttribute("message",PageContext.REQUEST_SCOPE)%> </dd> <dt><b>Exception</b></dt> <dd><%=realcause.getClass().getName()%></dd> <dt><b>Place where detected</b></dt> <dd><%=FileUtil.getThrowingMethod(realcause)%></dd> </dl> <p> If you have changed the templates, please do check them. This error message may show up because of that. If you have not changed them, and you are either installing JSPWiki for the first time or have changed configuration, then you might want to check your configuration files. If you are absolutely sure that JSPWiki was running quite okay or you can't figure out what is going on, then by all means, come over to <a href="http://www.jspwiki.org/">jspwiki.org</a> and tell us. There is more information in the log file (like the full stack trace, which you should add to any error report). </p> <p> And don't worry - it's just a computer program. Nothing really serious is probably going on: at worst you can lose a few nights sleep. It's not like it's the end of the world. </p> <br clear="all" /> <% NDC.pop(); NDC.remove(); %> --- NEW FILE: .htaccess --- Options -Indexes --- NEW FILE: index.jsp --- <jsp:forward page="Wiki.jsp"/> --- NEW FILE: faq.html --- <html> <head> <title>Easy Struts</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" href="style/easystruts.css" type="text/css"> </head> <body bgcolor="#FFFFFF" text="#000000"> <table width="900" border="0"> <tr> <td height="9" width="64%"><span class="grand"> Easy Struts - F.A.Q.</span></td> <td height="9" width="218"><img src="images/easystruts/new-actionform-med.gif" width="31" height="32"> <img src="images/easystruts/new-action-med.gif" width="31" height="32"> <img src="images/easystruts/new-ds-med.gif" width="32" height="32"> <img src="images/easystruts/new-form-med.gif" width="31" height="32"> <img src="images/easystruts/new-resources-med.gif" width="31" height="32"> <img src="images/easystruts/new-forward-med.gif" width="31" height="32"></td> <td height="9" width="12%"><span class="inforouge"></span><span class="grand"></span></td> </tr> <tr bordercolor="#000000"> <td align="right" valign="middle" height="19" width="260"> </td> <td align="right" valign="middle" height="19" width="348" class="petitnoir"> <a href="index.html">HOME</a> | <a href="CHANGES.TXT"> LOGS</a> | <a href="EASYSTRUTS-LICENSE.TXT">LICENSE</a></td> <td align="left" valign="middle" height="19" width="268"> </td> </tr> <tr> <td height="466" colspan="2" align="center" valign="top"> <p align="left"> <hr> <div align="left"> <p class="normalnoir"><img src="images/easystruts/forward-editor.gif" width="16" height="16"> <a href="#1">What is Struts ?</a><br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <a href="#2">What is Eclipse ?</a> <br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <a href="#3">What is Easy Struts plugin?</a> <br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <a href="#4">How can I install Easy Struts plugin ?</a><br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <a href="#5">I've installed Easy Struts plugin but I can't see Easy Struts in Eclipse !</a> <br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <a href="#7">Easy Struts view is not synchronised !</a><br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <a href="#6">I've found a Bug... ! </a></p> <p class="petitnoir"><span class="titre"> <br> </span></p> <p class="petitnoir"><br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">What is Struts ?</span><a name="1"></a><br> <span class="petitnoir"><br> Struts is a framework from the Apache Software Foundation, the goal is to provide a (FREE and OPENSOURCE) MVC2 implementation for web application, more information on <a href="http://jakarta.apache.org/struts" target="_blank">http://jakarta.apache.org/struts</a>. You can also check the book <a href="http://www.amazon.com/exec/obidos/ASIN/1930110502/easystrutspro-20/102-0806726-6408966" target="_blank">Java Web Development With Struts</a> written by some Struts Committers.</span></p> <p class="petitnoir"><br> <br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">What is Eclipse ?</span><a name="2" id="2"></a><br> <span class="petitnoir"><br> Perhaps you need to read <a href="http://www.eclipse.org/org/index.html" target="_blank">http://www.eclipse.org/org/index.html</a> ;)</span></p> <p class="petitnoir"></p> <p class="petitnoir"><br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">What is Easy Struts plugin?</span><a name="3" id="3"></a><br> <span class="petitnoir"><br> Easy Strut is a plugin for Eclipse, the goal is to provide a set of IDE tools for Struts developpement. Theses tools are wizards, code generator, editors, views... <em>This project is inspired from <a href="http://www.jamesholmes.com/struts" target="_blank">struts-console</a> who provide Struts support in many other IDE.</em></span></p> <p class="petitnoir"></p> <p class="petitnoir"><img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">How can I install Easy Struts plugin</span><a name="4" id="4"></a><br> <span class="petitnoir"><br> There is two way to install Easy Struts. With the Eclipse Update Manager (This way won't work with some Firewall) or donwload the latest release, unzip and copy the directory (in bold) <where you unzip the file>\easystruts-eclipse_X.X.X\plugins<strong>\com.cross.easystruts.eclipse_X.X.X</strong> in your <strong><eclipse>\plugins</strong> directory. </span><br> After launch Eclipse, if Easy Struts appears in Eclipse preference, let' rock...<br> </p> <p class="petitnoir"><br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">I've installed Easy Struts plugin but I can't see Easy Struts in Eclipse</span><a name="5" id="5"></a><br> <span class="petitnoir"><br> Easy Struts require <a href="http://www.eclipse.org/pde/index.html" target="_blank">PDE plugins</a>, this plugin can be found in <a href="http://www.eclipse.org/downloads/index.php" target="_blank">Eclipse SDK</a> distribution. If you have this plugin and Easy Struts won't work, consult ths file <eclipse>\workspace\.metadata\.log. </span>... and see <a href="#6">next question</a>.</p> <p class="petitnoir"><img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">Easy Struts view is not synchronised !</span><a name="7" id="7"></a></p> <p class="petitnoir">Hit F5 to refresh tree (for example after removing a java project or manually adding a Struts 1.1 module in web.xml).</p> <p><img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">I've found a Bug...!<a name="6" id="6"></a></span></p> <p class="petitnoir">Easy Struts is on developpement so there is many bug, I've got "normal" a <a href="http://www.cross-systems.com" target="_blank">work</a> and I can't work full-time on Easy Struts... Report all bugs in <a href="http://sourceforge.net/tracker/?atid=474084&group_id=54542&func=browse" target="_blank">SourceForge bug repport tools</a>, inforation needed : Eclipse version, Easy Strut version, Platform, entries in your <span class="petitnoir"><eclipse>\workspace\.metadata\.log</span> and all other informations you have... and be patient.</p> <p class="petitnoir"><br> <br> <img src="images/easystruts/forward-editor.gif" width="16" height="16"> <span class="titre">To be continued...!</span> </p> <p> </p> </div> </td> <td width="12%" rowspan="2"> </td> </tr> <tr> <td height="53" colspan="2" align="center" valign="bottom"> </td> </tr> <tr align="center"> <td colspan="2" class="petitgris">Copyright © 2002 Easy Struts - contact : <a href="mailto:e.b...@cr...">e.b...@us...</a> <br> JBuilder is a trademark of Borland Software Corporation in the United States and other countries. </td> <td class="petitgris"> </td> </tr> </table> </body> </html> --- NEW FILE: Search.jsp --- <%@ page import="org.apache.log4j.*" %> <%@ page import="com.ecyrd.jspwiki.*" %> <%@ page import="java.util.*" %> <%@ page import="com.ecyrd.jspwiki.tags.WikiTagBase" %> <%@ page errorPage="/Error.jsp" %> <%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %> <%! public void jspInit() { wiki = WikiEngine.getInstance( getServletConfig() ); } Category log = Category.getInstance("JSPWikiSearch"); WikiEngine wiki; %> <% WikiContext wikiContext = wiki.createContext( request, WikiContext.FIND ); String pagereq = wikiContext.getPage().getName(); NDC.push( wiki.getApplicationName()+":"+pagereq ); String query = wiki.safeGetParameter( request, "query"); Collection list = null; pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, wikiContext, PageContext.REQUEST_SCOPE ); response.setContentType("text/html; charset="+wiki.getContentEncoding() ); if( query != null ) { log.info("Searching for string "+query); list = wiki.findPages( query ); pageContext.setAttribute( "searchresults", list, PageContext.REQUEST_SCOPE ); pageContext.setAttribute( "query", query, PageContext.REQUEST_SCOPE ); log.info("Found "+list.size()+" pages"); } String contentPage = "templates/"+wikiContext.getTemplate()+"/ViewTemplate.jsp"; %> <wiki:Include page="<%=contentPage%>" /> <% NDC.pop(); NDC.remove(); %> |
From: Philippe O. <pom...@us...> - 2005-05-15 23:44:18
|
Update of /cvsroot/easystruts/easystruts-website/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/cbe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/cbe Added Files: cbe_core.js cbe_clip.js cbe_util.js cbe_slide.js cbe_debug.html cbe_slide2.js cbe_event.js cbe_debug.js Log Message: Added new web site sources and data --- NEW FILE: cbe_core.js --- /* cbe_core.js $Revision: 0.22 $ * CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com * Copyright (c) 2002 Michael Foster (mi...@cr...) * Distributed under the terms of the GNU LGPL from gnu.org */ var cbeVersion="4.19", cbeDocumentId='idDocument', cbeWindowId='idWindow', cbeAll=new Array(); window.onload=function(){cbeInitialize("DIV", "SPAN"); if (window.windowOnload) window.windowOnload();} window.onunload=function(){if(window.windowOnunload){window.windowOnunload();}if(window.cbeDebugObj){window.cbeDebugObj=null;}for(var i=0; i<cbeAll.length; i++){if(cbeAll[i]){if(cbeAll[i].ele){if(cbeAll[i].ele.cbe){cbeAll[i].ele.cbe=null;}cbeAll[i].ele=null;}cbeAll[i]=null;}}} function CrossBrowserNode(){this.parentNode=null; this.childNodes=0; this.firstChild=null; this.lastChild=null; this.previousSibling=null; this.nextSibling=null;} CrossBrowserNode.prototype.appendNode=function(cbeChild){if (cbeChild){if (!this.firstChild){this.firstChild=cbeChild;} else{cbeChild.previousSibling=this.lastChild; this.lastChild.nextSibling=cbeChild;}cbeChild.parentNode=this; this.lastChild=cbeChild; ++this.childNodes;}return cbeChild;} CrossBrowserElement.prototype=new CrossBrowserNode; function CrossBrowserElement(){ this.contains=this.left=this.top=this.offsetLeft=this.offsetTop=this.pageX=this.pageY=this.zIndex=_retZero; this.show=this.hide=this.moveTo=this.moveBy=this.sizeTo=this.sizeBy=this.resizeTo=this.resizeBy=_retVoid; this.visibility=this.color=this.background=this.clip=this.innerHtml=_retEStr; if (cbeAll.length < 2){this.width=cbeInnerWidth; this.height=cbeInnerHeight; this.scrollLeft=cbePageXOffset; this.scrollTop=cbePageYOffset;} else{this.width=this.height=this.scrollLeft=this.scrollTop=_retZero;} this.id=""; this.index=cbeAll.length; cbeAll[this.index]=this; this.w=this.h=0; this.x=this.y=0; if (window.cbeEventJsLoaded) this.listeners=new Array(); } function cbeBindElement(cbe, ele){ if (!cbe || !ele) return; cbe.ele=ele; cbe.ele.cbe=cbe; cbe.parentElement=cbeGetParentElement(ele); if (ele==window){cbe.id=ele.id=cbeWindowId; return;} else if (ele==document){cbe.id=ele.id=cbeDocumentId; return;} else{cbe.id=ele.id;} if (_def(ele.clip)){cbe.w=ele.clip.width; cbe.h=ele.clip.height;} var css=_def(ele.style); // left, top cbe.moveTo=_cbeMoveTo; cbe.moveBy=_cbeMoveBy; if (css && _def(ele.style.left, ele.style.top) && typeof(ele.style.left)=="string"){cbe.left=_domLeft; cbe.top=_domTop;}else if (css && _def(ele.style.pixelLeft, ele.style.pixelTop)){cbe.left=_ieLeft; cbe.top=_ieTop;}else if (_def(ele.left, ele.top)){cbe.left=_nnLeft; cbe.top=_nnTop;}else{_sup(false,"left","top","moveTo","moveBy");} // width, height cbe.sizeTo=_cbeSizeTo; cbe.sizeBy=_cbeSizeBy; cbe.resizeTo=_cbeResizeTo; cbe.resizeBy=_cbeResizeBy; if (css && _def(ele.style.width, ele.style.height, ele.offsetWidth, ele.offsetHeight) && typeof(ele.style.width)=="string"){cbe.width=_domWidth; cbe.height=_domHeight;}else if (css && _def(ele.style.pixelWidth, ele.style.pixelHeight)){cbe.width=_ieWidth; cbe.height=_ieHeight;}else if (_def(ele.clip) && _def(ele.clip.width, ele.clip.height)){cbe.width=_nnWidth; cbe.height=_nnHeight;}else{_sup(false, "width","height","sizeTo","sizeBy","resizeTo","resizeBy");} // zIndex if (css && _def(ele.style.zIndex)){cbe.zIndex=_domZIndex;} else if (_def(ele.zIndex)){cbe.zIndex=_nnZIndex;} else{_sup(false,"zIndex");} // visibility cbe.show=_cbeShow; cbe.hide=_cbeHide; if (css && _def(ele.style.visibility)){cbe.visibility=_domVisibility;} else if (_def(ele.visibility)){cbe.visibility=_nnVisibility;} else{_sup(false,"visibility","show","hide");} // background if (css && _def(ele.style.backgroundColor, ele.style.backgroundImage)){cbe.background=_domBackground;} else if (_def(ele.bgColor, ele.background)){cbe.background=_nnBackground;} else{_sup(false,"background");} // color if (css && _def(ele.style.color)){cbe.color=_domColor;} else{_sup(false,"color");} // clip if (css && _def(ele.style.clip)){cbe.clip=_domClip;} else if (_def(ele.clip)){cbe.clip=_nnClip;} else{_sup(false,"clip");} // offsetLeft, offsetTop if (_def(ele.offsetLeft, ele.offsetTop, ele.offsetParent)){cbe.offsetLeft=_ieOffsetLeft; cbe.offsetTop=_ieOffsetTop;}else if (_def(ele.pageX, ele.pageY)){cbe.offsetLeft=_nnOffsetLeft; cbe.offsetTop=_nnOffsetTop;}else{_sup(false,"offsetLeft","offsetTop");} // pageX, pageY cbe.contains=_cbeContains; if (_def(ele.pageX, ele.pageY)){cbe.pageX=_nnPageX; cbe.pageY=_nnPageY;}else if (document.cbe.isSupported("offsetLeft")){cbe.pageX=_cbePageX; cbe.pageY=_cbePageY;}else{_sup(false,"pageX","pageY","contains");} // innerHtml if (_def(ele.innerHTML)){cbe.innerHtml=_ieInnerHtml;} else if (_def(ele.document) && _def(ele.document.write)){cbe.innerHtml=_nnInnerHtml;} else{_sup(false,"innerHtml");} // scrollLeft, scrollTop if (_def(ele.scrollLeft, ele.scrollTop)){cbe.scrollLeft=_cbeScrollLeft; cbe.scrollTop=_cbeScrollTop;}else{_sup(false,"scrollLeft","scrollTop");} // createElement, appendChild, removeChild (these need more work) if (!_def(document.createElement) && !document.layers){_sup(false,"createElement","appendChild","removeChild");}else{if (!_def(ele.appendChild)){_sup(false,"appendChild");} if (!_def(ele.removeChild)){_sup(false,"removeChild");}} } function cbeInitialize(sTagNames){ var t,i,ele,eleList,cbe; cbe=new CrossBrowserElement(window); cbeBindElement(cbe, window); cbe=new CrossBrowserElement(document); cbeBindElement(cbe, document); if (!document.getElementById) document.getElementById=cbeGetElementById; if (document.createElement || document.layers) document.cbe.createElement=_cbeCreateElement; document.cbe.isSupported=_cbeIsSupported; document.cbe.supported=new Array(); _sup(true,"left","top","width","height","zIndex","show","hide","visibility","background","color","clip","offsetLeft","offsetTop","pageX","pageY","innerHtml","scrollLeft","scrollTop","createElement","appendChild","removeChild","moveTo","moveBy","sizeTo","sizeBy","resizeTo","resizeBy","contains"); for (t=0; t < arguments.length; ++t){ eleList=cbeGetElementsByTagName(arguments[t]); for (i=0; i < eleList.length; ++i){ ele=eleList[i]; if ( ele.id && ele.id !=""){ cbe=new CrossBrowserElement(); cbeBindElement(cbe, ele); } } if (document.layers) break; } _cbeCreateTree(); if (window.cbeEventJsLoaded && (document.layers || is.opera5or6)){window.cbe.addEventListener("resize", cbeDefaultResizeListener);} } function _cbeIsSupported(sMethods){var i; for (i=0; i<arguments.length; ++i){if (!document.cbe.supported[arguments[i]]) return false;}return true;} function _sup(bValue, sMethods){var i; for (i=1; i<arguments.length; ++i) document.cbe.supported[arguments[i]]=bValue;} function _cbeCreateTree(){var parent; for (var i=1; i < cbeAll.length; ++i){parent=cbeAll[i].parentElement; if (!parent.cbe){while (parent && !parent.cbe){parent=cbeGetParentElement(parent);}if (!parent) parent=document;}parent.cbe.appendNode(cbeAll[i]);}} function cbeGetElementById(sId){var ele=null; if (sId==window.cbeWindowId) ele=window; else if (sId==window.cbeDocumentId) ele=document; else if (is.dom1getbyid) ele=document.getElementById(sId); else if (document.all) ele=document.all[sId]; else if (document.layers) ele=nnGetElementById(sId); if (!ele && window.cbeUtilJsLoaded){ele=cbeGetImageByName(sId); if (!ele){ele=cbeGetFormByName(sId);}} return ele;} function nnGetElementById(sId){for (var i=0; i < cbeAll.length; i++){if ( cbeAll[i].id==sId ) return cbeAll[i].ele;}return null;} function cbeGetElementsByTagName(sTagName){ var eleList; if (document.getElementsByTagName) eleList=document.getElementsByTagName(sTagName); // standard else if (document.body && document.body.getElementsByTagName) eleList=document.body.getElementsByTagName(sTagName); // opera5or6 else if (document.all && document.all.tags) eleList=document.all.tags(sTagName); // ie4 else if (document.layers){eleList=new Array(); nnGetAllLayers(window, eleList, 0);}// nn4 return eleList; } function nnGetAllLayers(parent, layerArray, nextIndex){ var i, layer; for (i=0; i < parent.document.layers.length; i++){ layer=parent.document.layers[i]; layerArray[nextIndex++]=layer; if (layer.document.layers.length) nextIndex=nnGetAllLayers(layer, layerArray, nextIndex); } return nextIndex; } function cbeGetParentElement(child){ var parent=document; if (child==window) parent=null; else if (child==document) parent=window; else if (child.parentLayer){if (child.parentLayer !=window) parent=child.parentLayer;} else{ if (child.parentNode) parent=child.parentNode; else if (child.offsetParent) parent=child.offsetParent; else if (child.parentElement) parent=child.parentElement; } return parent; } function _def(){var i; for (i=0; i<arguments.length; ++i){if (typeof(arguments[i])=="" || typeof(arguments[i])=="undefined") return false;}return true;} function _retZero(){return 0;} function _retNull(){return null;} function _retEStr(){return "";} function _retVoid(){} ////// when optimizing, don't remove anything above this comment ////// function _cbeCreateElement(sEleType){// returns an Element object var ele=null; if (document.createElement && sEleType.length){ ele=document.createElement(sEleType); if (ele && ele.style){ele.style.position="absolute";} } else if (document.layers){ ele=new Object(); } return ele; } CrossBrowserNode.prototype.appendChild=function(eleChild){// returns the appended Element object on success var cbe, ele, rv=null; if (document.layers){ var thisEle; if (this.index < 2) thisEle=window; else thisEle=this.ele; ele=new Layer(this.width(), thisEle); if (ele){ if (eleChild.id) ele.id=ele.name=eleChild.id; cbe=new CrossBrowserElement(); cbeBindElement(cbe, ele); this.appendNode(ele.cbe); eleChild.cbe=cbe; ++this.childNodes; rv=ele; } } else{ if (this.index < 2) ele=document.body; else ele=this.ele; if (ele.appendChild){ ele.appendChild(eleChild); cbe=new CrossBrowserElement(); cbeBindElement(cbe, eleChild); this.appendNode(eleChild.cbe); ++this.childNodes; rv=eleChild; } } return rv; } CrossBrowserNode.prototype.removeChild=function(eleChild){ var ele, rv=null; if (this.index < 2) ele=document.body; else ele=this.ele; if (ele.removeChild || document.layers){ --this.childNodes; var prevSib=eleChild.cbe.previousSibling; var nextSib=eleChild.cbe.nextSibling; with (eleChild.cbe){ parentNode=null; previousSibling=null; nextSibling=null; } if (prevSib) prevSib.nextSibling=nextSib; else this.firstChild=nextSib; if (nextSib) nextSib.previousSibling=prevSib; else this.lastChild=prevSib; if (document.layers){ //// working on it } else{ ele.removeChild(eleChild); } rv=eleChild; } return rv; } function _cbeContains(iLeft, iTop, iClipTop, iClipRight, iClipBottom, iClipLeft){if (arguments.length==2){iClipTop=iClipRight=iClipBottom=iClipLeft=0;} else if (arguments.length==3){iClipRight=iClipBottom=iClipLeft=iClipTop;} else if (arguments.length==4){iClipLeft=iClipRight; iClipBottom=iClipTop;} var thisX=this.pageX(), thisY=this.pageY(); return ( iLeft >=thisX + iClipLeft && iLeft <=thisX + this.width() - iClipRight && iTop >=thisY + iClipTop && iTop <=thisY + this.height() - iClipBottom );} function _cbeMoveTo(x_cr, y_mar, outside, xEndL){if (isFinite(x_cr)){this.left(x_cr); this.top(y_mar);}else{this.cardinalPosition(x_cr, y_mar, outside); this.left(this.x); this.top(this.y);}if (xEndL) cbeEval(xEndL, this);} function _cbeMoveBy(uDX, uDY, xEndL){if (uDX){this.left(this.left() + uDX);} if (uDY){this.top(this.top() + uDY);} if (xEndL){cbeEval(xEndL, this);}} function _domLeft(iX){if (arguments.length){this.ele.style.left=iX + "px";} else{iX=parseInt(this.ele.style.left); if (isNaN(iX)) iX=0;}return iX;} function _ieLeft(iX){if (arguments.length){this.ele.style.pixelLeft=iX;} else{iX=this.ele.style.pixelLeft;} return iX;} function _nnLeft(iX){if (arguments.length){this.ele.left=iX;} else{iX=this.ele.left;} return iX;} function _domTop(iY){if (arguments.length){this.ele.style.top=iY + "px";} else{iY=parseInt(this.ele.style.top); if (isNaN(iY)) iY=0;}return iY;} function _ieTop(iY){if (arguments.length){this.ele.style.pixelTop=iY;} else{iY=this.ele.style.pixelTop;} return iY;} function _nnTop(iY){if (arguments.length){this.ele.top=iY;} else{iY=this.ele.top;} return iY;} function _nnOffsetLeft(){var ol=this.ele.pageX - this.parentElement.pageX; if (isNaN(ol)){ol=this.ele.pageX;} return ol;} function _nnOffsetTop(){var ot=this.ele.pageY - this.parentElement.pageY; if (isNaN(ot)){ot=this.ele.pageY;} return ot;} function _ieOffsetLeft(){var x=this.ele.offsetLeft, parent=this.ele.offsetParent; while(parent && !parent.cbe){x +=parent.offsetLeft; parent=parent.offsetParent;}return x;} function _ieOffsetTop(){var y=this.ele.offsetTop, parent=this.ele.offsetParent; while(parent && !parent.cbe){y +=parent.offsetTop; parent=parent.offsetParent;}return y;} function _nnPageX(){return this.ele.pageX;} function _nnPageY(){return this.ele.pageY;} function _cbePageX(){var x=this.offsetLeft(), parent=this.parentNode; if (parent){while(parent.index > 1){x +=parent.offsetLeft(); parent=parent.parentNode;}} return x;} function _cbePageY(){var y=this.offsetTop(), parent=this.parentNode; if (parent){while(parent.index > 1){y +=parent.offsetTop(); parent=parent.parentNode;}} return y;} function _cbeSizeTo(uW, uH){this.width(uW); this.height(uH);} function _cbeSizeBy(iDW, iDH){this.width(this.width() + iDW); this.height(this.height() + iDH);} function _cbeResizeTo(uW, uH, xEndListener){this.sizeTo(uW, uH); this.clip('auto'); cbeEval(xEndListener, this);} function _cbeResizeBy(iDW, iDH, xEndListener){this.sizeBy(iDW, iDH); this.clip('auto'); cbeEval(xEndListener, this);} function _domWidth(uW){if (arguments.length){uW=Math.round(uW); _domSetWidth(this.ele, uW);}return this.ele.offsetWidth;} function _ieWidth(uW){if (arguments.length){uW=Math.round(uW); this.ele.style.pixelWidth=uW;}return this.ele.style.pixelWidth;} function _nnWidth(uW){if (arguments.length){this.w=Math.round(uW); this.ele.clip.right=this.w;}return this.w;} function _domHeight(uH){if (arguments.length){uH=Math.round(uH); _domSetHeight(this.ele, uH);}return this.ele.offsetHeight;} function _ieHeight(uH){if (arguments.length){uH=Math.round(uH); this.ele.style.pixelHeight=uH;}return this.ele.style.pixelHeight;} function _nnHeight(uH){if (arguments.length){this.h=Math.round(uH); this.ele.clip.bottom=this.h;}return this.h;} function _domSetWidth(ele,uW){ if (uW < 0) return; var pl=0,pr=0,bl=0,br=0; if (_def(document.defaultView) && _def(document.defaultView.getComputedStyle)){// gecko and standard pl=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-left")); pr=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-right")); bl=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-left-width")); br=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-right-width")); } else if (_def(ele.currentStyle, document.compatMode)){ if (document.compatMode=="CSS1Compat"){// ie6up in css1compat mode pl=parseInt(ele.currentStyle.paddingLeft); pr=parseInt(ele.currentStyle.paddingRight); bl=parseInt(ele.currentStyle.borderLeftWidth); br=parseInt(ele.currentStyle.borderRightWidth); } } if (isNaN(pl)) pl=0; if (isNaN(pr)) pr=0; if (isNaN(bl)) bl=0; if (isNaN(br)) br=0; var cssW=uW-(pl+pr+bl+br); if (isNaN(cssW) || cssW < 0) return; ele.style.width=cssW + "px"; } function _domSetHeight(ele,uH){ if (uH < 0) return; var pt=0,pb=0,bt=0,bb=0; if (_def(document.defaultView) && _def(document.defaultView.getComputedStyle)){ pt=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-top")); pb=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-bottom")); bt=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-top-width")); bb=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-bottom-width")); } else if (_def(ele.currentStyle, document.compatMode)){ if (document.compatMode=="CSS1Compat"){ pt=parseInt(ele.currentStyle.paddingTop); pb=parseInt(ele.currentStyle.paddingBottom); bt=parseInt(ele.currentStyle.borderTopWidth); bb=parseInt(ele.currentStyle.borderBottomWidth); } } if (isNaN(pt)) pt=0; if (isNaN(pb)) pb=0; if (isNaN(bt)) bt=0; if (isNaN(bb)) bb=0; var cssH=uH-(pt+pb+bt+bb); if (isNaN(cssH) || cssH < 0) return; ele.style.height=cssH + "px"; } function _cbeScrollLeft(){return this.ele.scrollLeft;} function _cbeScrollTop(){return this.ele.scrollTop;} function _cbeShow(){this.visibility(1);} function _cbeHide(){this.visibility(0);} function _domVisibility(vis){if (arguments.length){if (vis){this.ele.style.visibility='inherit';} else{this.ele.style.visibility='hidden';}}else return (this.ele.style.visibility=='visible' || this.ele.style.visibility=='inherit' || this.ele.style.visibility=='');} function _nnVisibility(vis){if (arguments.length){if (vis){this.ele.visibility='inherit';} else{this.ele.visibility='hide';}}else return (this.ele.visibility=='show' || this.ele.visibility=='inherit' || this.ele.visibility=='');} function _domZIndex(uZ){if (arguments.length){this.ele.style.zIndex=uZ;} else{uZ=parseInt(this.ele.style.zIndex); if (isNaN(uZ)) uZ=0;}return uZ;} function _nnZIndex(uZ){if (arguments.length) this.ele.zIndex=uZ; return this.ele.zIndex;} function _domBackground(sColor, sImage){if (arguments.length){if (!sColor){sColor='transparent';} this.ele.style.backgroundColor=sColor; if (arguments.length==2){this.ele.style.backgroundImage="url(" + sImage + ")";}}else return this.ele.style.backgroundColor;} function _nnBackground(sColor, sImage){if (arguments.length){if (sColor=='transparent'){sColor=null;} this.ele.bgColor=sColor; if (arguments.length==2){this.ele.background.src=sImage || null;}}else{var bg=this.ele.bgColor; if (window.cbeUtilJsLoaded){bg=cbeHexString(bg,6,'#');} return bg;}} function _domColor(newColor){if (arguments.length){this.ele.style.color=newColor;}else return this.ele.style.color;} function _domClip(iTop, iRight, iBottom, iLeft){if (arguments.length==4){var clipRect="rect(" + iTop + "px " + iRight + "px " + iBottom + "px " + iLeft + "px" + ")"; this.ele.style.clip=clipRect;}else{this.clip(0, this.ele.offsetWidth, this.ele.offsetHeight, 0);}} function _nnClip(iTop, iRight, iBottom, iLeft){if (arguments.length==4){this.ele.clip.top=iTop; this.ele.clip.right=iRight; this.ele.clip.bottom=iBottom; this.ele.clip.left=iLeft;}else{this.clip(0, this.width(), this.height(), 0);}} function _ieInnerHtml(sHtml){if (arguments.length){this.ele.innerHTML=sHtml;}else return this.ele.innerHTML;} function _nnInnerHtml(sHtml){if (arguments.length){if (sHtml==""){sHtml=" ";} this.ele.document.open(); this.ele.document.write(sHtml); this.ele.document.close();}else return "";} CrossBrowserElement.prototype.cardinalPosition=function(cp, margin, outside){ if (typeof(cp) !='string'){window.status='cardinalPosition() error: cp=' + cp + ', id=' + this.id; return;} var x=this.left(), y=this.top(), w=this.width(), h=this.height(); var pw=this.parentNode.width(), ph=this.parentNode.height(); var sx=this.parentNode.scrollLeft(), sy=this.parentNode.scrollTop(); var right=sx + pw, bottom=sy + ph; var cenLeft=sx + Math.floor((pw-w)/2), cenTop=sy + Math.floor((ph-h)/2); if (!margin) margin=0; else{ if (outside) margin=-margin; sx +=margin; sy +=margin; right -=margin; bottom -=margin; } switch (cp.toLowerCase()){ case 'n': x=cenLeft; if (outside) y=sy - h; else y=sy; break; case 'ne': if (outside){x=right; y=sy - h;}else{x=right - w; y=sy;}break; case 'e': y=cenTop; if (outside) x=right; else x=right - w; break; case 'se': if (outside){x=right; y=bottom;}else{x=right - w; y=bottom - h}break; case 's': x=cenLeft; if (outside) y=sy - h; else y=bottom - h; break; case 'sw': if (outside){x=sx - w; y=bottom;}else{x=sx; y=bottom - h;}break; case 'w': y=cenTop; if (outside) x=sx - w; else x=sx; break; case 'nw': if (outside){x=sx - w; y=sy - h;}else{x=sx; y=sy;}break; case 'cen': case 'center': x=cenLeft; y=cenTop; break; case 'cenh': x=cenLeft; break; case 'cenv': y=cenTop; break; } this.x=x; this.y=y; } function cbeInnerWidth(){ var w=0; if (is.opera5or6){w=window.innerWidth;} else if (is.ie && document.documentElement && document.documentElement.clientWidth) w=document.documentElement.clientWidth; // ie6 compat mode else if (document.body && document.body.clientWidth) w=document.body.clientWidth; // ie4up and gecko else if (_def(window.innerWidth,window.innerHeight,document.height)){// nn4 w=window.innerWidth; if (document.height > window.innerHeight) w -=16; } return w; } function cbeInnerHeight(){ var h=0; if (is.opera5or6){h=window.innerHeight;} else if (is.ie && document.documentElement && document.documentElement.clientHeight) h=document.documentElement.clientHeight; else if (document.body && document.body.clientHeight) h=document.body.clientHeight; else if (_def(window.innerWidth,window.innerHeight,document.width)){ h=window.innerHeight; if (document.width > window.innerWidth) h -=16; } return h; } function cbePageXOffset(){ var offset=0; if (_def(window.pageXOffset)) offset=window.pageXOffset; // gecko, nn4, opera else if (document.documentElement && document.documentElement.scrollLeft) offset=document.documentElement.scrollLeft; // ie6 compat mode else if (document.body && _def(document.body.scrollLeft)) offset=document.body.scrollLeft; // ie4up return offset; } function cbePageYOffset(){ var offset=0; if (_def(window.pageYOffset)) offset=window.pageYOffset; else if (document.documentElement && document.documentElement.scrollTop) offset=document.documentElement.scrollTop; else if (document.body && _def(document.body.scrollTop)) offset=document.body.scrollTop; return offset; } function cbeEval(exp, arg1, arg2, arg3, arg4, arg5, arg6){ if (typeof(exp)=="function") exp(arg1, arg2, arg3, arg4, arg5, arg6); else if (typeof(exp)=="object" && typeof(arg1)=="function") { exp._cbeEval_ = arg1; exp._cbeEval_(arg2, arg3, arg4, arg5, arg6); } else if (typeof(exp)=="string") eval(exp); } function ClientSnifferJr(){ this.ua=navigator.userAgent.toLowerCase(); this.major=parseInt(navigator.appVersion); this.minor=parseFloat(navigator.appVersion); if (document.addEventListener && document.removeEventListener) this.dom2events=true; if (document.getElementById) this.dom1getbyid=true; if (window.opera){ this.opera=true; this.opera5=(this.ua.indexOf("opera 5") !=-1 || this.ua.indexOf("opera/5") !=-1); this.opera6=(this.ua.indexOf("opera 6") !=-1 || this.ua.indexOf("opera/6") !=-1); this.opera5or6=this.opera5 || this.opera6; this.opera7=(this.ua.indexOf("opera 7") !=-1 || this.ua.indexOf("opera/7") !=-1); return; } this.konq=this.ua.indexOf('konqueror') !=-1; this.ie=this.ua.indexOf('msie') !=-1; if (this.ie){ this.ie3=this.major < 4; this.ie4=(this.major==4 && this.ua.indexOf('msie 5')==-1 && this.ua.indexOf('msie 6')==-1); this.ie4up=this.major >=4; this.ie5=(this.major==4 && this.ua.indexOf('msie 5.0') !=-1); this.ie5up=!this.ie3 && !this.ie4; this.ie6=(this.major==4 && this.ua.indexOf('msie 6.0') !=-1); this.ie6up=(!this.ie3 && !this.ie4 && !this.ie5 && this.ua.indexOf("msie 5.5")==-1); return; } this.hotjava=this.ua.indexOf('hotjava') !=-1; this.webtv=this.ua.indexOf('webtv') !=-1; this.aol=this.ua.indexOf('aol') !=-1; if (this.hotjava || this.webtv || this.aol) return; // Gecko, NN4, and NS6 this.gecko=this.ua.indexOf('gecko') !=-1; this.nav=(this.ua.indexOf('mozilla') !=-1 && this.ua.indexOf('spoofer')==-1 && this.ua.indexOf('compatible')==-1); if (this.nav){ this.nav4=this.major==4; this.nav4up=this.major >=4; this.nav5up=this.major >=5; this.nav6=this.major==5; this.nav6up=this.nav5up; } } window.is=new ClientSnifferJr(); // End cbe_core.js --- NEW FILE: cbe_debug.js --- /* cbe_debug.js $Revision: 0.11 $ * CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com * Copyright (c) 2002 Michael Foster (mi...@cr...) * Distributed under the terms of the GNU LGPL from gnu.org */ var cbeIDE=new Object(), cbeDebugObj=new Object(), cbeRefWin=null, cbeRefWinName='cbeRefWin', cbeDebugWin=null, cbeDebugWinName='cbeDebugWindow', cbeDebugSelected=null, cbeMMSL = false; function cbeMouseMoveStatus() { if (cbeMMSL) { document.cbe.removeEventListener('mouseMove', cbeMMStatusListener, false); cbeMMSL = false; } else { if (window.opera) window.defaultStatus=""; document.cbe.addEventListener('mouseMove', cbeMMStatusListener, false); cbeMMSL = true; } } function cbeMMStatusListener(e) { if (e.cbeTarget) window.status = 'MOUSE:' + ' X: ' + e.pageX + ' Y: ' + e.pageY + ' OBJECT:' + ' ID: ' + e.cbeTarget.id + ' P: ' + e.cbeTarget.parentNode.id + ' L: ' + e.cbeTarget.left() + ' T: ' + e.cbeTarget.top() + ' X: ' + e.cbeTarget.pageX() + ' Y: ' + e.cbeTarget.pageY() + ' Z: ' + e.cbeTarget.zIndex() + ' W: ' + e.cbeTarget.width() + ' H: ' + e.cbeTarget.height() + ' B: ' + e.cbeTarget.background(); } function cbeMUListener(e) { cbeDebugSetSelected(e.cbeTarget.id); } function cbeDebugSetSelected(id) { if (cbeDebugWin) if (cbeDebugWin.closed) cbeDebugWindow(); if (id == window.cbeWindowId) cbeDebugSelected = window.cbe; else if (id == window.cbeDocumentId) cbeDebugSelected = document.cbe; else cbeDebugSelected = cbeGetElementById(id).cbe; if (!cbeDebugSelected) cbeDebugSelected = window.cbe; } function cbeDebugWindow(sBaseUrl) { if (cbeDebugWin) { cbeDebugWin.close(); cbeDebugWin = null; document.cbe.removeEventListener('mouseUp', cbeMUListener, false); return; } cbeIDEInit(); if (!sBaseUrl) { sBaseUrl = window.cbeBasePath ? cbeBasePath : ""; } cbeDebugSetSelected(window.cbeWindowId); var features = "width="+cbeIDE.dw+",height="+cbeIDE.dh+",scrollbars=1,resizable=1"; if (document.layers) features += ",screenx="+cbeIDE.dx+",screeny="+cbeIDE.dy; else features += ",left="+cbeIDE.dx+",top="+cbeIDE.dy; window.cbeDebugWin = window.open(sBaseUrl + "cbe_debug.html", cbeDebugWinName, features); cbeDebugWin.resizeTo(cbeIDE.dw, cbeIDE.dh); cbeDebugWin.moveTo(cbeIDE.dx,cbeIDE.dy); document.cbe.addEventListener('mouseUp', cbeMUListener, false); cbeDebugObj.cmdLine = ""; cbeDebugUpdate(); } function cbeRefWindow(sBaseUrl) { if (window.cbeRefWin) { cbeRefWin.close(); cbeRefWin = null; return; } cbeIDEInit(); if (!sBaseUrl) { sBaseUrl = window.cbeBasePath ? cbeBasePath : ""; } var features = "width="+cbeIDE.rw+",height="+cbeIDE.rh+",scrollbars=1,resizable=1"; if (document.layers) features += ",screenx="+cbeIDE.rx+",screeny="+cbeIDE.ry; else features += ",left="+cbeIDE.rx+",top="+cbeIDE.ry; window.cbeRefWin = window.open(sBaseUrl + "cbe_reference.html", cbeRefWinName, features); cbeRefWin.resizeTo(cbeIDE.rw, cbeIDE.rh); cbeRefWin.moveTo(cbeIDE.rx, cbeIDE.ry); } function cbeTileWindows() { cbeIDEInit(); cbeDebugWindow(); if (!cbeDebugWin) {cbeDebugWindow();} window.resizeTo(cbeIDE.aw, cbeIDE.ah); window.moveTo(cbeIDE.ax, cbeIDE.ay); } function cbeIDEInit() { cbeIDE.dx = 0; cbeIDE.dy = 0; cbeIDE.dw = 200; cbeIDE.dh = screen.availHeight - 10; // Debug Window cbeIDE.rh = Math.round(screen.availHeight / 2); cbeIDE.rw = screen.availWidth - cbeIDE.dw; cbeIDE.rx = 0; cbeIDE.ry = cbeIDE.rh - 10; // Reference Window cbeIDE.ax = cbeIDE.dw; cbeIDE.ay = 0; cbeIDE.aw = screen.availWidth - cbeIDE.dw - 10; cbeIDE.ah = screen.availHeight - 10; // Application Window } function cbeDebugUpdate() { if (cbeDebugWin) { if (!cbeDebugWin.closed) setTimeout("cbeDebugUpdate()", 750); } if (cbeDebugObj.cmdLine.length) { var tmp = cbeDebugObj.cmdLine; cbeDebugObj.cmdLine = ""; eval(tmp); } cbeDebugObj.id = cbeDebugSelected.id; cbeDebugObj.left = cbeDebugSelected.left(); cbeDebugObj.top = cbeDebugSelected.top(); cbeDebugObj.zIndex = cbeDebugSelected.zIndex(); cbeDebugObj.pageX = cbeDebugSelected.pageX(); cbeDebugObj.pageY = cbeDebugSelected.pageY(); cbeDebugObj.offsetLeft = cbeDebugSelected.offsetLeft(); cbeDebugObj.offsetTop = cbeDebugSelected.offsetTop(); cbeDebugObj.scrollLeft = cbeDebugSelected.scrollLeft(); cbeDebugObj.scrollTop = cbeDebugSelected.scrollTop(); cbeDebugObj.width = cbeDebugSelected.width(); cbeDebugObj.height = cbeDebugSelected.height(); cbeDebugObj.visibility = cbeDebugSelected.visibility(); cbeDebugObj.color = cbeDebugSelected.color(); cbeDebugObj.background = cbeDebugSelected.background(); cbeDebugObj.childNodes = cbeDebugSelected.childNodes; cbeDebugObj.firstChild = cbeDebugSelected.firstChild ? cbeDebugSelected.firstChild.id : null; cbeDebugObj.lastChild = cbeDebugSelected.lastChild ? cbeDebugSelected.lastChild.id : null; cbeDebugObj.parentNode = cbeDebugSelected.parentNode ? cbeDebugSelected.parentNode.id : null; cbeDebugObj.previousSibling = cbeDebugSelected.previousSibling ? cbeDebugSelected.previousSibling.id : null; cbeDebugObj.nextSibling = cbeDebugSelected.nextSibling ? cbeDebugSelected.nextSibling.id : null; } function cbeDebugMsg(sMsg) { if (cbeDebugWin) { if (!cbeDebugWin.closed) { cbeDebugWin.setMsg(sMsg); } } } function cbeShowProps(obj, obj_name, showValues) { var i = null, win = null, result = "", objType = "", objValue = " "; if (!obj) { alert("obj is null"); return; } if (!obj_name) { if (obj.nodeName) obj_name = obj.nodeName; else obj_name = "this"; } result = "<head><title>Property Viewer</title>\n" +"</head>\n" +"<body bgcolor='#bbbbbb'>\n" +"<form>\n" +"<input type='button' value='Close' onclick='window.close()'>\n" +"</form>\n" +"<h3>" + obj_name + " Properties:</h3>\n" +"<table border='1' bgcolor='#eeeeee'><tr><th>Property</th><th>Type</th><th>Value</th></tr>\n"; for (i in obj) { objType = typeof(obj[i]); if (showValues) { if (objType.indexOf('string') != -1 && obj[i] == "") objValue = " "; else if (objType.indexOf('object') != -1) objValue = "..."; else if (objType.indexOf('function') != -1) objValue = "..."; else if (i.indexOf('HTML') != -1) objValue = "..."; else if (i.indexOf('erText') != -1) objValue = "..."; else if (i.indexOf('domain') != -1) objValue = "..."; else {objValue = obj[i];} } result += "<tr><td>" + obj_name + "." + i + "</td><td>" + objType + "</td><td>" + objValue + "</td></tr>\n"; } result += "</table><br>" +"<form>\n" +"<input type='button' value='Close' onclick='window.close()'>\n" +"</form>\n" +"</body></html>"; var features = "width=600,height=440,scrollbars=1,resizable=1"; if (document.layers) features += ",screenX=0,screenY=0"; else features += ",left=0,top=0"; win = window.open("", "PropertyViewerWindow", features); win.document.write(result); win.document.close(); return false; } function cbeShowParentChain(child) { var s = "", parent = child; while (parent) { s += "id: " + (parent.id || "null") + " tag: " + (parent.tagName || parent.nodeName || "null") + "\n"; parent = cbeGetParentElement(parent); } alert(s); } var cbeDebugJsLoaded = true; // End cbe_debug.js --- NEW FILE: cbe_slide2.js --- /* cbe_slide2.js $Revision: 0.11 $ * CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com * Copyright (c) 2002 Michael Foster (mi...@cr...) * Distributed under the terms of the GNU LGPL from gnu.org */ CrossBrowserElement.prototype.slideCornerBy = function(corner, dX, dY, totalTime, endListener) { var targetX, targetY; dX = parseInt(dX); dY = parseInt(dY); switch(corner.toLowerCase()) { case 'nw': targetX = this.left() + dX; targetY = this.top() + dY; break; case 'sw': targetX = this.left() + dX; targetY = this.top() + this.height() + dY; break; case 'ne': targetX = this.left() + this.width() + dX; targetY = this.top() + dY; break; case 'se': targetX = this.left() + this.width() + dX; targetY = this.top() + this.height() + dY; break; default: alert("CBE: Invalid corner"); return; } this.slideCornerTo(corner, targetX, targetY, totalTime, endListener) } CrossBrowserElement.prototype.slideCornerTo = function(corner, targetX, targetY, totalTime, endListener) { if (this.onslidestart) cbeEval(this.onslidestart, this); this.xTarget = parseInt(targetX); this.yTarget = parseInt(targetY); this.slideTime = parseInt(totalTime); this.corner = corner.toLowerCase(); if (endListener) { this.autoRemoveListener = true; this.addEventListener('slideend', endListener); } this.stop = false; switch(this.corner) { case 'nw': this.xA = this.xTarget - this.left(); this.yA = this.yTarget - this.top(); this.xD = this.left(); this.yD = this.top(); break; case 'sw': this.xA = this.xTarget - this.left(); this.yA = this.yTarget - (this.top() + this.height()); this.xD = this.left(); this.yD = this.top() + this.height(); break; case 'ne': this.xA = this.xTarget - (this.left() + this.width()); this.yA = this.yTarget - this.top(); this.xD = this.left() + this.width(); this.yD = this.top(); break; case 'se': this.xA = this.xTarget - (this.left() + this.width()); this.yA = this.yTarget - (this.top() + this.height()); this.xD = this.left() + this.width(); this.yD = this.top() + this.height(); break; default: alert("CBE: Invalid corner"); return; } this.B = Math.PI / ( 2 * this.slideTime ); var d = new Date( ) this.C = d.getTime(); if (!this.moving) this.slideCorner(); } CrossBrowserElement.prototype.slideCorner = function() { var now, seX, seY; now = new Date(); t = now.getTime() - this.C; if (this.stop) { this.moving = false; this.stop = false; return; } else if (t < this.slideTime) { setTimeout("window.cbeAll["+this.index+"].slideCorner()", this.timeout); s = Math.sin( this.B * t ); newX = Math.round(this.xA * s + this.xD); newY = Math.round(this.yA * s + this.yD); if (this.onslide) cbeEval(this.onslide, this, newX, newY, t); } else { newX = this.xTarget; newY = this.yTarget; } seX = this.left() + this.width(); seY = this.top() + this.height(); switch(this.corner) { case 'nw': this.moveTo(newX, newY); this.sizeTo(seX - this.left(), seY - this.top()); break; case 'sw': if (this.xTarget != this.left()) { this.left(newX); this.width(seX - this.left()); } this.height(newY - this.top()); break; case 'ne': this.width(newX - this.left()); if (this.yTarget != this.top()) { this.top(newY); this.height(seY - this.top()); } break; case 'se': this.width(newX - this.left()); this.height(newY - this.top()); break; default: this.stop = true; } this.clip('auto'); this.moving = true; if (t >= this.slideTime) { this.moving = false; if (this.onslideend) { var tmp = this.onslideend; if (this.autoRemoveListener) { this.autoRemoveListener = false; this.removeEventListener('slideend'); } cbeEval(tmp, this); } } } CrossBrowserElement.prototype.parametricEquation = function(exprX, exprY, totalTime, endListener) { if (this.onslidestart) cbeEval(this.onslidestart, this); this.t = 0; this.stop = false; this.exprX = exprX; this.exprY = exprY; if (endListener && window.cbeEventJsLoaded) { this.autoRemoveListener = true; this.addEventListener('slideend', endListener); } this.slideTime = parseInt(totalTime); var d = new Date( ) this.C = d.getTime(); if (!this.moving) this.parametricEquation1(); } CrossBrowserElement.prototype.parametricEquation1 = function() { var now = new Date(); var et = now.getTime() - this.C; this.t += this.tStep; t = this.t; if (this.stop) { this.moving = false; } else if (!this.slideTime || et < this.slideTime) { setTimeout("window.cbeAll["+this.index+"].parametricEquation1()", this.timeout); var centerX = (this.parentNode.width()/2)-(this.width()/2); var centerY = (this.parentNode.height()/2)-(this.height()/2); this.xTarget = Math.round((eval(this.exprX) * centerX) + centerX) + this.parentNode.scrollLeft(); this.yTarget = Math.round((eval(this.exprY) * centerY) + centerY) + this.parentNode.scrollTop(); if (this.onslide) cbeEval(this.onslide, this, this.xTarget, this.yTarget, et); this.moveTo(this.xTarget, this.yTarget); this.moving = true; } else { this.moving = false; if (this.onslideend) { var tmp = this.onslideend; if (this.autoRemoveListener && window.cbeEventJsLoaded) { this.autoRemoveListener = false; this.removeEventListener('slideend'); } cbeEval(tmp, this); } } } var cbeSlideRateLinear=0, cbeSlideRateSine=1, cbeSlideRateCosine=2; CrossBrowserElement.prototype.slideRate = cbeSlideRateSine; CrossBrowserElement.prototype.tStep = .008; CrossBrowserElement.prototype.exprX = ""; CrossBrowserElement.prototype.exprY = ""; CrossBrowserElement.prototype.corner = ""; CrossBrowserElement.prototype.xTarget = 0; CrossBrowserElement.prototype.yTarget = 0; CrossBrowserElement.prototype.slideTime = 1000; CrossBrowserElement.prototype.xA = 0; CrossBrowserElement.prototype.yA = 0; CrossBrowserElement.prototype.xD = 0; CrossBrowserElement.prototype.yD = 0; CrossBrowserElement.prototype.B = 0; CrossBrowserElement.prototype.C = 0; CrossBrowserElement.prototype.moving = false; CrossBrowserElement.prototype.stop = true; CrossBrowserElement.prototype.timeout = 35; CrossBrowserElement.prototype.autoRemoveListener = false; CrossBrowserElement.prototype.onslidestart = null; CrossBrowserElement.prototype.onslide = null; CrossBrowserElement.prototype.onslideend = null; var cbeSlide2JsLoaded = true; // End cbe_slide2.js --- NEW FILE: cbe_event.js --- /* cbe_event.js $Revision: 0.15 $ * CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com * Copyright (c) 2002 Michael Foster (mi...@cr...) * Distributed under the terms of the GNU LGPL from gnu.org */ function cbeELReg(eventType, eventListener, eventCapture, listenerObject) { // event listener registration object constructor this.type = eventType; this.listener = eventListener; this.capture = eventCapture; this.obj = listenerObject; } function CrossBrowserEvent(e) { // Object constructor // from DOM2 Interface Event this.type = ""; this.target = null; this.currentTarget = null; this.eventPhase = 0; this.bubbles = true; this.cancelable = true; this.timeStamp = 0; this.AT_TARGET = 1; this.BUBBLING_PHASE = 2; this.CAPTURING_PHASE = 3; // eventPhase masks // from DOM2 Interface MouseEvent : UIEvent this.screenX = 0; this.screenY = 0; this.clientX = 0; this.clientY = 0; this.ctrlKey = false; this.shiftKey = false; this.altKey = false; this.metaKey = false; this.button = 3; // 3 == undefined this.relatedTarget = null; this.LEFT = 0; this.MIDDLE = 1; this.RIGHT = 2; // button masks // from IE4 Object Model this.keyCode = 0; this.offsetX = 0; this.offsetY = 0; // from NN4 Object Model this.pageX = 0; this.pageY = 0; // CBE this.stopPropagationFlag = false; this.preventDefaultFlag = false; this.cbeTarget = window.cbe; this.cbeCurrentTarget = window.cbe; if (!e) return; if (e.type) { this.type = e.type; } if (e.target) { this.target = e.target; } else if (e.srcElement) { this.target = e.srcElement; } if (e.currentTarget) { this.currentTarget = e.currentTarget; } else if (e.toElement) { this.currentTarget = e.toElement; } if (e.eventPhase) { this.eventPhase = e.eventPhase; } if (e.bubbles) { this.bubbles = e.bubbles; } if (e.cancelable) { this.cancelable = e.cancelable; } if (e.timeStamp) { this.timeStamp = e.timeStamp; } if (e.screenX) { this.screenX = e.screenX; } if (e.screenY) { this.screenY = e.screenY; } if (is.opera5or6) { this.clientX = e.clientX - document.cbe.scrollLeft(); } else if (e.clientX) { this.clientX = e.clientX; } else if (e.pageX) { this.clientX = e.pageX - document.cbe.scrollLeft(); } if (is.opera5or6) { this.clientY = e.clientY - document.cbe.scrollLeft(); } else if (e.clientY) { this.clientY = e.clientY; } else if (e.pageY) { this.clientY = e.pageY - document.cbe.scrollLeft(); } if (is.opera5or6) { this.ctrlKey = e.type=='mousemove' ? e.shiftKey : e.ctrlKey; } else if (_def(e.ctrlKey)) { this.ctrlKey = e.ctrlKey; } else if (_def(e.modifiers) && window.Event) { this.ctrlKey = (e.modifiers & window.Event.CONTROL_MASK) != 0; } if (is.opera5or6) { this.shiftKey = e.type=='mousemove' ? e.ctrlKey : e.shiftKey; } else if (_def(e.shiftKey)) { this.shiftKey = e.shiftKey; } else if (_def(e.modifiers) && window.Event) { this.shiftKey = (e.modifiers & Event.SHIFT_MASK) != 0; } if (e.altKey) { this.altKey = e.altKey; } else if (_def(e.modifiers) && window.Event) { this.altKey = (e.modifiers & Event.ALT_MASK) != 0; } if (e.metaKey) { this.metaKey = e.metaKey; } // button (?) if (is.ie) { if (this.type.indexOf('mouse') != -1) { if (e.button == 1) this.button = this.LEFT; else if (e.button == 4) this.button = this.MIDDLE; else if (e.button == 2) this.button = this.RIGHT; } else if (this.type == 'click') this.button = this.LEFT; else this.button = 4; // non-mouse event } else if (_def(e.button)) { // standard if (this.type.indexOf('mouse') != -1) { this.button = e.button; if (this.button < 0 || this.button > 2) {this.button = 3;} } else if (this.type == 'click') this.button = this.LEFT; else this.button = 4; // non-mouse event } else if (_def(e.which)) { if (document.layers) { // nn4 if (this.type.indexOf('mouse') != -1) { this.button = e.which - 1; if (this.button < 0 || this.button > 2) {this.button = 3;} } else if (this.type == 'click') this.button = this.LEFT; else this.button = 4; // non-mouse event } else { // opera5or6 if ((e.type == 'click' && e.which == 0) || ((e.type == 'mousedown' || e.type == 'mouseup') && e.which == 1)) {this.button = this.LEFT;} } } if (e.relatedTarget) { this.relatedTarget = e.relatedTarget; } else if (e.fromElement) { this.relatedTarget = e.fromElement; } // ? may need to be toElement in some cases ? if (_def(e.which)) { this.keyCode = e.which; } else if (_def(e.keyCode)) { this.keyCode = e.keyCode; } var calcOfs = false; if (_def(e.layerX,e.layerY)) { this.offsetX = e.layerX; this.offsetY = e.layerY; } else calcOfs = true; // calculate it below if (is.opera5or6) { this.pageX = e.clientX; this.pageY = e.clientY; } else if (_def(e.pageX,e.pageY)) { this.pageX = e.pageX; this.pageY = e.pageY; } else { this.pageX = this.clientX + document.cbe.scrollLeft(); this.pageY = this.clientY + document.cbe.scrollTop(); } // Find the CBE event target if (document.layers) { this.cbeTarget = cbeGetNodeFromPoint(this.pageX, this.pageY); // NN4 note: mouseout works only if mouseover and mouseout are both added to the same object if (this.type == 'mouseover') cbeMOT = this.cbeTarget; else if (this.type == 'mouseout') this.cbeTarget = cbeMOT || document.cbe; } else { var target = this.target; while (!target.cbe) {target = cbeGetParentElement(target);} this.cbeTarget = target.cbe; } this.cbeCurrentTarget = this.cbeTarget; if (calcOfs) { this.offsetX = this.pageX - this.cbeTarget.pageX(); this.offsetY = this.pageY - this.cbeTarget.pageY(); } } CrossBrowserElement.prototype.addEventListener = function(eventType, eventListener, useCapture, listenerObject) { if (!useCapture) useCapture = false; eventType = eventType.toLowerCase(); if ( (eventType.indexOf('mouse') != -1) || eventType == 'click' || (eventType.indexOf('key') != -1) /* || (eventType.indexOf('resize') != -1 && !is.nav4 && !is.opera) || (eventType.indexOf('scroll') != -1 && !is.nav && !is.opera) */ ) { var add=true; for (var i=0; i < this.listeners.length; ++i) { if (eventType == this.listeners[i].type) {add=false; break;} } if (add) { cbeNativeAddEventListener(this.ele, eventType, cbePropagateEvent, false); } this.listeners[this.listeners.length] = new cbeELReg(eventType, eventListener, useCapture, listenerObject); return; } switch(eventType) { case 'slidestart': this.onslidestart = eventListener; return; case 'slide': this.onslide = eventListener; return; case 'slideend': this.onslideend = eventListener; return; case 'dragstart': this.ondragstart = eventListener; return; case 'drag': this.ondragCapture = useCapture; this.ondrag = eventListener; this.addEventListener('mousedown', cbeDragStartEvent, useCapture); return; case 'dragend': this.ondragend = eventListener; return; case 'dragresize': if (window.cbeUtilJsLoaded) cbeAddDragResizeListener(this); return; case 'scroll': if (is.nav || is.opera) { window.cbeOldScrollTop = cbePageYOffset(); window.cbeOnScrollListener = eventListener; cbeScrollEvent(); return; } break; case 'resize': if (is.nav4 || is.opera) { window.cbeOldWidth = cbeInnerWidth(); window.cbeOldHeight = cbeInnerHeight(); window.cbeOnResizeListener = eventListener; cbeResizeEvent(); return; } break; } // end switch cbeNativeAddEventListener(this.ele, eventType, eventListener, useCapture); } function cbeNativeAddEventListener(ele, eventType, eventListener, useCapture) { if (!useCapture) useCapture = false; eventType = eventType.toLowerCase(); var eh = "ele.on" + eventType + "=eventListener"; if (ele.addEventListener) { ele.addEventListener(eventType, eventListener, useCapture); } else if (ele.captureEvents) { // if (useCapture || (eventType.indexOf('mousemove')!=-1)) // ??? ele.captureEvents(eval("Event." + eventType.toUpperCase())); eval(eh); } else { eval(eh); } } function cbeNativeRemoveEventListener(ele, eventType, eventListener, useCapture) { if (!useCapture) useCapture = false; eventType = eventType.toLowerCase(); var eh = "ele.on" + eventType + "=null"; if (ele.removeEventListener) { ele.removeEventListener(eventType, eventListener, useCapture); } else if (ele.releaseEvents) { // if (useCapture || (eventType.indexOf('mousemove')!=-1)) // ??? ele.releaseEvents(eval("Event." + eventType.toUpperCase())); eval(eh); } else { eval(eh); } } CrossBrowserElement.prototype.removeEventListener = function(eventType, eventListener, useCapture) { eventType = eventType.toLowerCase(); if (!useCapture) useCapture = false; if ((eventType.indexOf('mouse') != -1) || eventType == 'click' || (eventType.indexOf('key') != -1)) { var i; for (i = 0; i < this.listeners.length; ++i) { if (this.listeners[i].type == eventType && this.listeners[i].listener == eventListener && this.listeners[i].capture == useCapture) { if (this.listeners.splice) this.listeners.splice(i, 1); else this.listeners[i].type = "*"; break; } } var remove=true; for (i = 0; i < this.listeners.length; ++i) { if (eventType == this.listeners[i].type) { remove = false; break; } } if (remove) cbeNativeRemoveEventListener(this.ele, eventType, cbePropagateEvent, false); return; } switch(eventType) { case 'slidestart': this.onslidestart = null; return; case 'slide': this.onslide = null; return; case 'slideend': this.onslideend = null; return; case 'dragstart': this.ondragstart = null; return; case 'drag': this.removeEventListener('mousedown', cbeDragStartEvent, this.ondragCapture); this.ondrag = null; return; case 'dragend': this.ondragend = null; return; case 'dragresize': if (window.cbeUtilJsLoaded) cbeRemoveDragResizeListener(this); return; case 'scroll': if (is.nav || is.opera) { window.cbeOnScrollListener = null; return; } break; case 'resize': if (is.nav4 || is.opera) { window.cbeOnResizeListener = null; return; } break; } // end switch cbeNativeRemoveEventListener(this.ele, eventType, eventListener, useCapture); } CrossBrowserEvent.prototype.stopPropagation = function() { this.stopPropagationFlag = true; } CrossBrowserEvent.prototype.preventDefault = function() { this.preventDefaultFlag = true; } CrossBrowserElement.prototype.dispatchEvent= function(e) { var dispatch; e.cbeCurrentTarget = this; for (var i=0; i < this.listeners.length; ++i) { dispatch = false; if (e.type == this.listeners[i].type) { if (e.eventPhase == e.CAPTURING_PHASE) { if (this.listeners[i].capture) dispatch = true; } else if (!this.listeners[i].capture) dispatch = true; } if (dispatch) { if (this.listeners[i].obj) cbeEval(this.listeners[i].obj, this.listeners[i].listener, e); else cbeEval(this.listeners[i].listener, e); } } } function cbePropagateEvent(evt) { var i=0, e=null, a=new Array(); if (evt) e = new CrossBrowserEvent(evt); else if (window.event) e = new CrossBrowserEvent(window.event); else return; // Create an array of EventTargets, following the parent chain up (does not include cbeTarget) var node = e.cbeTarget.parentNode; while(node) { a[i++] = node; node = node.parentNode; } // The capturing phase e.eventPhase = e.CAPTURING_PHASE; for (i = a.length-1; i>=0; --i) { a[i].dispatchEvent(e); if (e.stopPropagationFlag) break; } // The at-target phase if (!e.stopPropagationFlag) { e.eventPhase = e.AT_TARGET; e.cbeTarget.dispatchEvent(e); // The bubbling phase if (!e.stopPropagationFlag && e.bubbles) { e.eventPhase = e.BUBBLING_PHASE; for (i = 0; i < a.length; ++i) { a[i].dispatchEvent(e); if (e.stopPropagationFlag) break; } } } // Don't allow native bubbling if (is.ie) window.event.cancelBubble = true; else if (is.gecko) evt.stopPropagation(); // Allow listener to cancel default action if (e.cancelable && e.preventDefaultFlag) { if (is.gecko || is.opera) evt.preventDefault(); return false; } else return true; } function cbeGetNodeFromPoint(x, y) { var hn /* highNode */, hz=0 /* highZ */, cn /* currentNode */, cz /* currentZ */; hn = document.cbe; while (hn.firstChild && hz >= 0) { hz = -1; cn = hn.firstChild; while (cn) { if (cn.contains(x, y)) { cz = cn.zIndex(); if (cz >= hz) { hn = cn; hz = cz; } } cn = cn.nextSibling; } } return hn; } function cbeScrollEvent() { if (!window.cbeOnScrollListener) { return; } if (cbePageYOffset() != window.cbeOldScrollTop) { cbeEval(window.cbeOnScrollListener); window.cbeOldScrollTop = cbePageYOffset(); } setTimeout("cbeScrollEvent()", 250); } function cbeResizeEvent() { if (!window.cbeOnResizeListener) { return; } var dw = window.cbeOldWidth - cbeInnerWidth(); var dh = window.cbeOldHeight - cbeInnerHeight(); if (dw != 0 || dh != 0) { if (window.cbeOnResizeListener) cbeEval(window.cbeOnResizeListener, dw, dh); window.cbeOldWidth = cbeInnerWidth(); window.cbeOldHeight = cbeInnerHeight(); } setTimeout("cbeResizeEvent()", 250); } function cbeDefaultResizeListener() { if (is.opera) location.replace(location.href); else history.go(0); } var cbeDragObj, cbeDragTarget, cbeDragPhase; function cbeDragStartEvent(e) { if (is.opera) { var tn = e.target.tagName.toLowerCase(); if (tn == 'a') return; } else if (is.nav4) { if (e.target.href) return; } cbeDragObj = e.cbeCurrentTarget; cbeDragTarget = e.cbeTarget; if (cbeDragTarget.id == cbeDragObj.id) cbeDragPhase = e.AT_TARGET; else if (cbeDragObj.ondragCapture) cbeDragPhase = e.CAPTURING_PHASE; else cbeDragPhase = e.BUBBLING_PHASE; if (cbeDragObj) { if (cbeDragObj.ondragstart) { e.type = 'dragstart'; cbeEval(cbeDragObj.ondragstart, e); e.type = 'mousedown'; } cbeDragObj.x = e.pageX; cbeDragObj.y = e.pageY; document.cbe.addEventListener('mousemove', cbeDragEvent, cbeDragObj.ondragCapture); document.cbe.addEventListener('mouseup', cbeDragEndEvent, false); } e.stopPropagation(); e.preventDefault(); } function cbeDragEndEvent(e) { document.cbe.removeEventListener('mousemove', cbeDragEvent, cbeDragObj.ondragCapture); document.cbe.removeEventListener('mouseup', cbeDragEndEvent, false); if (cbeDragObj.ondragend) { e.type = 'dragend'; e.cbeCurrentTarget = cbeDragObj; e.cbeTarget = cbeDragTarget; cbeEval(cbeDragObj.ondragend, e); e.type = 'mouseup'; } //e.stopPropagation(); e.preventDefault(); } function cbeDragEvent(e) { if (cbeDragObj) { e.dx = e.pageX - cbeDragObj.x; e.dy = e.pageY - cbeDragObj.y; cbeDragObj.x = e.pageX; cbeDragObj.y = e.pageY; e.type = 'drag'; e.cbeTarget = cbeDragTarget; e.cbeCurrentTarget = cbeDragObj; e.eventPhase = cbeDragPhase; if (cbeDragObj.ondrag) cbeEval(cbeDragObj.ondrag, e); else cbeDragObj.moveBy(e.dx,e.dy); e.type = 'mousemove'; } //e.stopPropagation(); e.preventDefault(); } var cbeEventPhase = new Array('', 'AT_TARGET', 'BUBBLING_PHASE', 'CAPTURING_PHASE'); var cbeButton = new Array('LEFT', 'MIDDLE', 'RIGHT', 'undefined', 'non-mouse event'); CrossBrowserElement.prototype.ondragstart = null; CrossBrowserElement.prototype.ondrag = null; CrossBrowserElement.prototype.ondragend = null; var cbeEventJsLoaded = true; // End cbe_event.js --- NEW FILE: cbe_util.js --- /* cbe_util.js $Revision: 0.14 $ * CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com * Copyright (c) 2002 Michael Foster (mi...@cr...) * Distributed under the terms of the GNU LGPL from gnu.org */ // visit function returns: 0 == stop, 1 == continue, 2 == skip subtree function cbeTraverseTree(order, startNode, visitFunction, data) { cbeTraversePreOrder(startNode, 0, 0, visitFunction, data); } function cbeTraversePreOrder(node, level, branch, vFn, data) { var ret = vFn(node,level,branch,data); if (!ret) return 0; if (ret == 1 && node.firstChild) { var child = node.firstChild; while (child) { if (!level) ++branch; if (!cbeTraversePreOrder(child,level+1,branch,vFn,data)) return 1; child = child.nextSibling; } } return 1; } var cbeImageCount=0; var cbeImageObj = new Array(); var cbeImageName = new Array(); function cbeNewImage(imgName, imgUrl, imgWidth, imgHeight) { var imgObj; if (arguments.length == 4) imgObj = new Image(imgWidth,imgHeight); else imgObj = new Image(); imgObj.src = imgUrl; imgObj.id = imgObj.name = imgName; cbeImageObj[cbeImageCount] = imgObj; cbeImageName[cbeImageCount++] = imgName; return imgObj; } function cbeSetImage(tagImg, preloadedImg) { var t, p; if (typeof(tagImg)=='string') t = cbeGetImageByName(tagImg); else t = tagImg; if (typeof(preloadedImg)=='string') p = cbeGetImageByName(preloadedImg); else p = preloadedImg; t.src = p.src; } function cbeGetImageByName(imgName) { var i, j; if (document.images[imgName]) return document.images[imgName]; if (is.nav4) { for (i = 0; i < cbeAll.length; i++) { if (cbeAll[i].ele.document) { for (j = 0; j < cbeAll[i].ele.document.images.length; j++) { if (imgName == cbeAll[i].ele.document.images[j].name) return cbeAll[i].ele.document.images[j]; } } } } for (i = 0; i < cbeImageName.length; i++) { if (cbeImageName[i] == imgName) return cbeImageObj[i]; } return null; } function cbeGetFormByName(frmName) { var i, j; if (document.forms[frmName]) return document.forms[frmName]; if (is.nav4) { for (i = 0; i < cbeAll.length; i++) { if (cbeAll[i].ele.document) { for (j = 0; j < cbeAll[i].ele.document.forms.length; j++) { if (frmName == cbeAll[i].ele.document.forms[j].name) return cbeAll[i].ele.document.forms[j]; } } } } return null; } // cookie implementations based on code from Netscape Javascript Guide function cbeSetCookie(name, value, expire, path) { document.cookie = name + "=" + escape(value) + ((!expire) ? "" : ("; expires=" + expire.toGMTString())) + "; path=/"; } function cbeGetCookie(name) { var value=null, search=name+"="; if (document.cookie.length > 0) { var offset = document.cookie.indexOf(search); if (offset != -1) { offset += search.length; var end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; value = unescape(document.cookie.substring(offset, end)); } } return value; } function cbeGetURLArguments() { var idx = location.href.indexOf('?'); var params = new Array(); if (idx != -1) { var pairs = location.href.substring(idx+1, location.href.length).split('&'); for (var i=0; i<pairs.length; i++) { nameVal = pairs[i].split('='); params[i] = nameVal[1]; params[nameVal[0]] = nameVal[1]; } } return params; } function cbePad(str, finalLen, padChar, left) { if (left) { for (var i=str.length; i<finalLen; ++i) str = padChar + str; } else { for (var i=str.length; i<finalLen; ++i) str += padChar; } return str; } function cbeHexString(n, digits, prefix) { var p = '', n = Math.ceil(n); if (prefix) p = prefix; n = n.toString(16); for (var i=0; i < digits - n.length; ++i) { p += '0'; } return p + n; } function cbeRadians(deg) { return deg * (Math.PI / 180); } function cbeDegrees(rad) { return rad * (180 / Math.PI); } function cbeAddDragResizeListener(cbe) { cbe.addEventListener('dragStart', cbeDragResizeStartListener); cbe.addEventListener('drag', cbeDragResizeListener); } function cbeRemoveDragResizeListener(cbe) { cbe.removeEventListener('dragStart', cbeDragResizeStartListener); cbe.removeEventListener('drag', cbeDragResizeListener); } function cbeDragResizeStartListener(e) { if (e.offsetX > (e.cbeCurrentTarget.width() - 20) && e.offsetY > (e.cbeCurrentTarget.height() - 20)) { e.cbeCurrentTarget.isResizing = true; } else e.cbeCurrentTarget.isResizing = false; } function cbeDragResizeListener(e) { if (e.cbeCurrentTarget.isResizing) e.cbeCurrentTarget.resizeBy(e.dx, e.dy); else e.cbeCurrentTarget.moveBy(e.dx, e.dy); } var cbeUtilJsLoaded = true; // End cbe_util.js --- NEW FILE: cbe_clip.js --- /* cbe_clip.js $Revision: 0.11 $ * CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com * Copyright (c) 2002 Michael Foster (mi...@cr...) * Distributed under the terms of the GNU LGPL from gnu.org */ CrossBrowserElement.prototype.autoClip = function(cp, cmd, increment, endListener, dt, dr, db, dl) { if (arguments.length <= 4) { if (this.clipping) return; else this.clipping = true; if (increment) this.clipSpeed = increment; else if (!this.clipSpeed) this.clipSpeed = 10; var unclip = true, w = this.width(), h = this.height(), xcs = Math.abs(this.clipSpeed), ycs = xcs; // Get x and y speeds that are proportional to the element's width and height if (h > w) ycs *= (h/w); else if(w > h) xcs *= (w/h); // Setup clip parameters and initial clip position if (cmd.toLowerCase() == 'clip') { xcs *= -1; ycs *= -1; unclip = false; this.clip(0, w, h, 0); } if (endListener) this.onclipend = endListener; switch(cp.toLowerCase()) { case 'n': dt = -ycs; dr = 0; db = 0; dl = 0; if (unclip) {this.clip(h, w, h, 0);} break; case 'ne': dt = -ycs; dr = xcs; db = 0; dl = 0; if (unclip) {this.clip(h, 0, h, 0);} break; case 'e': dt = 0; dr = xcs; db = 0; dl = 0; if (unclip) {this.clip(0, 0, h, 0);} break; case 'se': dt = 0; dr = xcs; db = ycs; dl = 0; if (unclip) {this.clip(0, 0, 0, 0);} break; case 's': dt = 0; dr = 0; db = ycs; dl... [truncated message content] |
Update of /cvsroot/easystruts/easystruts-website/root In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/root Added Files: index.jsp easystruts-large.png favicon.ico 500.shtml nexb.gif easystruts-small-195x44r.png easystruts-large-no-border.png Log Message: Added new web site sources and data --- NEW FILE: favicon.ico --- (This appears to be a binary file; contents omitted.) --- NEW FILE: easystruts-small-195x44r.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: 500.shtml --- <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="REFRESH" content="20; URL=http://sf.net/projects/nexb"> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=us-ascii"/> <link rel="shortcut icon" href="/images/favicon.ico" > <meta name="language" content="english, en"> <meta name="keywords" content="Struts, Easy Struts, Eclipse, plug-in, web development, tiles, java, nexB"> <meta name="description" content="Easy Struts"> <meta name="abstract" content="Easy Struts : great Struts tooling for Eclipse"> <meta name="copyright" content="©2003,2004, 2005 nexB Inc."> <meta name="revisit-after" content="3 days"> <title>nexB. business systems. next.</title> <style type="text/css"> BODY, P, DIV, TD, TH, TR, FORM, OL, UL, LI, INPUT, TEXTAREA, SELECT {font-family: Verdana, Arial, Geneva, sans-serif; font-size: large; } B {font-family: verdana,arial,helvetica,sans-serif; font-size: large; } PRE,TT { font-family: courier,sans-serif; font-size: large; } body { background: white; color: black; } p { text-align: center; } img { border-style: none; } .whiteSpace { margin-top:24em;} </style> </head> <body> <p> <img src="nexb.gif" alt="nexb"/> </p> <p> <p> We are sorry our web site is currently unavailable! </p> <p> You should be redirected to our Sourceforge web page in 20 seconds. </p> <p> Click <a href="http://sf.net/projects/nexb">here</a> to visit our Sourceforge page immediately. </p> <p> Click <a href="http://nexb.com">here</a> to visit our nexB.com page. </p> <p> Click <a href="http://nexb.org">here</a> to try our nexB.org page again. </p> <div class="whiteSpace"><p> </p></div> <p> The nexB development is hosted by<br/> <a href="http://sourceforge.net"> <img src="http://sourceforge.net/sflogo.php?group_id=91654&amp;amp;amp;amp;amp;amp;type=1" style="width:88px; height:31px;" alt="SourceForge.net Logo" /> </a> </p> </body> </html> --- NEW FILE: easystruts-large-no-border.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: nexb.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: easystruts-large.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: index.jsp --- <% String redirectURL = "/easystruts/"; response.sendRedirect(redirectURL); %> |