diff -upr workflow/workflow.module projects/tikirau/sites/all/modules/custom/workflow/workflow.module
--- workflow/workflow.module	2010-03-04 07:17:02.000000000 +1300
+++ projects/tikirau/sites/all/modules/custom/workflow/workflow.module	2010-03-10 11:31:07.000000000 +1300
@@ -10,6 +10,9 @@ define('WORKFLOW_CREATION', 1);
 define('WORKFLOW_CREATION_DEFAULT_WEIGHT', -50);
 define('WORKFLOW_DELETION', 0);
 define('WORKFLOW_ARROW', '&#8594;');
+define('WORKFLOW_TRANSITION_IMMEDIATE', 1);
+define('WORKFLOW_TRANSITION_SCHEDULED', 2);
+define('WORKFLOW_TRANSITION_BOTH', 3);
 
 /**
  * Implementation of hook_help().
@@ -253,12 +270,33 @@ function workflow_comment($a1, $op) {
     $node = node_load($a1['nid']);
     $sid = $a1['workflow'];
     $node->workflow_comment = $a1['workflow_comment'];
-    if (isset($a1['workflow_scheduled'])) {
+    if (isset($a1['workflow_scheduled']) && $a1['workflow_scheduled']) {
       $node->workflow_scheduled = $a1['workflow_scheduled'];
       $node->workflow_scheduled_date = $a1['workflow_scheduled_date'];
       $node->workflow_scheduled_hour = $a1['workflow_scheduled_hour'];
+
+      switch ($node->workflow_scheduled) {
+        case WORKFLOW_TRANSITION_IMMEDIATE:
+          workflow_transition($node, $sid);
+          break;
+        case WORKFLOW_TRANSITION_SCHEDULED:
+          $sid = $a1['workflow_scheduled_state'];
+          workflow_transition($node, $sid);
+          break;
+        case WORKFLOW_TRANSITION_BOTH:
+          $node->workflow_scheduled = WORKFLOW_TRANSITION_IMMEDIATE;
+          workflow_transition($node, $sid);
+          $sid = $a1['workflow_scheduled_state'];
+          $node->workflow_scheduled = WORKFLOW_TRANSITION_SCHEDULED;
+          workflow_transition($node, $sid);
+          break;
+      }
+      return;
+    }
+    else {
+      $node->workflow_scheduled == WORKFLOW_TRANSITION_IMMEDIATE;
+      workflow_transition($node, $sid);
     }
-    workflow_transition($node, $sid);
   }
 }
 
@@ -273,7 +311,7 @@ function workflow_comment($a1, $op) {
 function workflow_transition($node, $sid) {
   // Make sure new state is a valid choice.
   if (array_key_exists($sid, workflow_field_choices($node))) {
-    if (!$node->workflow_scheduled) {
+    if (($node->workflow_scheduled == WORKFLOW_TRANSITION_IMMEDIATE) || !isset($node->workflow_scheduled)) {
       // It's an immediate change. Do the transition.
       workflow_execute_transition($node, $sid, isset($node->workflow_comment) ? $node->workflow_comment : NULL);
     }
@@ -361,17 +399,33 @@ function workflow_node_form(&$form, $for
       $scheduled = $timestamp ? 1 : 0;
       $timestamp = $scheduled ? $timestamp : time();
 
-      $form['workflow']['workflow_scheduled'] = array(
+      $form['workflow']['schedule'] = array(
+        '#type' => 'fieldset',
+        '#title' => 'Schedule',
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+      );
+
+      $form['workflow']['schedule']['workflow_scheduled'] = array(
         '#type' => 'radios',
-        '#title' => t('Schedule'),
+        '#title' => t('Schedule type'),
         '#options' => array(
-          t('Immediately'),
-          t('Schedule for state change at:'),
+          WORKFLOW_TRANSITION_IMMEDIATE => t('No Schedule. <em>(Immediate transition only.)</em>'),
+          WORKFLOW_TRANSITION_SCHEDULED => t('Schedule for state change. <em>(Scheduled state change only.)</em>'),
+          WORKFLOW_TRANSITION_BOTH => t('Immediately and Schedule state change'),
         ),
         '#default_value' => isset($form_state['values']['workflow_scheduled']) ? $form_state['values']['workflow_scheduled'] : $scheduled,
       );
 
-      $form['workflow']['workflow_scheduled_date'] = array(
+      $form['workflow']['schedule']['workflow_scheduled_state'] = array(
+        '#type' => 'radios',
+        '#title' => 'Scheduled state',
+        '#options' => $choices,
+        '#default_value' => $current,
+        '#description' => t('The state !name will transition to at the scheduled date.', array('!name' => $name)),
+      );
+
+      $form['workflow']['schedule']['workflow_scheduled_date'] = array(
         '#type' => 'date',
         '#default_value' => array(
           'day'   => isset($form_state['values']['workflow_scheduled_date']['day']) ? $form_state['values']['workflow_scheduled_date']['day'] : format_date($timestamp, 'custom', 'j'),
@@ -381,7 +435,7 @@ function workflow_node_form(&$form, $for
       );
 
       $hours = format_date($timestamp, 'custom', 'H:i');
-      $form['workflow']['workflow_scheduled_hour'] = array(
+      $form['workflow']['schedule']['workflow_scheduled_hour'] = array(
         '#type' => 'textfield',
         '#description' => t('Please enter a time in 24 hour (eg. HH:MM) format. If no time is included, the default will be midnight on the specified date. The current time is: ') . format_date(time()),
         '#default_value' => $scheduled ? (isset($form_state['values']['workflow_scheduled_hour']) ? $form_state['values']['workflow_scheduled_hour'] : $hours) : NULL,
