You are viewing a plain text version of this content. The canonical link for it is here.
Posted to easyant-commits@incubator.apache.org by jl...@apache.org on 2011/03/06 21:48:22 UTC

svn commit: r1078591 [1/3] - in /incubator/easyant/site: ./ production/ sources/ sources/images/ sources/js/ sources/style/ sources/xooki/ sources/xooki/images/ sources/xooki/tiddly/ sources/xooki/trimpath/ staging/

Author: jlboudart
Date: Sun Mar  6 21:48:20 2011
New Revision: 1078591

URL: http://svn.apache.org/viewvc?rev=1078591&view=rev
Log:
Adding first draft of easyant's  website

Added:
    incubator/easyant/site/
    incubator/easyant/site/module.ant
    incubator/easyant/site/module.ivy
    incubator/easyant/site/production/
    incubator/easyant/site/sources/
    incubator/easyant/site/sources/config.js
    incubator/easyant/site/sources/contact.html
    incubator/easyant/site/sources/faq.html
    incubator/easyant/site/sources/features.html
    incubator/easyant/site/sources/images/
    incubator/easyant/site/sources/images/blank.gif   (with props)
    incubator/easyant/site/sources/images/bullet.gif   (with props)
    incubator/easyant/site/sources/images/closed.gif   (with props)
    incubator/easyant/site/sources/images/down.png   (with props)
    incubator/easyant/site/sources/images/easyant.jpg   (with props)
    incubator/easyant/site/sources/images/img01.gif   (with props)
    incubator/easyant/site/sources/images/img02.jpg   (with props)
    incubator/easyant/site/sources/images/img03.gif   (with props)
    incubator/easyant/site/sources/images/img04.gif   (with props)
    incubator/easyant/site/sources/images/img05.gif   (with props)
    incubator/easyant/site/sources/images/img06.gif   (with props)
    incubator/easyant/site/sources/images/img07.gif   (with props)
    incubator/easyant/site/sources/images/img08.gif   (with props)
    incubator/easyant/site/sources/images/img09.gif   (with props)
    incubator/easyant/site/sources/images/info.gif   (with props)
    incubator/easyant/site/sources/images/java-webapp-src-structure.gif   (with props)
    incubator/easyant/site/sources/images/logo.gif   (with props)
    incubator/easyant/site/sources/images/open.gif   (with props)
    incubator/easyant/site/sources/images/phases.jpg   (with props)
    incubator/easyant/site/sources/images/spacer.gif   (with props)
    incubator/easyant/site/sources/index.html
    incubator/easyant/site/sources/js/
    incubator/easyant/site/sources/js/jquery.pack.js
    incubator/easyant/site/sources/js/jquery.treeview.js
    incubator/easyant/site/sources/printTemplate.html
    incubator/easyant/site/sources/reference.html
    incubator/easyant/site/sources/sortable.js
    incubator/easyant/site/sources/style/
    incubator/easyant/site/sources/style/style.css
    incubator/easyant/site/sources/style/tree.css
    incubator/easyant/site/sources/template.html
    incubator/easyant/site/sources/toc.json
    incubator/easyant/site/sources/xooki/
    incubator/easyant/site/sources/xooki/antlib.xml
    incubator/easyant/site/sources/xooki/blankPageTpl.html
    incubator/easyant/site/sources/xooki/images/
    incubator/easyant/site/sources/xooki/images/addchild.gif   (with props)
    incubator/easyant/site/sources/xooki/images/debug.gif   (with props)
    incubator/easyant/site/sources/xooki/images/delete.gif   (with props)
    incubator/easyant/site/sources/xooki/images/down.gif   (with props)
    incubator/easyant/site/sources/xooki/images/edit.gif   (with props)
    incubator/easyant/site/sources/xooki/images/save.gif   (with props)
    incubator/easyant/site/sources/xooki/images/up.gif   (with props)
    incubator/easyant/site/sources/xooki/messages.json
    incubator/easyant/site/sources/xooki/tiddly/
    incubator/easyant/site/sources/xooki/tiddly/util.js
    incubator/easyant/site/sources/xooki/trimpath/
    incubator/easyant/site/sources/xooki/trimpath/template.js
    incubator/easyant/site/sources/xooki/xooki.js
    incubator/easyant/site/sources/xooki/xookiEdit.js
    incubator/easyant/site/staging/

Added: incubator/easyant/site/module.ant
URL: http://svn.apache.org/viewvc/incubator/easyant/site/module.ant?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/module.ant (added)
+++ incubator/easyant/site/module.ant Sun Mar  6 21:48:20 2011
@@ -0,0 +1,42 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<project xmlns:ea="antlib:org.apache.easyant" >
+    
+    <property name="staging.directory" value="./staging"/>
+    <property name="src.documentation.dir" value="./sources"/>
+    <!-- this avoid creation of mispelled directory when xooki make resources processing -->
+    <property name="target" value="target"/>
+
+    <ea:bindtarget target="xooki:generate" tophase="publish-local"/>
+
+    <target name="update-staging-site" depends="xooki:generate" phase="publish-shared">
+        <!-- 
+	    	by default local website is generated in target/documentation, 
+		    so when promoting we should stage the content of this directory
+        -->  
+        <copy todir="${staging.directory}">
+            <fileset dir="${target.documentation.dir}"/>
+        </copy>
+    	<!-- todo invoke svn add / svn commit -->
+    </target>
+
+
+    <target name="update-production-site" phase="release">
+        <!-- not implemented but we can easily use svnmerge.py -->
+    </target>
+
+</project>

Added: incubator/easyant/site/module.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/site/module.ivy?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/module.ivy (added)
+++ incubator/easyant/site/module.ivy Sun Mar  6 21:48:20 2011
@@ -0,0 +1,27 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
+    <info organisation="org.apache.easyant" module="site" status="integration" revision="0.1">
+        <ea:plugin module="phases-std" revision="0.2"/>
+		<ea:plugin module="xooki" revision="0.1" />
+	</info>
+	<configurations>
+		<conf name="default" visibility="public" description="runtime dependencies artifact can be used with this conf"/>
+		<conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
+		<conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
+	</configurations>
+</ivy-module>

Added: incubator/easyant/site/sources/config.js
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/config.js?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/config.js (added)
+++ incubator/easyant/site/sources/config.js Sun Mar  6 21:48:20 2011
@@ -0,0 +1,23 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+xooki.util.mix({debug:true, 
+    shortcuts: {
+        svn: {pre: 'http://svn.easyant.org/trunk/'},
+        ant: {pre: xooki.c.relativeRoot+'use/', post:'.html'}
+    }
+}, xooki.c, false);

Added: incubator/easyant/site/sources/contact.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/contact.html?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/contact.html (added)
+++ incubator/easyant/site/sources/contact.html Sun Mar  6 21:48:20 2011
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<html>
+<head>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+    <script type="text/javascript">var xookiConfig = {level: 0};</script>   
+    <script type="text/javascript" src="xooki/xooki.js"></script>
+</head>
+<body>
+    <textarea id="xooki-source">
+<br />
+<h3>Easyant Mailing List</h3>
+<p />
+You can find the Easyant mailing list here: <a href="http://groups.google.com/group/easyant"/>Easyant Mailing List</a>.
+Feel free to participate, ask a problem or share ideas!
+
+<h3>Easyant Notifications: </h3>
+<p />
+notifications@& is a fairly high traffic mailing list for ticket changes. Every time a easyant ticket is modified a new message is posted on this list. You can subscribe to this list <a href="http://easyant.org/mailman/listinfo/notifications">here</a>. Archives are available <a href="http://easyant.org/pipermail/notifications">here</a>.
+
+<h3>Easyant on IRC:</h3>
+<p />
+We've registered an IRC channel on the freenode network for informal easyant discussions, asking questions or just hanging out and "socializing".
+
+The channel is #easyant on irc.freenode.net.
+
+Drop by if you are interested in the development of easyant, have a quick question or just want to get to know the people developing and using it. If you're new to IRC, be sure to learn how to get answers. A free web irc client is available here http://www.mibbit.com/.</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/easyant/site/sources/faq.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/faq.html?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/faq.html (added)
+++ incubator/easyant/site/sources/faq.html Sun Mar  6 21:48:20 2011
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<html>
+<head>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+    <script type="text/javascript">var xookiConfig = {level: 0};</script>   
+    <script type="text/javascript" src="xooki/xooki.js"></script>
+</head>
+<body>
+    <textarea id="xooki-source">
+<h1>Frequently Asked Questions</h1>
+
+<h2>How can i configure a new repository?</h2>
+Reporitories are defined in the <i>resolvers</i> node of an ivysettings file.
+Each dependency resolver is identified by its name, given as an attribute.
+The child tag used for the dependency resolver must be equal to a name of a dependency resolver type (either built-in or added with the typedef tag).
+
+Ivy comes with a set of built-in dependency resolvers able to answer to the most common needs like (non exhaustive)  :
+<ul>
+  <li>filesystem</li>
+  <li>ssh</li>
+  <li>ftp</li>
+  <li>url</li>
+  <li>ibiblio (maven repository)</li> 
+</ul>
+Example
+<code type="xml">
+<resolvers>
+  <filesystem name="1" cache="cache-1">
+    <ivy pattern="${ivy.settings.dir}/1/[organisation]/[module]/ivys/ivy-[revision].xml"/>
+    <artifact pattern="${ivy.settings.dir}/1/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
+  </filesystem>
+  <chain name="chain1">
+    <resolver ref="1"/>
+    <ivyrep name="ivyrep"/>
+  </chain>
+  <chain name="chain2" returnFirst="true" dual="true">
+    <resolver ref="1"/>
+    <ibiblio name="ibiblio"/>
+  </chain>
+</resolvers>
+</code>
+Defines a filesystem resolver, named '1', which is then used in two chains, the first which seconds the filesystem resolver with an ivyrep resolver, and second which seconds the filesystem resolver with an ibiblio resolver, and which returns the first module found, and uses the whole chain to download artifacts (see corresponding resolvers documentation for details about them). Resolver 1 will use a cache named 'cache-1' which should have been defined under the caches element.
+You can find more details <a href="http://ant.apache.org/ivy/history/latest-milestone/settings/resolvers.html">here</a>
+
+<h2>Does EasyAnt support Maven repositories?</h2>
+Yes you can use Maven-like repositories by configuring an ibiblio resolver.
+<code type="xml">
+<ibiblio name="my-maven-repository" m2compatible="true"/>
+</code>
+
+<h2>How can i reuse my maven local repository</h2>
+If you find yourself wanting to reuse artifacts that you already have locally in your Maven2 repository, then you can add this line to your ivysettings :
+<code type="xml">
+<ibiblio name="maven-local" root="file:${user.home}/.m2/repository/" m2compatible="true"/>
+</code>
+<h2>Can i publish to a maven repository?</h2>
+No, unfortunately this feature will be available in 0.8 release.
+
+<h2>How can i disable a module?</h2>
+You can disable a module by setting a magic property composed with the following syntax  like :
+<ul>
+  <li>skip.[mrid]</li>
+  <li>skip.[organisation]#[module];[revision]</li>
+  <li>skip.[as] (where as is the module alias name)</li>
+</ul>
+Example : 
+Suppose we have a plugin declared like
+<code type="xml">
+<plugin org="mycompany" module="foobar" rev="0.1" as="myalias"/>
+</code>
+You can disable the plugin by setting one of the following property to true:
+<ul>
+  <li>skip.mycompany#foobar;0.1</li>
+  <li>skip.myalias</li>
+</ul>
+<code type="shell">> easyant -Dskip.mycompany#foobar;0.1=true</code>
+or 
+<code type="shell">> easyant -Dskip.myalias=true</code>
+
+<h2>How can i generate publish a javadoc.jar ?</h2>
+To generate the javadoc you have to declare the plugin in your module.ivy file.
+<code type="xml">
+  <ea:plugin module="javadoc" rev="0.1" as="javadoc" />
+</code>
+This plugin provides a few targets related to the javadoc.
+Then you can ask easyant that you want the javadoc to be part of your project lifecycle. For example you may want to generate and publish a javadoc.jar.
+This can be done by using bindtarget like this :
+<code type="xml">
+  <ea:bindtarget target="javadoc:package" tophase="package" />
+</code>
+What happens behind ? The javadoc:package target is attached to package phase. The jar is produced, if we're in a publication context (when calling publish-local, publish-shared, release) the right informations are generated on the published module.ivy file.
+
+<h2>I have an existing ant distribution installed can i reused it ?</h2>
+Since EasyAnt 0.8, we use an ant distribution shipped with easyant by default.
+
+If you want to reuse your own ant installation you will add the "--use-custom-ant-" argument on the command line.
+<code type="shell">
+  > easyant --use-custom-ant
+</code>
+
+Then, if ANT_HOME environment variable is correctly set or if you have a standard ant installation, easyant will use it.
+
+If your ant distribution is 1.8.0 or higher, you can reuse it.
+Otherwise you can't because EasyAnt uses features introduced in ant 1.8 (like include / extentionOf).
+
+<h2>I have files in my $HOME/.ant/lib directory that seems to be in conflict with easyant. How can i avoid this ? </h2>
+You just need to use the "-nouserlib" option
+exemple :
+<code type="shell">
+  > easyant -nouserlib
+</code>
+
+<h2>Why does EasyAnt uses two ivy instance?</h2>
+As you should know EasyAnt uses ivy as a dependency manager.
+EasyAnt uses two ivy instance :
+<ol>
+  <li>used to resolve/retrieve EasyAnt modules (which can be buildtypes/ plugins or skeletons) dependencies</li>
+  <li>used to resolve/retrieve project dependencies</li>
+</ol>
+There is a strong separation of context, this means that plugins dependencies will not be polluting your project.
+Both instance are configurable. 
+<ul>
+  <li>Project ivy instance can be configured through an ivysettings file defined through properties. Click <a href="ref/ProjectIvyInstance.html">here</a> if you want more details.</li>
+  <li>EasyAnt ivy instance can be configured through an ivysettings file defined in easyant-config. Click <a href="ref/EasyAntconfigurationfile.html">here</a> if you want more details.</li>
+</ul>
+
+</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/easyant/site/sources/features.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/features.html?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/features.html (added)
+++ incubator/easyant/site/sources/features.html Sun Mar  6 21:48:20 2011
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<html>
+<head>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+    <script type="text/javascript">var xookiConfig = {level: 0};</script>   
+    <script type="text/javascript" src="xooki/xooki.js"></script>
+</head>
+<body>
+    <textarea id="xooki-source">
+<h1>Features</h1>
+
+Easyant is a toolbox focusing on easing project build processes.
+It's based on Apache Ant and Apache Ivy, and allows for maximum flexibily, improved integration in existing build systems and provides conventions and guidelines.
+
+If you don't see why you should use a flexible build-system at all, or have any question concerning EasyAnt in general, have a look at the <a href="faq.html">FAQ</a> and at the Mailing lists.</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/easyant/site/sources/images/blank.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/blank.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/blank.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/bullet.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/bullet.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/bullet.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/closed.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/closed.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/closed.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/down.png
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/down.png?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/down.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/easyant.jpg
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/easyant.jpg?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/easyant.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img01.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img01.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img01.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img02.jpg
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img02.jpg?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img02.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img03.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img03.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img03.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img04.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img04.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img04.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img05.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img05.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img05.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img06.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img06.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img06.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img07.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img07.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img07.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img08.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img08.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img08.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/img09.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/img09.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/img09.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/info.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/info.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/info.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/java-webapp-src-structure.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/java-webapp-src-structure.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/java-webapp-src-structure.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/logo.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/logo.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/logo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/open.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/open.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/open.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/phases.jpg
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/phases.jpg?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/phases.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/images/spacer.gif
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/images/spacer.gif?rev=1078591&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/easyant/site/sources/images/spacer.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/easyant/site/sources/index.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/index.html?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/index.html (added)
+++ incubator/easyant/site/sources/index.html Sun Mar  6 21:48:20 2011
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<html>
+<head>
+    <script type="text/javascript">var xookiConfig = {level: 0};</script>   
+    <script type="text/javascript" src="xooki/xooki.js"></script>
+</head>
+<body>
+    <textarea id="xooki-source">
+<h1>Documentation</h1>
+Welcome to the official EasyAnt documentation.
+
+<h2>What is EasyAnt</h2>
+
+Easyant is a toolbox focusing on easing project build processes.
+It's based on <a href="http://ant.apache.org">Apache Ant</a> and <a href="http://ant.apache.org/ivy/">Apache Ivy</a>, and allows for maximum flexibily, improved integration in existing build systems and provides conventions and guidelines.
+
+Our goals are :
+<ul>
+    <li>to leverage popularity and flexibility of Ant.</li>
+    <li>to integrate Apache Ivy, such that the build system combines a ready-to-use dependency manager.</li>
+    <li>to simplify standard build types, such as building web applications, JARs etc, by providing ready to use builds.</li>
+    <li>to provide conventions and guidelines.</li>
+    <li>to make plugging-in of fresh functionalities as easy as writing Ant scripts.</li>
+</ul>
+
+To still remain adaptable, 
+<ul>
+    <li>Though EasyAnt comes with a lot of conventions, we never lock you in.</li>
+    <li>EasyAnt allows you to easily extend existing modules or create and use your own modules.</li>
+    <li>EasyAnt makes migration from Ant very simple. Your legacy Ant scripts could still be leveraged using EasyAnt.</li>
+</ul>
+
+<h2>About this doc</h2>
+
+If you are browsing this documentation from your installation of EasyAnt, you can also check the <a href="http://www.easyant.org/doc/">online version</a> for latest updates.
+
+You can also browse this documentation offline either by downloading the documentation distribution, or by checking out the src/documentation directory from svn. This documentation uses xooki as documentation engine, so you can very easily edit it and submit patches when you browse it from source.</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/easyant/site/sources/js/jquery.pack.js
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/js/jquery.pack.js?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/js/jquery.pack.js (added)
+++ incubator/easyant/site/sources/js/jquery.pack.js Sun Mar  6 21:48:20 2011
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp(''+e(c)+'','g'),k[c])}}return p}('7(1C 1w.6=="T"){1w.T=1w.T;B 6=u(a,c){7(1w==q)v 1p 6(a,c);a=a||17;7(6.1t(a))v 1p 6(17)[6.E.27?"27":"2O"](a);7(1C a=="23"){B m=/^[^<]*(<(.|\s)+>)[^>]*$/.2Q(a);7(m)a=6.3k([m[1]]);J v 1p 6(c).2o(a)}v q.6r(a.1l==2y&&a||(a.3Y||a.I&&a!=1w&&!a.24&&a[0]!=T&&a[0].24)&&6.3M(a)||[a])};7(1C $!="T")6.2S$=$;B $=6;6.E=6.8p={3Y:"1.1.2",8q:u(){v q.I},I:0,2b:u(1T){v 1T==T?6.3M(q):q[1T]},2r:u(a){B L=6(a);L.6p=q;v L},6r:u(a){q.I=0;[].1g.14(q,a);v q},K:u(E,1E){v 6.K(q,E,1E)},2h:u(1c){B 4c=-1;q.K(u(i){7(q==1c)4c=i});v 4c},1I:u(1Y,O,C){B 1c=1Y;7(1Y.1l==3t)7(O==T)v q.I&&6[C||"1I"](q[0],1Y)||T;J{1c={};1c[1Y]=O}v q.K(u(2h){P(B H 1x 1c)6.1I(C?q.1q:q,H,6.H(q,1c[H],C,2h,H))})},1m:u(1Y,
 O){v q.1I(1Y,O,"30")},2L:u(e){7(1C e=="23")v q.3u().3r(17.8t(e));B t="";6.K(e||q,u(){6.K(q.2I,u(){7(q.24!=8)t+=q.24!=1?q.60:6.E.2L([q])})});v t},2K:u(){B a=6.3k(1A);v q.K(u(){B b=a[0].3l(U);q.11.2X(b,q);22(b.1b)b=b.1b;b.4C(q)})},3r:u(){v q.3j(1A,U,1,u(a){q.4C(a)})},5i:u(){v q.3j(1A,U,-1,u(a){q.2X(a,q.1b)})},5j:u(){v q.3j(1A,12,1,u(a){q.11.2X(a,q)})},5t:u(){v q.3j(1A,12,-1,u(a){q.11.2X(a,q.2e)})},4g:u(){v q.6p||6([])},2o:u(t){v q.2r(6.31(q,u(a){v 6.2o(t,a)}),t)},4Y:u(4N){v q.2r(6.31(q,u(a){B a=a.3l(4N!=T?4N:U);a.$1H=16;v a}))},1D:u(t){v q.2r(6.1t(t)&&6.2q(q,u(2z,2h){v t.14(2z,[2h])})||6.3z(t,q))},2g:u(t){v q.2r(t.1l==3t&&6.3z(t,q,U)||6.2q(q,u(a){v(t.1l==2y||t.3Y)?6.3y(a,t)<0:a!=t}))},1M:u(t){v q.2r(6.2k(q.2b(),t.1l==3t?6(t).2b():t.I!=T&&(!t.1f||t.1f=="8v")?t:[t]))},4l:u(1s){v 1s?6.1D(1s,q).r.I>0:12},1a:u(1a){v 1a==T?(q.I?q[0].O:16):q.1I("O",1a)},4U:u(1a){v 1a==T?(q.I?q[0].2t:16):q.3u().3r(1a)},3j:u(1E,1P,3Z,E){B 4Y=q.I>1;B a=6.3k(1E);7(3Z<0)a.8w();v q.K(u(){B 1c=q;7(1P&&6.1f(
 q,"1P")&&6.1f(a[0],"3m"))1c=q.5J("20")[0]||q.4C(17.6n("20"));6.K(a,u(){E.14(1c,[4Y?q.3l(U):q])})})}};6.1z=6.E.1z=u(){B 1O=1A[0],a=1;7(1A.I==1){1O=q;a=0}B H;22(H=1A[a++])P(B i 1x H)1O[i]=H[i];v 1O};6.1z({8x:u(){7(6.2S$)$=6.2S$;v 6},1t:u(E){v!!E&&1C E!="23"&&!E.1f&&1C E[0]=="T"&&/u/i.1n(E+"")},4B:u(D){v D.66&&D.5I&&!D.5I.64},1f:u(D,Y){v D.1f&&D.1f.3K()==Y.3K()},K:u(1c,E,1E){7(1c.I==T)P(B i 1x 1c)E.14(1c[i],1E||[i,1c[i]]);J P(B i=0,6q=1c.I;i<6q;i++)7(E.14(1c[i],1E||[i,1c[i]])===12)3O;v 1c},H:u(D,O,C,2h,H){7(6.1t(O))O=O.3n(D,[2h]);B 6s=/z-?2h|7P-?8A|1d|58|8B-?28/i;v O&&O.1l==3Q&&C=="30"&&!6s.1n(H)?O+"4S":O},19:{1M:u(D,c){6.K(c.3o(/\s+/),u(i,Q){7(!6.19.2V(D.19,Q))D.19+=(D.19?" ":"")+Q})},2f:u(D,c){D.19=c?6.2q(D.19.3o(/\s+/),u(Q){v!6.19.2V(c,Q)}).6t(" "):""},2V:u(t,c){t=t.19||t;c=c.1R(/([\.\\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g,"\$1");v t&&1p 4v("(^|\s)"+c+"(\s|$)").1n(t)}},4d:u(e,o,f){P(B i 1x o){e.1q["1N"+i]=e.1q[i];e.1q[i]=o[i]}f.14(e,[]);P(B i 1x o)e.1q[i]=e.1q["1N"+i]},1m:u(
 e,p){7(p=="28"||p=="3V"){B 1N={},46,3P,d=["7d","8C","8D","8E"];6.K(d,u(){1N["8F"+q]=0;1N["8G"+q+"8H"]=0});6.4d(e,1N,u(){7(6.1m(e,"1h")!="1Z"){46=e.8I;3P=e.8J}J{e=6(e.3l(U)).2o(":4j").5l("2Z").4g().1m({4n:"1G",45:"8K",1h:"2D",7I:"0",8M:"0"}).5z(e.11)[0];B 3d=6.1m(e.11,"45");7(3d==""||3d=="4b")e.11.1q.45="6x";46=e.6y;3P=e.6z;7(3d==""||3d=="4b")e.11.1q.45="4b";e.11.33(e)}});v p=="28"?46:3P}v 6.30(e,p)},30:u(D,H,53){B L;7(H=="1d"&&6.W.1j)v 6.1I(D.1q,"1d");7(H=="4h"||H=="2v")H=6.W.1j?"3T":"2v";7(!53&&D.1q[H])L=D.1q[H];J 7(17.44&&17.44.4W){7(H=="2v"||H=="3T")H="4h";H=H.1R(/([A-Z])/g,"-$1").4m();B Q=17.44.4W(D,16);7(Q)L=Q.55(H);J 7(H=="1h")L="1Z";J 6.4d(D,{1h:"2D"},u(){B c=17.44.4W(q,"");L=c&&c.55(H)||""})}J 7(D.51){B 56=H.1R(/\-(\w)/g,u(m,c){v c.3K()});L=D.51[H]||D.51[56]}v L},3k:u(a){B r=[];6.K(a,u(i,1r){7(!1r)v;7(1r.1l==3Q)1r=1r.6C();7(1C 1r=="23"){B s=6.35(1r),1V=17.6n("1V"),2i=[];B 2K=!s.18("<1u")&&[1,"<42>","</42>"]||(!s.18("<6D")||!s.18("<20")||!s.18("<6E"))&&[1,"<1P>","</1P
 >"]||!s.18("<3m")&&[2,"<1P><20>","</20></1P>"]||(!s.18("<6F")||!s.18("<6G"))&&[3,"<1P><20><3m>","</3m></20></1P>"]||[0,"",""];1V.2t=2K[1]+s+2K[2];22(2K[0]--)1V=1V.1b;7(6.W.1j){7(!s.18("<1P")&&s.18("<20")<0)2i=1V.1b&&1V.1b.2I;J 7(2K[1]=="<1P>"&&s.18("<20")<0)2i=1V.2I;P(B n=2i.I-1;n>=0;--n)7(6.1f(2i[n],"20")&&!2i[n].2I.I)2i[n].11.33(2i[n])}1r=[];P(B i=0,l=1V.2I.I;i<l;i++)1r.1g(1V.2I[i])}7(1r.I===0&&!6.1f(1r,"3w"))v;7(1r[0]==T||6.1f(1r,"3w"))r.1g(1r);J r=6.2k(r,1r)});v r},1I:u(D,Y,O){B 2j=6.4B(D)?{}:{"P":"6J","6L":"19","4h":6.W.1j?"3T":"2v",2v:6.W.1j?"3T":"2v",2t:"2t",19:"19",O:"O",2W:"2W",2Z:"2Z",89:"6N",2Y:"2Y"};7(Y=="1d"&&6.W.1j&&O!=T){D.58=1;v D.1D=D.1D.1R(/4i\([^\)]*\)/6O,"")+(O==1?"":"4i(1d="+O*6g+")")}J 7(Y=="1d"&&6.W.1j)v D.1D?4T(D.1D.6P(/4i\(1d=(.*)\)/)[1])/6g:1;7(Y=="1d"&&6.W.3h&&O==1)O=0.6R;7(2j[Y]){7(O!=T)D[2j[Y]]=O;v D[2j[Y]]}J 7(O==T&&6.W.1j&&6.1f(D,"3w")&&(Y=="81"||Y=="80"))v D.6T(Y).60;J 7(D.66){7(O!=T)D.6V(Y,O);7(6.W.1j&&/5E|3e/.1n(Y)&&!6.4B(D))v D.36(Y,2);v D.
 36(Y)}J{Y=Y.1R(/-([a-z])/6W,u(z,b){v b.3K()});7(O!=T)D[Y]=O;v D[Y]}},35:u(t){v t.1R(/^\s+|\s+$/g,"")},3M:u(a){B r=[];7(a.1l!=2y)P(B i=0,2R=a.I;i<2R;i++)r.1g(a[i]);J r=a.3N(0);v r},3y:u(b,a){P(B i=0,2R=a.I;i<2R;i++)7(a[i]==b)v i;v-1},2k:u(2u,3H){B r=[].3N.3n(2u,0);P(B i=0,5b=3H.I;i<5b;i++)7(6.3y(3H[i],r)==-1)2u.1g(3H[i]);v 2u},2q:u(1U,E,4k){7(1C E=="23")E=1p 4w("a","i","v "+E);B 1i=[];P(B i=0,2z=1U.I;i<2z;i++)7(!4k&&E(1U[i],i)||4k&&!E(1U[i],i))1i.1g(1U[i]);v 1i},31:u(1U,E){7(1C E=="23")E=1p 4w("a","v "+E);B 1i=[],r=[];P(B i=0,2z=1U.I;i<2z;i++){B 1a=E(1U[i],i);7(1a!==16&&1a!=T){7(1a.1l!=2y)1a=[1a];1i=1i.6Z(1a)}}B r=1i.I?[1i[0]]:[];5f:P(B i=1,5e=1i.I;i<5e;i++){P(B j=0;j<i;j++)7(1i[i]==r[j])5F 5f;r.1g(1i[i])}v r}});1p u(){B b=7L.71.4m();6.W={2N:/5D/.1n(b),3f:/3f/.1n(b),1j:/1j/.1n(b)&&!/3f/.1n(b),3h:/3h/.1n(b)&&!/(72|5D)/.1n(b)};6.7H=!6.W.1j||17.74=="75"};6.K({5u:"a.11",4z:"6.4z(a)",76:"6.2a(a,2,\'2e\')",7D:"6.2a(a,2,\'5s\')",78:"6.2B(a.11.1b,a)",79:"6.2B(a.1b)"},u(i,n){6.E[i]=u(
 a){B L=6.31(q,n);7(a&&1C a=="23")L=6.3z(a,L);v q.2r(L)}});6.K({5z:"3r",7b:"5i",2X:"5j",7e:"5t"},u(i,n){6.E[i]=u(){B a=1A;v q.K(u(){P(B j=0,2R=a.I;j<2R;j++)6(a[j])[n](q)})}});6.K({5l:u(1Y){6.1I(q,1Y,"");q.7g(1Y)},7h:u(c){6.19.1M(q,c)},7i:u(c){6.19.2f(q,c)},7k:u(c){6.19[6.19.2V(q,c)?"2f":"1M"](q,c)},2f:u(a){7(!a||6.1D(a,[q]).r.I)q.11.33(q)},3u:u(){22(q.1b)q.33(q.1b)}},u(i,n){6.E[i]=u(){v q.K(n,1A)}});6.K(["5q","5n","5p","5v"],u(i,n){6.E[n]=u(1T,E){v q.1D(":"+n+"("+1T+")",E)}});6.K(["28","3V"],u(i,n){6.E[n]=u(h){v h==T?(q.I?6.1m(q[0],n):16):q.1m(n,h.1l==3t?h:h+"4S")}});6.1z({1s:{"":"m[2]==\'*\'||6.1f(a,m[2])","#":"a.36(\'2J\')==m[2]",":":{5n:"i<m[3]-0",5p:"i>m[3]-0",2a:"m[3]-0==i",5q:"m[3]-0==i",2u:"i==0",2T:"i==r.I-1",5R:"i%2==0",5S:"i%2","2a-3s":"6.2a(a.11.1b,m[3],\'2e\',a)==a","2u-3s":"6.2a(a.11.1b,1,\'2e\')==a","2T-3s":"6.2a(a.11.7n,1,\'5s\')==a","7p-3s":"6.2B(a.11.1b).I==1",5u:"a.1b",3u:"!a.1b",5v:"6.E.2L.14([a]).18(m[3])>=0",3i:\'a.C!="1G"&&6.1m(a,"1h")!="1Z"&&6.1m(a,"4n"
 )!="1G"\',1G:\'a.C=="1G"||6.1m(a,"1h")=="1Z"||6.1m(a,"4n")=="1G"\',7v:"!a.2W",2W:"a.2W",2Z:"a.2Z",2Y:"a.2Y||6.1I(a,\'2Y\')",2L:"a.C==\'2L\'",4j:"a.C==\'4j\'",5x:"a.C==\'5x\'",4G:"a.C==\'4G\'",5y:"a.C==\'5y\'",4R:"a.C==\'4R\'",5A:"a.C==\'5A\'",5B:"a.C==\'5B\'",3x:\'a.C=="3x"||6.1f(a,"3x")\',5C:"/5C|42|7A|3x/i.1n(a.1f)"},".":"6.19.2V(a,m[2])","@":{"=":"z==m[4]","!=":"z!=m[4]","^=":"z&&!z.18(m[4])","$=":"z&&z.2U(z.I - m[4].I,m[4].I)==m[4]","*=":"z&&z.18(m[4])>=0","":"z",4u:u(m){v["",m[1],m[3],m[2],m[5]]},5P:"z=a[m[3]];7(!z||/5E|3e/.1n(m[3]))z=6.1I(a,m[3]);"},"[":"6.2o(m[2],a).I"},5M:[/^\[ *(@)([a-2m-3C-]*) *([!*$^=]*) *(\'?"?)(.*?)\4 *\]/i,/^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/,/^(:)([a-2m-3C-]*)\("?\'?(.*?(\(.*?\))?[^(]*?)"?\'?\)/i,/^([:.#]*)([a-2m-3C*-]*)/i],1Q:[/^(\/?\.\.)/,"a.11",/^(>|\/)/,"6.2B(a.1b)",/^(\+)/,"6.2a(a,2,\'2e\')",/^(~)/,u(a){B s=6.2B(a.11.1b);v s.3N(6.3y(a,s)+1)}],3z:u(1s,1U,2g){B 1N,Q=[];22(1s&&1s!=1N){1N=1s;B f=6.1D(1s,1U,2g);1s=f.t.1R(/^\s*,\s*/,"");Q=2g?1U
 =f.r:6.2k(Q,f.r)}v Q},2o:u(t,1B){7(1C t!="23")v[t];7(1B&&!1B.24)1B=16;1B=1B||17;7(!t.18("//")){1B=1B.4H;t=t.2U(2,t.I)}J 7(!t.18("/")){1B=1B.4H;t=t.2U(1,t.I);7(t.18("/")>=1)t=t.2U(t.18("/"),t.I)}B L=[1B],2c=[],2T=16;22(t&&2T!=t){B r=[];2T=t;t=6.35(t).1R(/^\/\//i,"");B 3B=12;B 1J=/^[\/>]\s*([a-2m-9*-]+)/i;B m=1J.2Q(t);7(m){6.K(L,u(){P(B c=q.1b;c;c=c.2e)7(c.24==1&&(6.1f(c,m[1])||m[1]=="*"))r.1g(c)});L=r;t=t.1R(1J,"");7(t.18(" ")==0)5F;3B=U}J{P(B i=0;i<6.1Q.I;i+=2){B 1J=6.1Q[i];B m=1J.2Q(t);7(m){r=L=6.31(L,6.1t(6.1Q[i+1])?6.1Q[i+1]:u(a){v 40(6.1Q[i+1])});t=6.35(t.1R(1J,""));3B=U;3O}}}7(t&&!3B){7(!t.18(",")){7(L[0]==1B)L.4L();6.2k(2c,L);r=L=[1B];t=" "+t.2U(1,t.I)}J{B 34=/^([a-2m-3C-]+)(#)([a-2m-9\*2S-]*)/i;B m=34.2Q(t);7(m){m=[0,m[2],m[3],m[1]]}J{34=/^([#.]?)([a-2m-9\*2S-]*)/i;m=34.2Q(t)}7(m[1]=="#"&&L[L.I-1].4X){B 2l=L[L.I-1].4X(m[2]);7(6.W.1j&&2l&&2l.2J!=m[2])2l=6(\'[@2J="\'+m[2]+\'"]\',L[L.I-1])[0];L=r=2l&&(!m[3]||6.1f(2l,m[3]))?[2l]:[]}J{7(m[1]==".")B 4r=1p 4v("(^|\s)"+m[2]+"
 (\s|$)");6.K(L,u(){B 3E=m[1]!=""||m[0]==""?"*":m[2];7(6.1f(q,"7J")&&3E=="*")3E="3g";6.2k(r,m[1]!=""&&L.I!=1?6.4x(q,[],m[1],m[2],4r):q.5J(3E))});7(m[1]=="."&&L.I==1)r=6.2q(r,u(e){v 4r.1n(e.19)});7(m[1]=="#"&&L.I==1){B 5K=r;r=[];6.K(5K,u(){7(q.36("2J")==m[2]){r=[q];v 12}})}L=r}t=t.1R(34,"")}}7(t){B 1a=6.1D(t,r);L=r=1a.r;t=6.35(1a.t)}}7(L&&L[0]==1B)L.4L();6.2k(2c,L);v 2c},1D:u(t,r,2g){22(t&&/^[a-z[({<*:.#]/i.1n(t)){B p=6.5M,m;6.K(p,u(i,1J){m=1J.2Q(t);7(m){t=t.7M(m[0].I);7(6.1s[m[1]].4u)m=6.1s[m[1]].4u(m);v 12}});7(m[1]==":"&&m[2]=="2g")r=6.1D(m[3],r,U).r;J 7(m[1]=="."){B 1J=1p 4v("(^|\s)"+m[2]+"(\s|$)");r=6.2q(r,u(e){v 1J.1n(e.19||"")},2g)}J{B f=6.1s[m[1]];7(1C f!="23")f=6.1s[m[1]][m[2]];40("f = u(a,i){"+(6.1s[m[1]].5P||"")+"v "+f+"}");r=6.2q(r,f,2g)}}v{r:r,t:t}},4x:u(o,r,1Q,Y,1J){P(B s=o.1b;s;s=s.2e)7(s.24==1){B 1M=U;7(1Q==".")1M=s.19&&1J.1n(s.19);J 7(1Q=="#")1M=s.36("2J")==Y;7(1M)r.1g(s);7(1Q=="#"&&r.I)3O;7(s.1b)6.4x(s,r,1Q,Y,1J)}v r},4z:u(D){B 4A=[];B Q=D.11;22(Q&&Q!=17){4A.
 1g(Q);Q=Q.11}v 4A},2a:u(Q,1i,3Z,D){1i=1i||1;B 1T=0;P(;Q;Q=Q[3Z]){7(Q.24==1)1T++;7(1T==1i||1i=="5R"&&1T%2==0&&1T>1&&Q==D||1i=="5S"&&1T%2==1&&Q==D)v Q}},2B:u(n,D){B r=[];P(;n;n=n.2e){7(n.24==1&&(!D||n!=D))r.1g(n)}v r}});6.G={1M:u(S,C,1o,F){7(6.W.1j&&S.3L!=T)S=1w;7(F)1o.F=F;7(!1o.2A)1o.2A=q.2A++;7(!S.$1H)S.$1H={};B 38=S.$1H[C];7(!38){38=S.$1H[C]={};7(S["39"+C])38[0]=S["39"+C]}38[1o.2A]=1o;S["39"+C]=q.5Y;7(!q.1k[C])q.1k[C]=[];q.1k[C].1g(S)},2A:1,1k:{},2f:u(S,C,1o){7(S.$1H){B i,j,k;7(C&&C.C){1o=C.1o;C=C.C}7(C&&S.$1H[C])7(1o)5U S.$1H[C][1o.2A];J P(i 1x S.$1H[C])5U S.$1H[C][i];J P(j 1x S.$1H)q.2f(S,j);P(k 1x S.$1H[C])7(k){k=U;3O}7(!k)S["39"+C]=16}},1S:u(C,F,S){F=6.3M(F||[]);7(!S)6.K(q.1k[C]||[],u(){6.G.1S(C,F,q)});J{B 1o=S["39"+C],1a,E=6.1t(S[C]);7(1o){F.61(q.2j({C:C,1O:S}));7((1a=1o.14(S,F))!==12)q.4F=U}7(E&&1a!==12)S[C]();q.4F=12}},5Y:u(G){7(1C 6=="T"||6.G.4F)v;G=6.G.2j(G||1w.G||{});B 3R;B c=q.$1H[G.C];B 1E=[].3N.3n(1A,1);1E.61(G);P(B j 1x c){1E[0].1o=c[j];1E[0].F=c[j].F;7(c[j].1
 4(q,1E)===12){G.2n();G.2H();3R=12}}7(6.W.1j)G.1O=G.2n=G.2H=G.1o=G.F=16;v 3R},2j:u(G){7(!G.1O&&G.63)G.1O=G.63;7(G.65==T&&G.67!=T){B e=17.4H,b=17.64;G.65=G.67+(e.68||b.68);G.7Y=G.7Z+(e.6c||b.6c)}7(6.W.2N&&G.1O.24==3){B 3a=G;G=6.1z({},3a);G.1O=3a.1O.11;G.2n=u(){v 3a.2n()};G.2H=u(){v 3a.2H()}}7(!G.2n)G.2n=u(){q.3R=12};7(!G.2H)G.2H=u(){q.82=U};v G}};6.E.1z({3U:u(C,F,E){v q.K(u(){6.G.1M(q,C,E||F,F)})},6u:u(C,F,E){v q.K(u(){6.G.1M(q,C,u(G){6(q).6f(G);v(E||F).14(q,1A)},F)})},6f:u(C,E){v q.K(u(){6.G.2f(q,C,E)})},1S:u(C,F){v q.K(u(){6.G.1S(C,F,q)})},3X:u(){B a=1A;v q.6j(u(e){q.4M=q.4M==0?1:0;e.2n();v a[q.4M].14(q,[e])||12})},83:u(f,g){u 4O(e){B p=(e.C=="41"?e.84:e.85)||e.86;22(p&&p!=q)2G{p=p.11}2w(e){p=q};7(p==q)v 12;v(e.C=="41"?f:g).14(q,[e])}v q.41(4O).6k(4O)},27:u(f){7(6.3W)f.14(17,[6]);J{6.3c.1g(u(){v f.14(q,[6])})}v q}});6.1z({3W:12,3c:[],27:u(){7(!6.3W){6.3W=U;7(6.3c){6.K(6.3c,u(){q.14(17)});6.3c=16}7(6.W.3h||6.W.3f)17.87("6o",6.27,12)}}});1p u(){6.K(("88,8a,2O,8b,8d,52,6j,8e,"+
 "8f,8g,8h,41,6k,8j,42,"+"4R,8k,8l,8m,2C").3o(","),u(i,o){6.E[o]=u(f){v f?q.3U(o,f):q.1S(o)}});7(6.W.3h||6.W.3f)17.8n("6o",6.27,12);J 7(6.W.1j){17.8o("<8r"+"8s 2J=62 8u=U "+"3e=//:><\/2d>");B 2d=17.4X("62");7(2d)2d.37=u(){7(q.3D!="1X")v;q.11.33(q);6.27()};2d=16}J 7(6.W.2N)6.50=3L(u(){7(17.3D=="8y"||17.3D=="1X"){4p(6.50);6.50=16;6.27()}},10);6.G.1M(1w,"2O",6.27)};7(6.W.1j)6(1w).6u("52",u(){B 1k=6.G.1k;P(B C 1x 1k){B 4Z=1k[C],i=4Z.I;7(i&&C!=\'52\')6w 6.G.2f(4Z[i-1],C);22(--i)}});6.E.1z({6A:u(V,21,M){q.2O(V,21,M,1)},2O:u(V,21,M,1W){7(6.1t(V))v q.3U("2O",V);M=M||u(){};B C="5d";7(21)7(6.1t(21)){M=21;21=16}J{21=6.3g(21);C="5V"}B 4e=q;6.3v({V:V,C:C,F:21,1W:1W,1X:u(2P,15){7(15=="2M"||!1W&&15=="5L")4e.1I("2t",2P.3G).4V().K(M,[2P.3G,15,2P]);J M.14(4e,[2P.3G,15,2P])}});v q},6B:u(){v 6.3g(q)},4V:u(){v q.2o("2d").K(u(){7(q.3e)6.59(q.3e);J 6.4a(q.2L||q.6H||q.2t||"")}).4g()}});7(!1w.3p)3p=u(){v 1p 6I("6K.6M")};6.K("5m,5Q,5O,5W,5N,5H".3o(","),u(i,o){6.E[o]=u(f){v q.3U(o,f)}});6.1z({2b:u(V,F,
 M,C,1W){7(6.1t(F)){M=F;F=16}v 6.3v({V:V,F:F,2M:M,4t:C,1W:1W})},6Q:u(V,F,M,C){v 6.2b(V,F,M,C,1)},59:u(V,M){v 6.2b(V,16,M,"2d")},6S:u(V,F,M){v 6.2b(V,F,M,"6m")},6U:u(V,F,M,C){7(6.1t(F)){M=F;F={}}v 6.3v({C:"5V",V:V,F:F,2M:M,4t:C})},6X:u(29){6.3q.29=29},6Y:u(5c){6.1z(6.3q,5c)},3q:{1k:U,C:"5d",29:0,5r:"70/x-73-3w-77",5h:U,48:U,F:16},3S:{},3v:u(s){s=6.1z({},6.3q,s);7(s.F){7(s.5h&&1C s.F!="23")s.F=6.3g(s.F);7(s.C.4m()=="2b"){s.V+=((s.V.18("?")>-1)?"&":"?")+s.F;s.F=16}}7(s.1k&&!6.4E++)6.G.1S("5m");B 4y=12;B N=1p 3p();N.7j(s.C,s.V,s.48);7(s.F)N.3A("7l-7m",s.5r);7(s.1W)N.3A("7o-4K-7q",6.3S[s.V]||"7s, 7t 7w 7x 4o:4o:4o 7z");N.3A("X-7B-7C","3p");7(N.7E)N.3A("7F","7G");7(s.5G)s.5G(N);7(s.1k)6.G.1S("5H",[N,s]);B 37=u(4s){7(N&&(N.3D==4||4s=="29")){4y=U;7(3I){4p(3I);3I=16}B 15;2G{15=6.5Z(N)&&4s!="29"?s.1W&&6.69(N,s.V)?"5L":"2M":"2C";7(15!="2C"){B 3F;2G{3F=N.4P("6b-4K")}2w(e){}7(s.1W&&3F)6.3S[s.V]=3F;B F=6.6i(N,s.4t);7(s.2M)s.2M(F,15);7(s.1k)6.G.1S("5N",[N,s])}J 6.3J(s,N,15)}2w(e){15="2C";6.
 3J(s,N,15,e)}7(s.1k)6.G.1S("5O",[N,s]);7(s.1k&&!--6.4E)6.G.1S("5Q");7(s.1X)s.1X(N,15);7(s.48)N=16}};B 3I=3L(37,13);7(s.29>0)57(u(){7(N){N.7N();7(!4y)37("29")}},s.29);2G{N.7Q(s.F)}2w(e){6.3J(s,N,16,e)}7(!s.48)37();v N},3J:u(s,N,15,e){7(s.2C)s.2C(N,15,e);7(s.1k)6.G.1S("5W",[N,s,e])},4E:0,5Z:u(r){2G{v!r.15&&7V.7W=="4G:"||(r.15>=5X&&r.15<7X)||r.15==6d||6.W.2N&&r.15==T}2w(e){}v 12},69:u(N,V){2G{B 6e=N.4P("6b-4K");v N.15==6d||6e==6.3S[V]||6.W.2N&&N.15==T}2w(e){}v 12},6i:u(r,C){B 4Q=r.4P("8c-C");B F=!C&&4Q&&4Q.18("N")>=0;F=C=="N"||F?r.8i:r.3G;7(C=="2d")6.4a(F);7(C=="6m")40("F = "+F);7(C=="4U")6("<1V>").4U(F).4V();v F},3g:u(a){B s=[];7(a.1l==2y||a.3Y)6.K(a,u(){s.1g(2x(q.Y)+"="+2x(q.O))});J P(B j 1x a)7(a[j]&&a[j].1l==2y)6.K(a[j],u(){s.1g(2x(j)+"="+2x(q))});J s.1g(2x(j)+"="+2x(a[j]));v s.6t("&")},4a:u(F){7(1w.54)1w.54(F);J 7(6.W.2N)1w.57(F,0);J 40.3n(1w,F)}});6.E.1z({1L:u(R,M){B 1G=q.1D(":1G");R?1G.26({28:"1L",3V:"1L",1d:"1L"},R,M):1G.K(u(){q.1q.1h=q.2E?q.2E:"";7(6.1m(q,"1h")=="1Z")q
 .1q.1h="2D"});v q},1K:u(R,M){B 3i=q.1D(":3i");R?3i.26({28:"1K",3V:"1K",1d:"1K"},R,M):3i.K(u(){q.2E=q.2E||6.1m(q,"1h");7(q.2E=="1Z")q.2E="2D";q.1q.1h="1Z"});v q},5g:6.E.3X,3X:u(E,4I){B 1E=1A;v 6.1t(E)&&6.1t(4I)?q.5g(E,4I):q.K(u(){6(q)[6(q).4l(":1G")?"1L":"1K"].14(6(q),1E)})},7a:u(R,M){v q.26({28:"1L"},R,M)},7c:u(R,M){v q.26({28:"1K"},R,M)},7f:u(R,M){v q.K(u(){B 5k=6(q).4l(":1G")?"1L":"1K";6(q).26({28:5k},R,M)})},7r:u(R,M){v q.26({1d:"1L"},R,M)},7u:u(R,M){v q.26({1d:"1K"},R,M)},7y:u(R,43,M){v q.26({1d:43},R,M)},26:u(H,R,1v,M){v q.1F(u(){q.2F=6.1z({},H);B 1u=6.R(R,1v,M);P(B p 1x H){B e=1p 6.3b(q,1u,p);7(H[p].1l==3Q)e.2s(e.Q(),H[p]);J e[H[p]](H)}})},1F:u(C,E){7(!E){E=C;C="3b"}v q.K(u(){7(!q.1F)q.1F={};7(!q.1F[C])q.1F[C]=[];q.1F[C].1g(E);7(q.1F[C].I==1)E.14(q)})}});6.1z({R:u(R,1v,E){B 1u=R&&R.1l==7K?R:{1X:E||!E&&1v||6.1t(R)&&R,25:R,1v:E&&1v||1v&&1v.1l!=4w&&1v};1u.25=(1u.25&&1u.25.1l==3Q?1u.25:{7R:7S,7T:5X}[1u.25])||7U;1u.1N=1u.1X;1u.1X=u(){6.6a(q,"3b");7(6.1t(1u.1N))1u.1N.14(q)};
 v 1u},1v:{},1F:{},6a:u(D,C){C=C||"3b";7(D.1F&&D.1F[C]){D.1F[C].4L();B f=D.1F[C][0];7(f)f.14(D)}},3b:u(D,1e,H){B z=q;B y=D.1q;B 4D=6.1m(D,"1h");y.5T="1G";z.a=u(){7(1e.49)1e.49.14(D,[z.2p]);7(H=="1d")6.1I(y,"1d",z.2p);J 7(6l(z.2p))y[H]=6l(z.2p)+"4S";y.1h="2D"};z.6v=u(){v 4T(6.1m(D,H))};z.Q=u(){B r=4T(6.30(D,H));v r&&r>-8z?r:z.6v()};z.2s=u(4f,43){z.4J=(1p 5o()).5w();z.2p=4f;z.a();z.4q=3L(u(){z.49(4f,43)},13)};z.1L=u(){7(!D.1y)D.1y={};D.1y[H]=q.Q();1e.1L=U;z.2s(0,D.1y[H]);7(H!="1d")y[H]="5a"};z.1K=u(){7(!D.1y)D.1y={};D.1y[H]=q.Q();1e.1K=U;z.2s(D.1y[H],0)};z.3X=u(){7(!D.1y)D.1y={};D.1y[H]=q.Q();7(4D=="1Z"){1e.1L=U;7(H!="1d")y[H]="5a";z.2s(0,D.1y[H])}J{1e.1K=U;z.2s(D.1y[H],0)}};z.49=u(32,47){B t=(1p 5o()).5w();7(t>1e.25+z.4J){4p(z.4q);z.4q=16;z.2p=47;z.a();7(D.2F)D.2F[H]=U;B 2c=U;P(B i 1x D.2F)7(D.2F[i]!==U)2c=12;7(2c){y.5T="";y.1h=4D;7(6.1m(D,"1h")=="1Z")y.1h="2D";7(1e.1K)y.1h="1Z";7(1e.1K||1e.1L)P(B p 1x D.2F)7(p=="1d")6.1I(y,p,D.1y[p]);J y[p]=""}7(2c&&6.1t(1e.1X))1e.1X.14(D)}J{
 B n=t-q.4J;B p=n/1e.25;z.2p=1e.1v&&6.1v[1e.1v]?6.1v[1e.1v](p,n,32,(47-32),1e.25):((-6h.7O(p*6h.8L)/2)+0.5)*(47-32)+32;z.a()}}}})}',62,545,'||||||jQuery|if|||||||||||||||||||this||||function|return||||||var|type|elem|fn|data|event|prop|length|else|each|ret|callback|xml|value|for|cur|speed|element|undefined|true|url|browser||name|||parentNode|false||apply|status|null|document|indexOf|className|val|firstChild|obj|opacity|options|nodeName|push|display|result|msie|global|constructor|css|test|handler|new|style|arg|expr|isFunction|opt|easing|window|in|orig|extend|arguments|context|typeof|filter|args|queue|hidden|events|attr|re|hide|show|add|old|target|table|token|replace|trigger|num|elems|div|ifModified|complete|key|none|tbody|params|while|string|nodeType|duration|animate|ready|height|timeout|nth|get|done|script|nextSibling|remove|not|index|tb|fix|merge|oid|z0|preventDefault|find|now|grep|pushStack|custom|innerHTML|first|cssFloat|catch|encodeURIComponent|Array|el|guid|sibling|error
 |block|oldblock|curAnim|try|stopPropagation|childNodes|id|wrap|text|success|safari|load|res|exec|al|_|last|substr|has|disabled|insertBefore|selected|checked|curCSS|map|firstNum|removeChild|re2|trim|getAttribute|onreadystatechange|handlers|on|originalEvent|fx|readyList|parPos|src|opera|param|mozilla|visible|domManip|clean|cloneNode|tr|call|split|XMLHttpRequest|ajaxSettings|append|child|String|empty|ajax|form|button|inArray|multiFilter|setRequestHeader|foundToken|9_|readyState|tag|modRes|responseText|second|ival|handleError|toUpperCase|setInterval|makeArray|slice|break|oWidth|Number|returnValue|lastModified|styleFloat|bind|width|isReady|toggle|jquery|dir|eval|mouseover|select|to|defaultView|position|oHeight|lastNum|async|step|globalEval|static|pos|swap|self|from|end|float|alpha|radio|inv|is|toLowerCase|visibility|00|clearInterval|timer|rec|isTimeout|dataType|_resort|RegExp|Function|getAll|requestDone|parents|matched|isXMLDoc|appendChild|oldDisplay|active|triggered|file|documen
 tElement|fn2|startTime|Modified|shift|lastToggle|deep|handleHover|getResponseHeader|ct|submit|px|parseFloat|html|evalScripts|getComputedStyle|getElementById|clone|els|safariTimer|currentStyle|unload|force|execScript|getPropertyValue|newProp|setTimeout|zoom|getScript|1px|sl|settings|GET|rl|check|_toggle|processData|prepend|before|state|removeAttr|ajaxStart|lt|Date|gt|eq|contentType|previousSibling|after|parent|contains|getTime|checkbox|password|appendTo|image|reset|input|webkit|href|continue|beforeSend|ajaxSend|ownerDocument|getElementsByTagName|tmp|notmodified|parse|ajaxSuccess|ajaxComplete|_prefix|ajaxStop|even|odd|overflow|delete|POST|ajaxError|200|handle|httpSuccess|nodeValue|unshift|__ie_init|srcElement|body|pageX|tagName|clientX|scrollLeft|httpNotModified|dequeue|Last|scrollTop|304|xmlRes|unbind|100|Math|httpData|click|mouseout|parseInt|json|createElement|DOMContentLoaded|prevObject|ol|setArray|exclude|join|one|max|do|relative|clientHeight|clientWidth|loadIfModified|ser
 ialize|toString|thead|tfoot|td|th|textContent|ActiveXObject|htmlFor|Microsoft|class|XMLHTTP|readOnly|gi|match|getIfModified|9999|getJSON|getAttributeNode|post|setAttribute|ig|ajaxTimeout|ajaxSetup|concat|application|userAgent|compatible|www|compatMode|CSS1Compat|next|urlencoded|siblings|children|slideDown|prependTo|slideUp|Top|insertAfter|slideToggle|removeAttribute|addClass|removeClass|open|toggleClass|Content|Type|lastChild|If|only|Since|fadeIn|Thu|01|fadeOut|enabled|Jan|1970|fadeTo|GMT|textarea|Requested|With|prev|overrideMimeType|Connection|close|boxModel|right|object|Object|navigator|substring|abort|cos|font|send|slow|600|fast|400|location|protocol|300|pageY|clientY|method|action|cancelBubble|hover|fromElement|toElement|relatedTarget|removeEventListener|blur|readonly|focus|resize|content|scroll|dblclick|mousedown|mouseup|mousemove|responseXML|change|keydown|keypress|keyup|addEventListener|write|prototype|size|scr|ipt|createTextNode|defer|FORM|reverse|noConflict|loaded|1
 0000|weight|line|Bottom|Right|Left|padding|border|Width|offsetHeight|offsetWidth|absolute|PI|left'.split('|'),0,{}))

Added: incubator/easyant/site/sources/js/jquery.treeview.js
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/js/jquery.treeview.js?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/js/jquery.treeview.js (added)
+++ incubator/easyant/site/sources/js/jquery.treeview.js Sun Mar  6 21:48:20 2011
@@ -0,0 +1,239 @@
+/*
+ * Treeview 1.2 - jQuery plugin to hide and show branches of a tree
+ *
+ * Copyright (c) 2006 Jörn Zaefferer, Myles Angell
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.treeview.js 1071697 2011-02-17 17:01:07Z hibou $
+ *
+ */
+
+/**
+ * Takes an unordered list and makes all branches collapsable.
+ *
+ * The "treeview" class is added if not already present.
+ *
+ * To hide branches on first display, mark their li elements with
+ * the class "closed". If the "collapsed" option is used, mark intially open
+ * branches with class "open".
+ *
+ * @example .treeview, .treeview ul { 
+ * 	padding: 0;
+ * 	margin: 0;
+ * 	list-style: none;
+ * }	
+ * 
+ * .treeview li { 
+ * 	margin: 0;
+ * 	padding: 4px 0 3px 20px;
+ * }
+ * 
+ * .treeview li { background: url(images/tv-item.gif) 0 0 no-repeat; }
+ * .treeview .collapsable { background-image: url(images/tv-collapsable.gif); }
+ * .treeview .expandable { background-image: url(images/tv-expandable.gif); }
+ * .treeview .last { background-image: url(images/tv-item-last.gif); }
+ * .treeview .lastCollapsable { background-image: url(images/tv-collapsable-last.gif); }
+ * .treeview .lastExpandable { background-image: url(images/tv-expandable-last.gif); }
+ * @desc The following styles are necessary in your stylesheet. There is are alternative sets of images available.
+ *
+ * @example $("ul").Treeview();
+ * @before <ul>
+ *   <li>Item 1
+ *     <ul>
+ *       <li>Item 1.1</li>
+ *     </ul>
+ *   </li>
+ *   <li class="closed">Item 2 (starts closed)
+ *     <ul>
+ *       <li>Item 2.1
+ *         <ul>
+ *           <li>Item 2.1.1</li>
+ *           <li>Item 2.1.2</li>
+ *         </ul>
+ *       </li>
+ *       <li>Item 2.2</li>
+ *     </ul>
+ *   </li>
+ *   <li>Item 3</li>
+ * </ul>
+ * @desc Basic usage example
+ *
+ * @example $("ul").Treeview({ speed: "fast", collapsed: true});
+ * @before <ul>
+ *   <li class="open">Item 1 (starts open)
+ *     <ul>
+ *       <li>Item 1.1</li>
+ *     </ul>
+ *   </li>
+ *   <li>Item 2
+ *     <ul>
+ *       <li>Item 2.1</li>
+ *       <li>Item 2.2</li>
+ *     </ul>
+ *   </li>
+ * </ul>
+ * @desc Create a treeview that starts collapsed. Toggling branches is animated.
+ *
+ * @example $("ul").Treeview({ control: #treecontrol });
+ * @before <div id="treecontrol">
+ *   <a href="#">Collapse All</a>
+ *   <a href="#">Expand All</a>
+ *   <a href="#">Toggle All</a>
+ * </div>
+ * @desc Creates a treeview that can be controlled with a few links.
+ * Very likely to be changed/improved in future versions.
+ *
+ * @param Map options Optional settings to configure treeview
+ * @option String|Number speed Speed of animation, see animate() for details. Default: none, no animation
+ * @option Boolean collapsed Start with all branches collapsed. Default: none, all expanded
+ * @option <Content> control Container for a treecontrol, see last example.
+ * @option Boolean unique Set to allow only one branch on one level to be open
+ *		   (closing siblings which opening). Default: none
+ * @option Function toggle Callback when toggling a branch.
+ * 		   Arguments: "this" refers to the UL that was shown or hidden.
+ * 		   Works only with speed option set (set speed: 1 to enable callback without animations).
+ *		   Default: none
+ * @type jQuery
+ * @name Treeview
+ * @cat Plugins/Treeview
+ */
+
+(function($) {
+
+	// classes used by the plugin
+	// need to be styled via external stylesheet, see first example
+	var CLASSES = {
+		open: "open",
+		closed: "closed",
+		expandable: "expandable",
+		collapsable: "collapsable",
+		lastCollapsable: "lastCollapsable",
+		lastExpandable: "lastExpandable",
+		last: "last",
+		hitarea: "hitarea"
+	};
+	
+	// styles for hitareas
+	var hitareaCSS = {
+		height: 15,
+		width: 30, // custom size used in xooki
+		marginLeft: "-30px", // custom size used in xooki
+		"float": "left",
+		cursor: "pointer"
+	};
+	
+	// ie specific styles for hitareas
+	if( $.browser.msie ) {
+		$.extend( hitareaCSS, {
+			background: "#fff",
+			filter: "alpha(opacity=0)",
+			display: "inline"
+		});
+	}
+
+	$.extend($.fn, {
+		swapClass: function(c1, c2) {
+			return this.each(function() {
+				var $this = $(this);
+				if ( $.className.has(this, c1) )
+					$this.removeClass(c1).addClass(c2);
+				else if ( $.className.has(this, c2) )
+					$this.removeClass(c2).addClass(c1);
+			});
+		},
+		replaceclass: function(c1, c2) {
+			return this.each(function() {
+				var $this = $(this);
+				if ( $.className.has(this, c1) )
+					$this.removeClass(c1).addClass(c2);
+			});
+		},
+		Treeview: function(settings) {
+		
+			// currently no defaults necessary, all implicit
+			settings = $.extend({}, settings);
+		
+			// factory for treecontroller
+			function treeController(tree, control) {
+				// factory for click handlers
+				function handler(filter) {
+					return function() {
+						// reuse toggle event handler, applying the elements to toggle
+						// start searching for all hitareas
+						toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
+							// for plain toggle, no filter is provided, otherwise we need to check the parent element
+							return filter ? $(this).parent("." + filter).length : true;
+						}) );
+						return false;
+					}
+				}
+				// click on first element to collapse tree
+				$(":eq(0)", control).click( handler(CLASSES.collapsable) );
+				// click on second to expand tree
+				$(":eq(1)", control).click( handler(CLASSES.expandable) );
+				// click on third to toggle tree
+				$(":eq(2)", control).click( handler() ); 
+			}
+		
+			// handle toggle event
+			function toggler() {
+				// this refers to hitareas, we need to find the parent lis first
+				$( this ).parent()
+					// swap classes
+					.swapClass( CLASSES.collapsable, CLASSES.expandable )
+					.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
+					// find child lists
+					.find( ">ul" )
+					// toggle them
+					.toggle( settings.speed, settings.toggle );
+				if ( settings.unique ) {
+					$( this ).parent()
+						.siblings()
+						.replaceclass( CLASSES.collapsable, CLASSES.expandable )
+						.replaceclass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
+						.find( ">ul" )
+						.hide( settings.speed, settings.toggle );
+				}
+			}
+	
+			// add treeview class to activate styles
+			this.addClass("treeview");
+			
+			// mark last tree items
+			$("li:last-child", this).addClass(CLASSES.last);
+			
+			// collapse whole tree, or only those marked as closed, anyway except those marked as open
+			$( (settings.collapsed ? "li" : "li." + CLASSES.closed) + ":not(." + CLASSES.open + ") > ul", this).hide();
+			
+			// find all tree items with child lists
+			$("li[ul]", this)
+				// handle closed ones first
+				.filter("[>ul:hidden]")
+					.addClass(CLASSES.expandable)
+					.swapClass(CLASSES.last, CLASSES.lastExpandable)
+					.end()
+				// handle open ones
+				.not("[>ul:hidden]")
+					.addClass(CLASSES.collapsable)
+					.swapClass(CLASSES.last, CLASSES.lastCollapsable)
+					.end()
+				// append hitarea
+				.prepend("<div class=\"" + CLASSES.hitarea + "\">")
+				// find hitarea
+				.find("div." + CLASSES.hitarea)
+				// apply styles to hitarea
+				.css(hitareaCSS)
+				// apply toggle event to hitarea
+				.toggle( toggler, toggler );
+			
+			// if control option is set, create the treecontroller
+			if ( settings.control )
+				treeController(this, settings.control);
+			
+			return this;
+		}
+	});
+})(jQuery);
\ No newline at end of file

Added: incubator/easyant/site/sources/printTemplate.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/printTemplate.html?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/printTemplate.html (added)
+++ incubator/easyant/site/sources/printTemplate.html Sun Mar  6 21:48:20 2011
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<html>
+<head>
+  <title>${title}</title>
+  <link rel="stylesheet" type"text/css" href="style.css" media="screen">
+</head>
+<body>
+${body}
+</body>
+</html>

Added: incubator/easyant/site/sources/reference.html
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/reference.html?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/reference.html (added)
+++ incubator/easyant/site/sources/reference.html Sun Mar  6 21:48:20 2011
@@ -0,0 +1,220 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<html>
+<head>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+    <script type="text/javascript">var xookiConfig = {level: 0};</script>   
+    <script type="text/javascript" src="xooki/xooki.js"></script>
+</head>
+<body>
+    <textarea id="xooki-source">
+<h1>Reference</h1>
+
+If you don't know EasyAnt at all, give a glance at its <a href="ref/features.html">features</a>, the <a href="faq.html">FAQ</a> and the <a href="tutorials.html">tutorials</a> before digging into this reference documentation.
+
+<h2>How does it work?</h2>
+Since 0.6, easyant-core.jar is in charge of :
+<ul>
+  <li>Loading  the ivy instance used by easyant internal (used to retrieve buildtypes / plugins)</li>
+  <li>Loading all the system plugins.
+</ul>
+This can be configured in a <a href="ref/EasyAntconfigurationfile.html">configuration file</a>.
+
+Then it uses the <a href="ref/anttasks/LoadModuletask.html">loadmodule task</a> provided by easyant, which basically parses an Ivy file (module.ivy) and looks for instructions in the Ivy file for easyant (similar to the pom concept actually).
+
+Finally easyant tries to import an optional file called module.ant in the user directory (the module to build). In the examples, there is no such file, but this would let the user customize the build with an Ant script if necessary.
+
+<h2>EasyAnt instructions in module.ivy</h2>
+A module.ivy looks like this
+<code type="xml">
+<ea:build organisation="org.apache.easyant.buildtypes" module="build-std-java" revision="0.2">
+        <ea:property name="run.main.classname" value="org.apache.easyant.example.Example"/>
+        <ea:property name="target.artifacts" value="dist"/>
+        <ea:plugin module="emma" revision="0.1"/>
+</ea:build>
+</code>
+
+The idea is to have a very limited options of customizing the build in the Ivy file: settings properties, and telling which main build module should be imported. If you need more, you can use a module.ant file.
+
+Let's try to understand how to use it.
+'ea:build' tag is the main instruction. Type argument in easyant tag references a build type, which tells which build module should be imported (considered as an <a href="ref/anttasks/Importtask.html">import</a>), see below.
+Example:
+<code type="xml">
+<ea:build organisation="org.apache.easyant.buildtypes" module="build-std-java" revision="0.2">
+</code>
+You can also have property definition, as you would have in an Ant script
+Example:
+<code type="xml">
+<ea:property name="target.artifacts" value="dist"/>
+</code>
+Usually build-type does the basic stuff. But sometimes we need something more (Source code management feature / code coverage etc...).
+You can load several plugins using the plugin tag.
+Example:
+<code type="xml">
+<ea:plugin module="emma" revision="0.1"/>
+</code>
+
+In this example emma module is loaded as a plugin(considered as an <a href="ref/anttasks/Importtask.html">include</a>). 
+As easyant proceeds with execution, all targets are imported in current project prefixed by the project name.
+This means all targets included in emma module will be prefixed by org.apache.easyant.plugins#emma.
+Example :
+<code type="xml">
+org.apache.easyant.plugins#emma:emma generate emma covera report
+</code>
+
+As the name is not really "user-friendly" you can use an alias for the prefix using "as" attribute.
+Example:
+<code type="xml">
+<ea:plugin module="emma" revision="0.1" as="emma"/>
+</code>
+Doing this, all targets included in emma module will be prefixed by "emma"
+Example :
+<code type="xml">
+emma:emma generate emma coverage report
+</code>
+
+<h2>build plugins:</h2>
+There is three types of build modules:
+<ul>
+<li>build types</li>
+<li>phase description</li>
+<li>plugins</li>
+</ul>
+
+<h3>build types:</h3>
+The main build script are build type (build-std-java in my previous example).
+
+Build types are intended to provide a full build for a particular type of project (simple java, war, ear, ...). EasyAnt comes with a set of build types modules, but users could extend/replace these types as they want. Then in most cases they could simply define which build type to import for each module (either standard or custom), and that's pretty much all. Hence you usually import only one build type module at a time.
+<table>
+  <thead>
+    <tr>
+      <td>Module name</td>
+      <td>Description</td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>build-std-java</td>
+      <td>a standard build for simple java modules, relying on standard phases, and providing compilation, execution and unit tests</td>
+    </tr>
+    <tr>
+      <td>build-webapp-java</td>
+      <td>a standard build for webapp java modules, relying on standard phases, and providing compilation, execution and unit tests</td>
+    </tr>
+    <tr>
+      <td>build-std-scala</td>
+      <td>a standard build for simple scala modules, relying on standard phases, and providing compilation, execution and unit tests</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3>phases description:</h3>
+Phases define an ordered set of build phases. Build phases are responsible for the build choreography at macro level. They are inspired by the same concept in Maven. In practice they are very similar to Ant targets, except that their dependencies can be defined by the dependency target using a syntax like this:
+
+<code type="xml">
+<target name="xxx" phase="yyy" />
+</code>
+This basically adds the target "xxx" to the list of dependencies of the phase "yyy".
+Usually you use only one phases definition build module.
+<table>
+  <thead>
+    <tr>
+      <td>Module name</td>
+      <td>Description</td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>phases-std</td>
+      <td>describes the standard phases of a build. These phase are directly inspired by maven 2 standard phases.</td>
+    </tr>
+  </tbody>
+</table>
+
+See <a href="ref/phases.html">Understanding phases</a> to have more informations on phases.
+
+<h3>Plugins</h3>
+Build plugins are there to actually define each block of the build system. They interact with each other by relying on the file system and properties (for instance run-java expect java classes to be in directory pointed by ${target.main.classes}). For the whole build choreography they rely on phases. Each build plugin define the expected "parameters" (i.e. the expected properties, paths and phases) by using a parameter task like this:
+
+<code type="xml">
+<ea:parameter property="src.main.java" required="true" description="directory where sources to be compiled are" />
+</code>
+
+This is intended to be used both for validation and documentation, ATM only basic validation is performed.
+<ul>
+  <li>Java plugins
+    <ul>
+      <li>Java compilation</li>
+      <li>Javadoc generation</li>
+      <li>Run java application</li>
+    </ul>
+  </li>
+  <li>Scala plugins
+    <ul>
+      <li>Scala compilation</li>
+      <li>Scaladoc</li>
+    </ul>
+  </li>
+  <li>Packaging plugins
+    <ul>
+      <li>Manifest plugins</li>
+      <li>Packaging jar application</li>
+      <li>Packaging war application</li>
+      <li>Source packaging</li>
+    </ul>
+  </li>
+  <li>Test plugins
+    <ul>
+      <li>abstract tests (used by all *tests plugins)</li>
+      <li>Junit tests</li>
+      <li>TestNG tests</li>
+    </ul>
+  </li>
+  <li>Dependency / Publication
+    <ul>
+      <li>Common ivy tasks (Reports, clean-cache, etc...)</li>
+      <li>Dependency management (using Apache Ivy)</li>
+      <li>Publication (using Apache Ivy)</li>
+    </ul>
+  </li>
+  <li>Source Code Management Plugins
+    <ul>
+      <li>SVN</li>
+    </ul>
+  </li>
+  <li>Documentation Plugins
+    <ul>
+      <li>Documentation generation</li>
+      <li>Xooki</li>
+    </ul>
+  </li>
+  <li>Others Plugins
+    <ul>
+      <li>Clean</li>
+      <li>Resource standard</li>
+      <li>Emma coverage</li>
+      <li>Checkstyle</li>
+      <li>Jetty deployment</li>
+      <li>Skeleton plugins (manages skeleton of projects)</li>
+     </ul>
+  </li>
+</ul>
+</textarea>
+<script type="text/javascript">xooki.postProcess();</script>
+</body>
+</html>

Added: incubator/easyant/site/sources/sortable.js
URL: http://svn.apache.org/viewvc/incubator/easyant/site/sources/sortable.js?rev=1078591&view=auto
==============================================================================
--- incubator/easyant/site/sources/sortable.js (added)
+++ incubator/easyant/site/sources/sortable.js Sun Mar  6 21:48:20 2011
@@ -0,0 +1,323 @@
+/*
+Table sorting script  by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/.
+Based on a script from http://www.kryogenix.org/code/browser/sorttable/.
+Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html .
+
+Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk.
+
+Version 1.5.7
+*/
+
+/* You can change these values */
+var image_path = "http://www.joostdevalk.nl/code/sortable-table/";
+var image_up = "arrow-up.gif";
+var image_down = "arrow-down.gif";
+var image_none = "arrow-none.gif";
+var europeandate = true;
+var alternate_row_colors = true;
+
+/* Don't change anything below this unless you know what you're doing */
+addEvent(window, "load", sortables_init);
+
+var SORT_COLUMN_INDEX;
+var thead = false;
+
+function sortables_init() {
+	// Find all tables with class sortable and make them sortable
+	if (!document.getElementsByTagName) return;
+	tbls = document.getElementsByTagName("table");
+	for (ti=0;ti<tbls.length;ti++) {
+		thisTbl = tbls[ti];
+		if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id)) {
+			ts_makeSortable(thisTbl);
+		}
+	}
+}
+
+function ts_makeSortable(t) {
+	if (t.rows && t.rows.length > 0) {
+		if (t.tHead && t.tHead.rows.length > 0) {
+			var firstRow = t.tHead.rows[t.tHead.rows.length-1];
+			thead = true;
+		} else {
+			var firstRow = t.rows[0];
+		}
+	}
+	if (!firstRow) return;
+	
+	// We have a first row: assume it's the header, and make its contents clickable links
+	for (var i=0;i<firstRow.cells.length;i++) {
+		var cell = firstRow.cells[i];
+		var txt = ts_getInnerText(cell);
+		if (cell.className != "unsortable" && cell.className.indexOf("unsortable") == -1) {
+			cell.innerHTML = '<a href="#" class="sortheader" onclick="ts_resortTable(this, '+i+');return false;">'+txt+'<span class="sortarrow">&nbsp;&nbsp;<img src="'+ image_path + image_none + '" alt="&darr;"/></span></a>';
+		}
+	}
+	if (alternate_row_colors) {
+		alternate(t);
+	}
+}
+
+function ts_getInnerText(el) {
+	if (typeof el == "string") return el;
+	if (typeof el == "undefined") { return el };
+	if (el.innerText) return el.innerText;	//Not needed but it is faster
+	var str = "";
+	
+	var cs = el.childNodes;
+	var l = cs.length;
+	for (var i = 0; i < l; i++) {
+		switch (cs[i].nodeType) {
+			case 1: //ELEMENT_NODE
+				str += ts_getInnerText(cs[i]);
+				break;
+			case 3:	//TEXT_NODE
+				str += cs[i].nodeValue;
+				break;
+		}
+	}
+	return str;
+}
+
+function ts_resortTable(lnk, clid) {
+	var span;
+	for (var ci=0;ci<lnk.childNodes.length;ci++) {
+		if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
+	}
+	var spantext = ts_getInnerText(span);
+	var td = lnk.parentNode;
+	var column = clid || td.cellIndex;
+	var t = getParent(td,'TABLE');
+	// Work out a type for the column
+	if (t.rows.length <= 1) return;
+	var itm = "";
+	var i = 0;
+	while (itm == "" && i < t.tBodies[0].rows.length) {
+		var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]);
+		itm = trim(itm);
+		if (itm.substr(0,4) == "<!--" || itm.length == 0) {
+			itm = "";
+		}
+		i++;
+	}
+	if (itm == "") return; 
+	sortfn = ts_sort_caseinsensitive;
+	if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date;
+	if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date;
+	if (itm.match(/^-?[£$€Û¢´]\d/)) sortfn = ts_sort_numeric;
+	if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfn = ts_sort_numeric;
+	SORT_COLUMN_INDEX = column;
+	var firstRow = new Array();
+	var newRows = new Array();
+	for (k=0;k<t.tBodies.length;k++) {
+		for (i=0;i<t.tBodies[k].rows[0].length;i++) { 
+			firstRow[i] = t.tBodies[k].rows[0][i]; 
+		}
+	}
+	for (k=0;k<t.tBodies.length;k++) {
+		if (!thead) {
+			// Skip the first row
+			for (j=1;j<t.tBodies[k].rows.length;j++) { 
+				newRows[j-1] = t.tBodies[k].rows[j];
+			}
+		} else {
+			// Do NOT skip the first row
+			for (j=0;j<t.tBodies[k].rows.length;j++) { 
+				newRows[j] = t.tBodies[k].rows[j];
+			}
+		}
+	}
+	newRows.sort(sortfn);
+	if (span.getAttribute("sortdir") == 'down') {
+			ARROW = '&nbsp;&nbsp;<img src="'+ image_path + image_down + '" alt="&darr;"/>';
+			newRows.reverse();
+			span.setAttribute('sortdir','up');
+	} else {
+			ARROW = '&nbsp;&nbsp;<img src="'+ image_path + image_up + '" alt="&uarr;"/>';
+			span.setAttribute('sortdir','down');
+	} 
+    // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
+    // don't do sortbottom rows
+    for (i=0; i<newRows.length; i++) { 
+		if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) {
+			t.tBodies[0].appendChild(newRows[i]);
+		}
+	}
+    // do sortbottom rows only
+    for (i=0; i<newRows.length; i++) {
+		if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) 
+			t.tBodies[0].appendChild(newRows[i]);
+	}
+	// Delete any other arrows there may be showing
+	var allspans = document.getElementsByTagName("span");
+	for (var ci=0;ci<allspans.length;ci++) {
+		if (allspans[ci].className == 'sortarrow') {
+			if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us?
+				allspans[ci].innerHTML = '&nbsp;&nbsp;<img src="'+ image_path + image_none + '" alt="&darr;"/>';
+			}
+		}
+	}		
+	span.innerHTML = ARROW;
+	alternate(t);
+}
+
+function getParent(el, pTagName) {
+	if (el == null) {
+		return null;
+	} else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) {
+		return el;
+	} else {
+		return getParent(el.parentNode, pTagName);
+	}
+}
+
+function sort_date(date) {	
+	// y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
+	dt = "00000000";
+	if (date.length == 11) {
+		mtstr = date.substr(3,3);
+		mtstr = mtstr.toLowerCase();
+		switch(mtstr) {
+			case "jan": var mt = "01"; break;
+			case "feb": var mt = "02"; break;
+			case "mar": var mt = "03"; break;
+			case "apr": var mt = "04"; break;
+			case "may": var mt = "05"; break;
+			case "jun": var mt = "06"; break;
+			case "jul": var mt = "07"; break;
+			case "aug": var mt = "08"; break;
+			case "sep": var mt = "09"; break;
+			case "oct": var mt = "10"; break;
+			case "nov": var mt = "11"; break;
+			case "dec": var mt = "12"; break;
+			// default: var mt = "00";
+		}
+		dt = date.substr(7,4)+mt+date.substr(0,2);
+		return dt;
+	} else if (date.length == 10) {
+		if (europeandate == false) {
+			dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2);
+			return dt;
+		} else {
+			dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
+			return dt;
+		}
+	} else if (date.length == 8) {
+		yr = date.substr(6,2);
+		if (parseInt(yr) < 50) { 
+			yr = '20'+yr; 
+		} else { 
+			yr = '19'+yr; 
+		}
+		if (europeandate == true) {
+			dt = yr+date.substr(3,2)+date.substr(0,2);
+			return dt;
+		} else {
+			dt = yr+date.substr(0,2)+date.substr(3,2);
+			return dt;
+		}
+	}
+	return dt;
+}
+
+function ts_sort_date(a,b) {
+	dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
+	dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
+	
+	if (dt1==dt2) {
+		return 0;
+	}
+	if (dt1<dt2) { 
+		return -1;
+	}
+	return 1;
+}
+function ts_sort_numeric(a,b) {
+	var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
+	aa = clean_num(aa);
+	var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
+	bb = clean_num(bb);
+	return compare_numeric(aa,bb);
+}
+function compare_numeric(a,b) {
+	var a = parseFloat(a);
+	a = (isNaN(a) ? 0 : a);
+	var b = parseFloat(b);
+	b = (isNaN(b) ? 0 : b);
+	return a - b;
+}
+function ts_sort_caseinsensitive(a,b) {
+	aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();
+	bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();
+	if (aa==bb) {
+		return 0;
+	}
+	if (aa<bb) {
+		return -1;
+	}
+	return 1;
+}
+function ts_sort_default(a,b) {
+	aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
+	bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
+	if (aa==bb) {
+		return 0;
+	}
+	if (aa<bb) {
+		return -1;
+	}
+	return 1;
+}
+function addEvent(elm, evType, fn, useCapture)
+// addEvent and removeEvent
+// cross-browser event handling for IE5+,	NS6 and Mozilla
+// By Scott Andrew
+{
+	if (elm.addEventListener){
+		elm.addEventListener(evType, fn, useCapture);
+		return true;
+	} else if (elm.attachEvent){
+		var r = elm.attachEvent("on"+evType, fn);
+		return r;
+	} else {
+		alert("Handler could not be removed");
+	}
+}
+function clean_num(str) {
+	str = str.replace(new RegExp(/[^-?0-9.]/g),"");
+	return str;
+}
+function trim(s) {
+	return s.replace(/^\s+|\s+$/g, "");
+}
+function alternate(table) {
+	// Take object table and get all it's tbodies.
+	var tableBodies = table.getElementsByTagName("tbody");
+	// Loop through these tbodies
+	for (var i = 0; i < tableBodies.length; i++) {
+		// Take the tbody, and get all it's rows
+		var tableRows = tableBodies[i].getElementsByTagName("tr");
+		// Loop through these rows
+		// Start at 1 because we want to leave the heading row untouched
+		for (var j = 0; j < tableRows.length; j++) {
+			// Check if j is even, and apply classes for both possible results
+			if ( (j % 2) == 0  ) {
+				if ( !(tableRows[j].className.indexOf('odd') == -1) ) {
+					tableRows[j].className = tableRows[j].className.replace('odd', 'even');
+				} else {
+					if ( tableRows[j].className.indexOf('even') == -1 ) {
+						tableRows[j].className += " even";
+					}
+				}
+			} else {
+				if ( !(tableRows[j].className.indexOf('even') == -1) ) {
+					tableRows[j].className = tableRows[j].className.replace('even', 'odd');
+				} else {
+					if ( tableRows[j].className.indexOf('odd') == -1 ) {
+						tableRows[j].className += " odd";
+					}
+				}
+			} 
+		}
+	}
+}