You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ar...@apache.org on 2009/12/03 22:35:18 UTC

svn commit: r886930 [1/10] - in /myfaces/trinidad/branches/ar_clientBehaviors: trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/ trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/ trinidad-build/src/main/res...

Author: arobinson74
Date: Thu Dec  3 21:35:09 2009
New Revision: 886930

URL: http://svn.apache.org/viewvc?rev=886930&view=rev
Log:
Checkpoint

Modified:
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalScrRdr-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimal-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalIE-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalIERtl-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalInacc-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalPPC-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalSaf-golden.xml
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalScrRdr-golden.xml

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java Thu Dec  3 21:35:09 2009
@@ -18,14 +18,21 @@
  */
 package org.apache.myfaces.trinidad.render;
 
+
 import java.io.IOException;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
 import javax.faces.application.ResourceHandler;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.ClientBehaviorHint;
+import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.render.Renderer;
 
@@ -162,7 +169,6 @@
       tearDownEncodingContext(context, rc, (UIXComponent)component);
   }
 
-
   //
   // COERCION HELPERS
   //
@@ -186,7 +192,7 @@
       return null;
 
     String uri = o.toString();
-    
+
     // *** EL Coercion problem ***
     // If icon or image attribute was declared with #{resource[]} and that expression
     // evaluates to null (it means ResourceHandler.createResource returns null because requested resource does not exist)
@@ -196,8 +202,8 @@
     {
       return null;
     }
-    
-    
+
+
     // With JSF 2.0 url for resources can be done with EL like #{resource['resourcename']}
     // and such EL after evalution contains context path for the current web application already,
     // -> we dont want call viewHandler.getResourceURL()
@@ -213,7 +219,7 @@
     }
     else
     {
-      // If the specified path starts with a "/", 
+      // If the specified path starts with a "/",
       // following method will prefix it with the context path for the current web application,
       // and return the result
       return fc.getApplication().getViewHandler().getResourceURL(fc, uri);
@@ -241,7 +247,6 @@
     }
   }
 
-
   /**
    * Coerces an object into a resource URI, calling the view-handler.
    * @deprecated use toResourceUri
@@ -251,7 +256,6 @@
     return toResourceUri(FacesContext.getCurrentInstance(),o);
   }
 
-
   /**
    * Returns the integer value of an object;  this does
    * not support null (which must be substituted with a default
@@ -262,8 +266,6 @@
     return ((Number) o).intValue();
   }
 
-
-
   /**
    * Returns the integer value of an object;  this does
    * not support null (which must be substituted with a default
@@ -316,7 +318,6 @@
     return c;
   }
 
-
   @Override
   public final void encodeBegin(FacesContext context,
                           UIComponent component) throws IOException
@@ -377,12 +378,12 @@
     if (getRendersChildren())
       throw new IllegalStateException();
   }
-  
+
   /**
    * Hook for rendering the component resources for the <code>target</code>.
    * @param context Current <code>FacesContext</code> object for this request.
    * @param target The target for the resources (e.g. head/body/form)
-   * 
+   *
    * @throws IOException
    */
   protected final void encodeComponentResources(
@@ -413,7 +414,6 @@
       throw new IllegalStateException();
   }
 
-
   /**
    * Hook for rendering all of a component;  only
    * called if getRendersChildren() is <em>true</em>.
@@ -459,7 +459,6 @@
     child.encodeEnd(context);
   }
 
-
   @SuppressWarnings("unchecked")
   protected void encodeAllChildren(
     FacesContext context,
@@ -659,7 +658,6 @@
     return total;
   }
 
-
  /**
    * @param afterChildIndex The children coming after this index, will
    * be considered.
@@ -684,7 +682,6 @@
     return NO_CHILD_INDEX;
   }
 
-
   //
   // AGENT CAPABILITY CONVENIENCE METHODS
   //
@@ -779,6 +776,158 @@
   // Rendering convenience methods.
   //
 
+  /**
+   * Renders a non-submission client event handler (onfocus for example) including any associated
+   * client behaviors for the event.
+   *
+   * @param facesContext The faces context
+   * @param component The component
+   * @param disabled true if the component is disabled, stops the processing of client behaviors
+   * @param eventName The event, without the "on*" prefix, to render
+   * @param eventHandlerScript Script to be executed after the behaviors. May be null
+   * @param eventAttributeName the event attribute name. Null if it should not be rendered. Example
+   * value: onclick
+   * @param userHandlerScript user event handler to be executed before the event handler script and
+   * any client behavior scripts. May be null.
+   * @param params Any parameters that should be sent by behaviors that submit
+   * @throws IOException If a rendering exception occurs
+   */
+  protected void renderClientEventHandler(
+    FacesContext                                facesContext,
+    UIComponent                                 component,
+    boolean                                     disabled,
+    String                                      eventName,
+    String                                      eventAttributeName,
+    Collection<ClientBehaviorContext.Parameter> params,
+    String                                      userHandlerScript,
+    String                                      eventHandlerScript
+    ) throws IOException
+  {
+    List<ClientBehavior> behaviors = null;
+    ClientBehaviorContext behaviorContext = null;
+
+    if (!disabled && component instanceof ClientBehaviorHolder)
+    {
+      behaviors = ((ClientBehaviorHolder)component).getClientBehaviors().get(eventName);
+      if (behaviors != null && !behaviors.isEmpty())
+      {
+        behaviorContext = ClientBehaviorContext.createClientBehaviorContext(
+          facesContext, component, eventName, component.getClientId(facesContext), params);
+      }
+    }
+    if (params == null)
+    {
+      params = Collections.emptyList();
+    }
+
+    boolean hasHandler = eventHandlerScript != null && eventHandlerScript.length() > 0;
+    boolean hasUserHandler = userHandlerScript != null && userHandlerScript.length() > 0;
+    String script = null;
+
+    if (hasHandler && behaviorContext == null && !hasUserHandler)
+    {
+      script = eventHandlerScript;
+    }
+    else if (hasUserHandler && behaviorContext == null && !hasHandler)
+    {
+      script = userHandlerScript;
+    }
+    else if (!hasUserHandler && !hasHandler && behaviorContext != null && behaviors.size() == 1)
+    {
+      ClientBehavior behavior = behaviors.get(0);
+      script = behavior.getScript(behaviorContext);
+      if ("click".equals(eventName) && _isSubmittingBehavior(behavior))
+      {
+        // prevent the default click action if submitting
+        script += ";return false;";
+      }
+    }
+    else
+    {
+      // There are multiple scripts, we will need to chain the methods.
+      int length = behaviors.size();
+      if (hasHandler) { ++length; }
+      if (hasUserHandler) { ++length; }
+      String[] scripts = new String[length];
+      int index = 0;
+      boolean submitting = false;
+      if (hasUserHandler)
+      {
+        scripts[0] = userHandlerScript;
+        index = 1;
+      }
+      for (int size = behaviors.size() + index; index < size; ++index)
+      {
+        ClientBehavior behavior = behaviors.get(index);
+        scripts[index] = behavior.getScript(behaviorContext);
+        submitting |= _isSubmittingBehavior(behavior);
+      }
+      if (hasHandler)
+      {
+        scripts[index] = eventHandlerScript;
+      }
+
+      script = RenderUtils.getChainedJS(true, scripts);
+      if (submitting && "click".equals(eventName))
+      {
+        // prevent the default click action if submitting
+        script += ";return false;";
+      }
+    }
+
+    if (script != null)
+    {
+      facesContext.getResponseWriter().writeAttribute(eventAttributeName, script, null);
+    }
+  }
+
+  protected void encodeParameters(
+    Collection<ClientBehaviorContext.Parameter> params,
+    StringBuilder                               builder
+    ) throws IOException
+  {
+    boolean first = true;
+    for (ClientBehaviorContext.Parameter param : params)
+    {
+      if (first)
+      {
+        first = false;
+      }
+      else
+      {
+        builder.append(',');
+      }
+      _encodeJsParameter(builder, param.getName(), param.getValue());
+    }
+  }
+
+  private boolean _isSubmittingBehavior(
+    ClientBehavior behavior)
+  {
+    return behavior.getHints().contains(ClientBehaviorHint.SUBMITTING);
+  }
+
+  private void _encodeJsParameter(
+    StringBuilder out,
+    String        name,
+    Object        value)
+  {
+    out.append('\'');
+    RenderUtils.escapeJS(out, name, true);
+    out.append("\':");
+
+    if (value == null)
+    {
+      out.append("null");
+    }
+    else
+    {
+      out.append('\'');
+      RenderUtils.escapeJS(out, value.toString(), true);
+      out.append('\'');
+    }
+  }
+
   protected void renderEncodedActionURI(
    FacesContext context,
    String       name,
@@ -803,8 +952,6 @@
     }
   }
 
-
-
   /**
    * Render a generic CSS styleClass (not one derived from an attribute).
    * The styleclass will be passed through the RenderingContext
@@ -876,7 +1023,6 @@
     context.getResponseWriter().writeAttribute("class", value, null);
   }
 
-
   // Heuristic guess of the maximum length of a typical compressed style
   private static final int _COMPRESSED_LENGTH = 4;
 

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java Thu Dec  3 21:35:09 2009
@@ -6,9 +6,9 @@
  *  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
@@ -19,6 +19,8 @@
 package org.apache.myfaces.trinidad.render;
 
 import java.io.IOException;
+
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.faces.component.NamingContainer;
@@ -27,9 +29,12 @@
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.trinidad.component.UIXForm;
+import org.apache.myfaces.trinidad.context.Agent;
+import org.apache.myfaces.trinidad.context.RenderingContext;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 import org.apache.myfaces.trinidad.util.ComponentUtils;
 
+
 /**
  * Generic utilities for rendering.
  *
@@ -104,21 +109,21 @@
   }
 
   /**
-   * Given a 'from' component and a relativeId, 
+   * Given a 'from' component and a relativeId,
    * return the clientId for use at rendering time that will identify the
    * id of the component you are referencing on the client.
    * This is used for attributes like e.g. "for" and "chooseId".
-   * 
+   *
    * <p>
    * e.g., given this hierarchy
    * <br/>
-   *  &lt;f:subview id="aaa"&gt;  
+   *  &lt;f:subview id="aaa"&gt;
    *    &lt;f:subview id="xxx"&gt;<br/>
            &lt;tr:chooseColor id="cp1" .../&gt;<br/>
             &lt;f:subview id="yyy"><br/>
                &lt;tr:inputColor id="sic1" chooseId="::cp1" .../&gt;<br/>
             &lt;/f:subview&gt;<br/>
-         &lt;/f:subview&gt;   
+         &lt;/f:subview&gt;
       &lt;/f:subview&gt;<br/>
     </p>
     <p>
@@ -126,7 +131,7 @@
    * The 'relativeId' is "::cp1". ('::' pops up one naming container)
    * The return value is 'aaa:xxx:cp1' when
    * the clientId of the 'xxx' component is 'aaa:xxx'.
-   * 
+   *
    * </p>
    * <p>
    * It does not assume that the target component can be located, although it does
@@ -143,7 +148,7 @@
    * naming container. If the 'from' component is a naming container, then
    * '::' will pop out of the 'from' component itself. A relativeId with ':::' pops up two naming containers, etc.
    * ComponentUtils.findRelativeComponent finds and returns the component, whereas
-   * this method returns a relativeId that can be used during renderering 
+   * this method returns a relativeId that can be used during renderering
    * so the component can be found in javascript on the client.
    * </p>
    * @param context
@@ -162,7 +167,7 @@
   {
     if (from == null)
         return null;
-    
+
     if ((scopedId == null) || (scopedId.length() == 0))
       return null;
 
@@ -170,41 +175,41 @@
     int colonCount = _getColonCount(scopedId);
 
     // colonCount == 0: fully relative
-    // colonCount == 1: absolute 
+    // colonCount == 1: absolute
     // colonCount > 1: for each extra colon after 1, pop out of
     // the naming container (to the view root, if naming containers run out)
-    
+
     if (colonCount == 1)
       return scopedId.substring(1);
     if (colonCount == 0 && !(from instanceof NamingContainer))
     {
-      // we do it the fast way if there 
+      // we do it the fast way if there
       // are no colons and the from isn't a NamingContainer.
       // the reason is this use case hasn't changed between the previous
       // logic and the current logic for finding the component, so it
-      // is already backward compatible, and therefore we don't have to 
+      // is already backward compatible, and therefore we don't have to
       // call the findComponent code for backward compatibility.
       return _getRelativeId(context, from, scopedId, colonCount);
     }
-    
-    // 
-    // We need to make it backward compatible, and 
+
+    //
+    // We need to make it backward compatible, and
     // the only way is to use the findRelativeComponent code.
-    // This way we'll have a hint that the syntax is 'old' if 
-    // it can't be found. Plus, findRelativeComponent code has 
+    // This way we'll have a hint that the syntax is 'old' if
+    // it can't be found. Plus, findRelativeComponent code has
     // backward compatibilty built in.
-    UIComponent component = 
+    UIComponent component =
       ComponentUtils.findRelativeComponent(from, scopedId);
     if (component == null && from instanceof NamingContainer)
     {
       component = ComponentUtils.findRelativeComponent(from.getParent(), scopedId);
       if (component != null)
       {
-        _LOG.warning("DEPRECATED_RELATIVE_ID_SYNTAX", 
+        _LOG.warning("DEPRECATED_RELATIVE_ID_SYNTAX",
           new Object[] {scopedId, from});
       }
     }
-    
+
     // the component wasn't found, but go ahead and return something smart
     if (component == null)
     {
@@ -217,13 +222,325 @@
 
   }
 
+  /**
+   * Return the chained JavaScript
+   */
+  public static String getChainedJS(
+    boolean   shortCircuit,
+    String... scripts
+    )
+  {
+    if (scripts.length == 0)
+    {
+      return null;
+    }
+
+    if (scripts.length == 1)
+    {
+      return scripts[1];
+    }
+    // Strip out null & 0-length scripts
+    List<String> filteredScripts = new ArrayList<String>(scripts.length);
+    for (String script : scripts)
+    {
+      if (script != null)
+      {
+        script = script.trim();
+        if (script.length() > 0)
+        {
+          filteredScripts.add(script);
+        }
+      }
+    }
+    if (filteredScripts.isEmpty())
+    {
+      return null;
+    }
+    else if (filteredScripts.size() == 1)
+    {
+      return filteredScripts.get(0);
+    }
+
+    StringBuilder builder = new StringBuilder(100);
+    builder.append("return _chainMultiple([");
+    boolean first = true;
+    for (String script : filteredScripts)
+    {
+      if (first)
+      {
+        builder.append('\'');
+        first = false;
+      }
+      else
+      {
+        builder.append(",'");
+      }
+      escapeJS(builder, script, true);
+      builder.append('\'');
+    }
+    RenderingContext rc = RenderingContext.getCurrentInstance();
+    if (rc.getAgent().getType().equals(Agent.TYPE_DESKTOP))
+    {
+      if (shortCircuit)
+        builder.append("],this,event,true);");
+      else
+        builder.append("],this,event);");
+    }
+    else
+    {
+      // Some mobile browsers do not support DOM Event object.
+      // If event is passed, the script crushes before the function gains
+      // control.
+      if (shortCircuit)
+        builder.append("],this,null,true);");
+      else
+        builder.append("],this,null);");
+    }
+
+    return builder.toString();
+  }
+
+  /**
+   * Handle escaping '/', and single quotes, plus escaping text inside of
+   * quotes with just a String for input.  If a String in and a String out is
+   * all that is required, this version is more efficient if the String
+   * does not need to be escaped.
+   */
+  public static String escapeJS(
+    String inString
+    )
+  {
+    return escapeJS(inString, false /* inQuotes */);
+  }
+
+  /**
+   * Handle escaping '/', and single quotes, plus escaping text inside of
+   * quotes with just a String for input.  If a String in and a String out is
+   * all that is required, this version is more efficient if the String
+   * does not need to be escaped.
+   */
+  public static String escapeJS(
+    String  inString,
+    boolean inQuotes
+    )
+  {
+    int charCount = inString.length();
+
+    StringBuilder outBuilder = new StringBuilder(charCount * 2);
+
+    escapeJS(outBuilder, inString, inQuotes);
+
+    // since we only add characters, if the character count is different, we
+    // will have a different output string, otherwise, reuse the input string,
+    // as it is unchanged
+    if (charCount != outBuilder.length())
+    {
+      return outBuilder.toString();
+    }
+    else
+    {
+      return inString;
+    }
+  }
+
+  /**
+   * Handle escaping '/', and single quotes, plus escaping text inside of
+   * quotes.
+   */
+  public static void escapeJS(
+    StringBuilder outBuilder,
+    String       inString
+    )
+  {
+    escapeJS(outBuilder, inString, false /* inQuotes */);
+  }
+
+  /**
+   * Handle escaping '/', and single quotes, plus escaping text inside of
+   * quotes.
+   */
+  public static void escapeJS(
+    StringBuilder outBuilder,
+    String       inString,
+    boolean      inQuotes)
+  {
+    escapeJS(outBuilder, inString, inQuotes, 1 /* escapeCount */);
+  }
+
+  /**
+   * Handle escaping '/', and single quotes, plus escaping text inside of
+   * quotes.
+   */
+  public static void escapeJS(
+    StringBuilder outBuilder,
+    String       inString,
+    boolean      inQuotes,
+    int          escapeCount
+    )
+  {
+    int leadSlashCount = (int)Math.pow(2, escapeCount) - 2;
+    int charCount = inString.length();
+
+    char    prevChar  = '\u0000';
+
+    //
+    // loop through the string escaping the single quotes at the \'s as
+    // necessary
+    //
+    for (int i = 0; i < charCount; i++)
+    {
+      char currChar = inString.charAt(i);
+
+      if (currChar == '\'')
+      {
+        if (!(inQuotes && (prevChar == '\\')))
+        {
+          // only toggle whetehr we are in quotes if the quote isn't escaped
+          inQuotes = !inQuotes;
+        }
+
+        // handle double-escaping case
+        // eg. "\'" + escapeJS(builder,"a'b",true,2) + "\'" -> "\'a\\\'b\'"
+        for (int j=0; j < leadSlashCount; j++)
+        {
+          outBuilder.append('\\');
+        }
+
+        // always escape quotes
+        outBuilder.append('\\');
+
+        // output the current character
+        outBuilder.append(currChar);
+      }
+      else
+      {
+        if (inQuotes)
+        {
+          if (currChar > 255)
+          {
+            outBuilder.append("\\u");
+            _appendHexString(outBuilder, currChar, 4);
+          }
+          else
+          {
+            if ((currChar > 31) &&
+                (currChar < 128))
+            {
+              if (currChar == '\\')
+              {
+                // escape all \'s in strings
+                outBuilder.append('\\');
+              }
+
+              // output the current character
+              outBuilder.append(currChar);
+            }
+            else
+            {
+              outBuilder.append("\\x");
+              _appendHexString(outBuilder, currChar, 2);
+            }
+          }
+        }
+        else
+        {
+          // Double up backslashes (see bug 1676002)
+          if (currChar == '\\')
+            outBuilder.append('\\');
+
+          // output the current character
+          outBuilder.append(currChar);
+        }
+      }
+
+      // keep track of the previous character to determine whether
+      // single quotes are escaped
+      prevChar = currChar;
+    }
+  }
+
+  private static void _escapeSingleQuotes(
+    StringBuilder outBuilder,
+    String       inString
+    )
+  {
+    int     charCount = inString.length();
+    char    prevChar  = '\u0000';
+    boolean inQuotes  = false;
+
+    //
+    // loop through the string escaping the single quotes at the \'s as
+    // necessary
+    //
+    for (int i = 0; i < charCount; i++)
+    {
+      char currChar = inString.charAt(i);
+
+      if (currChar == '\'')
+      {
+        if (!(inQuotes && (prevChar == '\\')))
+        {
+          // only toggle whetehr we are in quotes if the quote isn't escaped
+          inQuotes = !inQuotes;
+        }
+
+        // always escape quotes
+        outBuilder.append('\\');
+      }
+      else if ((currChar == '\\') && inQuotes)
+      {
+        // escape all \'s in strings
+        outBuilder.append('\\');
+      }
+
+      // output the current character
+      outBuilder.append(currChar);
+
+      // keep track of the previous character to determine whether
+      // single quotes are escaped
+      prevChar = currChar;
+    }
+  }
+
+  private static void _appendHexString(
+    StringBuilder builder,
+    int          number,
+    int          minDigits
+    )
+  {
+    String hexString = Integer.toHexString(number);
+
+    int hexLength = hexString.length();
+
+    int zeroPadding = minDigits - hexLength;
+
+    if (zeroPadding > 0)
+    {
+      builder.append('0');
+
+      while (zeroPadding > 1)
+      {
+        builder.append('0');
+        zeroPadding--;
+      }
+    }
+    else
+    {
+      if (zeroPadding < 0)
+      {
+        throw new IllegalArgumentException();
+      }
+    }
+
+    builder.append(hexString);
+  }
 
   // This does NOT use findComponent
   // ComponentUtils.findRelativeComponent finds the component, whereas
-  // this method returns a relativeId that can be used during renderering 
+  // this method returns a relativeId that can be used during renderering
   // so the component can be found in javascript on the client.
   // This code is faster because it doesn't have to find the component.
-  // It is used when the getRelativeId's findRelativeComponent cannot find 
+  // It is used when the getRelativeId's findRelativeComponent cannot find
   // the component. This way we can return the relativeId anyway.
   private static String _getRelativeId(
     FacesContext context,
@@ -239,8 +556,8 @@
     {
       relativeId = relativeId.substring(colonCount);
     }
-      
-    // if the component is not a NamingContainer, then we need to 
+
+    // if the component is not a NamingContainer, then we need to
     // get the component's naming container and set this as the 'from'.
 
     if (!(from instanceof NamingContainer))
@@ -286,7 +603,7 @@
 
     return null;
   }
-  
+
   // Figure out how many colons
   private static int _getColonCount(String relativeId)
   {

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml Thu Dec  3 21:35:09 2009
@@ -16,7 +16,7 @@
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
-	   
+
 -->
 <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:tr="http://myfaces.apache.org/trinidad"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml Thu Dec  3 21:35:09 2009
@@ -152,6 +152,10 @@
       </mfp:example>
       <mfp:author>Andy Schwartz</mfp:author>
       <mfp:component-metadata/>
+      <fmd:client-behavior-holder>true</fmd:client-behavior-holder>
+      <fmd:default-event-name>click</fmd:default-event-name>
+      <fmd:event-names>blur click dblclick focus keydown keypress keyup mousedown mousemove
+        mouseout mouseover mouseup</fmd:event-names>
       <mfp:java-constructor>
         <mfp:property-name>destination</mfp:property-name>
       </mfp:java-constructor>

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java Thu Dec  3 21:35:09 2009
@@ -37,6 +37,7 @@
 import org.apache.myfaces.trinidad.context.Agent;
 import org.apache.myfaces.trinidad.context.RenderingContext;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.render.RenderUtils;
 import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.Scriptlet;
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.XhtmlScriptletFactory;
@@ -200,153 +201,85 @@
     writer.endElement("script");
   }
 
-
-   /**
+  /**
    * Return the chained JavaScript
+   * @deprecated use method in RenderUtils instead
    */
+  @Deprecated
   public static String getChainedJS(
     String evh1,
     String evh2,
     boolean shortCircuit
     )
   {
-    //
-    // don't chain if one of the Strings is null or empty
-    //
-    if (evh1 == null)
-      return evh2;
-
-    if (evh2 == null)
-      return evh1;
-
-    int evh1Length = evh1.length();
-
-    if (evh1Length == 0)
-      return evh2;
-
-    int evh2Length = evh2.length();
-
-    if (evh2Length == 0)
-      return evh1;
-
-    //
-    // Chain the results together
-    //
-
-    // allocate enough room for the constants plus double the length
-    // of the possible-escaped strings
-    //
-    StringBuilder outBuilder = new StringBuilder(15 +
-                                              evh1Length * 2 +
-                                              3 +
-                                              evh2Length * 2 +
-                                              18);
-
-    outBuilder.append("return _chain('");
-    _escapeSingleQuotes(outBuilder, evh1);
-    outBuilder.append("','");
-    _escapeSingleQuotes(outBuilder, evh2);
-
-    RenderingContext arc = RenderingContext.getCurrentInstance();
-    boolean isDesktop = (arc.getAgent().getType().equals(Agent.TYPE_DESKTOP));
-
-    if (isDesktop)
-    {
-      if ( shortCircuit )
-        outBuilder.append("',this,event,true)");
-      else
-        outBuilder.append("',this,event)");
-    }
-    else
-    {
-      // Some mobile browsers do not support DOM Event object.
-      // If event is passed, the script crushes before the function gains
-      // control.
-      if ( shortCircuit )
-        outBuilder.append("',this,null,true)");
-      else
-        outBuilder.append("',this,null)");
-    }
-
-    return outBuilder.toString();
+    return RenderUtils.getChainedJS(shortCircuit, evh1, evh2);
   }
 
-
   /**
    * Handle escaping '/', and single quotes, plus escaping text inside of
    * quotes with just a String for input.  If a String in and a String out is
    * all that is required, this version is more efficient if the String
    * does not need to be escaped.
+   * @deprecated use method in RenderUtils instead
    */
+  @Deprecated
   public static String escapeJS(
     String inString
     )
   {
-    return escapeJS(inString, false /* inQuotes */);
+    return RenderUtils.escapeJS(inString);
   }
 
-
-
   /**
    * Handle escaping '/', and single quotes, plus escaping text inside of
    * quotes with just a String for input.  If a String in and a String out is
    * all that is required, this version is more efficient if the String
    * does not need to be escaped.
+   * @deprecated use method in RenderUtils instead
    */
+  @Deprecated
   public static String escapeJS(
     String  inString,
     boolean inQuotes
     )
   {
-    int charCount = inString.length();
-
-    StringBuilder outBuilder = new StringBuilder(charCount * 2);
-
-    escapeJS(outBuilder, inString, inQuotes);
-
-    // since we only add characters, if the character count is different, we
-    // will have a different output string, otherwise, reuse the input string,
-    // as it is unchanged
-    if (charCount != outBuilder.length())
-    {
-      return outBuilder.toString();
-    }
-    else
-    {
-      return inString;
-    }
+    return RenderUtils.escapeJS(inString, inQuotes);
   }
 
-
   /**
    * Handle escaping '/', and single quotes, plus escaping text inside of
    * quotes.
+   * @deprecated use method in RenderUtils instead
    */
+  @Deprecated
   public static void escapeJS(
     StringBuilder outBuilder,
     String       inString
     )
   {
-    escapeJS(outBuilder, inString, false /* inQuotes */);
+    RenderUtils.escapeJS(outBuilder, inString);
   }
 
-
   /**
    * Handle escaping '/', and single quotes, plus escaping text inside of
    * quotes.
+   * @deprecated use method in RenderUtils instead
    */
+  @Deprecated
   public static void escapeJS(
     StringBuilder outBuilder,
     String       inString,
     boolean      inQuotes)
   {
-    escapeJS(outBuilder, inString, inQuotes, 1 /* escapeCount */);
+    RenderUtils.escapeJS(outBuilder, inString, inQuotes);
   }
 
   /**
    * Handle escaping '/', and single quotes, plus escaping text inside of
    * quotes.
+   * @deprecated use method in RenderUtils instead
    */
+  @Deprecated
   public static void escapeJS(
     StringBuilder outBuilder,
     String       inString,
@@ -354,163 +287,9 @@
     int          escapeCount
     )
   {
-    int leadSlashCount = (int)Math.pow(2, escapeCount) - 2;
-    int charCount = inString.length();
-
-    char    prevChar  = '\u0000';
-
-    //
-    // loop through the string escaping the single quotes at the \'s as
-    // necessary
-    //
-    for (int i = 0; i < charCount; i++)
-    {
-      char currChar = inString.charAt(i);
-
-      if (currChar == '\'')
-      {
-        if (!(inQuotes && (prevChar == '\\')))
-        {
-          // only toggle whetehr we are in quotes if the quote isn't escaped
-          inQuotes = !inQuotes;
-        }
-
-        // handle double-escaping case
-        // eg. "\'" + escapeJS(builder,"a'b",true,2) + "\'" -> "\'a\\\'b\'"
-        for (int j=0; j < leadSlashCount; j++)
-        {
-          outBuilder.append('\\');
-        }
-
-        // always escape quotes
-        outBuilder.append('\\');
-
-        // output the current character
-        outBuilder.append(currChar);
-      }
-      else
-      {
-        if (inQuotes)
-        {
-          if (currChar > 255)
-          {
-            outBuilder.append("\\u");
-            _appendHexString(outBuilder, currChar, 4);
-          }
-          else
-          {
-            if ((currChar > 31) &&
-                (currChar < 128))
-            {
-              if (currChar == '\\')
-              {
-                // escape all \'s in strings
-                outBuilder.append('\\');
-              }
-
-              // output the current character
-              outBuilder.append(currChar);
-            }
-            else
-            {
-              outBuilder.append("\\x");
-              _appendHexString(outBuilder, currChar, 2);
-            }
-          }
-        }
-        else
-        {
-          // Double up backslashes (see bug 1676002)
-          if (currChar == '\\')
-            outBuilder.append('\\');
-
-          // output the current character
-          outBuilder.append(currChar);
-        }
-      }
-
-      // keep track of the previous character to determine whether
-      // single quotes are escaped
-      prevChar = currChar;
-    }
+    RenderUtils.escapeJS(outBuilder, inString, inQuotes, escapeCount);
   }
 
-  private static void _appendHexString(
-    StringBuilder builder,
-    int          number,
-    int          minDigits
-    )
-  {
-    String hexString = Integer.toHexString(number);
-
-    int hexLength = hexString.length();
-
-    int zeroPadding = minDigits - hexLength;
-
-    if (zeroPadding > 0)
-    {
-      builder.append('0');
-
-      while (zeroPadding > 1)
-      {
-        builder.append('0');
-        zeroPadding--;
-      }
-    }
-    else
-    {
-      if (zeroPadding < 0)
-      {
-        throw new IllegalArgumentException();
-      }
-    }
-
-    builder.append(hexString);
-  }
-
-
-  private static void _escapeSingleQuotes(
-    StringBuilder outBuilder,
-    String       inString
-    )
-  {
-    int     charCount = inString.length();
-    char    prevChar  = '\u0000';
-    boolean inQuotes  = false;
-
-    //
-    // loop through the string escaping the single quotes at the \'s as
-    // necessary
-    //
-    for (int i = 0; i < charCount; i++)
-    {
-      char currChar = inString.charAt(i);
-
-      if (currChar == '\'')
-      {
-        if (!(inQuotes && (prevChar == '\\')))
-        {
-          // only toggle whetehr we are in quotes if the quote isn't escaped
-          inQuotes = !inQuotes;
-        }
-
-        // always escape quotes
-        outBuilder.append('\\');
-      }
-      else if ((currChar == '\\') && inQuotes)
-      {
-        // escape all \'s in strings
-        outBuilder.append('\\');
-      }
-
-      // output the current character
-      outBuilder.append(currChar);
-
-      // keep track of the previous character to determine whether
-      // single quotes are escaped
-      prevChar = currChar;
-    }
-  }
   public static String getJSIdentifier(String clientId)
   {
     if (clientId == null)
@@ -526,7 +305,7 @@
     FastMessageFormat formatter = new FastMessageFormat(pattern);
     return formatter.format(parameters);
   }
-  
+
   /*
    * This method returns the encoded parameter name or paramater value
    * for the Non-JavaScript browsers
@@ -535,45 +314,45 @@
   {
     return param + XhtmlConstants.NO_JS_PARAMETER_KEY;
   }
-   
+
   /*
    * This method returns the name attribute of HTML elements for Non-JavaScript
-   * browsers. It is encoded with parameter name and value pair. 
+   * browsers. It is encoded with parameter name and value pair.
    */
   public static String getEncodedNameAttribute(String param[])
   {
     // The incoming array(param[]) must contain parameter name and value pair
     // in the order of <<name1>>, <<value1>>, <<name2>>, <<value2>>,...
-    // The encoded parameter name and value for the above would be 
+    // The encoded parameter name and value for the above would be
     // <<name1>><<encodingKey>><<value1>><<encodingKey>>
     // <<name2>><<encodingKey>><<value2>>
-            
+
     int noOfParam = param.length;
     int bufferLen = 0;
-    
-    // Calculate what would be the length of the encoded param name and  
+
+    // Calculate what would be the length of the encoded param name and
     // value pair. We need it to initialize the buffer size of StringBuilder.
     for(int i = 0; i < noOfParam; i++)
     {
       bufferLen += param[i].length();
     }
-    // If there are N parameter names and values, there would be N-1 
+    // If there are N parameter names and values, there would be N-1
     // encoding key so add its length also
     bufferLen  += (noOfParam -1) * XhtmlConstants.NO_JS_PARAMETER_KEY.length();
-   
+
     StringBuilder nameAttri = new StringBuilder(bufferLen);
-    
+
     //Encode all the parameter names and values except the last parameter value
     for(int i = 0; i < noOfParam-1; i++)
     {
       nameAttri.append(getEncodedParameter(param[i]));
     }
-    
+
     nameAttri.append(param[noOfParam-1]);
-  
+
     return(nameAttri.toString());
   }
-  
+
 
   /** HashMap mapping names to their scriptlets */
   private static Map<Object, Scriptlet> _sScriptletTable =

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js Thu Dec  3 21:35:09 2009
@@ -1847,13 +1847,13 @@
     // WM5.
     if (isPartial && _supportsPPR())
     {
-      // In the case of Windows-mobile(WM) browsers, during rendering, 
+      // In the case of Windows-mobile(WM) browsers, during rendering,
       // Trinidad stores the value of the request-header field, UA-pixels,
-      // into a hidden-parameter's value attribute. WM browsers' PPRs don't 
-      // contain UA-pixels in their request-headers. So during a WM browser's 
-      // PPR, we need to manually set the field, UA-pixels, into the 
+      // into a hidden-parameter's value attribute. WM browsers' PPRs don't
+      // contain UA-pixels in their request-headers. So during a WM browser's
+      // PPR, we need to manually set the field, UA-pixels, into the
       // request-header with the hidden parameter's value.
-                  
+
       if (_agent.isPIE || _agent.isWindowsMobile6)
       {
         var header = new Array(1);
@@ -1861,9 +1861,9 @@
         TrPage.getInstance().sendPartialFormPost(form, parameters, header);
       }
       else
-      {      
+      {
         TrPage.getInstance().sendPartialFormPost(form, parameters);
-      }  
+      }
     }
     else
     {
@@ -3148,14 +3148,35 @@
   shortCircuit // shortcircuit if handler 1 false
   )
 {
-  var result1 = _callChained(evh1, target, event);
-  if ( shortCircuit && (result1 == false))
-    return false;
-  var result2 = _callChained(evh2, target, event);
+  return _chainMultiple([evh1, evh2], target, event);
+}
 
-  // since undefined results should be evaluated as true,
-  // return false only if either result1 or result2 return false
-  return !((result1 == false) || (result2 == false));
+/**
+ * Chain two or more functions together returning whether the default
+ * event handling should occur
+ */
+function _chainMultiple(
+  eventHandlers, // Array of event handler JavaScript strings
+  target,        // target of event
+  event,         // the fired event (or null)
+  shortCircuit   // shortcircuit if handler 1 false
+  )
+{
+  var overallResult = true;
+  for (var i = 0, size = eventHandlers.length; i < size; ++i)
+  {
+    var result = _callChained(eventHandlers[i], target, event);
+    if (result === false)
+    {
+      if (shortCircuit)
+      {
+        return false;
+      }
+      overallResult = false;
+    }
+  }
+
+  return overallResult;
 }
 
 function _callChained(
@@ -3206,11 +3227,8 @@
   {
     return true;
   }
-
 }
 
-
-
 // Enforce the maximum length of a form element
 // Returns true if event processing should continue, false otherwise.
 function _checkLength(formElement, length, event)

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml Thu Dec  3 21:35:09 2009
@@ -1,356 +1,356 @@
-<results>
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[id,myBodyId]-->
-
-  <body
-       id="myBodyId"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[shortDesc,myShortDesc]-->
-
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-       title="myShortDesc"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onclick,null]-->
-
-  <body
-       id="mainId"
-       onclick="test-onclick"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[ondblclick,null]-->
-
-  <body
-       id="mainId"
-       ondblclick="test-ondblclick"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onkeydown,null]-->
-
-  <body
-       id="mainId"
-       onkeydown="test-onkeydown"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onkeypress,null]-->
-
-  <body
-       id="mainId"
-       onkeypress="test-onkeypress"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onkeyup,null]-->
-
-  <body
-       id="mainId"
-       onkeyup="test-onkeyup"
-       onload="_checkLoad()"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onload,null]-->
-
-  <body
-       id="mainId"
-       onload="return _chain('_checkLoad()','test-onload',this,event)"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onmousedown,null]-->
-
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onmousedown="test-onmousedown"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onmousemove,null]-->
-
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onmousemove="test-onmousemove"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onmouseout,null]-->
-
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onmouseout="test-onmouseout"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onmouseover,null]-->
-
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onmouseover="test-onmouseover"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onmouseup,null]-->
-
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onmouseup="test-onmouseup"
-       onunload="_checkUnload(event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-<!--AttributeTest[onunload,null]-->
-
-  <body
-       id="mainId"
-       onload="_checkLoad()"
-       onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
-      >
-    
-    <a
-         name="top"
-        >
-      
-    </a>
-    <noscript
-        >
-      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
-    </noscript>
-    <span
-         id="id_text"
-        >
-      Enter
-    </span>
-  </body>
-</results>
+<results>
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[id,myBodyId]-->
+
+  <body
+       id="myBodyId"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[shortDesc,myShortDesc]-->
+
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+       title="myShortDesc"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onclick,null]-->
+
+  <body
+       id="mainId"
+       onclick="test-onclick"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[ondblclick,null]-->
+
+  <body
+       id="mainId"
+       ondblclick="test-ondblclick"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onkeydown,null]-->
+
+  <body
+       id="mainId"
+       onkeydown="test-onkeydown"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onkeypress,null]-->
+
+  <body
+       id="mainId"
+       onkeypress="test-onkeypress"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onkeyup,null]-->
+
+  <body
+       id="mainId"
+       onkeyup="test-onkeyup"
+       onload="_checkLoad()"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onload,null]-->
+
+  <body
+       id="mainId"
+       onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onmousedown,null]-->
+
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onmousedown="test-onmousedown"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onmousemove,null]-->
+
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onmousemove="test-onmousemove"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onmouseout,null]-->
+
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onmouseout="test-onmouseout"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onmouseover,null]-->
+
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onmouseover="test-onmouseover"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onmouseup,null]-->
+
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onmouseup="test-onmouseup"
+       onunload="_checkUnload(event)"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+<!--AttributeTest[onunload,null]-->
+
+  <body
+       id="mainId"
+       onload="_checkLoad()"
+       onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+      >
+    
+    <a
+         name="top"
+        >
+      
+    </a>
+    <noscript
+        >
+      This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+    </noscript>
+    <span
+         id="id_text"
+        >
+      Enter
+    </span>
+  </body>
+</results>