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/04 00:17:45 UTC

svn commit: r886981 [1/3] - in /myfaces/trinidad/branches/ar_clientBehaviors: trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ trinidad-impl/src/main/ja...

Author: arobinson74
Date: Thu Dec  3 23:17:17 2009
New Revision: 886981

URL: http://svn.apache.org/viewvc?rev=886981&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-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
    myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/htmlBasic/HtmlCommandButtonRenderer.java
    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=886981&r1=886980&r2=886981&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 23:17:17 2009
@@ -21,6 +21,7 @@
 
 import java.io.IOException;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -28,11 +29,9 @@
 
 import javax.faces.application.ResourceHandler;
 import javax.faces.component.UIComponent;
+import javax.faces.component.UIParameter;
 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;
 
@@ -777,155 +776,38 @@
   //
 
   /**
-   * Renders a non-submission client event handler (onfocus for example) including any associated
-   * client behaviors for the event.
-   *
-   * @param facesContext The faces context
+   * Get a collection of all the parameters that are children of the current component as
+   * client behavior parameters.
    * @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
+   * @return Collection of parameters (will be non-null)
    */
-  protected void renderClientEventHandler(
-    FacesContext                                facesContext,
-    UIComponent                                 component,
-    boolean                                     disabled,
-    String                                      eventName,
-    String                                      eventAttributeName,
-    Collection<ClientBehaviorContext.Parameter> params,
-    String                                      userHandlerScript,
-    String                                      eventHandlerScript
-    ) throws IOException
+  public static Collection<ClientBehaviorContext.Parameter> getBehaviorParameters(
+    UIComponent component)
   {
-    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
+    int childCount = component.getChildCount();
+    if (childCount > 0)
     {
-      // 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)
+      List<ClientBehaviorContext.Parameter> list = null;
+      for (UIComponent child : component.getChildren())
       {
-        scripts[index] = eventHandlerScript;
-      }
+        if (!(child instanceof UIParameter)) { continue; }
 
-      script = RenderUtils.getChainedJS(true, scripts);
-      if (submitting && "click".equals(eventName))
-      {
-        // prevent the default click action if submitting
-        script += ";return false;";
+        if (list == null)
+        {
+          // leave plenty of room to hold the parameters
+          list = new ArrayList<ClientBehaviorContext.Parameter>(childCount);
+        }
+        UIParameter param = (UIParameter) child;
+        list.add(new ClientBehaviorContext.Parameter(param.getName(), param.getValue()));
       }
-    }
 
-    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)
+      if (list != null)
       {
-        first = false;
+        return list;
       }
-      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('\'');
-    }
+    return Collections.<ClientBehaviorContext.Parameter>emptyList();
   }
 
   protected void renderEncodedActionURI(

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=886981&r1=886980&r2=886981&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 23:17:17 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,8 +19,6 @@
 package org.apache.myfaces.trinidad.render;
 
 import java.io.IOException;
-
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.faces.component.NamingContainer;
@@ -29,12 +27,9 @@
 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.
  *
@@ -109,21 +104,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>
@@ -131,7 +126,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
@@ -148,7 +143,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
@@ -167,7 +162,7 @@
   {
     if (from == null)
         return null;
-
+    
     if ((scopedId == null) || (scopedId.length() == 0))
       return null;
 
@@ -175,41 +170,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)
     {
@@ -222,325 +217,13 @@
 
   }
 
-  /**
-   * 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,
@@ -556,8 +239,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))
@@ -603,7 +286,7 @@
 
     return null;
   }
-
+  
   // Figure out how many colons
   private static int _getColonCount(String relativeId)
   {

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=886981&r1=886980&r2=886981&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 23:17:17 2009
@@ -20,13 +20,19 @@
 
 import java.io.IOException;
 
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import javax.faces.component.UIComponent;
+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.context.ResponseWriter;
 
@@ -37,7 +43,6 @@
 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;
@@ -69,7 +74,6 @@
     }
   }
 
-
   /**
    * Returns true if the agent has enough support for Trinidad
    * to launch separate windows.  We require both multiple window
@@ -106,7 +110,6 @@
     return compID.toString();
   }
 
-
   /**
    * Registers a scriptlet.
    */
@@ -137,7 +140,6 @@
     }
   }
 
-
   /**
    * Write out a script element importing a library.
    * The given URL will only be written once to the page.
@@ -203,16 +205,146 @@
 
   /**
    * Return the chained JavaScript
-   * @deprecated use method in RenderUtils instead
    */
-  @Deprecated
   public static String getChainedJS(
     String evh1,
     String evh2,
     boolean shortCircuit
     )
   {
-    return RenderUtils.getChainedJS(shortCircuit, evh1, evh2);
+    //
+    // 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 the chained JavaScript
+   */
+  public static String getChainedJS(
+    boolean   shortCircuit,
+    String... scripts
+    )
+  {
+    if (scripts.length == 2)
+    {
+      // Use the more efficient code for two scripts
+      return getChainedJS(scripts[0], scripts[1], shortCircuit);
+    }
+
+    if (scripts.length == 0)
+    {
+      return null;
+    }
+
+    if (scripts.length == 1)
+    {
+      return scripts[1];
+    }
+
+    StringBuilder builder = new StringBuilder(100);
+    builder.append("return _chainMultiple([");
+    int firstNonNullScript = -1;
+    int numScripts = 0;
+
+    for (int i = 0, size = scripts.length; i < size; ++i)
+    {
+      String script = scripts[i];
+      if (script == null) { continue; }
+      script = script.trim();
+      if (script.length() == 0) { continue; }
+      ++numScripts;
+
+      if (firstNonNullScript == -1)
+      {
+        builder.append('\'');
+        firstNonNullScript = i;
+      }
+      else
+      {
+        builder.append(",'");
+      }
+      escapeJS(builder, script, true);
+      builder.append('\'');
+    }
+    if (numScripts == 0) { return null; }
+    if (numScripts == 1) { return scripts[firstNonNullScript]; }
+
+    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();
   }
 
   /**
@@ -220,14 +352,12 @@
    * 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 RenderUtils.escapeJS(inString);
+    return escapeJS(inString, false /* inQuotes */);
   }
 
   /**
@@ -235,51 +365,59 @@
    * 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
     )
   {
-    return RenderUtils.escapeJS(inString, 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.
-   * @deprecated use method in RenderUtils instead
    */
-  @Deprecated
   public static void escapeJS(
     StringBuilder outBuilder,
     String       inString
     )
   {
-    RenderUtils.escapeJS(outBuilder, inString);
+    escapeJS(outBuilder, inString, false /* 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,
     boolean      inQuotes)
   {
-    RenderUtils.escapeJS(outBuilder, inString, inQuotes);
+    escapeJS(outBuilder, inString, inQuotes, 1 /* escapeCount */);
   }
 
   /**
    * 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,
@@ -287,9 +425,162 @@
     int          escapeCount
     )
   {
-    RenderUtils.escapeJS(outBuilder, inString, inQuotes, 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 _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)
@@ -354,6 +645,117 @@
   }
 
 
+  /**
+   * 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
+   */
+  public static 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 = 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);
+    }
+  }
+
+  private static boolean _isSubmittingBehavior(
+    ClientBehavior behavior)
+  {
+    return behavior.getHints().contains(ClientBehaviorHint.SUBMITTING);
+  }
+
   /** HashMap mapping names to their scriptlets */
   private static Map<Object, Scriptlet> _sScriptletTable =
     Collections.synchronizedMap(new HashMap<Object, Scriptlet>(37));
@@ -378,5 +780,4 @@
   }
 
   private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(XhtmlUtils.class);
-
 }

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/htmlBasic/HtmlCommandButtonRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/htmlBasic/HtmlCommandButtonRenderer.java?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/htmlBasic/HtmlCommandButtonRenderer.java (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/htmlBasic/HtmlCommandButtonRenderer.java Thu Dec  3 23:17:17 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
@@ -48,42 +48,42 @@
                           UIComponent component)
     throws IOException
   {
-    if (!component.isRendered()) 
+    if (!component.isRendered())
     {
       return;
     }
-    
+
     Map<String, Object> attrs = component.getAttributes();
     UICommand command = (UICommand) component;
     // Which button type (SUBMIT, RESET, or BUTTON) should we generate?
     String type = CoreRenderer.toString(attrs.get("type"));
-    if (type == null) 
+    if (type == null)
     {
       type = "submit";
     }
 
     ResponseWriter writer = context.getResponseWriter();
-   
+
     String label = CoreRenderer.toString(command.getValue());
-   
+
     String imageSrc = CoreRenderer.toResourceUri(context, attrs.get("image"));
     writer.startElement("input", component);
     String id = component.getClientId(context);
     writer.writeAttribute("id", id, "id");
     writer.writeAttribute("name", id, null);
     boolean isImage = (imageSrc != null);
-    if (isImage) 
+    if (isImage)
     {
       imageSrc = context.getExternalContext().encodeResourceURL(imageSrc);
       writer.writeAttribute("type", "image", "type");
       writer.writeURIAttribute("src", imageSrc, "image");
-    } 
-    else 
+    }
+    else
     {
       writer.writeAttribute("type", type.toLowerCase(), "type");
       writer.writeAttribute("value", label, "value");
     }
-    
+
     RenderingContext arc = RenderingContext.getCurrentInstance();
     String script;
     // If it's an image, we can't really go through the full-page submit
@@ -136,8 +136,8 @@
   }
 
   private void _writeBooleanPassThruAttr(
-      ResponseWriter out, 
-      Map<String, Object> attrs, 
+      ResponseWriter out,
+      Map<String, Object> attrs,
       String key)
     throws IOException
   {
@@ -149,8 +149,8 @@
   }
 
   private void _writePassThruAttrs(
-      ResponseWriter out, 
-      Map<String, Object> attrs, 
+      ResponseWriter out,
+      Map<String, Object> attrs,
       String[] keys)
     throws IOException
   {

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=886981&r1=886980&r2=886981&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 23:17:17 2009
@@ -191,7 +191,7 @@
 
   <body
        id="mainId"
-       onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+       onload="return _chain('_checkLoad()','test-onload',this,event)"
        onunload="_checkUnload(event)"
       >
     
@@ -335,7 +335,7 @@
   <body
        id="mainId"
        onload="_checkLoad()"
-       onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+       onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
       >
     
     <a

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIE-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-minimalIE-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIE-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIE-golden.xml Thu Dec  3 23:17:17 2009
@@ -191,7 +191,7 @@
 
   <body
        id="mainId"
-       onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+       onload="return _chain('_checkLoad()','test-onload',this,event)"
        onunload="_checkUnload(event)"
       >
     
@@ -335,7 +335,7 @@
   <body
        id="mainId"
        onload="_checkLoad()"
-       onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+       onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
       >
     
     <a

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIERtl-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-minimalIERtl-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIERtl-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIERtl-golden.xml Thu Dec  3 23:17:17 2009
@@ -191,7 +191,7 @@
 
   <body
        id="mainId"
-       onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+       onload="return _chain('_checkLoad()','test-onload',this,event)"
        onunload="_checkUnload(event)"
       >
     
@@ -335,7 +335,7 @@
   <body
        id="mainId"
        onload="_checkLoad()"
-       onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+       onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
       >
     
     <a

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalInacc-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-minimalInacc-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalInacc-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalInacc-golden.xml Thu Dec  3 23:17:17 2009
@@ -159,7 +159,7 @@
 
   <body
        id="mainId"
-       onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+       onload="return _chain('_checkLoad()','test-onload',this,event)"
        onunload="_checkUnload(event)"
       >
     
@@ -279,7 +279,7 @@
   <body
        id="mainId"
        onload="_checkLoad()"
-       onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+       onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
       >
     
     <a

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalPPC-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-minimalPPC-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalPPC-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalPPC-golden.xml Thu Dec  3 23:17:17 2009
@@ -183,7 +183,7 @@
 
   <body
        id="mainId"
-       onload="return _chainMultiple(['_checkLoadNoPPR()','test-onload'],this,null);"
+       onload="return _chain('_checkLoadNoPPR()','test-onload',this,null)"
       >
     
     <a

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalSaf-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-minimalSaf-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalSaf-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalSaf-golden.xml Thu Dec  3 23:17:17 2009
@@ -191,7 +191,7 @@
 
   <body
        id="mainId"
-       onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+       onload="return _chain('_checkLoad()','test-onload',this,event)"
        onunload="_checkUnload(event)"
       >
     
@@ -335,7 +335,7 @@
   <body
        id="mainId"
        onload="_checkLoad()"
-       onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+       onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
       >
     
     <a

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalScrRdr-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-minimalScrRdr-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalScrRdr-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalScrRdr-golden.xml Thu Dec  3 23:17:17 2009
@@ -191,7 +191,7 @@
 
   <body
        id="mainId"
-       onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+       onload="return _chain('_checkLoad()','test-onload',this,event)"
        onunload="_checkUnload(event)"
       >
     
@@ -335,7 +335,7 @@
   <body
        id="mainId"
        onload="_checkLoad()"
-       onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+       onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
       >
     
     <a

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-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/chooseColor-minimal-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimal-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimal-golden.xml Thu Dec  3 23:17:17 2009
@@ -1332,7 +1332,7 @@
 
       <span
            id="mainId"
-           onclick="return _chainMultiple(['test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false'],this,event,true);"
+           onclick="return _chain('test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false',this,event,true)"
           >
         
         <table

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIE-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIE-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIE-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIE-golden.xml Thu Dec  3 23:17:17 2009
@@ -1266,7 +1266,7 @@
 
       <span
            id="mainId"
-           onclick="return _chainMultiple(['test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\'); return false'],this,event,true);"
+           onclick="return _chain('test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\'); return false',this,event,true)"
           >
         
         <table

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIERtl-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIERtl-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIERtl-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIERtl-golden.xml Thu Dec  3 23:17:17 2009
@@ -1266,7 +1266,7 @@
 
       <span
            id="mainId"
-           onclick="return _chainMultiple(['test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\'); return false'],this,event,true);"
+           onclick="return _chain('test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\'); return false',this,event,true)"
           >
         
         <table

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalInacc-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalInacc-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalInacc-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalInacc-golden.xml Thu Dec  3 23:17:17 2009
@@ -1266,7 +1266,7 @@
 
       <span
            id="mainId"
-           onclick="return _chainMultiple(['test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false'],this,event,true);"
+           onclick="return _chain('test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false',this,event,true)"
           >
         
         <table

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalSaf-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalSaf-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalSaf-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalSaf-golden.xml Thu Dec  3 23:17:17 2009
@@ -1332,7 +1332,7 @@
 
       <span
            id="mainId"
-           onclick="return _chainMultiple(['test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false'],this,event,true);"
+           onclick="return _chain('test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false',this,event,true)"
           >
         
         <table

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalScrRdr-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalScrRdr-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalScrRdr-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalScrRdr-golden.xml Thu Dec  3 23:17:17 2009
@@ -1332,7 +1332,7 @@
 
       <span
            id="mainId"
-           onclick="return _chainMultiple(['test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false'],this,event,true);"
+           onclick="return _chain('test-onclick','_onCPSel(\'mainId\',\'_cfbs(event)\',event); return false',this,event,true)"
           >
         
         <table

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-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/commandButton-minimal-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimal-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimal-golden.xml Thu Dec  3 23:17:17 2009
@@ -184,7 +184,7 @@
 
       <button
            class="af_commandButton"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            type="button"
            id="uri-attr:mainId"
            name="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIE-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIE-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIE-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIE-golden.xml Thu Dec  3 23:17:17 2009
@@ -184,7 +184,7 @@
 
       <button
            class="af_commandButton"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            type="button"
            id="uri-attr:mainId"
            name="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIERtl-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIERtl-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIERtl-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIERtl-golden.xml Thu Dec  3 23:17:17 2009
@@ -184,7 +184,7 @@
 
       <button
            class="af_commandButton"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            type="button"
            id="uri-attr:mainId"
            name="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalInacc-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalInacc-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalInacc-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalInacc-golden.xml Thu Dec  3 23:17:17 2009
@@ -183,7 +183,7 @@
 
       <button
            class="af_commandButton"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            type="button"
            id="uri-attr:mainId"
            name="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalPPC-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalPPC-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalPPC-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalPPC-golden.xml Thu Dec  3 23:17:17 2009
@@ -191,7 +191,7 @@
 
       <input
            class="af_commandButton"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,null,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,null,true)"
            type="submit"
            value="ButtonText"
            id="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalSaf-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalSaf-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalSaf-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalSaf-golden.xml Thu Dec  3 23:17:17 2009
@@ -184,7 +184,7 @@
 
       <button
            class="af_commandButton"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            type="button"
            id="uri-attr:mainId"
            name="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalScrRdr-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalScrRdr-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalScrRdr-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalScrRdr-golden.xml Thu Dec  3 23:17:17 2009
@@ -178,7 +178,7 @@
 
       <button
            class="af_commandButton"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            type="button"
            id="uri-attr:mainId"
            name="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-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/commandLink-minimal-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimal-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimal-golden.xml Thu Dec  3 23:17:17 2009
@@ -177,7 +177,7 @@
 
       <a
            class="OraLink"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            href="uri-attr:encoded-action-url:#"
            id="uri-attr:mainId"
            name="uri-attr:mainId"

Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIE-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIE-golden.xml?rev=886981&r1=886980&r2=886981&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIE-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIE-golden.xml Thu Dec  3 23:17:17 2009
@@ -177,7 +177,7 @@
 
       <a
            class="OraLink"
-           onclick="return _chainMultiple(['test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;'],this,event,true);"
+           onclick="return _chain('test-onclick','submitForm(\'formId\',1,{source:\'mainId\'});return false;',this,event,true)"
            href="uri-attr:encoded-action-url:#"
            id="uri-attr:mainId"
            name="uri-attr:mainId"