You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2011/11/10 01:50:15 UTC

svn commit: r1200068 [2/3] - in /myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlJavaScriptUtils.java HtmlRendererUtils.java JavascriptContext.java

Modified: myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?rev=1200068&r1=1200067&r2=1200068&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
+++ myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Thu Nov 10 00:50:14 2011
@@ -72,15 +72,16 @@ import org.apache.myfaces.shared.renderk
 import org.apache.myfaces.shared.renderkit.html.util.FormInfo;
 import org.apache.myfaces.shared.renderkit.html.util.HTMLEncoder;
 import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
-import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
 
 /**
  * @author Manfred Geiler (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
-public final class HtmlRendererUtils {
+public final class HtmlRendererUtils
+{
     //private static final Log log = LogFactory.getLog(HtmlRendererUtils.class);
-    private static final Logger log = Logger.getLogger(HtmlRendererUtils.class.getName());
+    private static final Logger log = Logger.getLogger(HtmlRendererUtils.class
+            .getName());
 
     //private static final String[] EMPTY_STRING_ARRAY = new String[0];
     private static final String LINE_SEPARATOR = System.getProperty(
@@ -91,22 +92,12 @@ public final class HtmlRendererUtils {
     public static final String HIDDEN_COMMANDLINK_FIELD_NAME_MYFACES_OLD = "_link_hidden_";
     public static final String HIDDEN_COMMANDLINK_FIELD_NAME_TRINIDAD = "source";
 
-    public static final String CLEAR_HIDDEN_FIELD_FN_NAME =
-            "clearFormHiddenParams";
+    public static final String CLEAR_HIDDEN_FIELD_FN_NAME = "clearFormHiddenParams";
     public static final String SUBMIT_FORM_FN_NAME = "oamSubmitForm";
     public static final String SUBMIT_FORM_FN_NAME_JSF2 = "myfaces.oam.submitForm";
     public static final String ALLOW_CDATA_SECTION_ON = "org.apache.myfaces.ResponseWriter.CdataSectionOn";
 
-    private static final String SET_HIDDEN_INPUT_FN_NAME = "oamSetHiddenInput";
-    private static final String SET_HIDDEN_INPUT_FN_NAME_JSF2 = "myfaces.oam.setHiddenInput";
-    private static final String CLEAR_HIDDEN_INPUT_FN_NAME = "oamClearHiddenInput";
-
-    private static final String AUTO_SCROLL_PARAM = "autoScroll";
-    private static final String AUTO_SCROLL_FUNCTION = "getScrolling";
-
-    private static final String FIRST_SUBMIT_SCRIPT_ON_PAGE = "org.apache.MyFaces.FIRST_SUBMIT_SCRIPT_ON_PAGE";
-
-    public static final String NON_SUBMITTED_VALUE_WARNING
+    public static final String NON_SUBMITTED_VALUE_WARNING 
             = "There should always be a submitted value for an input if it is rendered,"
             + " its form is submitted, and it was not originally rendered disabled or read-only."
             + "  You cannot submit a form after disabling an input element via javascript."
@@ -114,8 +105,8 @@ public final class HtmlRendererUtils {
             + " or resetting the disabled value back to false prior to form submission.";
     private static final String STR_EMPTY = "";
 
-
-    private HtmlRendererUtils() {
+    private HtmlRendererUtils()
+    {
         // utility class, do not instantiate
     }
 
@@ -128,8 +119,10 @@ public final class HtmlRendererUtils {
      * set if the submitted form contained that component.
      */
     public static void decodeUIInput(FacesContext facesContext,
-                                     UIComponent component) {
-        if (!(component instanceof EditableValueHolder)) {
+            UIComponent component)
+    {
+        if (!(component instanceof EditableValueHolder))
+        {
             throw new IllegalArgumentException("Component "
                     + component.getClientId(facesContext)
                     + " is not an EditableValueHolder");
@@ -137,17 +130,19 @@ public final class HtmlRendererUtils {
         Map paramMap = facesContext.getExternalContext()
                 .getRequestParameterMap();
         String clientId = component.getClientId(facesContext);
-
         if (isDisabledOrReadOnly(component))
+        {
             return;
-
-        if (paramMap.containsKey(clientId)) {
+        }
+        if (paramMap.containsKey(clientId))
+        {
             ((EditableValueHolder) component).setSubmittedValue(paramMap
                     .get(clientId));
-        } else {
-            log.warning(NON_SUBMITTED_VALUE_WARNING +
-                    " Component : " +
-                    RendererUtils.getPathToComponent(component));
+        }
+        else
+        {
+            log.warning(NON_SUBMITTED_VALUE_WARNING + " Component : "
+                    + RendererUtils.getPathToComponent(component));
         }
     }
 
@@ -158,58 +153,69 @@ public final class HtmlRendererUtils {
      * @param component
      */
     public static void decodeUISelectBoolean(FacesContext facesContext,
-                                             UIComponent component) {
-        if (!(component instanceof EditableValueHolder)) {
+            UIComponent component)
+    {
+        if (!(component instanceof EditableValueHolder))
+        {
             throw new IllegalArgumentException("Component "
                     + component.getClientId(facesContext)
                     + " is not an EditableValueHolder");
         }
-
         if (isDisabledOrReadOnly(component))
+        {
             return;
-
+        }
         Map paramMap = facesContext.getExternalContext()
                 .getRequestParameterMap();
         String clientId = component.getClientId(facesContext);
-        if (paramMap.containsKey(clientId)) {
+        if (paramMap.containsKey(clientId))
+        {
             String reqValue = (String) paramMap.get(clientId);
             if ((reqValue.equalsIgnoreCase("on")
                     || reqValue.equalsIgnoreCase("yes") || reqValue
-                    .equalsIgnoreCase("true"))) {
+                    .equalsIgnoreCase("true")))
+            {
                 ((EditableValueHolder) component)
                         .setSubmittedValue(Boolean.TRUE);
-            } else {
+            }
+            else
+            {
                 ((EditableValueHolder) component)
                         .setSubmittedValue(Boolean.FALSE);
             }
-        } else {
-            ((EditableValueHolder) component)
-                    .setSubmittedValue(Boolean.FALSE);
+        }
+        else
+        {
+            ((EditableValueHolder) component).setSubmittedValue(Boolean.FALSE);
         }
     }
 
-    public static boolean isDisabledOrReadOnly(UIComponent component) {
-        return isDisplayValueOnly(component) ||
-                isDisabled(component) ||
-                isReadOnly(component);
+    public static boolean isDisabledOrReadOnly(UIComponent component)
+    {
+        return isDisplayValueOnly(component) || isDisabled(component)
+                || isReadOnly(component);
     }
 
-    public static boolean isDisabled(UIComponent component) {
+    public static boolean isDisabled(UIComponent component)
+    {
         return isTrue(component.getAttributes().get("disabled"));
     }
 
-    public static boolean isReadOnly(UIComponent component) {
+    public static boolean isReadOnly(UIComponent component)
+    {
         return isTrue(component.getAttributes().get("readonly"));
     }
 
-    private static boolean isTrue(Object obj) {
-        if (obj instanceof String) {
+    private static boolean isTrue(Object obj)
+    {
+        if (obj instanceof String)
+        {
             return new Boolean((String) obj);
         }
-
         if (!(obj instanceof Boolean))
+        {
             return false;
-
+        }
         return ((Boolean) obj).booleanValue();
     }
 
@@ -220,8 +226,10 @@ public final class HtmlRendererUtils {
      * @param component
      */
     public static void decodeUISelectMany(FacesContext facesContext,
-                                          UIComponent component) {
-        if (!(component instanceof EditableValueHolder)) {
+            UIComponent component)
+    {
+        if (!(component instanceof EditableValueHolder))
+        {
             throw new IllegalArgumentException("Component "
                     + component.getClientId(facesContext)
                     + " is not an EditableValueHolder");
@@ -229,21 +237,24 @@ public final class HtmlRendererUtils {
         Map paramValuesMap = facesContext.getExternalContext()
                 .getRequestParameterValuesMap();
         String clientId = component.getClientId(facesContext);
-
         if (isDisabledOrReadOnly(component))
+        {
             return;
-
-        if (paramValuesMap.containsKey(clientId)) {
+        }
+        if (paramValuesMap.containsKey(clientId))
+        {
             String[] reqValues = (String[]) paramValuesMap.get(clientId);
             ((EditableValueHolder) component).setSubmittedValue(reqValues);
-        } else {
+        }
+        else
+        {
             /* request parameter not found, nothing to decode - set submitted value to an empty array
                as we should get here only if the component is on a submitted form, is rendered
                and if the component is not readonly or has not been disabled.
-
                So in fact, there must be component value at this location, but for listboxes, comboboxes etc.
                the submitted value is not posted if no item is selected. */
-            ((EditableValueHolder) component).setSubmittedValue(new String[]{});
+            ((EditableValueHolder) component)
+                    .setSubmittedValue(new String[] {});
         }
     }
 
@@ -254,24 +265,29 @@ public final class HtmlRendererUtils {
      * @param component
      */
     public static void decodeUISelectOne(FacesContext facesContext,
-                                         UIComponent component) {
-        if (!(component instanceof EditableValueHolder)) {
+            UIComponent component)
+    {
+        if (!(component instanceof EditableValueHolder))
+        {
             throw new IllegalArgumentException("Component "
                     + component.getClientId(facesContext)
                     + " is not an EditableValueHolder");
         }
-
         if (isDisabledOrReadOnly(component))
+        {
             return;
-
+        }
         Map paramMap = facesContext.getExternalContext()
                 .getRequestParameterMap();
         String clientId = component.getClientId(facesContext);
-        if (paramMap.containsKey(clientId)) {
+        if (paramMap.containsKey(clientId))
+        {
             //request parameter found, set submitted value
             ((EditableValueHolder) component).setSubmittedValue(paramMap
                     .get(clientId));
-        } else {
+        }
+        else
+        {
             //see reason for this action at decodeUISelectMany
             ((EditableValueHolder) component).setSubmittedValue(STR_EMPTY);
         }
@@ -283,27 +299,31 @@ public final class HtmlRendererUtils {
      * @since 4.0.0
      */
     public static void decodeClientBehaviors(FacesContext facesContext,
-                                             UIComponent component) {
-        if (component instanceof ClientBehaviorHolder) {
+            UIComponent component)
+    {
+        if (component instanceof ClientBehaviorHolder)
+        {
             ClientBehaviorHolder clientBehaviorHolder = (ClientBehaviorHolder) component;
-
-            Map<String, List<ClientBehavior>> clientBehaviors =
-                    clientBehaviorHolder.getClientBehaviors();
-
-            if (clientBehaviors != null && !clientBehaviors.isEmpty()) {
-                Map<String, String> paramMap = facesContext.getExternalContext().
-                        getRequestParameterMap();
-
-                String behaviorEventName = paramMap.get("javax.faces.behavior.event");
-
-                if (behaviorEventName != null) {
-                    List<ClientBehavior> clientBehaviorList = clientBehaviors.get(behaviorEventName);
-
-                    if (clientBehaviorList != null && !clientBehaviorList.isEmpty()) {
+            Map<String, List<ClientBehavior>> clientBehaviors = clientBehaviorHolder
+                    .getClientBehaviors();
+            if (clientBehaviors != null && !clientBehaviors.isEmpty())
+            {
+                Map<String, String> paramMap = facesContext
+                        .getExternalContext().getRequestParameterMap();
+                String behaviorEventName = paramMap
+                        .get("javax.faces.behavior.event");
+                if (behaviorEventName != null)
+                {
+                    List<ClientBehavior> clientBehaviorList = clientBehaviors
+                            .get(behaviorEventName);
+                    if (clientBehaviorList != null
+                            && !clientBehaviorList.isEmpty())
+                    {
                         String clientId = paramMap.get("javax.faces.source");
-
-                        if (component.getClientId().equals(clientId)) {
-                            for (ClientBehavior clientBehavior : clientBehaviorList) {
+                        if (component.getClientId().equals(clientId))
+                        {
+                            for (ClientBehavior clientBehavior : clientBehaviorList)
+                            {
                                 clientBehavior.decode(facesContext, component);
                             }
                         }
@@ -313,111 +333,119 @@ public final class HtmlRendererUtils {
         }
     }
 
-    /*
-     * public static void renderCheckbox(FacesContext facesContext, UIComponent
-     * uiComponent, String value, String label, boolean checked) throws
-     * IOException { String clientId = uiComponent.getClientId(facesContext);
-     *
-     * ResponseWriter writer = facesContext.getResponseWriter();
-     *
-     * writer.startElement(HTML.INPUT_ELEM, uiComponent);
-     * writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_CHECKBOX, null);
-     * writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
-     * writer.writeAttribute(HTML.ID_ATTR, clientId, null);
-     *
-     * if (checked) { writer.writeAttribute(HTML.CHECKED_ATTR,
-     * HTML.CHECKED_ATTR, null); }
-     *
-     * if ((value != null) && (value.length() > 0)) {
-     * writer.writeAttribute(HTML.VALUE_ATTR, value, null); }
-     *
-     * renderHTMLAttributes(writer, uiComponent,
-     * HTML.INPUT_PASSTHROUGH_ATTRIBUTES); renderDisabledOnUserRole(writer,
-     * uiComponent, facesContext);
-     *
-     * if ((label != null) && (label.length() > 0)) {
-     * writer.write(HTML.NBSP_ENTITY); writer.writeText(label, null); }
-     *
-     * writer.endElement(HTML.INPUT_ELEM); }
-     */
-
-    public static void renderListbox(FacesContext facesContext, UISelectOne selectOne,
-                                     boolean disabled, int size, Converter converter)
-            throws IOException {
-        internalRenderSelect(facesContext, selectOne, disabled, size, false, converter);
+    public static void renderListbox(FacesContext facesContext,
+            UISelectOne selectOne, boolean disabled, int size,
+            Converter converter) throws IOException
+    {
+        internalRenderSelect(facesContext, selectOne, disabled, size, false,
+                converter);
     }
 
-    public static void renderListbox(FacesContext facesContext, UISelectMany selectMany,
-                                     boolean disabled, int size, Converter converter)
-            throws IOException {
-        internalRenderSelect(facesContext, selectMany, disabled, size, true, converter);
+    public static void renderListbox(FacesContext facesContext,
+            UISelectMany selectMany, boolean disabled, int size,
+            Converter converter) throws IOException
+    {
+        internalRenderSelect(facesContext, selectMany, disabled, size, true,
+                converter);
     }
 
-    public static void renderMenu(FacesContext facesContext, UISelectOne selectOne,
-                                  boolean disabled, Converter converter) throws IOException {
-        internalRenderSelect(facesContext, selectOne, disabled, 1, false, converter);
+    public static void renderMenu(FacesContext facesContext,
+            UISelectOne selectOne, boolean disabled, Converter converter)
+            throws IOException
+    {
+        internalRenderSelect(facesContext, selectOne, disabled, 1, false,
+                converter);
     }
 
-    public static void renderMenu(FacesContext facesContext, UISelectMany selectMany,
-                                  boolean disabled, Converter converter) throws IOException {
-        internalRenderSelect(facesContext, selectMany, disabled, 1, true, converter);
+    public static void renderMenu(FacesContext facesContext,
+            UISelectMany selectMany, boolean disabled, Converter converter)
+            throws IOException
+    {
+        internalRenderSelect(facesContext, selectMany, disabled, 1, true,
+                converter);
     }
 
     private static void internalRenderSelect(FacesContext facesContext,
-                                             UIComponent uiComponent, boolean disabled, int size,
-                                             boolean selectMany, Converter converter) throws IOException {
+            UIComponent uiComponent, boolean disabled, int size,
+            boolean selectMany, Converter converter) throws IOException
+    {
         ResponseWriter writer = facesContext.getResponseWriter();
-
         writer.startElement(HTML.SELECT_ELEM, uiComponent);
         if (uiComponent instanceof ClientBehaviorHolder
-                && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())
-                && !((ClientBehaviorHolder) uiComponent).getClientBehaviors().isEmpty()) {
+                && JavascriptUtils.isJavascriptAllowed(facesContext
+                        .getExternalContext())
+                && !((ClientBehaviorHolder) uiComponent).getClientBehaviors()
+                        .isEmpty())
+        {
             writer.writeAttribute(HTML.ID_ATTR,
                     uiComponent.getClientId(facesContext), null);
-        } else {
-            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+        }
+        else
+        {
+            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent,
+                    facesContext);
         }
         writer.writeAttribute(HTML.NAME_ATTR,
                 uiComponent.getClientId(facesContext), null);
-
         List selectItemList;
-        if (selectMany) {
+        if (selectMany)
+        {
             writer.writeAttribute(HTML.MULTIPLE_ATTR, HTML.MULTIPLE_ATTR, null);
             selectItemList = org.apache.myfaces.shared.renderkit.RendererUtils
                     .getSelectItemList((UISelectMany) uiComponent, facesContext);
-        } else {
-            selectItemList = RendererUtils
-                    .getSelectItemList((UISelectOne) uiComponent, facesContext);
+        }
+        else
+        {
+            selectItemList = RendererUtils.getSelectItemList(
+                    (UISelectOne) uiComponent, facesContext);
         }
 
-        if (size == Integer.MIN_VALUE) {
+        if (size == Integer.MIN_VALUE)
+        {
             //No size given (Listbox) --> size is number of select items
-            writer.writeAttribute(HTML.SIZE_ATTR, Integer
-                    .toString(selectItemList.size()), null);
-        } else {
+            writer.writeAttribute(HTML.SIZE_ATTR,
+                    Integer.toString(selectItemList.size()), null);
+        }
+        else
+        {
             writer.writeAttribute(HTML.SIZE_ATTR, Integer.toString(size), null);
         }
         Map<String, List<ClientBehavior>> behaviors = null;
-        if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())) {
-            behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
-            renderBehaviorizedOnchangeEventHandler(facesContext, writer, uiComponent, behaviors);
-            renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
-            renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext, writer, uiComponent, behaviors);
-            renderHTMLAttributes(writer, uiComponent, HTML.SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
-        } else {
+        if (uiComponent instanceof ClientBehaviorHolder
+                && JavascriptUtils.isJavascriptAllowed(facesContext
+                        .getExternalContext()))
+        {
+            behaviors = ((ClientBehaviorHolder) uiComponent)
+                    .getClientBehaviors();
+            renderBehaviorizedOnchangeEventHandler(facesContext, writer,
+                    uiComponent, behaviors);
+            renderBehaviorizedEventHandlers(facesContext, writer, uiComponent,
+                    behaviors);
+            renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext,
+                    writer, uiComponent, behaviors);
+            renderHTMLAttributes(
+                    writer,
+                    uiComponent,
+                    HTML.SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+        }
+        else
+        {
             renderHTMLAttributes(writer, uiComponent,
                     HTML.SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED);
         }
 
-        if (disabled) {
+        if (disabled)
+        {
             writer.writeAttribute(HTML.DISABLED_ATTR, Boolean.TRUE, null);
         }
 
-        if (isReadOnly(uiComponent)) {
+        if (isReadOnly(uiComponent))
+        {
             writer.writeAttribute(HTML.READONLY_ATTR, HTML.READONLY_ATTR, null);
         }
 
-        Set lookupSet = getSubmittedOrSelectedValuesAsSet(selectMany, uiComponent, facesContext, converter);
+        Set lookupSet = getSubmittedOrSelectedValuesAsSet(selectMany,
+                uiComponent, facesContext, converter);
 
         renderSelectOptions(facesContext, uiComponent, converter, lookupSet,
                 selectItemList);
@@ -426,58 +454,87 @@ public final class HtmlRendererUtils {
         writer.endElement(HTML.SELECT_ELEM);
     }
 
-    public static Set getSubmittedOrSelectedValuesAsSet(boolean selectMany, UIComponent uiComponent, FacesContext facesContext, Converter converter) {
+    public static Set getSubmittedOrSelectedValuesAsSet(boolean selectMany,
+            UIComponent uiComponent, FacesContext facesContext,
+            Converter converter)
+    {
         Set lookupSet;
-
-        if (selectMany) {
+        if (selectMany)
+        {
             UISelectMany uiSelectMany = (UISelectMany) uiComponent;
-            lookupSet = RendererUtils.getSubmittedValuesAsSet(facesContext, uiComponent, converter, uiSelectMany);
-            if (lookupSet == null) {
-                lookupSet = RendererUtils.getSelectedValuesAsSet(facesContext, uiComponent, converter, uiSelectMany);
+            lookupSet = RendererUtils.getSubmittedValuesAsSet(facesContext,
+                    uiComponent, converter, uiSelectMany);
+            if (lookupSet == null)
+            {
+                lookupSet = RendererUtils.getSelectedValuesAsSet(facesContext,
+                        uiComponent, converter, uiSelectMany);
             }
-        } else {
+        }
+        else
+        {
             UISelectOne uiSelectOne = (UISelectOne) uiComponent;
             Object lookup = uiSelectOne.getSubmittedValue();
-            if (lookup == null) {
+            if (lookup == null)
+            {
                 lookup = uiSelectOne.getValue();
-                String lookupString = RendererUtils.getConvertedStringValue(facesContext, uiComponent, converter, lookup);
+                String lookupString = RendererUtils.getConvertedStringValue(
+                        facesContext, uiComponent, converter, lookup);
                 lookupSet = Collections.singleton(lookupString);
-            } else if (STR_EMPTY.equals(lookup)) {
+            }
+            else if (STR_EMPTY.equals(lookup))
+            {
                 lookupSet = Collections.EMPTY_SET;
-            } else {
+            }
+            else
+            {
                 lookupSet = Collections.singleton(lookup);
             }
         }
         return lookupSet;
     }
 
-    public static Converter findUISelectManyConverterFailsafe(FacesContext facesContext, UIComponent uiComponent) {
+    public static Converter findUISelectManyConverterFailsafe(
+            FacesContext facesContext, UIComponent uiComponent)
+    {
         // invoke with considerValueType = false
-        return findUISelectManyConverterFailsafe(facesContext, uiComponent, false);
+        return findUISelectManyConverterFailsafe(facesContext, uiComponent,
+                false);
     }
 
-    public static Converter findUISelectManyConverterFailsafe(FacesContext facesContext,
-                                                              UIComponent uiComponent, boolean considerValueType) {
+    public static Converter findUISelectManyConverterFailsafe(
+            FacesContext facesContext, UIComponent uiComponent,
+            boolean considerValueType)
+    {
         Converter converter;
-        try {
-            converter = RendererUtils.findUISelectManyConverter(
-                    facesContext, (UISelectMany) uiComponent, considerValueType);
-        } catch (FacesException e) {
-            log.log(Level.SEVERE, "Error finding Converter for component with id "
-                    + uiComponent.getClientId(facesContext), e);
+        try
+        {
+            converter = RendererUtils.findUISelectManyConverter(facesContext,
+                    (UISelectMany) uiComponent, considerValueType);
+        }
+        catch (FacesException e)
+        {
+            log.log(Level.SEVERE,
+                    "Error finding Converter for component with id "
+                            + uiComponent.getClientId(facesContext), e);
             converter = null;
         }
         return converter;
     }
 
-    public static Converter findUIOutputConverterFailSafe(FacesContext facesContext, UIComponent uiComponent) {
+    public static Converter findUIOutputConverterFailSafe(
+            FacesContext facesContext, UIComponent uiComponent)
+    {
         Converter converter;
-        try {
+        try
+        {
             converter = RendererUtils.findUIOutputConverter(facesContext,
                     (UIOutput) uiComponent);
-        } catch (FacesException e) {
-            log.log(Level.SEVERE, "Error finding Converter for component with id "
-                    + uiComponent.getClientId(facesContext), e);
+        }
+        catch (FacesException e)
+        {
+            log.log(Level.SEVERE,
+                    "Error finding Converter for component with id "
+                            + uiComponent.getClientId(facesContext), e);
             converter = null;
         }
         return converter;
@@ -497,17 +554,20 @@ public final class HtmlRendererUtils {
      * @throws IOException
      */
     public static void renderSelectOptions(FacesContext context,
-                                           UIComponent component, Converter converter, Set lookupSet,
-                                           List selectItemList) throws IOException {
+            UIComponent component, Converter converter, Set lookupSet,
+            List selectItemList) throws IOException
+    {
         ResponseWriter writer = context.getResponseWriter();
 
         // check for the hideNoSelectionOption attribute
         boolean hideNoSelectionOption = isHideNoSelectionOption(component);
 
-        for (Iterator it = selectItemList.iterator(); it.hasNext();) {
+        for (Iterator it = selectItemList.iterator(); it.hasNext();)
+        {
             SelectItem selectItem = (SelectItem) it.next();
 
-            if (selectItem instanceof SelectItemGroup) {
+            if (selectItem instanceof SelectItemGroup)
+            {
                 writer.startElement(HTML.OPTGROUP_ELEM, component);
                 writer.writeAttribute(HTML.LABEL_ATTR, selectItem.getLabel(),
                         null);
@@ -516,10 +576,15 @@ public final class HtmlRendererUtils {
                 renderSelectOptions(context, component, converter, lookupSet,
                         Arrays.asList(selectItems));
                 writer.endElement(HTML.OPTGROUP_ELEM);
-            } else {
-                String itemStrValue = org.apache.myfaces.shared.renderkit.RendererUtils.getConvertedStringValue(context, component,
-                        converter, selectItem);
-                boolean selected = lookupSet.contains(itemStrValue); //TODO/FIX: we always compare the String vales, better fill lookupSet with Strings only when useSubmittedValue==true, else use the real item value Objects
+            }
+            else
+            {
+                String itemStrValue = org.apache.myfaces.shared.renderkit.RendererUtils
+                        .getConvertedStringValue(context, component, converter,
+                                selectItem);
+                boolean selected = lookupSet.contains(itemStrValue); 
+                //TODO/FIX: we always compare the String vales, better fill lookupSet with Strings 
+                //only when useSubmittedValue==true, else use the real item value Objects
 
                 // IF the hideNoSelectionOption attribute of the component is true
                 // AND this selectItem is the "no selection option"
@@ -527,48 +592,60 @@ public final class HtmlRendererUtils {
                 // AND this item (the "no selection option") is not selected
                 // (if there is currently no value on UISelectOne, lookupSet contains "")
                 if (hideNoSelectionOption && selectItem.isNoSelectionOption()
-                        && lookupSet.size() != 0 && !(lookupSet.size() == 1 && lookupSet.contains(""))
-                        && !selected) {
+                        && lookupSet.size() != 0
+                        && !(lookupSet.size() == 1 && lookupSet.contains(""))
+                        && !selected)
+                {
                     // do not render this selectItem
                     continue;
                 }
 
                 writer.write(TABULATOR);
                 writer.startElement(HTML.OPTION_ELEM, component);
-                if (itemStrValue != null) {
+                if (itemStrValue != null)
+                {
                     writer.writeAttribute(HTML.VALUE_ATTR, itemStrValue, null);
                 }
-                else 
+                else
                 {
                     writer.writeAttribute(HTML.VALUE_ATTR, "", null);
                 }
-                
 
-                if (selected) {
+                if (selected)
+                {
                     writer.writeAttribute(HTML.SELECTED_ATTR,
                             HTML.SELECTED_ATTR, null);
                 }
 
                 boolean disabled = selectItem.isDisabled();
-                if (disabled) {
+                if (disabled)
+                {
                     writer.writeAttribute(HTML.DISABLED_ATTR,
                             HTML.DISABLED_ATTR, null);
                 }
 
                 String labelClass = null;
-                boolean componentDisabled = isTrue(component.getAttributes().get("disabled"));
+                boolean componentDisabled = isTrue(component.getAttributes()
+                        .get("disabled"));
 
-                if (componentDisabled || disabled) {
-                    labelClass = (String) component.getAttributes().get(JSFAttr.DISABLED_CLASS_ATTR);
-                } else {
-                    labelClass = (String) component.getAttributes().get(JSFAttr.ENABLED_CLASS_ATTR);
+                if (componentDisabled || disabled)
+                {
+                    labelClass = (String) component.getAttributes().get(
+                            JSFAttr.DISABLED_CLASS_ATTR);
+                }
+                else
+                {
+                    labelClass = (String) component.getAttributes().get(
+                            JSFAttr.ENABLED_CLASS_ATTR);
                 }
-                if (labelClass != null) {
+                if (labelClass != null)
+                {
                     writer.writeAttribute("class", labelClass, "labelClass");
                 }
 
                 boolean escape;
-                if (component instanceof EscapeCapable) {
+                if (component instanceof EscapeCapable)
+                {
                     escape = ((EscapeCapable) component).isEscape();
 
                     // Preserve tomahawk semantic. If escape=false
@@ -576,14 +653,19 @@ public final class HtmlRendererUtils {
                     // is true check if selectItem.isEscape() is
                     // true and do it.
                     // This is done for remain compatibility.
-                    if (escape && selectItem.isEscape()) {
+                    if (escape && selectItem.isEscape())
+                    {
                         writer.writeText(selectItem.getLabel(), null);
-                    } else {
+                    }
+                    else
+                    {
                         writer.write(selectItem.getLabel());
                     }
-                } else {
-                    escape = RendererUtils.getBooleanAttribute(component, JSFAttr.ESCAPE_ATTR,
-                            false);
+                }
+                else
+                {
+                    escape = RendererUtils.getBooleanAttribute(component,
+                            JSFAttr.ESCAPE_ATTR, false);
                     //default is to escape
                     //In JSF 1.2, when a SelectItem is created by default 
                     //selectItem.isEscape() returns true (this property
@@ -591,9 +673,12 @@ public final class HtmlRendererUtils {
                     //so, if we found a escape property on the component
                     //set to true, escape every item, but if not
                     //check if isEscape() = true first.
-                    if (escape || selectItem.isEscape()) {
+                    if (escape || selectItem.isEscape())
+                    {
                         writer.writeText(selectItem.getLabel(), null);
-                    } else {
+                    }
+                    else
+                    {
                         writer.write(selectItem.getLabel());
                     }
                 }
@@ -603,46 +688,22 @@ public final class HtmlRendererUtils {
         }
     }
 
-    /*
-     * public static void renderRadio(FacesContext facesContext, UIInput
-     * uiComponent, String value, String label, boolean checked) throws
-     * IOException { String clientId = uiComponent.getClientId(facesContext);
-     *
-     * ResponseWriter writer = facesContext.getResponseWriter();
-     *
-     * writer.startElement(HTML.INPUT_ELEM, uiComponent);
-     * writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_RADIO, null);
-     * writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
-     * writer.writeAttribute(HTML.ID_ATTR, clientId, null);
-     *
-     * if (checked) { writer.writeAttribute(HTML.CHECKED_ATTR,
-     * HTML.CHECKED_ATTR, null); }
-     *
-     * if ((value != null) && (value.length() > 0)) {
-     * writer.writeAttribute(HTML.VALUE_ATTR, value, null); }
-     *
-     * renderHTMLAttributes(writer, uiComponent,
-     * HTML.INPUT_PASSTHROUGH_ATTRIBUTES); renderDisabledOnUserRole(writer,
-     * uiComponent, facesContext);
-     *
-     * if ((label != null) && (label.length() > 0)) {
-     * writer.write(HTML.NBSP_ENTITY); writer.writeText(label, null); }
-     *
-     * writer.endElement(HTML.INPUT_ELEM); }
-     */
-
     public static void writePrettyLineSeparator(FacesContext facesContext)
-            throws IOException {
-        if (org.apache.myfaces.shared.config.MyfacesConfig.getCurrentInstance(facesContext.getExternalContext())
-                .isPrettyHtml()) {
+            throws IOException
+    {
+        if (org.apache.myfaces.shared.config.MyfacesConfig.getCurrentInstance(
+                facesContext.getExternalContext()).isPrettyHtml())
+        {
             facesContext.getResponseWriter().write(LINE_SEPARATOR);
         }
     }
 
     public static void writePrettyIndent(FacesContext facesContext)
-            throws IOException {
-        if (org.apache.myfaces.shared.config.MyfacesConfig.getCurrentInstance(facesContext.getExternalContext())
-                .isPrettyHtml()) {
+            throws IOException
+    {
+        if (org.apache.myfaces.shared.config.MyfacesConfig.getCurrentInstance(
+                facesContext.getExternalContext()).isPrettyHtml())
+        {
             facesContext.getResponseWriter().write('\t');
         }
     }
@@ -652,13 +713,14 @@ public final class HtmlRendererUtils {
      * @throws java.io.IOException
      */
     public static boolean renderHTMLAttribute(ResponseWriter writer,
-                                              String componentProperty, String attrName, Object value)
-            throws IOException {
-        if (!RendererUtils.isDefaultAttributeValue(value)) {
+            String componentProperty, String attrName, Object value)
+            throws IOException
+    {
+        if (!RendererUtils.isDefaultAttributeValue(value))
+        {
             // render JSF "styleClass" and "itemStyleClass" attributes as "class"
-            String htmlAttrName =
-                    attrName.equals(HTML.STYLE_CLASS_ATTR) ?
-                            HTML.CLASS_ATTR : attrName;
+            String htmlAttrName = attrName.equals(HTML.STYLE_CLASS_ATTR) ? HTML.CLASS_ATTR
+                    : attrName;
             writer.writeAttribute(htmlAttrName, value, componentProperty);
             return true;
         }
@@ -671,8 +733,9 @@ public final class HtmlRendererUtils {
      * @throws java.io.IOException
      */
     public static boolean renderHTMLAttribute(ResponseWriter writer,
-                                              UIComponent component, String componentProperty, String htmlAttrName)
-            throws IOException {
+            UIComponent component, String componentProperty, String htmlAttrName)
+            throws IOException
+    {
         Object value = component.getAttributes().get(componentProperty);
         return renderHTMLAttribute(writer, componentProperty, htmlAttrName,
                 value);
@@ -683,11 +746,14 @@ public final class HtmlRendererUtils {
      * @throws java.io.IOException
      */
     public static boolean renderHTMLAttributes(ResponseWriter writer,
-                                               UIComponent component, String[] attributes) throws IOException {
+            UIComponent component, String[] attributes) throws IOException
+    {
         boolean somethingDone = false;
-        for (int i = 0, len = attributes.length; i < len; i++) {
+        for (int i = 0, len = attributes.length; i < len; i++)
+        {
             String attrName = attributes[i];
-            if (renderHTMLAttribute(writer, component, attrName, attrName)) {
+            if (renderHTMLAttribute(writer, component, attrName, attrName))
+            {
                 somethingDone = true;
             }
         }
@@ -697,9 +763,13 @@ public final class HtmlRendererUtils {
     public static boolean renderHTMLAttributeWithOptionalStartElement(
             ResponseWriter writer, UIComponent component, String elementName,
             String attrName, Object value, boolean startElementWritten)
-            throws IOException {
-        if (!org.apache.myfaces.shared.renderkit.RendererUtils.isDefaultAttributeValue(value)) {
-            if (!startElementWritten) {
+            throws IOException
+    {
+        if (!org.apache.myfaces.shared.renderkit.RendererUtils
+                .isDefaultAttributeValue(value))
+        {
+            if (!startElementWritten)
+            {
                 writer.startElement(elementName, component);
                 startElementWritten = true;
             }
@@ -710,13 +780,17 @@ public final class HtmlRendererUtils {
 
     public static boolean renderHTMLAttributesWithOptionalStartElement(
             ResponseWriter writer, UIComponent component, String elementName,
-            String[] attributes) throws IOException {
+            String[] attributes) throws IOException
+    {
         boolean startElementWritten = false;
-        for (int i = 0, len = attributes.length; i < len; i++) {
+        for (int i = 0, len = attributes.length; i < len; i++)
+        {
             String attrName = attributes[i];
             Object value = component.getAttributes().get(attrName);
-            if (!RendererUtils.isDefaultAttributeValue(value)) {
-                if (!startElementWritten) {
+            if (!RendererUtils.isDefaultAttributeValue(value))
+            {
+                if (!startElementWritten)
+                {
                     writer.startElement(elementName, component);
                     startElementWritten = true;
                 }
@@ -727,18 +801,22 @@ public final class HtmlRendererUtils {
     }
 
     public static boolean renderOptionalEndElement(ResponseWriter writer,
-                                                   UIComponent component, String elementName, String[] attributes)
-            throws IOException {
+            UIComponent component, String elementName, String[] attributes)
+            throws IOException
+    {
         boolean endElementNeeded = false;
-        for (int i = 0, len = attributes.length; i < len; i++) {
+        for (int i = 0, len = attributes.length; i < len; i++)
+        {
             String attrName = attributes[i];
             Object value = component.getAttributes().get(attrName);
-            if (!RendererUtils.isDefaultAttributeValue(value)) {
+            if (!RendererUtils.isDefaultAttributeValue(value))
+            {
                 endElementNeeded = true;
                 break;
             }
         }
-        if (endElementNeeded) {
+        if (endElementNeeded)
+        {
             writer.endElement(elementName);
             return true;
         }
@@ -746,81 +824,103 @@ public final class HtmlRendererUtils {
         return false;
     }
 
-    public static void writeIdIfNecessary(ResponseWriter writer, UIComponent component,
-                                          FacesContext facesContext)
-            throws IOException {
-        if (component.getId() != null && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
-            writer.writeAttribute(HTML.ID_ATTR, component.getClientId(facesContext), null);
+    public static void writeIdIfNecessary(ResponseWriter writer,
+            UIComponent component, FacesContext facesContext)
+            throws IOException
+    {
+        if (component.getId() != null
+                && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+        {
+            writer.writeAttribute(HTML.ID_ATTR,
+                    component.getClientId(facesContext), null);
         }
     }
 
-    public static void writeIdAndNameIfNecessary(ResponseWriter writer, UIComponent component,
-                                                 FacesContext facesContext)
-            throws IOException {
-        if (component.getId() != null && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
+    public static void writeIdAndNameIfNecessary(ResponseWriter writer,
+            UIComponent component, FacesContext facesContext)
+            throws IOException
+    {
+        if (component.getId() != null
+                && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+        {
             String clientId = component.getClientId(facesContext);
             writer.writeAttribute(HTML.ID_ATTR, clientId, null);
             writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
         }
     }
 
-    public static void writeIdAndName(ResponseWriter writer, UIComponent component,
-                                      FacesContext facesContext)
-            throws IOException {
+    public static void writeIdAndName(ResponseWriter writer,
+            UIComponent component, FacesContext facesContext)
+            throws IOException
+    {
         String clientId = component.getClientId(facesContext);
         writer.writeAttribute(HTML.ID_ATTR, clientId, null);
         writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
     }
 
-    public static void renderDisplayValueOnlyForSelects(FacesContext facesContext,
-                                                        UIComponent uiComponent) throws IOException {
+    public static void renderDisplayValueOnlyForSelects(
+            FacesContext facesContext, UIComponent uiComponent)
+            throws IOException
+    {
         // invoke renderDisplayValueOnlyForSelects with considerValueType = false
         renderDisplayValueOnlyForSelects(facesContext, uiComponent, false);
     }
 
-    public static void renderDisplayValueOnlyForSelects(FacesContext facesContext,
-                                                        UIComponent uiComponent, boolean considerValueType)
-            throws IOException {
+    public static void renderDisplayValueOnlyForSelects(
+            FacesContext facesContext, UIComponent uiComponent,
+            boolean considerValueType) throws IOException
+    {
         ResponseWriter writer = facesContext.getResponseWriter();
 
         List selectItemList = null;
         Converter converter = null;
         boolean isSelectOne = false;
 
-        if (uiComponent instanceof UISelectBoolean) {
+        if (uiComponent instanceof UISelectBoolean)
+        {
             converter = findUIOutputConverterFailSafe(facesContext, uiComponent);
 
             writer.startElement(HTML.SPAN_ELEM, uiComponent);
             writeIdIfNecessary(writer, uiComponent, facesContext);
             renderDisplayValueOnlyAttributes(uiComponent, writer);
-            writer.writeText(RendererUtils.getConvertedStringValue(facesContext, uiComponent,
-                    converter, ((UISelectBoolean) uiComponent).getValue()), JSFAttr.VALUE_ATTR);
+            writer.writeText(RendererUtils.getConvertedStringValue(
+                    facesContext, uiComponent, converter,
+                    ((UISelectBoolean) uiComponent).getValue()),
+                    JSFAttr.VALUE_ATTR);
             writer.endElement(HTML.SPAN_ELEM);
 
-        } else {
-            if (uiComponent instanceof UISelectMany) {
+        }
+        else
+        {
+            if (uiComponent instanceof UISelectMany)
+            {
                 isSelectOne = false;
-                selectItemList = RendererUtils
-                        .getSelectItemList((UISelectMany) uiComponent, facesContext);
-                converter = findUISelectManyConverterFailsafe(facesContext, uiComponent, considerValueType);
-            } else if (uiComponent instanceof UISelectOne) {
+                selectItemList = RendererUtils.getSelectItemList(
+                        (UISelectMany) uiComponent, facesContext);
+                converter = findUISelectManyConverterFailsafe(facesContext,
+                        uiComponent, considerValueType);
+            }
+            else if (uiComponent instanceof UISelectOne)
+            {
                 isSelectOne = true;
-                selectItemList = RendererUtils
-                        .getSelectItemList((UISelectOne) uiComponent, facesContext);
-                converter = findUIOutputConverterFailSafe(facesContext, uiComponent);
+                selectItemList = RendererUtils.getSelectItemList(
+                        (UISelectOne) uiComponent, facesContext);
+                converter = findUIOutputConverterFailSafe(facesContext,
+                        uiComponent);
             }
 
-            writer.startElement(isSelectOne ? HTML.SPAN_ELEM : HTML.UL_ELEM, uiComponent);
+            writer.startElement(isSelectOne ? HTML.SPAN_ELEM : HTML.UL_ELEM,
+                    uiComponent);
             writeIdIfNecessary(writer, uiComponent, facesContext);
 
             renderDisplayValueOnlyAttributes(uiComponent, writer);
 
             Set lookupSet = getSubmittedOrSelectedValuesAsSet(
-                    uiComponent instanceof UISelectMany,
-                    uiComponent, facesContext, converter);
+                    uiComponent instanceof UISelectMany, uiComponent,
+                    facesContext, converter);
 
-            renderSelectOptionsAsText(facesContext, uiComponent, converter, lookupSet,
-                    selectItemList, isSelectOne);
+            renderSelectOptionsAsText(facesContext, uiComponent, converter,
+                    lookupSet, selectItemList, isSelectOne);
 
             // bug #970747: force separate end tag
             writer.writeText(STR_EMPTY, null);
@@ -829,8 +929,11 @@ public final class HtmlRendererUtils {
 
     }
 
-    public static void renderDisplayValueOnlyAttributes(UIComponent uiComponent, ResponseWriter writer) throws IOException {
-        if (!(uiComponent instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable)) {
+    public static void renderDisplayValueOnlyAttributes(
+            UIComponent uiComponent, ResponseWriter writer) throws IOException
+    {
+        if (!(uiComponent instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable))
+        {
             log.severe("Wrong type of uiComponent. needs DisplayValueOnlyCapable.");
             renderHTMLAttributes(writer, uiComponent,
                     HTML.COMMON_PASSTROUGH_ATTRIBUTES);
@@ -838,53 +941,78 @@ public final class HtmlRendererUtils {
             return;
         }
 
-        if (getDisplayValueOnlyStyle(uiComponent) != null || getDisplayValueOnlyStyleClass(uiComponent) != null) {
-            if (getDisplayValueOnlyStyle(uiComponent) != null) {
-                writer.writeAttribute(HTML.STYLE_ATTR, getDisplayValueOnlyStyle(uiComponent), null);
-            } else if (uiComponent.getAttributes().get("style") != null) {
-                writer.writeAttribute(HTML.STYLE_ATTR, uiComponent.getAttributes().get("style"), null);
+        if (getDisplayValueOnlyStyle(uiComponent) != null
+                || getDisplayValueOnlyStyleClass(uiComponent) != null)
+        {
+            if (getDisplayValueOnlyStyle(uiComponent) != null)
+            {
+                writer.writeAttribute(HTML.STYLE_ATTR,
+                        getDisplayValueOnlyStyle(uiComponent), null);
+            }
+            else if (uiComponent.getAttributes().get("style") != null)
+            {
+                writer.writeAttribute(HTML.STYLE_ATTR, uiComponent
+                        .getAttributes().get("style"), null);
             }
 
-            if (getDisplayValueOnlyStyleClass(uiComponent) != null) {
-                writer.writeAttribute(HTML.CLASS_ATTR, getDisplayValueOnlyStyleClass(uiComponent), null);
-            } else if (uiComponent.getAttributes().get("styleClass") != null) {
-                writer.writeAttribute(HTML.CLASS_ATTR, uiComponent.getAttributes().get("styleClass"), null);
+            if (getDisplayValueOnlyStyleClass(uiComponent) != null)
+            {
+                writer.writeAttribute(HTML.CLASS_ATTR,
+                        getDisplayValueOnlyStyleClass(uiComponent), null);
+            }
+            else if (uiComponent.getAttributes().get("styleClass") != null)
+            {
+                writer.writeAttribute(HTML.CLASS_ATTR, uiComponent
+                        .getAttributes().get("styleClass"), null);
             }
 
             renderHTMLAttributes(writer, uiComponent,
                     HTML.COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE);
-        } else {
+        }
+        else
+        {
             renderHTMLAttributes(writer, uiComponent,
                     HTML.COMMON_PASSTROUGH_ATTRIBUTES);
         }
     }
 
     private static void renderSelectOptionsAsText(FacesContext context,
-                                                  UIComponent component, Converter converter, Set lookupSet,
-                                                  List selectItemList, boolean isSelectOne) throws IOException {
+            UIComponent component, Converter converter, Set lookupSet,
+            List selectItemList, boolean isSelectOne) throws IOException
+    {
         ResponseWriter writer = context.getResponseWriter();
 
-        for (Iterator it = selectItemList.iterator(); it.hasNext();) {
+        for (Iterator it = selectItemList.iterator(); it.hasNext();)
+        {
             SelectItem selectItem = (SelectItem) it.next();
 
-            if (selectItem instanceof SelectItemGroup) {
+            if (selectItem instanceof SelectItemGroup)
+            {
                 SelectItem[] selectItems = ((SelectItemGroup) selectItem)
                         .getSelectItems();
-                renderSelectOptionsAsText(context, component, converter, lookupSet,
-                        Arrays.asList(selectItems), isSelectOne);
-            } else {
-                String itemStrValue = RendererUtils.getConvertedStringValue(context, component,
-                        converter, selectItem);
-
-                if (lookupSet.contains(itemStrValue)) {  //TODO/FIX: we always compare the String vales, better fill lookupSet with Strings only when useSubmittedValue==true, else use the real item value Objects
+                renderSelectOptionsAsText(context, component, converter,
+                        lookupSet, Arrays.asList(selectItems), isSelectOne);
+            }
+            else
+            {
+                String itemStrValue = RendererUtils.getConvertedStringValue(
+                        context, component, converter, selectItem);
 
+                if (lookupSet.contains(itemStrValue))
+                {
+                    //TODO/FIX: we always compare the String vales, better fill lookupSet with Strings 
+                    //only when useSubmittedValue==true, else use the real item value Objects
                     if (!isSelectOne)
+                    {
                         writer.startElement(HTML.LI_ELEM, component);
+                    }
                     writer.writeText(selectItem.getLabel(), null);
                     if (!isSelectOne)
+                    {
                         writer.endElement(HTML.LI_ELEM);
-
-                    if (isSelectOne) {
+                    }
+                    if (isSelectOne)
+                    {
                         //take care of several choices with the same value; use only the first one
                         return;
                     }
@@ -894,605 +1022,260 @@ public final class HtmlRendererUtils {
     }
 
     public static void renderTableCaption(FacesContext context,
-                                          ResponseWriter writer,
-                                          UIComponent component)
-            throws IOException {
+            ResponseWriter writer, UIComponent component) throws IOException
+    {
         UIComponent captionFacet = component.getFacet("caption");
-        if (captionFacet == null) return;
-
+        if (captionFacet == null)
+        {
+            return;
+        }
         String captionClass;
         String captionStyle;
-
-        if (component instanceof HtmlPanelGrid) {
+        if (component instanceof HtmlPanelGrid)
+        {
             HtmlPanelGrid panelGrid = (HtmlPanelGrid) component;
             captionClass = panelGrid.getCaptionClass();
             captionStyle = panelGrid.getCaptionStyle();
-        } else if (component instanceof HtmlDataTable) {
+        }
+        else if (component instanceof HtmlDataTable)
+        {
             HtmlDataTable dataTable = (HtmlDataTable) component;
             captionClass = dataTable.getCaptionClass();
             captionStyle = dataTable.getCaptionStyle();
-        } else {
-            captionClass = (String) component.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.CAPTION_CLASS_ATTR);
-            captionStyle = (String) component.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.CAPTION_STYLE_ATTR);
         }
-
+        else
+        {
+            captionClass = (String) component
+                    .getAttributes()
+                    .get(org.apache.myfaces.shared.renderkit.JSFAttr.CAPTION_CLASS_ATTR);
+            captionStyle = (String) component
+                    .getAttributes()
+                    .get(org.apache.myfaces.shared.renderkit.JSFAttr.CAPTION_STYLE_ATTR);
+        }
         HtmlRendererUtils.writePrettyLineSeparator(context);
         writer.startElement(HTML.CAPTION_ELEM, component);
-
-        if (captionClass != null) {
+        if (captionClass != null)
+        {
             writer.writeAttribute(HTML.CLASS_ATTR, captionClass, null);
         }
 
-        if (captionStyle != null) {
+        if (captionStyle != null)
+        {
             writer.writeAttribute(HTML.STYLE_ATTR, captionStyle, null);
         }
-
         //RendererUtils.renderChild(context, captionFacet);
         captionFacet.encodeAll(context);
-
         writer.endElement(HTML.CAPTION_ELEM);
     }
 
-    public static String getDisplayValueOnlyStyleClass(UIComponent component) {
-
-        if (component instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable) {
-            if (((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) component).getDisplayValueOnlyStyleClass() != null)
-                return ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) component).getDisplayValueOnlyStyleClass();
-
+    public static String getDisplayValueOnlyStyleClass(UIComponent component)
+    {
+        if (component instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable)
+        {
+            if (((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) component)
+                    .getDisplayValueOnlyStyleClass() != null)
+            {
+                return ((DisplayValueOnlyCapable) component)
+                        .getDisplayValueOnlyStyleClass();
+            }
             UIComponent parent = component;
-
-            while ((parent = parent.getParent()) != null) {
-                if (parent instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable &&
-                        ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) parent).getDisplayValueOnlyStyleClass() != null) {
-                    return ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) parent).getDisplayValueOnlyStyleClass();
+            while ((parent = parent.getParent()) != null)
+            {
+                if (parent instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable
+                        && ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) parent)
+                                .getDisplayValueOnlyStyleClass() != null)
+                {
+                    return ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) parent)
+                            .getDisplayValueOnlyStyleClass();
                 }
             }
         }
-
         return null;
     }
 
-    public static String getDisplayValueOnlyStyle(UIComponent component) {
-
-        if (component instanceof DisplayValueOnlyCapable) {
-            if (((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) component).getDisplayValueOnlyStyle() != null)
-                return ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) component).getDisplayValueOnlyStyle();
-
+    public static String getDisplayValueOnlyStyle(UIComponent component)
+    {
+        if (component instanceof DisplayValueOnlyCapable)
+        {
+            if (((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) component)
+                    .getDisplayValueOnlyStyle() != null)
+            {
+                return ((DisplayValueOnlyCapable) component)
+                        .getDisplayValueOnlyStyle();
+            }
             UIComponent parent = component;
-
-            while ((parent = parent.getParent()) != null) {
-                if (parent instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable &&
-                        ((DisplayValueOnlyCapable) parent).getDisplayValueOnlyStyle() != null) {
-                    return ((DisplayValueOnlyCapable) parent).getDisplayValueOnlyStyle();
+            while ((parent = parent.getParent()) != null)
+            {
+                if (parent instanceof org.apache.myfaces.shared.component.DisplayValueOnlyCapable
+                        && ((DisplayValueOnlyCapable) parent)
+                                .getDisplayValueOnlyStyle() != null)
+                {
+                    return ((DisplayValueOnlyCapable) parent)
+                            .getDisplayValueOnlyStyle();
                 }
             }
         }
-
         return null;
     }
 
-    public static boolean isDisplayValueOnly(UIComponent component) {
-
-        if (component instanceof DisplayValueOnlyCapable) {
+    public static boolean isDisplayValueOnly(UIComponent component)
+    {
+        if (component instanceof DisplayValueOnlyCapable)
+        {
             if (((DisplayValueOnlyCapable) component).isSetDisplayValueOnly())
-                return ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) component).isDisplayValueOnly();
-
+            {
+                return ((DisplayValueOnlyCapable) component)
+                        .isDisplayValueOnly();
+            }
             UIComponent parent = component;
-
-            while ((parent = parent.getParent()) != null) {
-                if (parent instanceof DisplayValueOnlyCapable &&
-                        ((DisplayValueOnlyCapable) parent).isSetDisplayValueOnly()) {
-                    return ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) parent).isDisplayValueOnly();
+            while ((parent = parent.getParent()) != null)
+            {
+                if (parent instanceof DisplayValueOnlyCapable
+                        && ((DisplayValueOnlyCapable) parent)
+                                .isSetDisplayValueOnly())
+                {
+                    return ((org.apache.myfaces.shared.component.DisplayValueOnlyCapable) parent)
+                            .isDisplayValueOnly();
                 }
             }
         }
-
         return false;
     }
 
-    public static void renderDisplayValueOnly(FacesContext facesContext, UIInput input) throws IOException {
+    public static void renderDisplayValueOnly(FacesContext facesContext,
+            UIInput input) throws IOException
+    {
         ResponseWriter writer = facesContext.getResponseWriter();
-        writer.startElement(org.apache.myfaces.shared.renderkit.html.HTML.SPAN_ELEM, input);
-
+        writer.startElement(
+                org.apache.myfaces.shared.renderkit.html.HTML.SPAN_ELEM, input);
         writeIdIfNecessary(writer, input, facesContext);
-
         renderDisplayValueOnlyAttributes(input, writer);
-
         String strValue = RendererUtils.getStringValue(facesContext, input);
         writer.write(HTMLEncoder.encode(strValue, true, true));
-
         writer.endElement(HTML.SPAN_ELEM);
     }
 
-    public static void appendClearHiddenCommandFormParamsFunctionCall(StringBuffer buf, String formName) {
-        appendClearHiddenCommandFormParamsFunctionCall(new ScriptContext(buf, false), formName);
-    }
-
-    private static void appendClearHiddenCommandFormParamsFunctionCall(ScriptContext context, String formName) {
-
-        String functionName = HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName);
-
-        if (formName == null) {
-            context.prettyLine();
-            context.append("var clearFn = ");
-            context.append(functionName);
-            context.append(";");
-            context.prettyLine();
-            context.append("if(typeof window[clearFn] =='function')");
-            context.append("{");
-            context.append("window[clearFn](formName);");
-            context.append("}");
-        } else {
-            context.prettyLine();
-            context.append("if(typeof window.");
-            context.append(functionName);
-            context.append("=='function')");
-            context.append("{");
-            context.append(functionName).append("('").append(formName).append("');");
-            context.append("}");
-        }
+    public static void appendClearHiddenCommandFormParamsFunctionCall(
+            StringBuffer buf, String formName)
+    {
+        HtmlJavaScriptUtils.appendClearHiddenCommandFormParamsFunctionCall(buf, formName);
     }
 
     @SuppressWarnings("unchecked")
     public static void renderFormSubmitScript(FacesContext facesContext)
-            throws IOException {
-
-        Map map = facesContext.getExternalContext().getRequestMap();
-        Boolean firstScript = (Boolean) map.get(FIRST_SUBMIT_SCRIPT_ON_PAGE);
-
-        if (firstScript == null || firstScript.equals(Boolean.TRUE)) {
-            map.put(FIRST_SUBMIT_SCRIPT_ON_PAGE, Boolean.FALSE);
-            HtmlRendererUtils.renderFormSubmitScriptIfNecessary(facesContext);
-
-            //we have to render the config just in case
-            renderConfigOptionsIfNecessary(facesContext);
-        }
-    }
-
-    private static void renderConfigOptionsIfNecessary(FacesContext facesContext) throws IOException {
-        ResponseWriter writer = facesContext.getResponseWriter();
-        MyfacesConfig config = MyfacesConfig.getCurrentInstance(facesContext.getExternalContext());
-        ScriptContext script = new ScriptContext(config.isPrettyHtml());
-        boolean autoScroll = config.isAutoScroll();
-        boolean autoSave = JavascriptUtils.isSaveFormSubmitLinkIE(facesContext.getExternalContext());
-
-        if (autoScroll || autoSave) {
-            script.prettyLine();
-            script.increaseIndent();
-            script.append("(!window.myfaces) ? window.myfaces = {} : null;");
-            script.append("(!myfaces.core) ? myfaces.core = {} : null;");
-            script.append("(!myfaces.core.config) ? myfaces.core.config = {} : null;");
-        }
-
-        if (autoScroll) {
-            script.append("myfaces.core.config.autoScroll = true;");
-        }
-        if (autoSave) {
-            script.append("myfaces.core.config.ieAutoSave = true;");
-        }
-        if (autoScroll || autoSave) {
-            writer.startElement(HTML.SCRIPT_ELEM, null);
-            writer.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
-            writer.writeText(script.toString(), null);
-            writer.endElement(HTML.SCRIPT_ELEM);
-        }
-    }
-
-    /**
-     * @param facesContext
-     * @throws IOException
-     */
-    private static void renderFormSubmitScriptIfNecessary(FacesContext facesContext) throws IOException {
-        final ExternalContext externalContext = facesContext.getExternalContext();
-        final MyfacesConfig currentInstance = MyfacesConfig.getCurrentInstance(externalContext);
-        ResponseWriter writer = facesContext.getResponseWriter();
-
-        if (currentInstance.isRenderFormSubmitScriptInline())
-        {
-            writer.startElement(HTML.SCRIPT_ELEM, null);
-            writer.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
-    
-            boolean autoScroll = currentInstance.isAutoScroll();
-    
-            ScriptContext context = new ScriptContext(currentInstance
-                    .isPrettyHtml());
-            context.prettyLine();
-            context.increaseIndent();
-    
-            prepareScript(facesContext, context, autoScroll);
-    
-            writer.writeText(context.toString(), null);
-    
-            writer.endElement(HTML.SCRIPT_ELEM);
-        }
-        else
-        {
-            ResourceUtils.renderMyfacesJSInlineIfNecessary(facesContext, writer);
-        }
-    }
-
-    /**
-     * @param facesContext
-     * @param context
-     * @param autoScroll
-     */
-    private static void prepareScript(FacesContext facesContext, ScriptContext context, boolean autoScroll) {
-
-        final char separatorChar = UINamingContainer.getSeparatorChar(facesContext);
-        context.prettyLine();
-
-        //render a function to create a hidden input, if it doesn't exist
-        context.append("function ");
-        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formname, name, value)");
-        context.append("{");
-        context.append("var form = document.forms[formname];");
-        context.prettyLine();
-        context.append("if (typeof form == 'undefined')");
-        context.append("{");
-        context.append("form = document.getElementById(formname);");
-        context.append("}");
-        context.prettyLine();
-        context.append("if(typeof form.elements[name]!='undefined' && (form.elements[name].nodeName=='INPUT' || form.elements[name].nodeName=='input'))");
-        context.append("{");
-        context.append("form.elements[name].value=value;");
-        context.append("}");
-        context.append("else");
-        context.append("{");
-        context.append("var newInput = document.createElement('input');");
-        context.prettyLine();
-        context.append("newInput.setAttribute('type','hidden');");
-        context.prettyLine();
-        context.append("newInput.setAttribute('id',name);");  // IE hack; See MYFACES-1805
-        context.prettyLine();
-        context.append("newInput.setAttribute('name',name);");
-        context.prettyLine();
-        context.append("newInput.setAttribute('value',value);");
-        context.prettyLine();
-        context.append("form.appendChild(newInput);");
-        context.append("}");
-
-        context.append("}");
-
-        context.prettyLine();
-
-        context.prettyLine();
-
-        //render a function to clear a hidden input, if it exists        
-        context.append("function ");
-        context.append(CLEAR_HIDDEN_INPUT_FN_NAME).append("(formname, name, value)");
-        context.append("{");
-        context.append("var form = document.forms[formname];");
-        context.prettyLine();
-        context.append("if (typeof form == 'undefined')");
-        context.append("{");
-        context.append("form = document.getElementById(formname);");
-        context.append("}");
-        context.prettyLine();
-        context.append("var hInput = form.elements[name];");
-        context.prettyLine();
-        context.append("if(typeof hInput !='undefined')");
-        context.append("{");
-        //context.append("form.elements[name].value=null;");
-        context.append("form.removeChild(hInput);");
-        context.append("}");
-
-        context.append("}");
-
-        context.prettyLine();
-
-        context.append("function ");
-        context.append(SUBMIT_FORM_FN_NAME).append("(formName, linkId, target, params)");
-        context.append("{");
-
-        //call the script to clear the form (clearFormHiddenParams_<formName>) method - optionally, only necessary for IE5.5.
-        //todo: if IE5.5. is ever desupported, we can get rid of this and instead rely on the last part of this script to
-        //clear the parameters
-        HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(context, null);
-
-        if (autoScroll) {
-            appendAutoScrollAssignment(facesContext, context, null);
-        }
-
-        context.prettyLine();
-
-        context.append("var form = document.forms[formName];");
-        context.prettyLine();
-        context.append("if (typeof form == 'undefined')");
-        context.append("{");
-        context.append("form = document.getElementById(formName);");
-        context.append("}");
-        context.prettyLine();
-
-        if (JavascriptUtils.isSaveFormSubmitLinkIE(FacesContext.getCurrentInstance().getExternalContext())) {
-            context.append("var agentString = navigator.userAgent.toLowerCase();");
-            context.prettyLine();
-            //context.append("var isIE = false;");
-            context.prettyLine();
-            context.append("if (agentString.indexOf('msie') != -1)");
-
-            context.append("{");
-            context.append("if (!(agentString.indexOf('ppc') != -1 && agentString.indexOf('windows ce') != -1 && version >= 4.0))");
-            context.append("{");
-            context.append("window.external.AutoCompleteSaveForm(form);");
-//        context.append("isIE = false;");
-            context.append("}");
-//        context.append("else");
-//        context.append("{");
-//        context.append("isIE = true;");
-//        context.prettyLine();
-//        context.append("}");
-
-            context.append("}");
-
-            context.prettyLine();
-        }
-        //set the target (and save it). This should be done always, 
-        //and the default value of target is always valid.
-        context.append("var oldTarget = form.target;");
-        context.prettyLine();
-        context.append("if(target != null)");
-        context.append("{");
-        context.prettyLine();
-        context.append("form.target=target;");
-        context.append("}");
-
-        //set the submit parameters
-
-        context.append("if((typeof params!='undefined') && params != null)");
-        context.append("{");
-        context.prettyLine();
-        context.append("for(var i=0, param; (param = params[i]); i++)");
-        context.append("{");
-        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formName,param[0], param[1]);");
-        context.append("}");
-        context.append("}");
-
-        context.prettyLine();
-
-        context.append(SET_HIDDEN_INPUT_FN_NAME);
-        context.append("(formName,formName +'" + separatorChar +
-                "'+'" + HtmlRendererUtils.HIDDEN_COMMANDLINK_FIELD_NAME + "',linkId);");
-
-        context.prettyLine();
-        context.prettyLine();
-
-        //do the actual submit calls
-
-        context.append("if(form.onsubmit)");
-        context.append("{");
-        context.append("var result=form.onsubmit();");
-        context.prettyLine();
-        context.append("if((typeof result=='undefined')||result)");
-        context.append("{");
-        context.append("try");
-        context.append("{");
-        context.append("form.submit();");
-        context.append("}");
-        context.append("catch(e){}");
-        context.append("}");
-        context.append("}");
-        context.append("else ");
-        context.append("{");
-        context.append("try");
-        context.append("{");
-        context.append("form.submit();");
-        context.append("}");
-        context.append("catch(e){}");
-        context.append("}");
-
-        //reset the target
-        context.prettyLine();
-        //Restore the old target, no more questions asked
-        context.append("form.target=oldTarget;");
-        context.prettyLine();
-
-        //clear the individual parameters - to make sure that even if the clear-function isn't called,
-        // the back button/resubmit functionality will still work in all browsers except IE 5.5.
-
-        context.append("if((typeof params!='undefined') && params != null)");
-        context.append("{");
-        context.prettyLine();
-        context.append("for(var i=0, param; (param = params[i]); i++)");
-        context.append("{");
-        context.append(CLEAR_HIDDEN_INPUT_FN_NAME).append("(formName,param[0], param[1]);");
-        context.append("}");
-        context.append("}");
-
-        context.prettyLine();
-
-        context.append(CLEAR_HIDDEN_INPUT_FN_NAME);
-        context.append("(formName,formName +'" + separatorChar +
-                "'+'" + HtmlRendererUtils.HIDDEN_COMMANDLINK_FIELD_NAME + "',linkId);");
-
-
-        //return false, so that browser does not handle the click
-        context.append("return false;");
-        context.append("}");
-
-        context.prettyLineDecreaseIndent();
+            throws IOException
+    {
+        HtmlJavaScriptUtils.renderFormSubmitScript(facesContext);
     }
 
     /**
      * Adds the hidden form input value assignment that is necessary for the autoscroll
      * feature to an html link or button onclick attribute.
      */
-    public static void appendAutoScrollAssignment(StringBuffer onClickValue, String formName) {
-        appendAutoScrollAssignment(FacesContext.getCurrentInstance(), new ScriptContext(onClickValue, false), formName);
+    public static void appendAutoScrollAssignment(StringBuffer onClickValue,
+            String formName)
+    {
+        HtmlJavaScriptUtils.appendAutoScrollAssignment(onClickValue, formName);
     }
-    
+
     /**
      * Adds the hidden form input value assignment that is necessary for the autoscroll
      * feature to an html link or button onclick attribute.
      */
-    public static void appendAutoScrollAssignment(FacesContext context, StringBuffer onClickValue, String formName) {
-        appendAutoScrollAssignment(context, new ScriptContext(onClickValue, false), formName);
-    }    
-
-    private static void appendAutoScrollAssignment(FacesContext context, ScriptContext scriptContext, String formName) {
-        String formNameStr = formName == null ? "formName" : (new StringBuffer("'").append(formName).append("'").toString());
-        String paramName = new StringBuffer().append("'").
-                append(AUTO_SCROLL_PARAM).append("'").toString();
-        String value = new StringBuffer().append(AUTO_SCROLL_FUNCTION).append("()").toString();
-
-        scriptContext.prettyLine();
-        scriptContext.append("if(typeof window." + AUTO_SCROLL_FUNCTION + "!='undefined')");
-        scriptContext.append("{");
-        if (MyfacesConfig.getCurrentInstance(context.getExternalContext()).isRenderFormSubmitScriptInline())
-        {
-            scriptContext.append(SET_HIDDEN_INPUT_FN_NAME);
-        }
-        else
-        {
-            scriptContext.append(SET_HIDDEN_INPUT_FN_NAME_JSF2);
-        }
-        scriptContext.append("(").append(formNameStr).append(",").append(paramName).append(",").append(value).append(");");
-        scriptContext.append("}");
-
+    public static void appendAutoScrollAssignment(FacesContext context,
+            StringBuffer onClickValue, String formName)
+    {
+        HtmlJavaScriptUtils.appendAutoScrollAssignment(context, onClickValue, formName);
     }
 
     /**
      * Renders the hidden form input that is necessary for the autoscroll feature.
      */
-    public static void renderAutoScrollHiddenInput(FacesContext facesContext, ResponseWriter writer) throws IOException {
-        writePrettyLineSeparator(facesContext);
-        writer.startElement(HTML.INPUT_ELEM, null);
-        writer.writeAttribute(HTML.TYPE_ATTR, "hidden", null);
-        writer.writeAttribute(HTML.NAME_ATTR, AUTO_SCROLL_PARAM, null);
-        writer.endElement(HTML.INPUT_ELEM);
-        writePrettyLineSeparator(facesContext);
+    public static void renderAutoScrollHiddenInput(FacesContext facesContext,
+            ResponseWriter writer) throws IOException
+    {
+        HtmlJavaScriptUtils.renderAutoScrollHiddenInput(facesContext, writer);
     }
 
     /**
      * Renders the autoscroll javascript function.
      */
     public static void renderAutoScrollFunction(FacesContext facesContext,
-                                                ResponseWriter writer) throws IOException {
-        writePrettyLineSeparator(facesContext);
-        writer.startElement(HTML.SCRIPT_ELEM, null);
-        writer.writeAttribute(HTML.SCRIPT_TYPE_ATTR, HTML.SCRIPT_TYPE_TEXT_JAVASCRIPT, null);
-        writer.writeText(getAutoScrollFunction(facesContext), null);
-        writer.endElement(HTML.SCRIPT_ELEM);
-        writePrettyLineSeparator(facesContext);
-    }
-
-    public static String getAutoScrollFunction(FacesContext facesContext) {
-        ScriptContext script = new ScriptContext(
-                MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isPrettyHtml());
-
-        script.prettyLineIncreaseIndent();
-
-        script.append("function ");
-        script.append(AUTO_SCROLL_FUNCTION);
-        script.append("()");
-        script.append("{");
-        script.append("var x = 0; var y = 0;");
-        script.append("if (self.pageXOffset || self.pageYOffset)");
-        script.append("{");
-        script.append("x = self.pageXOffset;");
-        script.prettyLine();
-        script.append("y = self.pageYOffset;");
-        script.append("}");
-        script.append(" else if ((document.documentElement && document.documentElement.scrollLeft)||(document.documentElement && document.documentElement.scrollTop))");
-        script.append("{");
-        script.append("x = document.documentElement.scrollLeft;");
-        script.prettyLine();
-        script.append("y = document.documentElement.scrollTop;");
-        script.append("}");
-        script.append(" else if (document.body) ");
-        script.append("{");
-        script.append("x = document.body.scrollLeft;");
-        script.prettyLine();
-        script.append("y = document.body.scrollTop;");
-        script.append("}");
-        script.append("return x + \",\" + y;");
-        script.append("}");
-
-        ExternalContext externalContext = facesContext.getExternalContext();
-        String oldViewId = JavascriptUtils.getOldViewId(externalContext);
-        if (oldViewId != null && oldViewId.equals(facesContext.getViewRoot().getViewId())) {
-            //ok, we stayed on the same page, so let's scroll it to the former place
-            String scrolling = (String) externalContext.getRequestParameterMap().get(AUTO_SCROLL_PARAM);
-            if (scrolling != null && scrolling.length() > 0) {
-                int x = 0;
-                int y = 0;
-                int comma = scrolling.indexOf(',');
-                if (comma == -1) {
-                    log.warning("Illegal autoscroll request parameter: " + scrolling);
-                } else {
-                    try {
-                        //we convert to int against XSS vulnerability
-                        x = Integer.parseInt(scrolling.substring(0, comma));
-                    } catch (NumberFormatException e) {
-                        log.warning("Error getting x offset for autoscroll feature. Bad param value: " + scrolling);
-                        x = 0; //ignore false numbers
-                    }
-
-                    try {
-                        //we convert to int against XSS vulnerability
-                        y = Integer.parseInt(scrolling.substring(comma + 1));
-                    } catch (NumberFormatException e) {
-                        log.warning("Error getting y offset for autoscroll feature. Bad param value: " + scrolling);
-                        y = 0; //ignore false numbers
-                    }
-                }
-                script.append("window.scrollTo(").append(x).append(",").append(y).append(");\n");
-            }
-        }
+            ResponseWriter writer) throws IOException
+    {
+        HtmlJavaScriptUtils.renderAutoScrollFunction(facesContext, writer);
+    }
 
-        return script.toString();
+    public static String getAutoScrollFunction(FacesContext facesContext)
+    {
+        return HtmlJavaScriptUtils.getAutoScrollFunction(facesContext);
     }
 
-    public static boolean isAllowedCdataSection(FacesContext fc) {
+    public static boolean isAllowedCdataSection(FacesContext fc)
+    {
         Boolean value = null;
-
-        if (fc != null) {
-            value = (Boolean) fc.getExternalContext().getRequestMap().get(ALLOW_CDATA_SECTION_ON);
+        if (fc != null)
+        {
+            value = (Boolean) fc.getExternalContext().getRequestMap()
+                    .get(ALLOW_CDATA_SECTION_ON);
         }
-
         return value != null && ((Boolean) value).booleanValue();
     }
 
-    public static void allowCdataSection(FacesContext fc, boolean cdataSectionAllowed) {
-        fc.getExternalContext().getRequestMap().put(ALLOW_CDATA_SECTION_ON, Boolean.valueOf(cdataSectionAllowed));
+    public static void allowCdataSection(FacesContext fc,
+            boolean cdataSectionAllowed)
+    {
+        fc.getExternalContext()
+                .getRequestMap()
+                .put(ALLOW_CDATA_SECTION_ON,
+                        Boolean.valueOf(cdataSectionAllowed));
     }
 
-    public static class LinkParameter {
+    public static class LinkParameter
+    {
         private String _name;
 
         private Object _value;
 
-        public String getName() {
+        public String getName()
+        {
             return _name;
         }
 
-        public void setName(String name) {
+        public void setName(String name)
+        {
             _name = name;
         }
 
-        public Object getValue() {
+        public Object getValue()
+        {
             return _value;
         }
 
-        public void setValue(Object value) {
+        public void setValue(Object value)
+        {
             _value = value;
         }
-
     }
 
     public static void renderHiddenCommandFormParams(ResponseWriter writer,
-                                                     Set dummyFormParams) throws IOException {
-        for (Iterator it = dummyFormParams.iterator(); it.hasNext();) {
+            Set dummyFormParams) throws IOException
+    {
+        for (Iterator it = dummyFormParams.iterator(); it.hasNext();)
+        {
             Object name = it.next();
             renderHiddenInputField(writer, name, null);
         }
     }
 
-    public static void renderHiddenInputField(ResponseWriter writer, Object name, Object value)
-            throws IOException {
+    public static void renderHiddenInputField(ResponseWriter writer,
+            Object name, Object value) throws IOException
+    {
         writer.startElement(HTML.INPUT_ELEM, null);
         writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
         writer.writeAttribute(HTML.NAME_ATTR, name, null);
-        if (value != null) {
+        if (value != null)
+        {
             writer.writeAttribute(HTML.VALUE_ATTR, value, null);
         }
         writer.endElement(HTML.INPUT_ELEM);
@@ -1509,29 +1292,32 @@ public final class HtmlRendererUtils {
      */
     @Deprecated
     public static void renderLabel(ResponseWriter writer,
-                                   UIComponent component,
-                                   String forClientId,
-                                   String labelValue,
-                                   boolean disabled) throws IOException {
+            UIComponent component, String forClientId, String labelValue,
+            boolean disabled) throws IOException
+    {
         writer.startElement(HTML.LABEL_ELEM, component);
         writer.writeAttribute(HTML.FOR_ATTR, forClientId, null);
-
         String labelClass = null;
-
-        if (disabled) {
-            labelClass = (String) component.getAttributes().get(JSFAttr.DISABLED_CLASS_ATTR);
-        } else {
-            labelClass = (String) component.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.ENABLED_CLASS_ATTR);
+        if (disabled)
+        {
+            labelClass = (String) component.getAttributes().get(
+                    JSFAttr.DISABLED_CLASS_ATTR);
+        }
+        else
+        {
+            labelClass = (String) component
+                    .getAttributes()
+                    .get(org.apache.myfaces.shared.renderkit.JSFAttr.ENABLED_CLASS_ATTR);
         }
-        if (labelClass != null) {
+        if (labelClass != null)
+        {
             writer.writeAttribute("class", labelClass, "labelClass");
         }
-
-        if ((labelValue != null) && (labelValue.length() > 0)) {
+        if ((labelValue != null) && (labelValue.length() > 0))
+        {
             writer.write(HTML.NBSP_ENTITY);
             writer.writeText(labelValue, null);
         }
-
         writer.endElement(HTML.LABEL_ELEM);
     }
 
@@ -1539,36 +1325,42 @@ public final class HtmlRendererUtils {
      * Renders a label HTML element
      */
     public static void renderLabel(ResponseWriter writer,
-                                   UIComponent component,
-                                   String forClientId,
-                                   SelectItem item,
-                                   boolean disabled) throws IOException {
+            UIComponent component, String forClientId, SelectItem item,
+            boolean disabled) throws IOException
+    {
         writer.startElement(HTML.LABEL_ELEM, component);
         writer.writeAttribute(HTML.FOR_ATTR, forClientId, null);
-
         String labelClass = null;
-
-        if (disabled) {
-            labelClass = (String) component.getAttributes().get(JSFAttr.DISABLED_CLASS_ATTR);
-        } else {

[... 2207 lines stripped ...]