Index: contributions/modules/flexinode/flexinode_admin.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flexinode/flexinode_admin.module,v
retrieving revision 1.3
diff -u -p -r1.3 flexinode_admin.module
--- contributions/modules/flexinode/flexinode_admin.module	25 Dec 2006 17:25:36 -0000	1.3
+++ contributions/modules/flexinode/flexinode_admin.module	25 Jan 2007 23:07:46 -0000
@@ -371,6 +371,20 @@ function flexinode_admin_delete_content_
 /**
  * FLEXINODE FIELD FUNCTIONS
  */
+
+/**
+ * Calculate the maximum number of fields declared across all defined flexinodes
+ */
+function flexinode_admin_max_fields() {
+  $maxfields = 0;
+  $content_types = flexinode_content_types();
+  foreach ($content_types as $ctype) {
+    $ctype = flexinode_load_content_type($ctype->ctype_id);
+    $maxfields = max( $maxfields, count($ctype->fields) );
+  }
+  return $maxfields;
+}
+
 /**
  * Generate a form for the editing of a content type field.
  * @param field_id can be either a field_id, or string containing the field type for new fields
@@ -415,7 +429,7 @@ function flexinode_admin_field_form($fie
     '#type' => 'weight',
     '#title' => t('Weight'),
     '#default_value' => $field->weight,
-    '#delta' => 10,
+    '#delta' => max( 10, flexinode_admin_max_fields()+5 ),
     '#description' => t('Optional. On the content editing form, the heavier fields will sink and the lighter fields will be positioned nearer the top.'),
     );
   $form['submit'] = array(
@@ -553,4 +567,4 @@ function theme_flexinode_type($type) {
   $output .= $type->controls ."</p>\n";
   $output .= "</fieldset></div>\n";
   return $output;
-}
\ No newline at end of file
+}
