Index: tomahawk/core/src/main/java/org/apache/myfaces/custom/navmenu/jscookmenu/HtmlJSCookMenuRenderer.java
===================================================================
--- tomahawk/core/src/main/java/org/apache/myfaces/custom/navmenu/jscookmenu/HtmlJSCookMenuRenderer.java	(revisione 419237)
+++ tomahawk/core/src/main/java/org/apache/myfaces/custom/navmenu/jscookmenu/HtmlJSCookMenuRenderer.java	(copia locale)
@@ -161,7 +161,7 @@
         List list = NavigationMenuUtils.getNavigationMenuItemList(component);
         if (list.size() > 0)
         {
-            UIForm parentForm = getParentForm(component);
+            UIComponent parentForm = getParentForm(component);
             String formName = getFormName(parentForm,context);
             List uiNavMenuItemList = component.getChildren();
             if( formName == null ) {
@@ -199,28 +199,35 @@
      * @param facesContext FacesContext
      * @return String
      */
-    private String getFormName(UIForm parentForm,
+    private String getFormName(UIComponent parentForm,
                                FacesContext facesContext) {
         // See if we are in a form
-        if (parentForm != null) { return parentForm.getClientId(facesContext); }
+        if (parentForm != null) { 
+        	return parentForm.getClientId(facesContext); 
+        }
 
         // Not in a form. Return the child form's name
         return null;
     }
 
     /**
-     * Get the parent UIForm. If no parent is a UIForm then returns null.
+     * Get the parent UIForm or a Trinidad CoreForm. If no parent match 
+     * then returns null.
      * 
      * @param component
      * @return UIForm
      */
-    private UIForm getParentForm(UIComponent component) {
+    private UIComponent getParentForm(UIComponent component) {
         // See if we are in a form
         UIComponent parent = component.getParent();
-        while (parent != null && !(parent instanceof UIForm)) {
-            parent = parent.getParent();
+        while (parent != null) {
+        	if ("org.apache.myfaces.adf.Form".equals(parent.getFamily()) 
+        			|| "javax.faces.Form".equals(parent.getFamily())) {
+        		return (UIComponent) parent;
+        	}
+        	parent = parent.getParent();
         }
-        return (UIForm) parent;
+        return null;
     }
 
     private void encodeNavigationMenuItems(FacesContext context,
Index: tomahawk/core/src/main/resources/org/apache/myfaces/custom/navmenu/jscookmenu/resource/MyFacesHack.js
===================================================================
--- tomahawk/core/src/main/resources/org/apache/myfaces/custom/navmenu/jscookmenu/resource/MyFacesHack.js	(revisione 419237)
+++ tomahawk/core/src/main/resources/org/apache/myfaces/custom/navmenu/jscookmenu/resource/MyFacesHack.js	(copia locale)
@@ -25,9 +25,18 @@
             eval(link);
         } else {
             // Link is a JSF action
-            var dummyForm = document.forms[target];
-            dummyForm.elements['jscook_action'].value = link;
-            dummyForm.submit();
+            var jsfForm = document.forms[target];
+            var jscookActionField = jsfForm.elements['jscook_action'];
+            if (!jscookActionField) {
+            	// Create the hidden field if it doesn't exists
+            	// This requires IE5+ or Gecko
+            	var jscookActionField = document.createElement("input");
+            	jscookActionField.type = "hidden";
+            	jscookActionField.name = "jscook_action";
+				jsfForm.appendChild(jscookActionField);
+			}
+            jscookActionField.value = link;
+            jsfForm.submit();
         }
     }
 
