Index: /FCKeditor.Java/branches/2.4/LICENSE
===================================================================
--- /FCKeditor.Java/branches/2.4/LICENSE	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/LICENSE	(revision 1287)
@@ -0,0 +1,1247 @@
+FCKeditor - The text editor for Internet - http://www.fckeditor.net
+Copyright (C) 2003-2007 Frederico Caldeira Knabben
+
+Licensed under the terms of any of the following licenses at your
+choice:
+
+ - GNU General Public License Version 2 or later (the "GPL")
+   http://www.gnu.org/licenses/gpl.html
+   (See Appendix A)
+
+ - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+   http://www.gnu.org/licenses/lgpl.html
+   (See Appendix B)
+
+ - Mozilla Public License Version 1.1 or later (the "MPL")
+   http://www.mozilla.org/MPL/MPL-1.1.html
+   (See Appendix C)
+
+You are not required to, but if you want to explicitly declare the
+license you have chosen to be bound to when using, reproducing,
+modifying and distributing this software, just include a text file
+titled "legal.txt" in your version of this software, indicating your
+license choice. In any case, your choice will not restrict any
+recipient of your version of this software to use, reproduce, modify
+and distribute this software under any of the above licenses.
+
+Appendix A: The GPL License
+===========================
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+Appendix B: The LGPL License
+============================
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ 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.]
+
+			    Preamble
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. 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".
+
+  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.
+
+  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".)
+
+  "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.
+
+  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.
+
+  1. 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.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the 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:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) 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.
+
+    (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.)
+
+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.
+
+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.
+
+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.
+
+  3. 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.
+
+  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.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. 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.
+
+  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.
+
+  5. 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.
+
+  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.
+
+  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.
+
+  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.)
+
+  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.
+
+  6. 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.
+
+  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:
+
+    a) 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.)
+
+    b) 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.
+
+    c) 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.
+
+    d) 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.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  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.
+
+  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.
+
+  7. 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:
+
+    a) 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.
+
+    b) 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.
+
+  8. 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.
+
+  9. 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.
+
+  10. 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.
+
+  11. 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.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. 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.
+
+  13. 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.
+
+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.
+
+  14. 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.
+
+			    NO WARRANTY
+
+  15. 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.
+
+  16. 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.
+
+		     END OF TERMS AND CONDITIONS
+
+
+Appendix C: The MPL License
+===========================
+
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+
+                              ---------------
+
+1. Definitions.
+
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+
+     1.8. "License" means this document.
+
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation,  method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+
+     1.12. "You" (or "Your")  means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+
+2. Source Code License.
+
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code;  or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+
+          (b) under Patent Claims infringed by the making, using, or
+          selling of  Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2)  separate from the Contributor Version;
+          3)  for infringements caused by: i) third party modifications of
+          Contributor Version or ii)  the combination of Modifications made
+          by that Contributor with other software  (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+
+               (c)    Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code.  If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice.  If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A.  You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code.  You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+
+5. Application of this License.
+
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+     8.1.  This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+
+     8.2.  If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant")  alleging that:
+
+     (a)  such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant.  If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+
+     (b)  any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+
+     8.3.  If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+
+11. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+     ``The contents of this file are subject to the Mozilla Public License
+     Version 1.1 (the "License"); you may not use this file except in
+     compliance with the License. You may obtain a copy of the License at
+     http://www.mozilla.org/MPL/
+
+     Software distributed under the License is distributed on an "AS IS"
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+     License for the specific language governing rights and limitations
+     under the License.
+
+     The Original Code is ______________________________________.
+
+     The Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+
+     Contributor(s): ______________________________________.
+
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the  "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above.  If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting  the provisions above and replace  them with the notice and
+     other provisions required by the [___] License.  If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
+
Index: /FCKeditor.Java/branches/2.4/README.txt
===================================================================
--- /FCKeditor.Java/branches/2.4/README.txt	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/README.txt	(revision 1287)
@@ -0,0 +1,196 @@
+-------------------------------------------------
+	FCKeditor - JSP Integration Pack ver 2.3
+-------------------------------------------------
+
+
+---------------
+Contents:
+---------------
+
+1 - Preface
+2 - Installation
+3 - Usage
+4 - Building
+5 - Future plans
+6 - Donations
+7 - Further information and support
+8 - History
+
+--------------------
+1 - Preface
+--------------------
+
+This is the JSP Integration Pack for using FCKeditor inside a java server page without
+the complexity of using a Java scriptlets or the javascript api.
+I hope you find it usefull.
+This package contains just the integration library. To setup a full working environment
+you need to download the latest version of FCKEditor
+(http://sourceforge.net/project/showfiles.php?group_id=75348&package_id=75845)
+
+
+--------------------
+2 - Installation
+--------------------
+
+Installing FCKeditor in a JSP environment is quite easy:
+ - Unzip the Java Integration Library in a directory named "FCKeditor"
+ - Unzip the content of the FCKEditor release of your choise inside the "FCKeditor\web" folder
+ - then you have to create in tomcat (or any servlet container) a new context named "FCKeditor"
+ 	that points to the previously created "FCKeditor\web" folder
+ - point your browser to http://domainName.ext/FCKeditor/_samples/default.jsp for the list of
+ 	the samples
+
+
+
+--------------------
+3 - Usage
+--------------------
+
+Take a look at the test files and in the javadoc api provided in the distribution.
+Anyway, for the lazy ones, here is a simple example
+
+First put this taglib definiton at the top of the JSP page
+<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
+
+then the tag:
+
+	<FCK:editor
+		id="EditorAccessibility"	//Unique name of the editor
+		width="80%"			//Width
+		height="120"			//Height
+		toolbarSet="Accessibility"	//Toolbar name
+	>This is another test. <BR><B>The "Second" row.</B></FCK:editor>
+
+A more advance example, that show how to use the inner tags to overrides any of the settings specified in
+the config.js file
+
+	<FCK:editor id="EditorDefault" basePath="/FCKeditor/"
+		styleNames=";Style 1;Style 2; Style 3" 
+		fontNames=";Arial;Courier New;Times New Roman;Verdana" >
+		This is some <B>sample text</B>.
+	</FCK:editor>
+
+
+--------------------
+4 - Building
+--------------------
+
+Inside the files there is the source files for the tags (/src) and the ant build file (build.xml)
+
+The ant build file provides the following tasks:
+ - all: Clean build and dist directories, then compile
+ - clean: Delete old build and dist directories
+ - compile: Compile Java sources
+ - dist: Create binary distribution
+ - javadoc: Create Javadoc API documentation
+ - release: Create Release Distribution
+
+Plus some Tomcat managing tasks (to make this tasks work you need to copy inside the "web" folder the FCKeditor package):
+ - install: Create a web application pointing to the build directory
+ - reload: Recompiles and reload the web application
+ - remove: remove the web application
+
+To start building the class you first need to modify the "catalina.home" property inside the build.xml,
+then type "ant dist" to compile, create the javadoc API description and generate the jar library to be copied in the WEB-INF.
+
+Or more easily, type "ant install" after setting the right username and password for the tomcat manager application.
+
+
+--------------------
+5 - Future plans
+--------------------
+
+ * Integrate with Struts (so that FCKeditor can retrive and pass informations from Form Beans)
+ * Integrate with mcpuk FileManager
+
+--------------------
+6 - Donations
+--------------------
+
+I'm now starting to accept donations on the Sourceforge website:
+so if you like the jsp integration taglib, or are you using it on a commercial application, 
+please help the development of next version of the taglib donating to my SF user.
+
+To donate please go to my SF page at http://sourceforge.net/users/simo/ and click on "Make a Donation".
+Doing this donation you will also help the Apache Foundation and SourceForge.net
+Also, donation bigger than 30 will have a one year priority support.
+
+
+--------------------
+7 - Further informations and support
+--------------------
+
+For further informations refers to http://www.fckeditor.net/
+For support specific with this JSP integration taglib send an email to simo@users.sourceforge.net.
+Due to the increased number of requests, from now on support is delivered with a "best effort" approach.
+To be sure to have a priority support please refer to paragraph #6 and please make a donation to my user.
+
+
+--------------------
+8 - History
+--------------------
+
+2.3 - 2005/08/11
+
+ - Added support for the FCKeditor 2.0 Final Release
+ - Added a new servlet named SimpleUploader to process direct uploads (without passing through the File Browser)
+
+ TAGLIB:
+ - Added the following attributes:
+	flashBrowserURL
+	linkUploadURL
+	imageUploadURL
+	flashUploadURL
+
+ CONNECTOR:
+ - Removed some forgotten debug messages 
+
+2.2 - 2005/06/21 - Summer Edition
+
+ TAGLIB:
+ - Fixes the following bugs:
+   [ 1200635 ] TLD fails when running under Resin app server
+   [ 1200085 ] Opera Browser is detected incorrectly
+   [ 1190264 ] NullPointerException in FCKeditor.isCompatible()
+   [ 1190239 ] calling FCKeditor.create() multiple times corrupts content
+
+2.1 - 2005/03/29
+ 
+ - Changed naming of the package
+ - Provides just the jsp files, without the full editor as the previous versions
+ 
+ TAGLIB:
+ - Made the taglib similar to the .NET custom tag, so: 
+ 		* Added all attributes available for the .NET integration package
+			(almost all custom config)
+ 		* Removed the "config" tag
+ 		
+ CONNECTOR:
+ - Added "debug" init-parameter for the connector
+ 
+ SAMPLES:
+ - Implemented all sample files provided by the javascript version
+ - Samples now work out-of-the-box, since the connector configuration is set inside the tag
+ 
+
+
+2.0b2 (1.0 beta 2 for 2.0b2) - 2004/11/03
+
+ - Fixes the following bugs:
+   [ 1058945 ] user-agent parsing exception
+   [ 1032971 ] Browserversion of Mozilla: StringIndexOutOfBoundsException
+
+2.0b1 (1.0 beta 1 for 2.0b2) - 2004/09/13
+
+ - New stand alone package
+ - Fixes the following bugs:
+   [ 970740 ] ConnectorServlet not working
+   [ 991489 ] getNameWithoutExtension
+   [ 1025909 ] [Firefox 0.9.2] Resource browser works partially
+ - Uploaded files and images are now shown with a absolute path (starting from the root of the site) and not as relatives from the editor directory
+
+
+1.0 - 2004/05/09
+
+	Available just with the 1.6 release of FCKeditor.
+	This is the 1.x compatible taglib
Index: /FCKeditor.Java/branches/2.4/TODOs
===================================================================
--- /FCKeditor.Java/branches/2.4/TODOs	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/TODOs	(revision 1287)
@@ -0,0 +1,14 @@
+TODOs for the next final version:
+
+- adapt README.txt
+  dependencies!
+  donation notice for Simone ?
+  
+- should we change to Java 5?
+  
+- using StringBuffer or StringWriter (tiger) in FCKeditor to construct 
+  the editor html string (performance!)
+  
+- test the IBaseDirProvider in a multi user environment
+
+- adapted javadoc: package.html
Index: /FCKeditor.Java/branches/2.4/build.properties
===================================================================
--- /FCKeditor.Java/branches/2.4/build.properties	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/build.properties	(revision 1287)
@@ -0,0 +1,41 @@
+## FCKeditor - The text editor for Internet - http://www.fckeditor.net
+## Copyright (C) 2003-2007 Frederico Caldeira Knabben
+##
+## == BEGIN LICENSE ==
+##
+## Licensed under the terms of any of the following licenses at your
+## choice:
+##
+##  - GNU General Public License Version 2 or later (the "GPL")
+##    http://www.gnu.org/licenses/gpl.html
+##
+##  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+##    http://www.gnu.org/licenses/lgpl.html
+##
+##  - Mozilla Public License Version 1.1 or later (the "MPL")
+##    http://www.mozilla.org/MPL/MPL-1.1.html
+##
+## == END LICENSE ==
+##
+## Build properties for FCKeditor.Java, the java package for FCKeditor.
+##
+## @version $Id:build.properties 1100 2007-11-06 15:29:52 +0000 (Di, 06 Nov 2007) th-schwarz $ 
+## @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+
+app.name=FCKeditor.Java
+app.version=2.4ALPHA
+
+# compiler options
+compile.debug=true
+compile.deprecation=true
+compile.optimize=true
+compile.source=1.4
+compile.target=1.4
+
+# javadoc options
+javadoc.author=true
+javadoc.version=true
+javadoc.windowstitle=FCKEditor.Java - API
+javadoc.doctitle=<h1>FCKeditor - The text editor for Internet</h1><p>FCKeditor.Java - The java package of the FCKeditor</p>
+javadoc.bottom=Copyright (C) 2003-2007 Frederico Caldeira Knabben
+javadoc.link=http://java.sun.com/j2se/1.4.2/docs/api
Index: /FCKeditor.Java/branches/2.4/build.xml
===================================================================
--- /FCKeditor.Java/branches/2.4/build.xml	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/build.xml	(revision 1287)
@@ -0,0 +1,160 @@
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * Ant tasks for the FCKeditor.Java package.
+ *
+ * @version $Id:build.xml 1100 2007-11-06 15:29:52 +0000 (Di, 06 Nov 2007) th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ *   
+-->
+
+
+<project name="FCKeditor.Java" default="compile" basedir=".">
+
+	<!-- *** properties *** -->
+	<property file="build.properties"/>
+	
+	<!-- dirs and files -->
+	<property name="dir.source" value="source/main"/>
+	<property name="dir.web" value="server"/>
+	<property name="dir.build" value="${dir.web}/WEB-INF/classes"/>
+	<property name="dir.lib" value="lib_ext"/>
+	<property name="dir.jsp-samples" value="${dir.web}/jsp"/>
+
+
+	<property name="dir.javadoc" value="docs/api"/>
+	<property name="dir.dist" value="dist"/>
+	<property name="file.binary" value="${dir.dist}/${app.name}_${app.version}.jar"/>
+	<property name="file.dist" value="${dir.dist}/${app.name}.zip"/>
+	
+	<property name="file.tld" value="${dir.source}/FCKeditor.tld"/>
+	<property name="file.license" value="LICENSE"/>
+	<property name="file.readme" value="README.txt"/>
+
+
+
+	<!-- classpath -->
+	<path id="compile.classpath">
+		<fileset dir="${dir.lib}">
+			<include name="*.jar"/>
+		</fileset>
+	</path>
+
+
+	<!-- *** common targets *** -->
+	
+	<target name="init.dirs" description="Cleanup and build the directories.">
+		<antcall target="cleandir">
+			<param name="dir" value="${dir.build}"/>
+		</antcall>
+		<antcall target="cleandir">
+			<param name="dir" value="${dir.dist}"/>
+		</antcall>
+		<antcall target="cleandir">
+			<param name="dir" value="${dir.javadoc}"/>
+		</antcall>
+	</target>
+	
+	<target name="cleandir">
+		<delete dir="${dir}"/>
+		<mkdir dir="${dir}"/>
+	</target>
+
+
+	<target name="compile" description="Compile the sources.">
+		<!-- compilation -->
+		<javac srcdir="${dir.source}"         
+			destdir="${dir.build}"
+			debug="${compile.debug}"
+			optimize="${compile.optimize}"
+			deprecation="${compile.deprecation}"
+			source="${compile.source}"
+			target="${compile.target}">
+			<classpath refid="compile.classpath"/>
+		</javac>
+		<!-- copy tld and properties -->
+		<copy todir="${dir.build}">
+			<fileset dir="${dir.source}">
+				<include name="**/*.tld"/>
+				<include name="**/*.properties"/>
+			</fileset>
+		</copy>
+	</target>
+	
+
+	<target name="javadoc" description="Create Javadoc API documentation">
+		<!-- cleanup javadoc dir -->
+		<antcall target="cleandir">
+			<param name="dir" value="${dir.javadoc}"/>
+		</antcall>
+		<!-- genarate the javadoc --> 
+		<javadoc 
+				destdir="${dir.javadoc}" 
+				sourcepath="${dir.source}" 
+				source="${compile.source}" 
+				windowtitle="${javadoc.windowstitle}" 
+				classpathref="compile.classpath"
+				author="${javadoc.author}" 
+				version="${javadoc.version}" 
+				link="${dir.javadoc}">
+			<doctitle><![CDATA[${javadoc.doctitle}]]></doctitle>
+			<bottom><![CDATA[${javadoc.bottom}]]></bottom>
+		</javadoc>
+	</target>
+  
+
+	<!-- *** dist targets *** -->
+ 	
+ 	<target name="build.binary" depends="compile" description="Build the application jar">
+		<tstamp>
+			<format property="buildno" pattern="yyMMdd" />
+		</tstamp>
+ 		<jar jarfile="${file.binary}">
+ 			<fileset dir="${dir.build}">
+ 				<include name="**/*.class"/>
+ 				<include name="**/*.properties"/>
+ 				<exclude name="**/*.tld"/>
+ 			</fileset>
+ 			<metainf file="${file.tld}"/>
+ 			<metainf file="${file.license}"/>
+ 			<manifest>
+				<attribute name="Url" value="http://www.fckeditor.net"/>  
+ 				<attribute name="Specification-Title" value="FCKeditor"/>
+				<attribute name="Specification-Version" value="${app.version}"/>
+				<attribute name="Implementation-Title" value="${app.name}"/>
+				<attribute name="Implementation-Version" value="${app.version} - ${buildno}"/> 		
+ 			</manifest>
+ 		</jar>
+ 	</target>
+ 	
+	
+    <target name="build.dist" depends="javadoc,build.binary" description="Build the distribution zip.">
+    	<delete file="${file.dist}"/>
+    	<zip destfile="${file.dist}">
+    		<zipfileset dir="${basedir}" includes="${file.license}" prefix=""/>
+    		<zipfileset dir="${basedir}" includes="${file.readme}" prefix=""/>
+    		<zipfileset dir="${dir.dist}" includes="*.jar" prefix=""/>
+    		<zipfileset dir="${dir.javadoc}" prefix="api"/>
+    		<zipfileset dir="${dir.jsp-samples}" prefix="jsp-samples"/>
+    		<zipfileset dir="${dir.source}" prefix="source"/>
+    	</zip>
+    </target>
+
+</project>
Index: /FCKeditor.Java/branches/2.4/changelog
===================================================================
--- /FCKeditor.Java/branches/2.4/changelog	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/changelog	(revision 1287)
@@ -0,0 +1,33 @@
+## Changelog.
+## 
+## @version $Id: changelog 1203 2008-01-05 09:28:08Z th-schwarz $ 
+## @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+
+
+?
+--
+
+features and improvements:
+- safari compatibility
+- all basic properties are managed by a 'ConfigurationHandler' and is used by
+  all fckeditor servlets. it has static methods to set these properties from 
+  outsite. So you have the possibilty to change all basic parameters with your 
+  own class.
+- introduction of the interface 'IBaseDirProvider'. it provides a way to set 
+  the 'UserDir' dynamically. The implemented object calculates the 'UserDir' 
+  and has to set to the 'ConfigurationHandler'.
+  Each time any servlet needs the 'UserDir', 'IBaseDirProvider' will be ask.
+- 'Convention over Configuration'
+  in the web.xml you just have to set these init parameters, which shouldn't
+  have the default values. Defaults are the values known from the old web.xml.
+- added FCKeditor#isCompatibleBrowser 
+
+fixes:
+- 
+
+internal:
+- rewritten ant tasks, no serverbased tasks anymore
+- updated the license file and license info in all code files
+- big code cleanup and formating
+- central management of the configuration by the 'ConfigurationHandler'
+- central management of the file extensions by the 'ExtensionsHandler'.
Index: /FCKeditor.Java/branches/2.4/pom.xml
===================================================================
--- /FCKeditor.Java/branches/2.4/pom.xml	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/pom.xml	(revision 1287)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.fredck.fckeditor</groupId>
+	<artifactId>fckeditor-java</artifactId>
+	<version>2.5.0</version>
+	<packaging>jar</packaging>
+	<name>FCKeditor - Java Connector</name>
+	<description>
+		Enables the FCKeditor to be used within a Servlet/J2EE
+		environment
+	</description>
+	<scm>
+		<connection>
+			scm:svn:http://svn.fckeditor.net/FCKeditor.Java/trunk/
+		</connection>
+		<url>http://dev.fckeditor.net/browser/FCKeditor.Java</url>
+	</scm>
+	<inceptionYear>2005</inceptionYear>
+	<mailingLists>
+		<mailingList>
+			<name>FCKeditor Developers List</name>
+			<subscribe>
+				https://lists.sourceforge.net/lists/listinfo/fckeditor-developers
+			</subscribe>
+			<unsubscribe>
+				https://lists.sourceforge.net/lists/listinfo/fckeditor-developers
+			</unsubscribe>
+			<archive>http://sourceforge.net/mailarchive/forum.php?forum_name=fckeditor-developers</archive>
+		</mailingList>
+	</mailingLists>
+	<developers>
+		<developer>
+			<name>Frederico Caldeira Knabben</name>
+			<email>fredck@fckeditor.net</email>
+			<roles>
+				<role>Project Manager</role>
+			</roles>
+			<id>fredck</id>
+			<timezone>?</timezone>
+		</developer>
+		<developer>
+			<name>Thilo Schwarz</name>
+			<email>th-schwarz@users.sourceforge.net</email>
+			<roles>
+				<role>Project Manager</role>
+				<role>Developer</role>
+			</roles>
+			<id>th-schwarz</id>
+			<timezone>+1</timezone>
+		</developer>
+		<developer>
+			<name>Michael Osipov</name>
+			<email>sgfan@gmx.net</email>
+			<roles>
+				<role>Project Manager</role>
+				<role>Developer</role>
+			</roles>
+			<id>mosipov</id>
+			<timezone>+1</timezone>
+		</developer>
+		<developer>
+			<name>Simone Chiaretta</name>
+			<email>simo@users.sourceforge.net</email>
+			<roles>
+				<role>Retired Developer</role>
+			</roles>
+			<timezone>+1</timezone>
+		</developer>
+	</developers>
+	<issueManagement>
+		<system>trac</system>
+		<url>http://dev.fckeditor.net/report</url>
+	</issueManagement>
+	<url>http://www.fckeditor.net/</url>
+	<licenses>
+		<license>
+			<name>GPL, LGPL, MPL</name>
+			<url>LICENSE</url>
+		</license>
+	</licenses>
+	<build>
+		<finalName>FCKeditor-${pom.version}</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.mortbay.jetty</groupId>
+				<artifactId>maven-jetty-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<prerequisites>
+		<maven>2.0.6</maven>
+	</prerequisites>
+	<dependencies>
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+			<version>1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>1.3.2</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.4</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.2</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet.jsp</groupId>
+			<artifactId>jsp-api</artifactId>
+			<version>2.0</version>
+			<scope>provided</scope>
+		</dependency>
+	</dependencies>
+</project>
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/ConfigurationHandler.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/ConfigurationHandler.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/ConfigurationHandler.java	(revision 1287)
@@ -0,0 +1,152 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor;
+
+/**
+ * Static handler object, which provides getters and setters for basic values
+ * like fckeditor dir, base dir (user dir) and defaults for height, width and
+ * toolbar of the editor. All values are preset by the defaults defined in
+ * default.properties. This object is used everywhere these values are needed.
+ * <br />
+ * If the {@link IBaseDirProvider} is set, {@link #getBaseDir()} is calling
+ * {@link IBaseDirProvider#getDir()} to get the user dir.
+ * 
+ * @version $Id:ConfigurationHandler.java 1099 2007-11-06 15:01:50Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class ConfigurationHandler {
+    private static String baseDir;
+    private static IBaseDirProvider baseDirProvider = null;
+    private static String fckEditorDir;
+    private static String fckEditorHeight;
+    private static String fckEditorWidth;
+    private static String fckEditorToolbarSet;
+
+    static {
+	// load defaults
+	baseDir = DefaultPropertiesHolder.get("fckeditor.basedir");
+	fckEditorDir = DefaultPropertiesHolder.get("fckeditor.dir");
+	fckEditorWidth = DefaultPropertiesHolder.get("fckeditor.width");
+	fckEditorHeight = DefaultPropertiesHolder.get("fckeditor.height");
+	fckEditorToolbarSet = DefaultPropertiesHolder
+		.get("fckeditor.toolbarset");
+    }
+
+    /**
+     * Getter for the base dir (using for user files).
+     * 
+     * @return If the {@link IBaseDirProvider} is set, then it's dir getter is
+     *         called, or base dir.
+     */
+    public static String getBaseDir() {
+	return (baseDirProvider != null) ? baseDirProvider.getDir() : baseDir;
+    }
+
+    /**
+     * Setter for the base dir (using for user files).
+     * 
+     * @param baseDir relative to the context root (no leading or ending /).
+     */
+    public static void setBaseDir(final String baseDir) {
+	ConfigurationHandler.baseDir = baseDir;
+    }
+
+    /**
+     * Getter for the {@link IBaseDirProvider}.
+     * 
+     * @param baseDirProvider
+     */
+    public static void setBaseDirProvider(final IBaseDirProvider baseDirProvider) {
+	ConfigurationHandler.baseDirProvider = baseDirProvider;
+    }
+
+    /**
+     * Getter for the dir of the fckeditor.
+     *  
+     * @return Dir of the fckeditor relative to the context root.
+     */
+    public static String getFckEditorDir() {
+	return fckEditorDir;
+    }
+
+    /**
+     * Setter for the dir of the fckeditor.
+     *  
+     * @param fckEditorDir relative to the context root (no leading or ending /).
+     */
+    public static void setFckEditorDir(final String fckEditorDir) {
+	ConfigurationHandler.fckEditorDir = fckEditorDir;
+    }
+
+    /**
+     * Getter for the default height of the fckeditor.
+     * 
+     * @return Default height of the fckeditor.
+     */
+    public static String getFckEditorHeight() {
+	return fckEditorHeight;
+    }
+
+    /**
+     * Setter for the default height of the fckeditor.
+     * 
+     * @param fckEditorHeight the default height of the fckeditor.
+     */
+    public static void setFckEditorHeight(final String fckEditorHeight) {
+	ConfigurationHandler.fckEditorHeight = fckEditorHeight;
+    }
+
+    /**
+     * Getter for the default width of the fckeditor.
+     * 
+     * @return Default width of the fckeditor.
+     */
+    public static String getFckEditorWidth() {
+	return fckEditorWidth;
+    }
+
+    /**
+     * Setter for the default width of the fckeditor.
+     * 
+     * @param fckEditorWidth the default width of the fckeditor.
+     */
+    public static void setFckEditorWidth(final String fckEditorWidth) {
+	ConfigurationHandler.fckEditorWidth = fckEditorWidth;
+    }
+
+    /**
+     * Getter of the name of the default toolbarset of the fckeditor.
+     * 
+     * @return Name of the default toolbar set.
+     */
+    public static String getFckEditorToolbarSet() {
+	return fckEditorToolbarSet;
+    }
+
+    /**
+     * Getter of the name of the default toolbarset of the fckeditor.
+     * 
+     * @param fckEditorToolbarSet the name of the toolbarset.
+     */
+    public static void setFckEditorToolbarSet(final String fckEditorToolbarSet) {
+	ConfigurationHandler.fckEditorToolbarSet = fckEditorToolbarSet;
+    }
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/Constants.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/Constants.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/Constants.java	(revision 1287)
@@ -0,0 +1,35 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor;
+
+/**
+ * Some global constants.
+ *
+ * @version $Id: Constants.java 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class Constants {
+    
+    public static final String FILE_TYPE_FILE = "File";
+    public static final String FILE_TYPE_IMAGE = "Image";
+    public static final String FILE_TYPE_FLASH = "Flash";
+    public static final String FILE_TYPE_MEDIA = "Media";
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/DefaultPropertiesHolder.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/DefaultPropertiesHolder.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/DefaultPropertiesHolder.java	(revision 1287)
@@ -0,0 +1,60 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+
+package com.fredck.fckeditor;
+
+import java.io.BufferedInputStream;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Holds the global properties. Defaults are read from a property file. With a
+ * setter methode you can overwrite defaults or set new one.
+ * 
+ * @version $Id: DefaultPropertiesHolder.java 1047 2007-10-28 19:20:01 +0000
+ *          (So, 28 Okt 2007) th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class DefaultPropertiesHolder {
+    private static Map properties = new Hashtable();
+    
+    static {
+	try {
+	    Properties props = new Properties();
+		props.load(new BufferedInputStream(DefaultPropertiesHolder.class
+		        .getResourceAsStream("default.properties")));
+	    properties = props;
+	} catch (Exception e) {
+		// TODO log4j
+	    throw new RuntimeException("Can't read default.properties!");
+	}
+    }
+    
+    public static String get(final String key) {
+	return (String)properties.get(key);
+    }
+    
+    public static Map getAll() {
+	return properties;
+    }
+
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/ExtensionsHandler.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/ExtensionsHandler.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/ExtensionsHandler.java	(revision 1287)
@@ -0,0 +1,129 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.fredck.fckeditor.tool.Utils;
+
+/**
+ * Static object which manages the allowed and denied extensions for each file
+ * type. The different extensions are preset by the defaults defined in
+ * default.properties.
+ * 
+ * @version $Id: ExtensionsHandler.java 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class ExtensionsHandler {
+
+    private static Map extensionsAllowed = new HashMap();
+    private static Map extensionsDenied = new HashMap();
+
+    static {
+	// load defaults
+	extensionsAllowed.put(Constants.FILE_TYPE_FILE, Utils
+		.getSet(DefaultPropertiesHolder
+			.get("fckeditor.file.extensions.allowed")));
+	extensionsDenied.put(Constants.FILE_TYPE_FILE, Utils
+		.getSet(DefaultPropertiesHolder
+			.get("fckeditor.file.extensions.denied")));
+	extensionsAllowed.put(Constants.FILE_TYPE_IMAGE, Utils
+		.getSet(DefaultPropertiesHolder
+			.get("fckeditor.image.extensions.allowed")));
+	extensionsDenied.put(Constants.FILE_TYPE_IMAGE, Utils
+		.getSet(DefaultPropertiesHolder
+			.get("fckeditor.image.extensions.denied")));
+	extensionsAllowed.put(Constants.FILE_TYPE_FLASH, Utils
+		.getSet(DefaultPropertiesHolder
+			.get("fckeditor.flash.extensions.allowed")));
+	extensionsDenied.put(Constants.FILE_TYPE_FLASH, Utils
+		.getSet(DefaultPropertiesHolder
+			.get("fckeditor.flash.extensions.denied")));
+    }
+
+    /**
+     * Getter for the allowed extensions of a file type.
+     * 
+     * @param type The file type.
+     * @return Set of allowed extensions or an empty set.
+     */
+    public static Set getExtensionsAllowed(final String type) {
+	return (Set) ExtensionsHandler.extensionsAllowed.get(type);
+    }
+
+    /**
+     * Setter for the allowed extensions of a file type.<br>
+     * If 'extensionsList' is null, allowed extensions kept untouched.
+     * 
+     * @param type The file type.
+     * @param extensionsList Required format: <code>ext1&#124;ext2&#124;ext3</code>
+     */
+    public static void setExtensionsAllowed(final String type,
+	    final String extensionsList) {
+	if (extensionsList != null)
+	    ExtensionsHandler.extensionsAllowed.put(type, Utils
+		    .getSet(extensionsList));
+    }
+
+    /**
+     * Getter for the denied extensions of a file type.
+     * 
+     * @param type The file type.
+     * @return Set of denied extensions or an empty set.
+     */
+    public static Set getExtensionsDenied(final String type) {
+	return (Set) ExtensionsHandler.extensionsDenied.get(type);
+    }
+
+    /**
+     * Setter for the denied extensions of a file type.<br>
+     * If 'extensionsList' is null, denied extensions kept untouched.
+     * 
+     * @param type The file type.
+     * @param extensionsList Required format: <code>ext1&#124;ext2&#124;ext3</code>
+     */
+    public static void setExtensionsDenied(final String type,
+	    final String extensionsList) {
+	if (extensionsList != null)
+	    ExtensionsHandler.extensionsDenied.put(type, Utils
+		    .getSet(extensionsList));
+    }
+
+    /**
+     * Checks, if an extension is allowed for a file type.
+     * 
+     * @param type
+     * @param extension
+     * @return True, false.
+     */
+    public static boolean isAllowed(final String type, final String extension) {
+	String ext = extension.toLowerCase();
+	Set allowed = (Set) extensionsAllowed.get(type);
+	Set denied = (Set) extensionsDenied.get(type);
+	if (allowed.isEmpty())
+	    return (denied.contains(ext)) ? false : true;
+	if (denied.isEmpty())
+	    return (allowed.contains(ext)) ? true : false;
+	return false;
+    }
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/FCKeditor.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/FCKeditor.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/FCKeditor.java	(revision 1287)
@@ -0,0 +1,322 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+
+package com.fredck.fckeditor;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.fredck.fckeditor.tool.Compatibility;
+
+/**
+ * FCKeditor control class.<br>
+ * It's the container for all properties and the class that generate the output based on browser capabilities and
+ * configurations passed by the developer.
+ * 
+ * @version $Id: FCKeditor.java 1202 2008-01-05 09:26:27Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class FCKeditor {
+
+    private FCKeditorConfigurations oConfig;
+    private String instanceName;
+    private String value;
+    private String basePath;
+    private String toolbarSet;
+    private String width;
+    private String height;
+
+    private HttpServletRequest request;
+
+    /**
+     * Initialize the object setting all basic configurations.<br>
+     * 
+     * The basePath is context root + {@link ConfigurationHandler#getFckEditorDir()}.
+     * 
+     * @param request
+     *                request object
+     * @param instanceName
+     *                unique name
+     * @param width
+     *                width
+     * @param height
+     *                height
+     * @param toolbarSet
+     *                toolbarSet name
+     * @param value
+     *                initial value
+     */
+    public FCKeditor(final HttpServletRequest request, final String instanceName, final String width,
+	    final String height, final String toolbarSet, final String value) {
+	this.request = request;
+	// TODO muss das mit einem Slash abgeschlossen werden?
+	this.basePath = request.getContextPath() + ConfigurationHandler.getFckEditorDir() + "/";
+	this.instanceName = instanceName;
+
+	// set defaults, if required
+	this.value = (value == null) ? "" : value;
+	this.toolbarSet = (toolbarSet == null) ? ConfigurationHandler.getFckEditorToolbarSet() : toolbarSet;
+	this.width = (width == null) ? ConfigurationHandler.getFckEditorWidth() : width;
+	this.height = (height == null) ? ConfigurationHandler.getFckEditorHeight() : height;
+
+	oConfig = new FCKeditorConfigurations();
+    }
+
+    /**
+     * Just a wrapper to {@link FCKeditor}.
+     * 
+     * @param req
+     *                request object
+     */
+    // TODO Konstruktor würde ich auf deprecated setzten
+    /*
+     * Grund: Laut Server Side Integeratin sollte auf jeden Fall instanceName übergeben
+     */
+    public FCKeditor(HttpServletRequest req) {
+	this(req, null, null, null, null, null);
+    }
+
+    /**
+     * Just a wrapper to {@link FCKeditor}.
+     * 
+     * @param req
+     *                request object
+     * @param parInstanceName
+     *                unique name
+     */
+    public FCKeditor(HttpServletRequest req, String parInstanceName) {
+	this(req, parInstanceName, null, null, null, null);
+    }
+
+    /**
+     * Get the unique name of the editor
+     * 
+     * @return name
+     */
+    public String getInstanceName() {
+	return instanceName;
+    }
+
+    /**
+     * Set the unique name of the editor
+     * 
+     * @param value
+     *                name
+     */
+    public void setInstanceName(String value) {
+	instanceName = value;
+    }
+
+    /**
+     * Get the initial value to be edited.<br>
+     * In HTML code
+     * 
+     * @return value
+     */
+    public String getValue() {
+	return value;
+    }
+
+    /**
+     * Set the initial value to be edited.<br>
+     * In HTML code
+     * 
+     * @param value
+     *                value
+     */
+    public void setValue(String value) {
+	this.value = value;
+    }
+
+    /**
+     * Get the dir where the FCKeditor files reside on the server
+     * 
+     * @return path
+     */
+    public String getBasePath() {
+	return basePath;
+    }
+
+    /**
+     * Set the dir where the FCKeditor files reside on the server.<br>
+     * <b>Remarks</b>:<br>
+     * Avoid using relative paths. It is preferable to set the base path starting from the root (/).<br>
+     * Always finish the path with a slash (/).
+     * 
+     * @param value
+     *                path
+     */
+    public void setBasePath(String value) {
+	basePath = value;
+    }
+
+    /**
+     * Get the name of the toolbar to display
+     * 
+     * @return toolbar name
+     */
+    public String getToolbarSet() {
+	return toolbarSet;
+    }
+
+    /**
+     * Set the name of the toolbar to display
+     * 
+     * @param value
+     *                toolbar name
+     */
+    public void setToolbarSet(String value) {
+	toolbarSet = value;
+    }
+
+    /**
+     * Get the width of the textarea
+     * 
+     * @return width
+     */
+    public String getWidth() {
+	return width;
+    }
+
+    /**
+     * Set the width of the textarea
+     * 
+     * @param value
+     *                width
+     */
+    public void setWidth(String value) {
+	width = value;
+    }
+
+    /**
+     * Get the height of the textarea
+     * 
+     * @return height
+     */
+    public String getHeight() {
+	return height;
+    }
+
+    /**
+     * Set the height of the textarea
+     * 
+     * @param value
+     *                height
+     */
+    public void setHeight(String value) {
+	height = value;
+    }
+
+    /**
+     * Get the advanced configuation set.<br>
+     * Adding element to this collection you can override the settings specified in the config.js file.
+     * 
+     * @return configuration collection
+     */
+    public FCKeditorConfigurations getConfig() {
+	return oConfig;
+    }
+
+    /**
+     * Set the advanced configuation set.
+     * 
+     * @param value
+     *                configuration collection
+     */
+    public void setConfig(FCKeditorConfigurations value) {
+	oConfig = value;
+    }
+
+    // TODO Methoden fangen mit Kleinbuchstaben an
+    private String HTMLEncode(String txt) {
+	txt = txt.replaceAll("&", "&amp;");
+	txt = txt.replaceAll("<", "&lt;");
+	txt = txt.replaceAll(">", "&gt;");
+	txt = txt.replaceAll("\"", "&quot;");
+	txt = txt.replaceAll("'", "&#146;");
+	return txt;
+    }
+
+    /**
+     * Generate the HTML Code for the editor. <br>
+     * Evalute the browser capabilities and generate the editor if compatible, or a simple textarea otherwise.
+     * 
+     * @return html code
+     */
+    public String create() {
+    	// TODO Eventuell StringBuilder, da der schneller ist
+    	// Wie sind dann aber in Multiuser env
+    	StringBuffer strEditor = new StringBuffer();
+
+	strEditor.append("<div>");
+	String encodedValue = HTMLEncode(value);
+
+	if (Compatibility.check(request.getHeader("user-agent"))) {
+
+		 // TODO Variablen separat hinzufügen
+		strEditor.append("<input type=\"hidden\" id=\"" + instanceName + "\" name=\"" + instanceName
+		    + "\" value=\"" + encodedValue + "\">");
+
+	    strEditor.append(createConfigHTML());
+	    strEditor.append(createIFrameHTML());
+
+	} else {
+	    // TODO s.o.
+		// TODO lowercase HTML tags nutzen
+		strEditor.append("<TEXTAREA name=\"" + instanceName + "\" rows=\"4\" cols=\"40\" style=\"WIDTH: " + width
+		    + "; HEIGHT: " + height + "\" wrap=\"virtual\">" + encodedValue + "</TEXTAREA>");
+	}
+	strEditor.append("</div>");
+	return strEditor.toString();
+    }
+
+    private String createConfigHTML() {
+	String configStr = oConfig.getUrlParams();
+	if (!configStr.equals(""))
+	    configStr = configStr.substring(1);
+
+	return "<input type=\"hidden\" id=\"" + instanceName + "___Config\" value=\"" + configStr + "\">";
+    }
+
+    private String createIFrameHTML() {
+	// TODO eventuell mit neuer Pfadstruktur untersuchen
+    	String sLink = basePath + "editor/fckeditor.html?InstanceName=" + instanceName;
+
+	if (!toolbarSet.equals(""))
+	    sLink += "&Toolbar=" + toolbarSet;
+
+	 // TODO Variablen separat hinzufügen
+	return "<iframe id=\"" + instanceName + "___Frame\" src=\"" + sLink + "\" width=\"" + width + "\" height=\""
+		+ height + "\" frameborder=\"no\" scrolling=\"no\"></iframe>";
+    }
+    
+    /**
+     * Checks the compatibility of the browser of the current request.
+     * 
+     * @return True, if compatible or false.
+     * @see {@link Compatibility#check(String)}
+     */
+    public boolean isCompatibleBrowser() {
+	if (request != null)
+	    return Compatibility.check(request.getHeader("user-agent"));
+	return false;
+    }
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/FCKeditorConfigurations.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/FCKeditorConfigurations.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/FCKeditorConfigurations.java	(revision 1287)
@@ -0,0 +1,79 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+
+package com.fredck.fckeditor;
+
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Contains the configuration settings for the FCKEditor.<br>
+ * Adding element to this collection you can override the settings specified in
+ * the config.js file.
+ * 
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ */
+public class FCKeditorConfigurations extends HashMap {
+
+    /**
+     * Initialize the configuration collection
+     */
+    public FCKeditorConfigurations() {
+	super();
+    }
+
+    /**
+     * Generate the url parameter sequence used to pass this configuration to
+     * the editor.
+     * 
+     * @return html endocode sequence of configuration parameters
+     */
+    public String getUrlParams() {
+	StringBuffer osParams = new StringBuffer();
+
+	for (Iterator i = this.entrySet().iterator(); i.hasNext();) {
+	    Map.Entry entry = (Map.Entry) i.next();
+	    if (entry.getValue() != null) {
+		osParams.append("&");
+		osParams.append(encodeConfig(entry.getKey().toString()));
+		osParams.append("=");
+		osParams.append(encodeConfig(entry.getValue().toString()));
+	    }
+	}
+	return osParams.toString();
+    }
+
+    /**
+     * @see URLEncoder#encode(String, String)
+     * @param txt
+     * @return
+     */
+    @Deprecated
+    private String encodeConfig(String txt) {
+	txt = txt.replaceAll("&", "%26");
+	txt = txt.replaceAll("=", "%3D");
+	txt = txt.replaceAll("\"", "%22");
+	return txt;
+    }
+
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/IBaseDirProvider.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/IBaseDirProvider.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/IBaseDirProvider.java	(revision 1287)
@@ -0,0 +1,38 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor;
+
+/**
+ * This interface has to be implemented by the class, which provides the user
+ * dir. <br>
+ * E.g. this class could set construct the user depended on a session.
+ * 
+ * @version $Id:IBaseDirProvider.java 1099 2007-11-06 15:01:50Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public interface IBaseDirProvider {
+
+    /**
+     * @return Base dir for user files. It's relative to the context root (no
+     *         leading or ending /).
+     */
+    public String getDir();
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/connector/ConnectorServlet.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/connector/ConnectorServlet.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/connector/ConnectorServlet.java	(revision 1287)
@@ -0,0 +1,343 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor.connector;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.filefilter.DirectoryFileFilter;
+import org.apache.commons.io.filefilter.FileFileFilter;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import com.fredck.fckeditor.ConfigurationHandler;
+import com.fredck.fckeditor.tool.Utils;
+
+/**
+ * Servlet to upload and browse files.<br>
+ * 
+ * This servlet accepts 4 commands used to retrieve and create files and folders
+ * from a server directory. The allowed commands are:
+ * <ul>
+ * <li>GetFolders: Retrive the list of directory under the current folder
+ * <li>GetFoldersAndFiles: Retrive the list of files and directory under the
+ * current folder
+ * <li>CreateFolder: Create a new directory under the current folder
+ * <li>FileUpload: Send a new file to the server (must be sent with a POST)
+ * </ul>
+ * 
+ * @version $Id: ConnectorServlet.java 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class ConnectorServlet extends HttpServlet {
+
+	private static final long serialVersionUID = -5742008970929377161L;
+
+	// private static boolean debug = false;
+
+	/**
+	 * Initialize the servlet.<br>
+	 * Retrieve from the servlet configuration the "baseDir" which is the root
+	 * of the file repository.
+	 */
+	public void init() throws ServletException {
+
+		if (getInitParameter("baseDir") != null)
+			ConfigurationHandler.setBaseDir(getInitParameter("baseDir"));
+		// debug = Boolean.getBoolean(getInitParameter("debug"));
+		String realBaseDir = getServletContext().getRealPath(
+				ConfigurationHandler.getBaseDir());
+		File baseFile = new File(realBaseDir);
+		if (!baseFile.exists()) {
+			baseFile.mkdirs();
+		}
+		/*
+		 * if (debug) System.out.println("--- Connector Servlet initialized
+		 * ---");
+		 */
+	}
+
+	/**
+	 * Manage the Get requests (GetFolders, GetFoldersAndFiles, CreateFolder).<br>
+	 * 
+	 * The servlet accepts commands sent in the following format:<br>
+	 * connector?Command=CommandName&Type=ResourceType&CurrentFolder=FolderPath<br>
+	 * <br>
+	 * It execute the command and then return the results to the client in XML
+	 * format.
+	 * 
+	 */
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+			throws ServletException, IOException {
+		/*
+		 * if (debug) System.out.println("--- BEGIN DOGET ---");
+		 */
+		response.setCharacterEncoding("UTF-8");
+		response.setContentType("application/xml; charset=UTF-8");
+		response.setHeader("Cache-Control", "no-cache");
+		PrintWriter out = response.getWriter();
+
+		String commandStr = request.getParameter("Command");
+		String typeStr = request.getParameter("Type");
+		String currentFolderStr = request.getParameter("CurrentFolder");
+
+		// TODO untersuchen wie es vom Res Browser kommt
+		String currentPath = ConfigurationHandler.getBaseDir() + "/" + typeStr
+				+ currentFolderStr;
+		currentPath = Utils.replaceAll(currentPath, "//", "/");
+		String currentDirPath = getServletContext().getRealPath(currentPath);
+
+		File currentDir = new File(currentDirPath);
+		if (!currentDir.exists()) {
+			currentDir.mkdir();
+		}
+
+		Document document = null;
+		try {
+			DocumentBuilderFactory factory = DocumentBuilderFactory
+					.newInstance();
+			DocumentBuilder builder = factory.newDocumentBuilder();
+			document = builder.newDocument();
+		} catch (ParserConfigurationException pce) {
+			// TODO muss mit logger gefagen werden
+			// pce.printStackTrace();
+		}
+
+		Node root = CreateCommonXml(document, commandStr, typeStr,
+				currentFolderStr, request.getContextPath() + currentPath);
+		/*
+		 * if (debug) System.out.println("Command = " + commandStr);
+		 */
+		if (commandStr.equals("GetFolders")) {
+			getFolders(currentDir, root, document);
+		} else if (commandStr.equals("GetFoldersAndFiles")) {
+			getFolders(currentDir, root, document);
+			getFiles(currentDir, root, document);
+		} else if (commandStr.equals("CreateFolder")) {
+			String newFolderStr = request.getParameter("NewFolderName");
+			File newFolder = new File(currentDir, newFolderStr);
+			String retValue = "110";
+
+			if (newFolder.exists()) {
+				retValue = "101";
+			} else {
+				try {
+					boolean dirCreated = newFolder.mkdir();
+					if (dirCreated)
+						retValue = "0";
+					else
+						retValue = "102";
+				} catch (SecurityException sex) {
+					retValue = "103";
+				}
+
+			}
+			setCreateFolderResponse(retValue, root, document);
+		}
+
+		document.getDocumentElement().normalize();
+		try {
+			TransformerFactory tFactory = TransformerFactory.newInstance();
+			Transformer transformer = tFactory.newTransformer();
+
+			DOMSource source = new DOMSource(document);
+
+			StreamResult result = new StreamResult(out);
+			transformer.transform(source, result);
+			/*
+			 * if (debug) { StreamResult dbgResult = new
+			 * StreamResult(System.out); transformer.transform(source,
+			 * dbgResult); System.out.println(""); System.out.println("--- END
+			 * DOGET ---"); }
+			 */
+		} catch (Exception ex) {
+			// TODO muss mit logger gefagen werden
+			// ex.printStackTrace();
+		}
+
+		out.flush();
+		out.close();
+	}
+
+	/**
+	 * Manage the Post requests (FileUpload).<br>
+	 * 
+	 * The servlet accepts commands sent in the following format:<br>
+	 * connector?Command=FileUpload&Type=ResourceType&CurrentFolder=FolderPath<br>
+	 * <br>
+	 * It store the file (renaming it in case a file with the same name exists)
+	 * and then return an HTML file with a javascript command in it.
+	 * 
+	 */
+	public void doPost(HttpServletRequest request, HttpServletResponse response)
+			throws ServletException, IOException {
+
+		/*
+		 * if (debug) System.out.println("--- BEGIN DOPOST ---");
+		 */
+
+		response.setCharacterEncoding("UTF-8");
+		response.setContentType("text/html; charset=UTF-8");
+		response.setHeader("Cache-Control", "no-cache");
+		PrintWriter out = response.getWriter();
+
+		String commandStr = request.getParameter("Command");
+		String typeStr = request.getParameter("Type");
+		String currentFolderStr = request.getParameter("CurrentFolder");
+
+		String currentPath = ConfigurationHandler.getBaseDir() + "/" + typeStr
+				+ currentFolderStr;
+		currentPath = Utils.replaceAll(currentPath, "//", "/");
+		String currentDirPath = getServletContext().getRealPath(currentPath);
+
+		/*
+		 * 
+		 * if (debug) System.out.println(currentDirPath);
+		 */
+		String retVal = "0";
+		String newName = "";
+
+		if (!commandStr.equals("FileUpload"))
+			retVal = "203";
+		else {
+			FileItemFactory factory = new DiskFileItemFactory();
+			ServletFileUpload upload = new ServletFileUpload(factory);
+			try {
+				List items = upload.parseRequest(request);
+
+				Map fields = new HashMap();
+
+				Iterator iter = items.iterator();
+				while (iter.hasNext()) {
+					FileItem item = (FileItem) iter.next();
+					if (item.isFormField())
+						fields.put(item.getFieldName(), item.getString());
+					else
+						fields.put(item.getFieldName(), item);
+				}
+				FileItem uplFile = (FileItem) fields.get("NewFile");
+				String fileNameLong = uplFile.getName();
+				fileNameLong = fileNameLong.replace('\\', '/');
+				String[] pathParts = fileNameLong.split("/");
+				String filename = pathParts[pathParts.length - 1];
+
+				String baseName = FilenameUtils.getBaseName(filename);//Utils.getNameWithoutExtension(filename);
+				String ext = FilenameUtils.getExtension(filename); //Utils.getExtension(fileName);
+				File pathToSave = new File(currentDirPath, filename);
+				int counter = 1;
+				while (pathToSave.exists()) {
+					newName = baseName + "(" + counter + ")" + "." + ext;
+					retVal = "201";
+					pathToSave = new File(currentDirPath, newName);
+					counter++;
+				}
+				uplFile.write(pathToSave);
+			} catch (Exception ex) {
+				retVal = "203";
+			}
+
+		}
+
+		out.println("<script type=\"text/javascript\">");
+		out.println("window.parent.frames['frmUpload'].OnUploadCompleted("
+				+ retVal + ",'" + newName + "');");
+		out.println("</script>");
+		out.flush();
+		out.close();
+		/*
+		 * if (debug) System.out.println("--- END DOPOST ---");
+		 */
+	}
+
+	private void setCreateFolderResponse(String retValue, Node root,
+			Document doc) {
+		Element myEl = doc.createElement("Error");
+		myEl.setAttribute("number", retValue);
+		root.appendChild(myEl);
+	}
+
+	private void getFolders(File dir, Node root, Document doc) {
+		Element folders = doc.createElement("Folders");
+		root.appendChild(folders);
+		File[] fileList = dir.listFiles((FileFilter) DirectoryFileFilter.DIRECTORY);
+		for (File file : fileList) {
+			Element myEl = doc.createElement("Folder");
+			myEl.setAttribute("name", file.getName());
+			folders.appendChild(myEl);
+		}
+	}
+
+	private void getFiles(File dir, Node root, Document doc) {
+		Element files = doc.createElement("Files");
+		root.appendChild(files);
+		File[] fileList = dir.listFiles((FileFilter) FileFileFilter.FILE);
+		
+		for (File file : fileList) {
+			Element myEl = doc.createElement("File");
+			myEl.setAttribute("name", file.getName());
+			myEl.setAttribute("size", String.valueOf(file.length()/1024));
+			files.appendChild(myEl);
+		}
+	}
+
+	private Node CreateCommonXml(Document doc, String commandStr,
+			String typeStr, String currentPath, String currentUrl) {
+
+		Element root = doc.createElement("Connector");
+		doc.appendChild(root);
+		root.setAttribute("command", commandStr);
+		root.setAttribute("resourceType", typeStr);
+
+		Element myEl = doc.createElement("CurrentFolder");
+		myEl.setAttribute("path", currentPath);
+		myEl.setAttribute("url", currentUrl);
+		root.appendChild(myEl);
+
+		return root;
+
+	}
+
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/connector/package.html
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/connector/package.html	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/connector/package.html	(revision 1287)
@@ -0,0 +1,87 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * File Name: package.html
+ * 	JavaDoc connector documentation.
+ * 
+ * Version:  2.3
+ * Modified: 2005-08-11 16:29:00
+ * 
+ * File Authors:
+ * 		Simone Chiaretta (simo@users.sourceforge.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+  @(#)package.html	1.60 98/01/27
+
+  Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, 
+  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+
+  This software is the confidential and proprietary information of Sun
+  Microsystems, Inc. ("Confidential Information").  You shall not
+  disclose such Confidential Information and shall use it only in
+  accordance with the terms of the license agreement you entered into
+  with Sun.
+
+  CopyrightVersion 1.2
+
+-->
+</head>
+<body bgcolor="white">
+
+Connector used by the FCKeditor to list and create resources on the server.
+
+<h2>Package Specification</h2>
+
+This servlet is access directly from the file browser in the FCKeditor.<br>
+To make everything work correctly you have to add the following piece of code in your application's web.xml
+<br>
+<pre>
+	&lt;servlet&gt;
+		&lt;servlet-name&gt;Connector&lt;/servlet-name&gt;
+		&lt;servlet-class&gt;com.fredck.FCKeditor.connector.ConnectorServlet&lt;/servlet-class&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;baseDir&lt;/param-name&gt;
+			&lt;param-value&gt;/UserFiles/&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;debug&lt;/param-name&gt;
+			&lt;param-value&gt;false&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+	&lt;/servlet&gt;
+	
+	&lt;servlet-mapping&gt;
+		&lt;servlet-name&gt;Connector&lt;/servlet-name&gt;
+		&lt;url-pattern&gt;/editor/filemanager/browser/default/connectors/jsp/connector&lt;/url-pattern&gt;
+	&lt;/servlet-mapping&gt;
+</pre>
+<br>
+And put in the fckconfig.js the following line:
+<pre>
+FCKConfig.LinkBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;
+FCKConfig.ImageBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;
+FCKConfig.FlashBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;
+</pre>
+Also, since the servlet manage a file upload using the Jakarta Common fileupload library, you need to put in your <code>WEB-INF/lib/</code> the <code>commons-fileupload.jar</code>.
+<h2>Related Documentation</h2>
+
+For overviews, tutorials, examples, guides, and tool documentation, please see:
+<ul>
+  <li>_sample/jsp directory for example of how to implement FCKEditor in your application
+</ul>
+
+<!-- Put @see and @since tags down here. -->
+
+</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/package.html
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/package.html	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/package.html	(revision 1287)
@@ -0,0 +1,56 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * File Name: package.html
+ * 	JavaDoc package documentation.
+ * 
+ * Version:  2.3
+ * Modified: 2005-08-11 16:29:00
+ * 
+ * File Authors:
+ * 		Simone Chiaretta (simo@users.sourceforge.net)
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+  @(#)package.html	1.60 98/01/27
+
+  Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, 
+  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+
+  This software is the confidential and proprietary information of Sun
+  Microsystems, Inc. ("Confidential Information").  You shall not
+  disclose such Confidential Information and shall use it only in
+  accordance with the terms of the license agreement you entered into
+  with Sun.
+
+  CopyrightVersion 1.2
+
+-->
+</head>
+<body bgcolor="white">
+
+Core objects to manage the FCKeditor text input form.
+Java Integration Module 2.3.
+
+<h2>Related Documentation</h2>
+
+For overviews, tutorials, examples, guides, and tool documentation, please see:
+<ul>
+  <li><a href="http://www.FCKeditor.net/">Official page of FCKeditor</a>
+</ul>
+
+<!-- Put @see and @since tags down here. -->
+
+</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tags/FCKeditorTag.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tags/FCKeditorTag.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tags/FCKeditorTag.java	(revision 1287)
@@ -0,0 +1,695 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+ 
+package com.fredck.fckeditor.tags;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.tagext.BodyContent;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+
+import com.fredck.fckeditor.FCKeditor;
+
+/**
+ * FCKeditor Tag class to access the {@linkplain com.fredck.FCKeditor.FCKeditor container}.<br>
+ *<p>
+ * <b>Simple usage</b>:
+ * <pre>
+ *	&lt;FCK:editor
+ *		id="EditorAccessibility"
+ *		width="80%"
+ *		height="120"
+ *		toolbarSet="Accessibility"
+ *	"&gt;This is another test. &lt;BR&gt;&lt;BR&gt;The "Second" row.&lt;/BR&gt;&lt;/FCK:editor"&gt;
+ * </pre>
+ *
+ *<p>In this example we set all the attribute for the fckedit tag.
+ *
+ *<p>
+ *  <b>Advanced usage of the tag</b>:
+ *  <pre>
+ *	&lt;FCK:editor id="EditorDefault" basePath="/FCKeditor/"
+ *		styleNames=";Style 1;Style 2; Style 3" 
+ *		fontNames=";Arial;Courier New;Times New Roman;Verdana" &gt;
+ *		This is some &lt;B&gt;sample text&lt;/B&gt;.
+ *	&lt;/FCK:editor&gt;
+*  </pre>
+ *<p>In this example we set the id and the basePath of the editor (since it is /FCKeditor/
+ * we could have omitted it because it's already the default value).<br>
+ * Then we used the the optional attributes to set some advanced configuration settings.
+ *
+			
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ */
+public class FCKeditorTag extends BodyTagSupport  {
+	
+	private static final long serialVersionUID = -173091731589866140L;
+	private String id;
+	private String value = "";
+	private String basePath = null;
+	private String toolbarSet = null;
+	private String width = null;
+	private String height = null;
+	private String customConfigurationsPath = null;
+	private String editorAreaCSS = null;
+	private String baseHref = null;
+	private String skinPath = null;
+	private String pluginsPath = null;
+	private String fullPage = null;
+	private String debug = null;	
+	private String autoDetectLanguage = null;
+	private String defaultLanguage = null;
+	private String contentLangDirection = null;
+	private String enableXHTML = null;
+	private String enableSourceXHTML = null;
+	private String fillEmptyBlocks = null;
+	private String formatSource = null;
+	private String formatOutput = null;
+	private String formatIndentator = null;
+	private String geckoUseSPAN = null;
+	private String startupFocus = null;
+	private String forcePasteAsPlainText = null;
+	private String forceSimpleAmpersand = null;
+	private String tabSpaces = null;
+	private String useBROnCarriageReturn = null;
+	private String toolbarStartExpanded = null;
+	private String toolbarCanCollapse = null;
+	private String fontColors = null;
+	private String fontNames = null;
+	private String fontSizes = null;
+	private String fontFormats = null;
+	private String stylesXmlPath = null;
+	private String linkBrowserURL = null;
+	private String imageBrowserURL = null;
+	private String flashBrowserURL = null;
+	private String linkUploadURL = null;
+	private String imageUploadURL = null;
+	private String flashUploadURL = null;
+	
+
+
+
+   /**
+     * The underlying FCKeditor object
+     *
+     */		
+	protected FCKeditor fcked = null;
+
+
+    /**
+     * Set the unique id of the editor
+     *
+     * @param value name
+     */	
+	public void setId(String value) {
+		id=value;
+	}
+
+    /**
+     * Set the dir where the FCKeditor files reside on the server
+     *
+     * @param value path
+     */		
+	public void setBasePath(String value) {
+		basePath=value;
+	}
+
+    /**
+     * Set the name of the toolbar to display
+     *
+     * @param value toolbar name
+     */		
+	public void setToolbarSet(String value) {
+		toolbarSet=value;
+	}
+
+    /**
+     * Set the width of the textarea
+     *
+     * @param value width
+     */		
+	public void setWidth(String value) {
+		width=value;
+	}
+
+    /**
+     * Set the height of the textarea
+     *
+     * @param value height
+     */		
+	public void setHeight(String value) {
+		height=value;
+	}
+
+	/**
+	 * Set the path of a custom file that can override some configurations.<br>
+	 * It is recommended to use absolute paths (starting with /), like "/myfckconfig.js".
+	 *
+	 * @param value path
+	 */
+	public void setCustomConfigurationsPath(String value) {
+		customConfigurationsPath=value;
+	}
+	
+
+	/**
+	 * Set the CSS styles file to be used in the editing area.<br>
+	 * In this way you can point to a file that reflects your web site styles.
+	 *
+	 * @param value path
+	 */
+	public void setEditorAreaCSS(String value) {
+		editorAreaCSS=value;
+	}
+	
+
+	/**
+	 * Base URL used to resolve links (on images, links, styles, etc.).<br>
+	 * For example, if BaseHref is set to 'http://www.fredck.com', an image that points to "/images/Logo.gif" will be interpreted by the editor as "http://www.fredck.com/images/Logo.gif", without touching the "src" attribute of the image.
+	 *
+	 * @param value URL
+	 */
+	public void setBaseHref(String value) {
+		baseHref=value;
+	}
+	
+	
+	/**
+	 * Sets the path to the skin (graphical interface settings) to be used by the editor.
+	 *
+	 * @param value path
+	 */
+	public void setSkinPath(String value) {
+		skinPath=value;
+	}
+	
+	
+	/**
+	 * Sets the base path used when looking for registered plugins.
+	 *
+	 * @param value path
+	 */
+	public void setPluginsPath(String value) {
+		pluginsPath=value;
+	}
+	
+	
+	/**
+	 * Enables full page editing (from &lt;HTML&gt; to &lt;/HTML&gt;).<br>
+	 * It also enables the "Page Properties" toolbar button.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setFullPage(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("fullPage attribute can only be true or false");
+		fullPage=value;
+	}
+	
+	
+	/**
+	 * Enables the debug window to be shown when calling the FCKDebug.Output() function.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setDebug(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("debug attribute can only be true or false");
+		debug=value;
+	}
+	
+	
+	/**
+	 * Tells the editor to automatically detect the user language preferences to adapt its interface language.<br>
+	 * With Internet Explorer, the language configured in the Windows Control Panel is used.<br>
+	 * With Firefox, the browser language is used.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setAutoDetectLanguage(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("autoDetectLanguage attribute can only be true or false: here was " + value);
+		autoDetectLanguage=value;
+	}
+	
+	
+	/**
+	 * Sets the default language used for the editor's interface localization.<br>
+	 * The default language is used when the AutoDetectLanguage options is disabled or when the user language is not available.
+	 *
+	 * @param value language code
+	 */
+	public void setDefaultLanguage(String value) {
+		defaultLanguage=value;
+	}
+	
+	
+	/**
+	 * Sets the direction of the editor area contents.<br>
+	 * The possible values are:
+	 * <ul>
+     * <li>ltr - Left to Right
+     * <li>rtl - Right to Left
+     * </ul>
+	 *
+	 * @param value ltr/rtl
+	 * @throws JspException if value is not ltr or rtl
+	 */
+	public void setContentLangDirection(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("debug attribute can only be ltr or rtl");
+		contentLangDirection=value;
+	}
+	
+	
+	/**
+	 * Tells the editor to process the HTML source to XHTML on form post.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setEnableXHTML(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("enableXHTML attribute can only be true or false");
+		enableXHTML=value;
+	}
+	
+	
+	/**
+	 * Tells the editor to process the HTML source to XHTML when switching from WYSIWYG to Source view
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setEnableSourceXHTML(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("enableSourceXHTML attribute can only be true or false");
+		enableSourceXHTML=value;
+	}
+	
+	
+	/**
+	 * Block elements (like P, DIV, H1, PRE, etc...) are forced to have content (a &amp;nbsp;).<br>
+	 * Empty blocks are "collapsed" by while browsing, so a empty &lt;p&gt;&lt;/p&gt; is not visible.<br>
+	 * While editing, the editor "expand" empty blocks so you can insert content inside then.<br>
+	 * Setting this option to "true" results useful to reflect the same output when browsing and editing.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setFillEmptyBlocks(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("fillEmptyBlocks attribute can only be true or false");
+		fillEmptyBlocks=value;
+	}
+	
+	
+	/**
+	 * The HTML shown by the editor, while switching from WYSIWYG to Source views, will be processed and formatted
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setFormatSource(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("formatSource attribute can only be true or false");
+		formatSource=value;
+	}
+	
+	
+	/**
+	 * The output HTML generated by the editor will be processed and formatted.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setFormatOutput(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("formatOutput attribute can only be true or false");
+		formatOutput=value;
+	}
+	
+	/**
+	 * Sets the characters to be used when indenting the HTML source when formatting it.<BR>
+	 * Useful values are a sequence of spaces ('     ') or a tab char ('\t').
+	 *
+	 * @param value indentator
+	 */
+	public void setFormatIndentator(String value) {
+		formatIndentator=value;
+	}
+	
+	
+	/**
+	 * Tells Gecko browsers to use SPAN instead of &lt;B&gt;, &lt;I&gt; and &lt;U&gt; for bold, italic an underline
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setGeckoUseSPAN(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("GeckoUseSPAN attribute can only be true or false");
+		geckoUseSPAN=value;
+	}
+	
+	
+	/**
+	 * Forces the editor to get the keyboard input focus on startup (page load)
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setStartupFocus(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("startupFocus attribute can only be true or false");
+		startupFocus=value;
+	}
+	
+	
+	/**
+	 * Converts the clipboard contents to pure text on pasting operations
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setForcePasteAsPlainText(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("forcePasteAsPlainText attribute can only be true or false");
+		forcePasteAsPlainText=value;
+	}
+	
+	
+	/**
+	 * Forces the ampersands (&) on tags attributes to not be converted to "&amp;amp;"<BR>
+	 * This conversion is a W3C requirement for XHTML, so it is recommended to leave this option to "false".
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setForceSimpleAmpersand(String value) throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("forceSimpleAmpersand attribute can only be true or false");
+		forceSimpleAmpersand=value;
+	}
+	
+	
+	/**
+	 * Set the number of spaces (&amp;nbsp;) to be inserted when the user hits the "tab" key.<BR>
+	 * This is an Internet Explorer only feature. Other browsers insert spaces automatically by default.
+	 *
+	 * @param value number of spaces
+	 */
+	public void setTabSpaces(String value) {
+		tabSpaces=value;
+	}
+	
+	
+	/**
+	 * Inserts a &lt;BR&gt; tag when the user hits the "enter" key, instead of starting a new paragraph (&lt;P&gt; or &lt;DIV&gt;).<BR>
+	 * This is an Internet Explorer only feature. Other browsers insert the &lt;BR&gt; tag by default.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setUseBROnCarriageReturn(String value)  throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("useBROnCarriageReturn attribute can only be true or false");
+		useBROnCarriageReturn=value;
+	}
+	
+	
+	/**
+	 * The toolbar is Expanded on startup, otherwise it is Collapsed and the user must click on it to show it.
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setToolbarStartExpanded(String value)   throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("ToolbarStartExpanded attribute can only be true or false");
+		toolbarStartExpanded=value;
+	}
+	
+	
+	/**
+	 * Tells the editor that the toolbar can be Collapsed/Expanded by the user when clicking the vertical bar placed on the left of it (on the right for "rtl" languages).
+	 *
+	 * @param value true/false
+	 * @throws JspException if value is not true or false
+	 */
+	public void setToolbarCanCollapse(String value)    throws JspException {
+		if(! value.equals("true") && ! value.equals("false"))
+			throw new JspException("ToolbarCanCollapse attribute can only be true or false");
+		toolbarCanCollapse=value;
+	}
+	
+	
+	/**
+	 * Sets the colors that must be shown in the colors panels (in the toolbar).
+	 *
+	 * @param value colors
+	 */
+	public void setFontColors(String value) {
+		fontColors=value;
+	}
+	
+	
+	/**
+	 * Sets the list of fonts to be shown in the "Font" toolbar command.
+	 *
+	 * @param value fonts
+	 */
+	public void setFontNames(String value) {
+		fontNames=value;
+	}
+	
+	
+	/**
+	 * Sets the list of font sizes to be shown in the "Size" toolbar command.
+	 *
+	 * @param value sizes
+	 */
+	public void setFontSizes(String value) {
+		fontSizes=value;
+	}
+	
+	
+	/**
+	 * Sets the list of formats to be shown in the "Format" toolbar command.
+	 *
+	 * @param value format list
+	 */
+	public void setFontFormats(String value) {
+		fontFormats=value;
+	}
+	
+	
+	/**
+	 * Sets the path to the XML file that has the definitions and rules of the styles used by the "Style" toolbar command
+	 *
+	 * @param value path
+	 */
+	public void setStylesXmlPath(String value) {
+		stylesXmlPath=value;
+	}
+	
+	
+	/**
+	 * Sets the URL of the page called when the user clicks the "Browse Server" button in the "Link" dialog window.<BR>
+	 * In this way, you can create your custom File Browser that is well integrated with your system.
+	 *
+	 * @param value path
+	 */
+	public void setLinkBrowserURL(String value) {
+		linkBrowserURL=value;
+	}
+	
+	
+	/**
+	 * Sets the URL of the page called when the user clicks the "Browse Server" button in the "Image" dialog window.<BR>
+	 * In this way, you can create your custom Image Browser that is well integrated with your system.
+	 *
+	 * @param value path
+	 */
+	public void setImageBrowserURL(String value) {
+		imageBrowserURL=value;
+	}
+
+	/**
+	 * Sets the URL of the page called when the user clicks the "Browse Server" button in the "Flash" dialog window.<BR>
+	 * In this way, you can create your custom Flash Browser that is well integrated with your system.
+	 *
+	 * @param value path
+	 */
+	public void setFlashBrowserURL(String value) {
+		flashBrowserURL=value;
+	}
+
+
+	/**
+	 * Sets the URL of the upload handler called when the user clicks the "Send it to server" button in the "Link" dialog window.<BR>
+	 * In this way, you can create your custom Link Uploader that is well integrated with your system.
+	 *
+	 * @param value path
+	 */
+	public void setLinkUploadURL(String value) {
+		linkUploadURL=value;
+	}
+
+
+	/**
+	 * Sets the URL of the upload handler called when the user clicks the "Send it to server" button in the "Image" dialog window.<BR>
+	 * In this way, you can create your custom Image Uploader that is well integrated with your system.
+	 *
+	 * @param value path
+	 */
+	public void setImageUploadURL(String value) {
+		imageUploadURL=value;
+	}
+
+
+	/**
+	 * Sets the URL of the upload handler called when the user clicks the "Send it to server" button in the "Flash" dialog window.<BR>
+	 * In this way, you can create your custom Flash Uploader that is well integrated with your system.
+	 *
+	 * @param value path
+	 */
+	public void setFlashUploadURL(String value) {
+		flashUploadURL=value;
+	}		
+
+
+	/**
+	 * Initialize the FCKeditor container and set attributes
+	 *
+	 * @return EVAL_BODY_BUFFERED
+	 */
+	public int doStartTag() throws JspException {
+		fcked=new FCKeditor((HttpServletRequest)pageContext.getRequest(),id);
+		if(toolbarSet!=null)
+			fcked.setToolbarSet(toolbarSet);
+		if(basePath!=null)
+			fcked.setBasePath(basePath);
+		if(width!=null)
+			fcked.setWidth(width);
+		if(height!=null)
+			fcked.setHeight(height);
+		if (customConfigurationsPath != null)
+			fcked.getConfig().put("CustomConfigurationsPath",customConfigurationsPath);
+		if (editorAreaCSS != null)
+			fcked.getConfig().put("EditorAreaCSS",editorAreaCSS);
+		if (baseHref != null)
+			fcked.getConfig().put("BaseHref",baseHref);
+		if (skinPath != null)
+			fcked.getConfig().put("SkinPath",skinPath);
+		if (pluginsPath != null)
+			fcked.getConfig().put("PluginsPath",pluginsPath);	
+		if (fullPage != null)
+			fcked.getConfig().put("FullPage",fullPage);
+		if (debug != null)
+			fcked.getConfig().put("Debug",debug);
+		if (autoDetectLanguage != null)
+			fcked.getConfig().put("AutoDetectLanguage",autoDetectLanguage);
+		if (defaultLanguage != null)
+			fcked.getConfig().put("DefaultLanguage",defaultLanguage);
+		if (contentLangDirection != null)
+			fcked.getConfig().put("ContentLangDirection",contentLangDirection);
+		if (enableXHTML != null)
+			fcked.getConfig().put("EnableXHTML",enableXHTML);
+		if (enableSourceXHTML != null)
+			fcked.getConfig().put("EnableSourceXHTML",enableSourceXHTML);
+		if (fillEmptyBlocks != null)
+			fcked.getConfig().put("FillEmptyBlocks",fillEmptyBlocks);
+		if (formatSource != null)
+			fcked.getConfig().put("FormatSource",formatSource);
+		if (formatOutput != null)
+			fcked.getConfig().put("FormatOutput",formatOutput);
+		if (formatIndentator != null)
+			fcked.getConfig().put("FormatIndentator",formatIndentator);
+		if (geckoUseSPAN != null)
+			fcked.getConfig().put("GeckoUseSPAN",geckoUseSPAN);
+		if (startupFocus != null)
+			fcked.getConfig().put("StartupFocus",startupFocus);
+		if (forcePasteAsPlainText != null)
+			fcked.getConfig().put("ForcePasteAsPlainText",forcePasteAsPlainText);
+		if (forceSimpleAmpersand != null)
+			fcked.getConfig().put("ForceSimpleAmpersand",forceSimpleAmpersand);
+		if (tabSpaces != null)
+			fcked.getConfig().put("TabSpaces",tabSpaces);
+		if (useBROnCarriageReturn != null)
+			fcked.getConfig().put("UseBROnCarriageReturn",useBROnCarriageReturn);
+		if (toolbarStartExpanded != null)
+			fcked.getConfig().put("ToolbarStartExpanded",toolbarStartExpanded);
+		if (toolbarCanCollapse != null)
+			fcked.getConfig().put("ToolbarCanCollapse",toolbarCanCollapse);
+		if (fontColors != null)
+			fcked.getConfig().put("FontColors",fontColors);
+		if (fontNames != null)
+			fcked.getConfig().put("FontNames",fontNames);
+		if (fontSizes != null)
+			fcked.getConfig().put("FontSizes",fontSizes);
+		if (fontFormats != null)
+			fcked.getConfig().put("FontFormats",fontFormats);
+		if (stylesXmlPath != null)
+			fcked.getConfig().put("StylesXmlPath",stylesXmlPath);
+		if (linkBrowserURL != null)
+			fcked.getConfig().put("LinkBrowserURL",linkBrowserURL);
+		if (imageBrowserURL != null)
+			fcked.getConfig().put("ImageBrowserURL",imageBrowserURL);
+		if (flashBrowserURL != null)
+			fcked.getConfig().put("FlashBrowserURL",flashBrowserURL);
+		if (linkUploadURL != null)
+			fcked.getConfig().put("LinkUploadURL",linkUploadURL);
+		if (imageUploadURL != null)
+			fcked.getConfig().put("ImageUploadURL",imageUploadURL);
+		if (flashUploadURL != null)
+			fcked.getConfig().put("FlashUploadURL",flashUploadURL);
+				
+		 return EVAL_BODY_BUFFERED;
+	}
+
+	/**
+	 * Retrive initial value to be edited and writes the HTML code in the page
+	 *
+	 * @return SKIP_BODY
+	 * @throws JspException if an error occurs while writing to the out buffer
+	 */	
+	public int doAfterBody()  throws JspException {
+			BodyContent body = getBodyContent();
+			JspWriter writer = body.getEnclosingWriter();
+			String bodyString = body.getString();
+			fcked.setValue(bodyString);
+			try {
+				writer.println(fcked.create());
+			}catch(IOException ioe) {
+				throw new JspException("Error: IOException while writing to the user");
+			}
+			
+			return SKIP_BODY;
+	}
+
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tags/package.html
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tags/package.html	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tags/package.html	(revision 1287)
@@ -0,0 +1,64 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * File Name: package.html
+ * 	JavaDoc FCKeditor lib documentation.
+ * 
+ * Version:  2.3
+ * Modified: 2005-08-11 16:29:00
+ * 
+ * File Authors:
+ * 		Simone Chiaretta (simo@users.sourceforge.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+  @(#)package.html	1.60 98/01/27
+
+  Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, 
+  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+
+  This software is the confidential and proprietary information of Sun
+  Microsystems, Inc. ("Confidential Information").  You shall not
+  disclose such Confidential Information and shall use it only in
+  accordance with the terms of the license agreement you entered into
+  with Sun.
+
+  CopyrightVersion 1.2
+
+-->
+</head>
+<body bgcolor="white">
+
+JSP Tag to access and modify the FCKeditor objects.
+
+
+<h2>Package Specification</h2>
+
+This taglibrary is compliant to the taglib 1.1 specification.<br>
+To use it put the FCKeditor.jar inside the <code>WEB-INF/lib</code> dir and FCKeditor.tld inside the <code>WEB-INF</code> directory of your website.<br>
+Put the following declaration in each page that use the tags:<br>
+<pre>
+&lt;%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %&gt;
+</pre>
+
+<h2>Related Documentation</h2>
+
+For overviews, tutorials, examples, guides, and tool documentation, please see:
+<ul>
+  <li>_sample/jsp directory for example of how to implement FCKEditor in your application
+</ul>
+
+<!-- Put @see and @since tags down here. -->
+
+</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tool/Compatibility.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tool/Compatibility.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tool/Compatibility.java	(revision 1287)
@@ -0,0 +1,93 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor.tool;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Compatibility check.
+ *
+ * @version $Id: Compatibility.java 1187 2008-01-03 19:09:23Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class Compatibility {
+
+    /**
+     * Checks, if a browser's user agent string is compatible for the FCKeditor.
+     * 
+     * @param userAgentString
+     * @return true, if compatible
+     */
+    public static boolean check(final String userAgentString) {
+        if (userAgentString == null || userAgentString.length() < 1)
+            return false;
+    
+        float version;
+    
+        // IE 5.5+, check 'Opera' because Opera 8.5 contains 'MSIE' in its user
+        // agent string!
+        version = getBrowserVersion(userAgentString, ".*MSIE ([\\d]+.[\\d]+).*");
+        if (userAgentString.indexOf("Opera") < 0 && version != -1f
+        	&& version >= 5.5f)
+            return true;
+    
+        // Gecko
+        version = getBrowserVersion(userAgentString, ".*Gecko/([\\d]+).*");
+        if (version != -1f && version >= 20030210f)
+            return true;
+    
+        // Opera 9+
+        version = getBrowserVersion(userAgentString, "Opera/([\\d]+.[\\d]+).*");
+        if (version != -1f && version >= 9.0f)
+            return true;
+    
+        // Safari 3+
+        version = getBrowserVersion(userAgentString, ".*AppleWebKit/([\\d]+).*");
+        if (version != -1f && version >= 522f)
+            return true;
+    
+        return false;
+    }
+
+    /**
+     * Helper method to get the the browser version from 'userAgent' with the
+     * regular expression 'regex'. The first group of the matches has to be the
+     * version number!
+     * 
+     * @param userAgent
+     * @param regex
+     * @return The browser version, or -1f
+     */
+    private static float getBrowserVersion(final String userAgent,
+            final String regex) {
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(userAgent);
+        if (matcher.matches()) {
+            try {
+        	return Float.parseFloat(matcher.group(1));
+            } catch (NumberFormatException e) {
+            }
+        }
+        return -1f;
+    }
+
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tool/Utils.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tool/Utils.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/tool/Utils.java	(revision 1287)
@@ -0,0 +1,171 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor.tool;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.apache.commons.io.FilenameUtils;
+
+/**
+ * Some static helper methods.
+ * 
+ * @version $Id:Utils.java 1099 2007-11-06 15:01:50Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class Utils {
+
+    /**
+     * Gets the base name of a file name without extension.
+     * 
+     * @param fileName
+     * @return Empty string, if fileName is null or empty, or the base name.
+     * @see FilenameUtils#getBaseName(String)
+     */
+    @Deprecated
+	public static String getNameWithoutExtension(final String fileName) {
+	return fileName.substring(0, fileName.lastIndexOf("."));
+    }
+
+    /**
+     * Gets the extension of a file name.
+     * 
+     * @param fileName
+     * @return Extension of 'fileName'.
+     * @see FilenameUtils#getExtension(String)
+     */
+    
+    @Deprecated
+    public static String getExtension(final String fileName) {
+	return fileName.substring(fileName.lastIndexOf(".") + 1);
+    }
+
+    /**
+     * Constructs a set of uppercased strings dependend on 'delimiter'.
+     * 
+     * @param stringList
+     * @param delimiter
+     *                The delimiter. It shouldn't be blank!
+     * @return An emtpy list, if 'stringList' is null, or an uppercased set of
+     *         strings.
+     */
+    public static Set getSet(final String stringList, final String delimiter) {
+	if (stringList == null || stringList.length() < 1)
+	    return new HashSet();
+
+	Set set = new HashSet();
+	StringTokenizer st = new StringTokenizer(stringList, delimiter);
+	while (st.hasMoreTokens()) {
+	    String tmp = st.nextToken();
+	    if (isNotBlank(tmp)) // simple blank filter
+		set.add(tmp.toLowerCase());
+	}
+	return set;
+    }
+
+    /**
+     * Just a wrapper to {@link #getSet(String, String)} for using '&#124;' as
+     * delimiter.
+     */
+    public static Set getSet(final String stringlist) {
+	return getSet(stringlist, "|");
+    }
+
+    /**
+     * Checks if a string is null or empty.
+     * 
+     * @param string
+     * @return True if 'string' is null or empty, or false.
+     * @deprecated Method name has been discouraged to line up with Commons Lang.
+     * isBlank is different from isEmpty
+     * @see Utils#isEmpty(String)
+     * @see Commons Lang
+     */
+    @Deprecated
+    public static boolean isBlank(final String string) {
+	return (string == null || string.length() < 1) ? true : false;
+    }
+    
+    /**
+     * Checks if a string is null or empty.
+     * 
+     * @param str to check
+     * @return <code>true</code> if the String is empty or null
+     */
+    public static boolean isEmpty (final String str) {
+    	return str == null || str.length() == 0;
+    }
+
+    /**
+     * Just a wrapper to {@link #isBlank(String)}.
+     * 
+     * @param string
+     * @return
+     */
+    @Deprecated
+    public static boolean isNotBlank(final String string) {
+	return !isBlank(string);
+    }
+    /**
+     * Just a wrapper to {@link #isEmpty(String)}.
+     * 
+     * @param str
+     * @return <code>true</code> if the String is not empty and not nul
+     */
+    
+    public static boolean isNotEmpty(final String str) {
+    	return !isEmpty(str);
+    }
+    
+    /**
+     * Replaces all 'search' with 'replacement' in 'string'.
+     * 
+     * <pre>
+     * Utils.replaceAll(null, *, *)		= &quot;&quot;
+     * Utils.replaceAll(&quot;&quot;, *, *)		= &quot;&quot;
+     * Utils.replaceAll(&quot;foo&quot;, null, *)	= &quot;foo&quot;
+     * Utils.replaceAll(&quot;foo&quot;, &quot;o&quot;, &quot;a&quot;)	= &quot;faa&quot;
+     * </pre>
+     * 
+     * @param string
+     * @param search
+     * @param replacement
+     * @return
+     */
+    public static String replaceAll(final String string, final String search,
+	    final String replacement) {
+	if (isEmpty(string))
+	    return "";
+	if (isEmpty(search))
+	    return string;
+	if (string.indexOf(search) == -1)
+	    return string;
+	StringBuffer strb = new StringBuffer(string);
+	int pos = strb.indexOf(search);
+
+	while (pos != -1) {
+	    strb.replace(pos, pos + search.length(), replacement);
+	    pos = strb.indexOf(search);
+	}
+	return strb.toString();
+    }
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/uploader/SimpleUploaderServlet.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/uploader/SimpleUploaderServlet.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/uploader/SimpleUploaderServlet.java	(revision 1287)
@@ -0,0 +1,200 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor.uploader;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+
+import com.fredck.fckeditor.ConfigurationHandler;
+import com.fredck.fckeditor.Constants;
+import com.fredck.fckeditor.ExtensionsHandler;
+import com.fredck.fckeditor.connector.ConnectorServlet;
+import com.fredck.fckeditor.tool.Utils;
+
+/**
+ * Servlet to upload files.<br>
+ * 
+ * This servlet accepts just file uploads, eventually with a parameter
+ * specifying file type
+ * 
+ * @version $Id:SimpleUploaderServlet.java 1099 2007-11-06 15:01:50Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ * @see ConnectorServlet
+ * @deprecated wird laut 2.5 spec vom doPost des connectorservlets erledigt
+ */
+@Deprecated
+public class SimpleUploaderServlet extends HttpServlet {
+
+    private static boolean debug = false;
+    private static boolean enabled = false;
+
+    /**
+     * Initialize the servlet.<br>
+     * Retrieve from the servlet configuration the "baseDir" which is the root
+     * of the file repository:<br>
+     * Also it retrieve all allowed and denied extensions to be handled.
+     */
+    public void init() throws ServletException {
+	debug = Boolean.getBoolean(getInitParameter("debug")); 
+	if (debug)
+	    System.out
+		    .println("\r\n---- SimpleUploaderServlet initialization started ----");
+
+	if (getInitParameter("baseDir") != null)
+	    ConfigurationHandler.setBaseDir(getInitParameter("baseDir"));
+	String realBaseDir = getServletContext().getRealPath("/" +
+		ConfigurationHandler.getBaseDir() + "/");
+	File baseFile = new File(realBaseDir);
+	if (!baseFile.exists()) {
+	    baseFile.mkdirs();
+	}
+	
+	ExtensionsHandler.setExtensionsAllowed(Constants.FILE_TYPE_FILE, getInitParameter("AllowedExtensionsFile"));
+	ExtensionsHandler.setExtensionsDenied(Constants.FILE_TYPE_FILE, getInitParameter("DeniedExtensionsFile"));
+
+	ExtensionsHandler.setExtensionsAllowed(Constants.FILE_TYPE_IMAGE, getInitParameter("AllowedExtensionsImage"));
+	ExtensionsHandler.setExtensionsDenied(Constants.FILE_TYPE_IMAGE, getInitParameter("DeniedExtensionsImage"));
+
+	ExtensionsHandler.setExtensionsAllowed(Constants.FILE_TYPE_FLASH, getInitParameter("AllowedExtensionsFlash"));
+	ExtensionsHandler.setExtensionsDenied(Constants.FILE_TYPE_FLASH, getInitParameter("DeniedExtensionsFlash"));
+
+	if (debug)
+	    System.out
+		    .println("---- SimpleUploaderServlet initialized ----");
+
+    }
+
+    /**
+     * Manage the Upload requests.<br>
+     * 
+     * The servlet accepts commands sent in the following format:<br>
+     * simpleUploader?Type=ResourceType<br>
+     * <br>
+     * It store the file (renaming it in case a file with the same name exists)
+     * and then return an HTML file with a javascript command in it.
+     * 
+     */
+    public void doPost(HttpServletRequest request, HttpServletResponse response)
+	    throws ServletException, IOException {
+
+	if (debug)
+	    System.out.println("--- BEGIN DOPOST ---");
+
+	response.setContentType("text/html; charset=UTF-8");
+	response.setHeader("Cache-Control", "no-cache");
+	PrintWriter out = response.getWriter();
+
+	String typeStr = request.getParameter("Type");
+
+	String currentPath = "/" + ConfigurationHandler.getBaseDir() + "/" + typeStr;
+	currentPath = Utils.replaceAll(currentPath, "//", "/");
+	String currentDirPath = getServletContext().getRealPath(currentPath);
+	currentPath = request.getContextPath() + currentPath;
+
+	if (debug)
+	    System.out.println(currentDirPath);
+
+	String retVal = "0";
+	String newName = "";
+	String fileUrl = "";
+	String errorMessage = "";
+
+	if (enabled) {
+	    FileItemFactory factory = new DiskFileItemFactory();
+	    ServletFileUpload upload = new ServletFileUpload(factory);
+	    try {
+		List items = upload.parseRequest(request);
+
+		Map fields = new HashMap();
+
+		Iterator iter = items.iterator();
+		while (iter.hasNext()) {
+		    FileItem item = (FileItem) iter.next();
+		    if (item.isFormField())
+			fields.put(item.getFieldName(), item.getString());
+		    else
+			fields.put(item.getFieldName(), item);
+		}
+		FileItem uplFile = (FileItem) fields.get("NewFile");
+		String fileNameLong = uplFile.getName();
+		fileNameLong = fileNameLong.replace('\\', '/');
+		String[] pathParts = fileNameLong.split("/");
+		String fileName = pathParts[pathParts.length - 1];
+
+		String nameWithoutExt = Utils.getNameWithoutExtension(fileName);
+		String ext = Utils.getExtension(fileName);
+		File pathToSave = new File(currentDirPath, fileName);
+		fileUrl = currentPath + "/" + fileName;
+		if (ExtensionsHandler.isAllowed(typeStr, ext)) {
+		    int counter = 1;
+		    while (pathToSave.exists()) {
+			newName = nameWithoutExt + "(" + counter + ")" + "."
+				+ ext;
+			fileUrl = currentPath + "/" + newName;
+			retVal = "201";
+			pathToSave = new File(currentDirPath, newName);
+			counter++;
+		    }
+		    uplFile.write(pathToSave);
+		} else {
+		    retVal = "202";
+		    errorMessage = "";
+		    if (debug)
+			System.out.println("Invalid file type: " + ext);
+		}
+	    } catch (Exception ex) {
+		if (debug)
+		    ex.printStackTrace();
+		retVal = "203";
+	    }
+	} else {
+	    retVal = "1";
+	    errorMessage = "This file uploader is disabled. Please check the WEB-INF/web.xml file";
+	}
+
+	out.println("<script type=\"text/javascript\">");
+	out.println("window.parent.OnUploadCompleted(" + retVal + ",'"
+		+ fileUrl + "','" + newName + "','" + errorMessage + "');");
+	out.println("</script>");
+	out.flush();
+	out.close();
+
+	if (debug)
+	    System.out.println("--- END DOPOST ---");
+
+    }
+}
Index: /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/uploader/package.html
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/uploader/package.html	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/java/com/fredck/fckeditor/uploader/package.html	(revision 1287)
@@ -0,0 +1,116 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * File Name: package.html
+ * 	JavaDoc connector documentation.
+ * 
+ * Version:  2.3
+ * Modified: 2005-08-11 16:29:00
+ * 
+ * File Authors:
+ * 		Simone Chiaretta (simo@users.sourceforge.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+  @(#)package.html	1.60 98/01/27
+
+  Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, 
+  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+
+  This software is the confidential and proprietary information of Sun
+  Microsystems, Inc. ("Confidential Information").  You shall not
+  disclose such Confidential Information and shall use it only in
+  accordance with the terms of the license agreement you entered into
+  with Sun.
+
+  CopyrightVersion 1.2
+
+-->
+</head>
+<body bgcolor="white">
+
+Uploader used by the FCKeditor to send files to the server without using the FileBrowser.
+
+<h2>Package Specification</h2>
+
+This servlet is access from the file, image, flash dialogs in FCKeditor.<br>
+To make everything work correctly you have to add the following piece of code in your application's web.xml
+<br>
+<pre>
+	&lt;servlet&gt;
+		&lt;servlet-name&gt;SimpleUploader&lt;/servlet-name&gt;
+		&lt;servlet-class&gt;com.fredck.FCKeditor.uploader.SimpleUploaderServlet&lt;/servlet-class&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;baseDir&lt;/param-name&gt;
+			&lt;param-value&gt;/UserFiles/&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;debug&lt;/param-name&gt;
+			&lt;param-value&gt;true&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;enabled&lt;/param-name&gt;
+			&lt;param-value&gt;false&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;AllowedExtensionsFile&lt;/param-name&gt;
+			&lt;param-value&gt;&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;DeniedExtensionsFile&lt;/param-name&gt;
+			&lt;param-value&gt;php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;AllowedExtensionsImage&lt;/param-name&gt;
+			&lt;param-value&gt;jpg|gif|jpeg|png|bmp&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;DeniedExtensionsImage&lt;/param-name&gt;
+			&lt;param-value&gt;&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;AllowedExtensionsFlash&lt;/param-name&gt;
+			&lt;param-value&gt;swf|fla&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;init-param&gt;
+			&lt;param-name&gt;DeniedExtensionsFlash&lt;/param-name&gt;
+			&lt;param-value&gt;&lt;/param-value&gt;
+		&lt;/init-param&gt;
+		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+	&lt;/servlet&gt;
+	
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;SimpleUploader&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/editor/filemanager/upload/simpleuploader&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;  
+
+</pre>
+<br>
+And put in the fckconfig.js the following line:
+<pre>
+FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ;
+FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;
+FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;
+</pre>
+Also, since the servlet manage a file upload using the Jakarta Common fileupload library, you need to put in your <code>WEB-INF/lib/</code> the <code>commons-fileupload.jar</code>.
+<h2>Related Documentation</h2>
+
+For overviews, tutorials, examples, guides, and tool documentation, please see:
+<ul>
+  <li>_sample/jsp directory for example of how to implement FCKEditor in your application
+</ul>
+
+<!-- Put @see and @since tags down here. -->
+
+</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/resources/META-INF/FCKeditor.tld
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/resources/META-INF/FCKeditor.tld	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/resources/META-INF/FCKeditor.tld	(revision 1287)
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+
+<taglib>
+	<tlibversion>2.3</tlibversion>
+	<jspversion>1.1</jspversion>
+	<shortname>FCKeditor</shortname>
+	<uri>http://fckeditor.net/tags-fckeditor</uri>
+	<info>FCKeditor taglib</info>
+	<tag>
+		<name>editor</name>
+		<tagclass>com.fredck.FCKeditor.tags.FCKeditorTag</tagclass>
+		<bodycontent>JSP</bodycontent>
+		<attribute>
+			<name>id</name>
+			<required>true</required>
+  		</attribute>
+		<attribute>
+			<name>basePath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>toolbarSet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>width</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>height</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>customConfigurationsPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>editorAreaCSS</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>baseHref</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>skinPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>pluginsPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fullPage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>debug</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>autoDetectLanguage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>defaultLanguage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>contentLangDirection</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>enableXHTML</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>enableSourceXHTML</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fillEmptyBlocks</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>formatSource</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>formatOutput</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>formatIndentator</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>geckoUseSPAN</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>startupFocus</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>forcePasteAsPlainText</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>forceSimpleAmpersand</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>tabSpaces</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>useBROnCarriageReturn</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>toolbarStartExpanded</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>toolbarCanCollapse</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontColors</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontNames</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontSizes</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontFormats</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>stylesXmlPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>linkBrowserURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>imageBrowserURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>flashBrowserURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+		<attribute>
+			<name>linkUploadURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+		<attribute>
+			<name>imageUploadURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+		<attribute>
+			<name>flashUploadURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+	</tag>
+</taglib>
Index: /FCKeditor.Java/branches/2.4/src/main/resources/com/fredck/fckeditor/default.properties
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/resources/com/fredck/fckeditor/default.properties	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/resources/com/fredck/fckeditor/default.properties	(revision 1287)
@@ -0,0 +1,29 @@
+## Default properties.
+##
+## @version $Id: default.properties 1184 2008-01-03 10:39:36Z th-schwarz $ 
+## @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+
+# default width of the editor
+fckeditor.width=100%
+
+# default height of the editor
+fckeditor.height=200px
+
+# default toolbar set of the editor
+fckeditor.toolbarset=Default
+
+# directory of the editor relative to the context root (no leading or ending /)
+fckeditor.dir=/fckeditor
+
+# base directory for the user files relative to the context root (no leading or ending /)
+fckeditor.basedir=/userfiles
+
+# allowed and denied extensions for each file type
+fckeditor.file.extensions.allowed=
+fckeditor.file.extensions.denied=php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi
+fckeditor.image.extensions.allowed=jpg|gif|jpeg|png|bmp
+fckeditor.image.extensions.denied=
+fckeditor.flash.extensions.allowed=
+fckeditor.flash.extensions.denied=swf|fla
+fckeditor.media.extensions.allowed=
+fckeditor.media.extensions.denied=
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/tld/FCKeditor.tld
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/tld/FCKeditor.tld	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/tld/FCKeditor.tld	(revision 1287)
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+
+<taglib>
+	<tlibversion>2.3</tlibversion>
+	<jspversion>1.1</jspversion>
+	<shortname>FCKeditor</shortname>
+	<uri>http://fckeditor.net/tags-fckeditor</uri>
+	<info>FCKeditor taglib</info>
+	<tag>
+		<name>editor</name>
+		<tagclass>com.fredck.FCKeditor.tags.FCKeditorTag</tagclass>
+		<bodycontent>JSP</bodycontent>
+		<attribute>
+			<name>id</name>
+			<required>true</required>
+  		</attribute>
+		<attribute>
+			<name>basePath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>toolbarSet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>width</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>height</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>customConfigurationsPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>editorAreaCSS</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>baseHref</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>skinPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>pluginsPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fullPage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>debug</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>autoDetectLanguage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>defaultLanguage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>contentLangDirection</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>enableXHTML</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>enableSourceXHTML</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fillEmptyBlocks</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>formatSource</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>formatOutput</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>formatIndentator</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>geckoUseSPAN</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>startupFocus</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>forcePasteAsPlainText</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>forceSimpleAmpersand</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>tabSpaces</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>useBROnCarriageReturn</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>toolbarStartExpanded</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>toolbarCanCollapse</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontColors</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontNames</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontSizes</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>fontFormats</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>stylesXmlPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>linkBrowserURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>imageBrowserURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute>
+		<attribute>
+			<name>flashBrowserURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+		<attribute>
+			<name>linkUploadURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+		<attribute>
+			<name>imageUploadURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+		<attribute>
+			<name>flashUploadURL</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+  		</attribute> 	
+	</tag>
+</taglib>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/web.xml
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/web.xml	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/web.xml	(revision 1287)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+>
+	<!--
+		The new minimal web.xml. All init parameters known from the 
+		version 2.3 are setted as defaults. You only need to specify these 
+		parameters, if you need different ones.
+		
+		@version $Id:web.xml 1109 2007-11-12 17:26:34 +0000 (Mo, 12 Nov 2007) th-schwarz $
+		@author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+	-->
+
+	<display-name>fckeditor</display-name>
+	<description>FCKeditor.Java Test Application</description>
+
+	<servlet>
+		<servlet-name>Connector</servlet-name>
+		<servlet-class>
+			com.fredck.fckeditor.connector.ConnectorServlet
+		</servlet-class>
+		<load-on-startup>1</load-on-startup>
+	</servlet>
+
+	<servlet-mapping>
+		<servlet-name>Connector</servlet-name>
+		<url-pattern>
+			/fckeditor/editor/filemanager/connectors/*
+		</url-pattern>
+	</servlet-mapping>
+	<jsp-config>
+		<taglib>
+			<taglib-uri>http://fckeditor.net/tags-fckeditor</taglib-uri>
+			<taglib-location>
+				/WEB-INF/tld/FCKeditor.tld
+			</taglib-location>
+		</taglib>
+	</jsp-config>
+</web-app>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/web_old.xml
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/web_old.xml	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/WEB-INF/web_old.xml	(revision 1287)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+
+	
+    <display-name>fckeditor</display-name>
+    <description>
+		FCKeditor.Java Test Application
+    </description>
+  
+	<servlet>
+		<servlet-name>Connector</servlet-name>
+		<servlet-class>com.fredck.FCKeditor.connector.ConnectorServlet</servlet-class>
+		<init-param>
+			<param-name>baseDir</param-name>
+			<param-value>/UserFiles/</param-value>
+		</init-param>
+		<init-param>
+			<param-name>debug</param-name>
+			<param-value>true</param-value>
+		</init-param>
+		<load-on-startup>1</load-on-startup>
+	</servlet>
+
+	<servlet>
+		<servlet-name>SimpleUploader</servlet-name>
+		<servlet-class>com.fredck.FCKeditor.uploader.SimpleUploaderServlet</servlet-class>
+		<init-param>
+			<param-name>baseDir</param-name>
+			<param-value>/UserFiles/</param-value>
+		</init-param>
+		<init-param>
+			<param-name>debug</param-name>
+			<param-value>true</param-value>
+		</init-param>
+		<init-param>
+			<param-name>enabled</param-name>
+			<param-value>false</param-value>
+		</init-param>
+		<init-param>
+			<param-name>AllowedExtensionsFile</param-name>
+			<param-value></param-value>
+		</init-param>
+		<init-param>
+			<param-name>DeniedExtensionsFile</param-name>
+			<param-value>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</param-value>
+		</init-param>
+		<init-param>
+			<param-name>AllowedExtensionsImage</param-name>
+			<param-value>jpg|gif|jpeg|png|bmp</param-value>
+		</init-param>
+		<init-param>
+			<param-name>DeniedExtensionsImage</param-name>
+			<param-value></param-value>
+		</init-param>
+		<init-param>
+			<param-name>AllowedExtensionsFlash</param-name>
+			<param-value>swf|fla</param-value>
+		</init-param>
+		<init-param>
+			<param-name>DeniedExtensionsFlash</param-name>
+			<param-value></param-value>
+		</init-param>
+		<load-on-startup>1</load-on-startup>
+	</servlet>
+	
+	<servlet-mapping>
+		<servlet-name>Connector</servlet-name>
+		<url-pattern>/fckeditor/editor/filemanager/connectors/*</url-pattern>
+	</servlet-mapping>
+
+	<servlet-mapping>
+		<servlet-name>SimpleUploader</servlet-name>
+		<url-pattern>/editor/filemanager/upload/simpleuploader/*</url-pattern>
+	</servlet-mapping>
+
+</web-app>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/index.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/index.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/index.jsp	(revision 1287)
@@ -0,0 +1,35 @@
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ *
+ * File Authors:
+ * 		Simone Chiaretta (simo@users.sourceforge.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html>
+	<head>
+		<title>FCKeditor - Samples</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+	</head>
+	<frameset rows="60,*">
+		<frame src="sampleslist.jsp" noresize scrolling="no">
+		<frame name="Sample" src="jsp/sample01.jsp" noresize>
+	</frameset>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample01.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample01.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample01.jsp	(revision 1287)
@@ -0,0 +1,57 @@
+<%@ page language="java" import="com.fredck.fckeditor.*" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * File Authors:
+ * 		Simone Chiaretta (simo@users.sourceforge.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - JSP Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css" />
+		<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	window.status = editorInstance.Description ;
+}
+
+		</script>
+	</head>
+	<body>
+		<h1>FCKeditor - JSP - Sample 1</h1>
+		This sample displays a normal HTML form with an FCKeditor with full features 
+		enabled.
+		<hr>
+		<form action="sampleposteddata.jsp" method="get" target="_blank">
+<%
+FCKeditor oFCKeditor ;
+oFCKeditor = new FCKeditor( request, "EditorDefault" ) ;
+oFCKeditor.setValue( "This is some <strong>sample text</strong>. You are using <a href=\"http://www.fredck.com/fckeditor/\">FCKeditor</a>." );
+out.println( oFCKeditor.create() ) ;
+%>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample02.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample02.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample02.jsp	(revision 1287)
@@ -0,0 +1,62 @@
+<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * @version $Id: sample02.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - JSP Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css" />
+		<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	window.status = editorInstance.Description ;
+}
+
+		</script>
+	</head>
+	<body>
+		<h1>FCKeditor - JSP - Sample 2</h1>
+		This sample displays a normal HTML form with an FCKeditor with full features enabled.<br>
+		This sample uses the FCKeditor Taglib: this method is preferred to <a href="sample01.jsp">the API version</a><br>
+		All other sample pages will use this method.
+		<hr>
+		<form action="sampleposteddata.jsp" method="get" target="_blank">
+			<FCK:editor id="EditorDefault"
+				imageBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/jsp/connector"
+				linkBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Connector=../../connectors/jsp/connector"
+				flashBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/jsp/connector"
+				imageUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Image"
+				linkUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=File"
+				flashUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
+				This is some <strong>sample text</strong>. You are using <a href="http://www.fredck.com/fckeditor/">FCKeditor</a>.
+			</FCK:editor>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample03.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample03.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample03.jsp	(revision 1287)
@@ -0,0 +1,112 @@
+<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * @version $Id: sample03.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - JSP Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css">
+			<script type="text/javascript" src="../../fckeditor.js"></script>
+			<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	var oCombo = document.getElementById( 'cmbLanguages' ) ;
+	for ( code in editorInstance.Language.AvailableLanguages )
+	{
+		AddComboOption( oCombo, editorInstance.Language.AvailableLanguages[code] + ' (' + code + ')', code ) ;
+	}
+	oCombo.value = editorInstance.Language.ActiveLanguage.Code ;
+}	
+
+function AddComboOption(combo, optionText, optionValue)
+{
+	var oOption = document.createElement("OPTION") ;
+
+	combo.options.add(oOption) ;
+
+	oOption.innerHTML = optionText ;
+	oOption.value     = optionValue ;
+	
+	return oOption ;
+}
+
+function ChangeLanguage( languageCode )
+{
+	window.location.href = window.location.pathname + "?code=" + languageCode ;
+}
+			</script>
+	</head>
+<%
+String autoDetectLanguageStr;
+String defaultLanguageStr;
+
+String codeStr=request.getParameter("code");
+if(codeStr==null) {
+	autoDetectLanguageStr="true";
+	defaultLanguageStr="en";
+}
+else {
+	autoDetectLanguageStr="false";
+	defaultLanguageStr=codeStr;
+}
+
+%>	
+	<body>
+		<h1>FCKeditor - JSP - Sample 3</h1>
+		This sample shows the editor in all it's available languages.<br>
+		The Language dropdown is populated with JavaScript API.
+		<hr>
+		<table cellpadding="0" cellspacing="0" border="0">
+			<tr>
+				<td>
+					Select a language:&nbsp;
+				</td>
+				<td>
+					<select id="cmbLanguages" onchange="ChangeLanguage(this.value);">
+					</select>
+				</td>
+			</tr>
+		</table>
+		<br>
+		<form action="sampleposteddata.jsp" method="get" target="_blank">
+			<FCK:editor id="EditorDefault"
+				autoDetectLanguage="<%=autoDetectLanguageStr%>"
+				defaultLanguage="<%=defaultLanguageStr%>"
+				imageBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/jsp/connector"
+				linkBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Connector=../../connectors/jsp/connector"
+				flashBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/jsp/connector"
+				imageUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Image"
+				linkUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=File"
+				flashUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
+				This is some <strong>sample text</strong>. You are using <a href="http://www.fredck.com/fckeditor/">FCKeditor</a>.
+			</FCK:editor>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample04.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample04.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample04.jsp	(revision 1287)
@@ -0,0 +1,91 @@
+<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * @version $Id: sample04.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - JSP Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css">
+			<script type="text/javascript" src="../../fckeditor.js"></script>
+			<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	var oCombo = document.getElementById( 'cmbToolbars' ) ;
+	oCombo.value = editorInstance.ToolbarSet.Name ;
+	oCombo.style.visibility = '' ;
+}
+
+function ChangeLanguage( languageCode )
+{
+	window.location.href = window.location.pathname + "?toolbar=" + languageCode ;
+}
+
+			</script>
+	</head>
+<%
+
+String toolBarSetStr=request.getParameter("toolbar");
+if(toolBarSetStr==null) {
+	toolBarSetStr="";
+}
+
+%>	
+	<body>
+		<h1>FCKeditor - JSP - Sample 4</h1>
+		This sample shows how to change the editor toolbar.
+		<hr>
+		<table cellpadding="0" cellspacing="0" border="0">
+			<tr>
+				<td>
+					Select the toolbar to load:&nbsp;
+				</td>
+				<td>
+					<select id="cmbToolbars" onchange="ChangeLanguage(this.value);" style="VISIBILITY: hidden">
+						<option value="Default" selected>Default</option>
+						<option value="Basic">Basic</option>
+					</select>
+				</td>
+			</tr>
+		</table>
+		<br>
+		<form action="sampleposteddata.jsp" method="get" target="_blank">
+			<FCK:editor id="EditorDefault" 
+				toolbarSet="<%=toolBarSetStr%>"
+				imageBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/jsp/connector"
+				linkBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Connector=../../connectors/jsp/connector"
+				flashBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/jsp/connector"
+				imageUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Image"
+				linkUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=File"
+				flashUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
+				This is some <strong>sample text</strong>. You are using <a href="http://www.fredck.com/fckeditor/">FCKeditor</a>.
+			</FCK:editor>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample05.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample05.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample05.jsp	(revision 1287)
@@ -0,0 +1,95 @@
+<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * @version $Id: sample05.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - JSP Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css">
+			<script type="text/javascript" src="../../fckeditor.js"></script>
+			<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	var oCombo = document.getElementById( 'cmbSkins' ) ;
+	
+	// Get the active skin.
+	var sSkin = editorInstance.Config['SkinPath'] ;
+	sSkin = sSkin.match( /[^\/]+(?=\/$)/g ) ;
+	
+	oCombo.value = sSkin ;
+	oCombo.style.visibility = '' ;
+}
+
+function ChangeLanguage( languageCode )
+{
+	window.location.href = window.location.pathname + "?skin=" + languageCode ;
+}
+
+			</script>
+	</head>
+<%
+
+String skinStr=request.getParameter("skin");
+if(skinStr!=null) 
+	skinStr= "/fckeditor/" + "editor/skins/" + skinStr + "/"; 	//basePath +  constant relative skin path + skinName 
+%>	
+	<body>
+		<h1>FCKeditor - JSP - Sample 5</h1>
+		This sample shows how to change the editor skin.
+		<hr>
+		<table cellpadding="0" cellspacing="0" border="0">
+			<tr>
+				<td>
+					Select the skin to load:&nbsp;
+				</td>
+				<td>
+					<select id="cmbSkins" onchange="ChangeLanguage(this.value);" style="VISIBILITY: hidden">
+						<option value="default" selected>Default</option>
+						<option value="office2003">Office 2003</option>
+						<option value="silver">Silver</option>
+					</select>
+				</td>
+			</tr>
+		</table>
+		<br>
+		<form action="sampleposteddata.jsp" method="get" target="_blank">
+			<FCK:editor id="EditorDefault"
+				skinPath="<%=skinStr%>"
+				imageBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/jsp/connector"
+				linkBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Connector=../../connectors/jsp/connector"
+				flashBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/jsp/connector"
+				imageUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Image"
+				linkUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=File"
+				flashUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
+				This is some <strong>sample text</strong>. You are using <a href="http://www.fredck.com/fckeditor/">FCKeditor</a>.
+			</FCK:editor>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample06.config.js
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample06.config.js	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample06.config.js	(revision 1287)
@@ -0,0 +1,49 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * File Name: sample06.config.js
+ * 	Sample custom configuration settings used in the plugin sample page (sample06).
+ * 
+ * @version $Id: sample06.config.js 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+
+// Set our sample toolbar.
+FCKConfig.ToolbarSets['PluginTest'] = [
+	['Source'],
+	['My_Find','My_Replace','-','Placeholder'],
+	//['Table','-','TableInsertRow','TableDeleteRows','TableInsertColumn','TableDeleteColumns','TableInsertCell','TableDeleteCells','TableMergeCells','TableSplitCell'],
+	['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
+] ;
+
+// Change the default plugin path.
+FCKConfig.PluginsPath = FCKConfig.BasePath.substr(0, FCKConfig.BasePath.length - 7) + '_samples/_plugins/' ;
+
+// Add our plugin to the plugins list.
+//		FCKConfig.Plugins.Add( pluginName, availableLanguages )
+//			pluginName: The plugin name. The plugin directory must match this name.
+//			availableLanguages: a list of available language files for the plugin (separated by a comma).
+FCKConfig.Plugins.Add( 'findreplace', 'en,it' ) ;
+
+// If you want to use plugins found on other directories, just use the third parameter.
+var sOtherPluginPath = FCKConfig.BasePath.substr(0, FCKConfig.BasePath.length - 7) + 'editor/plugins/' ;
+FCKConfig.Plugins.Add( 'placeholder', 'en,it', sOtherPluginPath ) ;
+//FCKConfig.Plugins.Add( 'tablecommands', 'en,it', sOtherPluginPath ) ;
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample06.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample06.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample06.jsp	(revision 1287)
@@ -0,0 +1,59 @@
+<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ *
+ * @version $Id: sample06.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css" />
+		<script type="text/javascript" src="../../fckeditor.js"></script>
+	</head>
+	<body>
+		<h1>FCKeditor - JSP - Sample 6</h1>
+		This sample shows a sample plugin implementation.
+		<br>
+		These are sample "Find" and "Replace" plugin that do exactly the same thing that the built in ones do. Use the green toolbar buttons the test then.
+		<br>
+		There is also another sample plugin that is available in the package: the "Placeholder" command (use the yellow icon).
+		<hr>
+		<form action="sampleposteddata.jsp" method="post" target="_blank">
+			<FCK:editor id="EditorDefault"
+				toolbarSet="PluginTest"
+				customConfigurationsPath="/jsp/sample06.config.js"
+				imageBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/jsp/connector"
+				linkBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Connector=../../connectors/jsp/connector"
+				flashBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/jsp/connector"
+				imageUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Image"
+				linkUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=File"
+				flashUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
+				This is some <strong>sample text</strong>. You are using <a href="http://www.fredck.com/fckeditor/">FCKeditor</a>.
+			</FCK:editor>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample07.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample07.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sample07.jsp	(revision 1287)
@@ -0,0 +1,54 @@
+<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ *
+ * @version $Id: sample07.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+-->
+<html>
+	<head>
+		<title>FCKeditor - Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css" />
+		<script type="text/javascript" src="../../fckeditor.js"></script>
+	</head>
+	<body>
+		<h1>FCKeditor - JSP - Sample 7</h1>
+		In this sample the user can edit the complete page contents and header (from 
+		&lt;HTML&gt; to &lt;/HTML&gt;).
+		<hr>
+		<form action="sampleposteddata.jsp" method="post" target="_blank">
+			<FCK:editor id="EditorDefault"
+				fullPage="true"
+				imageBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/jsp/connector"
+				linkBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Connector=../../connectors/jsp/connector"
+				flashBrowserURL="/fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/jsp/connector"
+				imageUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Image"
+				linkUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=File"
+				flashUploadURL="/fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
+				<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Full Page Test</title><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/></head><body>This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.</body></html>
+			</FCK:editor>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sampleposteddata.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sampleposteddata.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/jsp/sampleposteddata.jsp	(revision 1287)
@@ -0,0 +1,60 @@
+<%@ page language="java" import="java.util.*" %>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ *
+ * @version $Id: sampleposteddata.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author Simone Chiaretta (simo@users.sourceforge.net)
+-->
+<%
+	Enumeration params = request.getParameterNames();
+%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html>
+	<head>
+		<title>FCKeditor - Samples - Posted Data</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css" />
+	</head>
+	<body>
+		<h1>FCKeditor - Samples - Posted Data</h1>
+		This page lists all data posted by the form.
+		<hr>
+		<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
+			<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
+				<td noWrap>Field Name&nbsp;&nbsp;</td>
+				<td>Value</td>
+			</tr>
+			<%
+			String parameter = null ;
+			while( params.hasMoreElements() )
+			{
+				parameter = (String) params.nextElement() ;
+			%>
+			<tr>
+				<td valign="top" nowrap><b><%=parameter%></b></td>
+				<td width="100%"><%=request.getParameter(parameter)%></td>
+			</tr>
+			<%
+			}
+			%>
+		</table>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/sample.css
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/sample.css	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/sample.css	(revision 1287)
@@ -0,0 +1,25 @@
+/* @Packager.Header
+<FileDescription>
+	Styles used in the samples pages.
+</FileDescription>
+<Author name="Frederico Caldeira Knabben" email="fckeditor@fredck.com" />
+*/
+
+body, td, input, select, textarea
+{
+	font-size: 12px;
+	font-family: Arial, Verdana, Sans-Serif;
+}
+
+h1
+{
+	font-weight: bold;
+	font-size: 180%;
+	margin-bottom: 10px;
+}
+
+form
+{
+	margin: 0px 0px 0px 0px;
+	padding: 0px 0px 0px 0px;
+}
Index: /FCKeditor.Java/branches/2.4/src/main/webapp/sampleslist.jsp
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/webapp/sampleslist.jsp	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/main/webapp/sampleslist.jsp	(revision 1287)
@@ -0,0 +1,70 @@
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ * 
+ * File Name: sampleslist.html
+ * 	FCKeditor samples list.
+ * 
+ * @version $Id: sampleslist.jsp 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ *   
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - Sample Selection</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="sample.css" rel="stylesheet" type="text/css" />
+		<script language="javascript">
+<!--
+
+if ( window.top == window )
+	document.location = 'index.jsp' ;
+
+function OpenSample( sample )
+{
+	if ( sample.length > 0 )
+		window.open( sample, 'Sample' ) ;
+}
+
+//-->
+		</script>
+	</head>
+	<body bottommargin="0" topmargin="0">
+		<table height="100%" border="0" cellpadding="0" cellspacing="0">
+			<tr>
+				<td>
+					Please select the sample you want to view:
+					<br>
+					<select onchange="OpenSample(this.value);">
+						<option value="jsp/sample01.jsp" selected>JSP : Sample 01 : Editor with all features generated via API</option>
+						<option value="jsp/sample02.jsp">JSP : Sample 02 : Editor with all features generated with JSP Taglib</option>
+						<option value="jsp/sample03.jsp">JSP : Sample 03 : Multi-language support</option>
+						<option value="jsp/sample04.jsp">JSP : Sample 04 : Toolbar selection</option>
+						<option value="jsp/sample05.jsp">JSP : Sample 05 : Skins support</option>
+						<option value="jsp/sample06.jsp">JSP : Sample 06 : Plugins support</option>
+						<option value="jsp/sample07.jsp">JSP : Sample 07 : Full Page editing</option>
+					</select>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/TEstScl.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/TEstScl.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/TEstScl.java	(revision 1287)
@@ -0,0 +1,23 @@
+package com.fredck.fckeditor.tool;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+import java.util.ResourceBundle;
+
+public class TEstScl {
+	
+	public static void main(String[] args) throws IOException {
+		
+		Properties pros = new Properties();
+		InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/fredck/fckeditor/default.properties");
+		//InputStream is = Properties.class.getClassLoader().getResourceAsStream("/com/fredck/fckeditor/default.properties");
+		ResourceBundle bundle = ResourceBundle.getBundle("com.fredck.fckeditor.default");
+		
+		pros.load(is);
+		System.out.println(pros.getProperty("fckeditor.dir"));
+		System.out.println(bundle.getString("fckeditor.dir"));
+		
+	}
+
+}
Index: /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/Util_getSet.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/Util_getSet.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/Util_getSet.java	(revision 1287)
@@ -0,0 +1,62 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor.tool;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link Utils#getSet(String, String)}.
+ *
+ * @version $Id: Util_getSet.java 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class Util_getSet extends TestCase {
+
+    public void test_getSet01() throws Exception {
+	Set set = new HashSet();
+	set.add("a");
+	set.add("ab");
+	set.add("c");
+	
+	Set newSet = Utils.getSet("a|Ab|c", "|");
+	for (Iterator iterator = newSet.iterator(); iterator.hasNext();) {
+	    String val = (String) iterator.next();
+	    assertEquals(true, set.contains(val));
+	}
+    }
+    
+    public void test_getSet02() throws Exception {
+	Set set = new HashSet();
+	set.add("png");
+	set.add("jpg");
+	set.add("gif");
+	
+	Set newSet = Utils.getSet("png|jpg|gif");
+	for (Iterator iterator = newSet.iterator(); iterator.hasNext();) {
+	    String val = (String) iterator.next();
+	    assertEquals(true, set.contains(val));
+	}
+    }
+}
Index: /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/Util_replace.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/Util_replace.java	(revision 1287)
+++ /FCKeditor.Java/branches/2.4/src/test/java/com/fredck/fckeditor/tool/Util_replace.java	(revision 1287)
@@ -0,0 +1,52 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ * 
+ * == BEGIN LICENSE ==
+ * 
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ * 
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ * 
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ * 
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ * 
+ * == END LICENSE ==
+ */
+package com.fredck.fckeditor.tool;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link Utils#replaceAll(String, String, String)};
+ *
+ * @version $Id: Util_replace.java 1184 2008-01-03 10:39:36Z th-schwarz $
+ * @author <a href="mailto:th-schwarz@users.sourceforge.net">Thilo Schwarz</a>
+ */
+public class Util_replace extends TestCase {
+
+    public void test_replace01() {
+	String str =  Utils.replaceAll("//a/b//c", "//", "/");
+	assertEquals(str, "/a/b/c");
+    }
+    
+    public void test_replace02() {
+	String str = Utils.replaceAll(null, "a", "c");
+	assertEquals(str, "");
+    }
+
+    public void test_replace03() {
+	String str = Utils.replaceAll("foo", null, "c");
+	assertEquals(str, "foo");
+    }
+
+    public void test_replace04() {
+	String str = Utils.replaceAll("foo", "o", "a");
+	assertEquals(str, "faa");
+    }
+}
