Index: modules/node/content_types.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v
retrieving revision 1.58
diff -u -p -r1.58 content_types.inc
--- modules/node/content_types.inc	8 Oct 2008 03:27:56 -0000	1.58
+++ modules/node/content_types.inc	1 Nov 2008 02:46:13 -0000
@@ -49,6 +49,7 @@ function node_overview_types() {
  * Generates the node type editing form.
  */
 function node_type_form(&$form_state, $type = NULL) {
+  drupal_add_js(drupal_get_path('module', 'node') .'/content_types.js');
   if (!isset($type->type)) {
     // This is a new type.  Node module managed types are custom and unlocked.
     $type = node_type_set_defaults(array('custom' => 1, 'locked' => 0));
@@ -67,6 +68,7 @@ function node_type_form(&$form_state, $t
     '#default_value' => $type->name,
     '#description' => t('The human-readable name of this content type. This text will be displayed as part of the list on the <em>create content</em> page. It is recommended that this name begin with a capital letter and contain only letters, numbers, and <strong>spaces</strong>. This name must be unique.'),
     '#required' => TRUE,
+    '#field_suffix' => ' <small id="node-type-name-suffix">&nbsp;</small>',
   );
 
   if (!$type->locked) {
Index: modules/node/content_types.js
===================================================================
RCS file: modules/node/content_types.js
diff -N modules/node/content_types.js
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/node/content_types.js	1 Nov 2008 02:46:13 -0000
@@ -0,0 +1,24 @@
+Drupal.behaviors.contentTypes = {
+  attach: function() {
+    if ($('#edit-type').val() == $('#edit-name').val().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/_+/g, '_') || $('#edit-type').val() == '') {
+      $('#edit-type-wrapper').hide();
+      $('#edit-name').keyup(function() {
+        var machine = $(this).val().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/_+/g, '_');
+        if (machine != '_' && machine != '') {
+          $('#edit-type').val(machine);
+          $('#node-type-name-suffix').empty().append(' Machine name: ' + machine + ' [').append($('<a href="#">'+ Drupal.t('Edit') +'</a>').click(function() {
+            $('#edit-type-wrapper').show();
+            $('#node-type-name-suffix').hide();
+            $('#edit-name').unbind('keyup');
+            return false;
+          })).append(']');
+        }
+        else {
+          $('#edit-type').val(machine);
+          $('#node-type-name-suffix').text('');
+        }
+      });
+      $('#edit-name').keyup();
+    }
+  }
+};
