diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/css/webform.css C:\wamp\www\drupal6c\sites\all\modules\webform/css/webform.css
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/css/webform.css	2010-08-19 15:00:46.000000000 +1200
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/css/webform.css	2010-09-21 22:39:41.421875000 +1200
@@ -11,3 +11,15 @@
 .webform-container-inline div {
   display: inline;
 }
+
+.webform-progressbar-inner {
+  height: 1em;
+  background-color: #000088;
+}
+
+.webform-progressbar-outer {
+  border: 1px solid #000000;
+  width: 100%;
+  height: 1em;
+  margin:0.35em 5px 0;
+}
diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/includes/webform.admin.inc C:\wamp\www\drupal6c\sites\all\modules\webform/includes/webform.admin.inc
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/includes/webform.admin.inc	2010-04-10 14:20:38.000000000 +1200
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/includes/webform.admin.inc	2010-10-05 21:34:50.093750000 +1300
@@ -130,6 +130,26 @@
     '#description' => t('By default, the configuration form for each webform allows the administrator to choose which roles may submit the form. You may want to allow users to always submit the form if you are using a separate node access module to control access to webform nodes themselves.'),
   );
 
+  $form['progressbar'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Progress bar'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+
+  $form['progressbar']['webform_progressbar_style']  = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Progress bar style'),
+    '#options' => array(
+      'progressbar_page_number' => t('Show page number as number of completed (i.e. Page 1 of 10)'),
+      'progressbar_percent' => t('Show percentage completed (i.e. 10%)'),
+      'progressbar_bar' => t('Show percentage completed bar.'),
+      'progressbar_pagebreak_label' => t('Show the page break label in each page.'),
+    ),
+    '#default_value' => variable_get('webform_progressbar_style', array()),
+    '#description' => t('Choose how the progress bar should be displayed for multi-page forms.'),
+  );
+
   $form = system_settings_form($form);
   $form['#theme'] = 'webform_admin_settings';
   $form['#submit'][] = 'webform_admin_settings_submit';
diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/includes/webform.pages.inc C:\wamp\www\drupal6c\sites\all\modules\webform/includes/webform.pages.inc
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/includes/webform.pages.inc	2010-08-19 15:00:46.000000000 +1200
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/includes/webform.pages.inc	2010-10-05 22:42:53.671875000 +1300
@@ -143,6 +143,37 @@
   );
   /* End Advanced Settings Form */
 
+  /* End Progress Bar Settings Form*/
+  $progressbar_defaults = variable_get('webform_progressbar_style', array());
+  $form['progressbar'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Progress bar'),
+    '#description' => t('Choose how the progress bar should be displayed for multi-page forms.'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+  $form['progressbar']['progressbar_page_number']  = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show page number as number of completed (i.e. Page 1 of 10)'),
+    '#default_value' => isset($node->webform['progressbar_page_number']) ? $node->webform['progressbar_page_number'] : $progressbar_defaults['progressbar_page_number'],
+  );
+  $form['progressbar']['progressbar_percent']  = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show percentage completed (i.e. 10%)'),
+    '#default_value' => isset($node->webform['progressbar_percent']) ? $node->webform['progressbar_percent'] : $progressbar_defaults['progressbar_percent'],
+  );
+  $form['progressbar']['progressbar_bar']  = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show percentage completed bar.'),
+    '#default_value' => isset($node->webform['progressbar_bar']) ? $node->webform['progressbar_bar'] : $progressbar_defaults['progressbar_bar'],
+  );
+  $form['progressbar']['progressbar_pagebreak_label']  = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show the page break label in each page.'),
+    '#default_value' => isset($node->webform['progressbar_pagebreak_label']) ? $node->webform['progressbar_pagebreak_label'] : $progressbar_defaults['progressbar_pagebreak_label'],
+  );
+  /* End Progress Bar Settings Form*/
+
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save configuration'),
@@ -215,6 +246,12 @@
   // Set submit button text.
   $node->webform['submit_text'] = $form_state['values']['submit_text'];
 
+  //Set the progress bar preference
+  $node->webform['progressbar_page_number'] = $form_state['values']['progressbar_page_number'];
+  $node->webform['progressbar_percent'] = $form_state['values']['progressbar_percent'];
+  $node->webform['progressbar_bar'] = $form_state['values']['progressbar_bar'];
+  $node->webform['progressbar_pagebreak_label'] = $form_state['values']['progressbar_pagebreak_label'];
+  
   node_save($node);
 
   drupal_set_message(t('The form settings have been updated.'));
diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/templates/webform-form.tpl.php C:\wamp\www\drupal6c\sites\all\modules\webform/templates/webform-form.tpl.php
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/templates/webform-form.tpl.php	2009-05-22 15:11:18.000000000 +1200
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/templates/webform-form.tpl.php	2010-10-07 22:14:49.694505500 +1300
@@ -25,6 +25,9 @@
     print drupal_render($form['submission_info']);
   }
 
+  //Print out the progress bar at the top of the page
+  print drupal_render($form['progressbar']);
+  
   // Print out the main part of the form.
   // Feel free to break this up and move the pieces within the array.
   print drupal_render($form['submitted']);
diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/templates/webform-progressbar.tpl.php C:\wamp\www\drupal6c\sites\all\modules\webform/templates/webform-progressbar.tpl.php
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/templates/webform-progressbar.tpl.php	1970-01-01 13:00:00.000000000 +1300
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/templates/webform-progressbar.tpl.php	2010-10-07 21:59:48.511095500 +1300
@@ -0,0 +1,48 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Display the progress bar for multipage forms
+ *
+ * Available variables:
+ * - $webform: The webform array
+ * - $progressbar_page_number: TRUE if the actual page number should be displayed
+ * - $progressbar_percent: TRUE if the percentage complete should be displayed
+ * - $progressbar_bar: TRUE if the bar should be displayed
+ * - $progressbar_pagebreak_label: TRUE if the page break label shoud be displayed
+
+ * - $page_number: The current page number
+ * - $page_count: The total number of pages in this form
+ * - $page_label: The label for the page
+ * - $percent: The percentage complete
+ */
+
+print '<div class="webform-progressbar">';
+
+if ($progressbar_pagebreak_label) { //Show the page break label in each page
+  print '  <div class="webform-progressbar-label">';
+  print $page_label;
+  print '</div>';
+}
+
+if ($progressbar_percent) { //Show percentage completed (i.e. 10%)
+  print '  <div class="webform-progressbar-number">';
+  print number_format($percent, 0);
+  print '%</div>';
+}
+
+if ($progressbar_page_number) { //Show page number as number of completed (i.e. Page 1 of 10)
+  print '  <div class="webform-progressbar-number">';
+  print t('Page @start of @end', array('@start' => $page_number, '@end' => $page_count));
+  print '</div>';
+}
+
+if ($progressbar_bar) { //Show percentage completed bar
+  print '  <div class="webform-progressbar-outer">';
+  print '    <div class="webform-progressbar-inner" style="width: '. number_format($percent, 0) .'%">&nbsp;</div>';
+  print '  </div>';
+}
+
+print '</div>'; 
+?>
\ No newline at end of file
diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/templates/webform-progressbar.tpl.php.txt C:\wamp\www\drupal6c\sites\all\modules\webform/templates/webform-progressbar.tpl.php.txt
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/templates/webform-progressbar.tpl.php.txt	1970-01-01 13:00:00.000000000 +1300
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/templates/webform-progressbar.tpl.php.txt	2010-10-07 21:59:48.511095500 +1300
@@ -0,0 +1,48 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Display the progress bar for multipage forms
+ *
+ * Available variables:
+ * - $webform: The webform array
+ * - $progressbar_page_number: TRUE if the actual page number should be displayed
+ * - $progressbar_percent: TRUE if the percentage complete should be displayed
+ * - $progressbar_bar: TRUE if the bar should be displayed
+ * - $progressbar_pagebreak_label: TRUE if the page break label shoud be displayed
+
+ * - $page_number: The current page number
+ * - $page_count: The total number of pages in this form
+ * - $page_label: The label for the page
+ * - $percent: The percentage complete
+ */
+
+print '<div class="webform-progressbar">';
+
+if ($progressbar_pagebreak_label) { //Show the page break label in each page
+  print '  <div class="webform-progressbar-label">';
+  print $page_label;
+  print '</div>';
+}
+
+if ($progressbar_percent) { //Show percentage completed (i.e. 10%)
+  print '  <div class="webform-progressbar-number">';
+  print number_format($percent, 0);
+  print '%</div>';
+}
+
+if ($progressbar_page_number) { //Show page number as number of completed (i.e. Page 1 of 10)
+  print '  <div class="webform-progressbar-number">';
+  print t('Page @start of @end', array('@start' => $page_number, '@end' => $page_count));
+  print '</div>';
+}
+
+if ($progressbar_bar) { //Show percentage completed bar
+  print '  <div class="webform-progressbar-outer">';
+  print '    <div class="webform-progressbar-inner" style="width: '. number_format($percent, 0) .'%">&nbsp;</div>';
+  print '  </div>';
+}
+
+print '</div>'; 
+?>
\ No newline at end of file
diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/webform.install C:\wamp\www\drupal6c\sites\all\modules\webform/webform.install
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/webform.install	2010-08-26 21:33:52.000000000 +1200
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/webform.install	2010-10-05 21:05:51.937500000 +1300
@@ -77,6 +77,30 @@
         'not null' => TRUE,
         'default' => -1,
       ),
+      'progressbar_page_number' => array(
+        'description' => 'Should the the page number be shown as part of the progress bar?',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'progressbar_percent' => array(
+        'description' => 'Should the percentage complete be shown as part of the progress bar?',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'progressbar_bar' => array(
+        'description' => 'Should the bar be shown as part of the progress bar?',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'progressbar_pagebreak_label' => array(
+        'description' => 'Should the pagebreak label be shown as part of the progress bar?',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
     ),
     'primary key' => array('nid'),
   );
@@ -1182,6 +1206,18 @@
 }
 
 /**
+ * Add a progressbar style field to the webform table
+ */
+function webform_update_6319() {
+  $ret = array();
+  db_add_field($ret, 'webform', 'progressbar_page_number', array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => 'Should the the page number be shown as part of the progress bar?'));
+  db_add_field($ret, 'webform', 'progressbar_percent', array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => 'Should the percentage complete be shown as part of the progress bar?'));
+  db_add_field($ret, 'webform', 'progressbar_bar', array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => 'Should the bar be shown as part of the progress bar?'));
+  db_add_field($ret, 'webform', 'progressbar_pagebreak_label', array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'description' => 'Should the pagebreak label be shown as part of the progress bar?'));
+  return $ret;
+}
+ 
+/**
  * Recursively delete all files and folders in the specified filepath, then
  * delete the containing folder.
  *
diff -u -r -N C:\wamp\www\drupal6c\sites\all\modules\webform.orig/webform.module C:\wamp\www\drupal6c\sites\all\modules\webform/webform.module
--- C:\wamp\www\drupal6c\sites\all\modules\webform.orig/webform.module	2010-08-26 23:56:38.000000000 +1200
+++ C:\wamp\www\drupal6c\sites\all\modules\webform/webform.module	2010-10-07 22:03:07.357390700 +1300
@@ -471,6 +471,9 @@
       _admin_init_theme();
     }
   }
+  
+  //add css for this module
+  drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform.css');
 }
 
 /**
@@ -517,6 +520,10 @@
     'webform_element' => array(
       'arguments' => array('element' => NULL, 'value' => NULL),
     ),
+    'webform_progressbar' => array(
+      'arguments' => array('webform' => NULL, 'page_number' => NULL, 'page_count' => NULL, 'page_label' => NULL),
+      'template' => 'templates/webform-progressbar',
+    ),     
     'webform_element_text' => array(
       'arguments' => array('element' => NULL, 'value' => NULL),
     ),
@@ -856,7 +863,7 @@
   module_load_include('inc', 'webform', 'includes/webform.emails');
 
   // Insert the webform.
-  db_query("INSERT INTO {webform} (nid, confirmation, confirmation_format, redirect_url, teaser, allow_draft, submit_notice, submit_text, submit_limit, submit_interval) VALUES (%d, '%s', %d, '%s', %d, %d, %d, '%s', %d, %d)", $node->nid, $node->webform['confirmation'], $node->webform['confirmation_format'], $node->webform['redirect_url'], $node->webform['teaser'], $node->webform['allow_draft'], $node->webform['submit_notice'], $node->webform['submit_text'], $node->webform['submit_limit'], $node->webform['submit_interval']);
+  db_query("INSERT INTO {webform} (nid, confirmation, confirmation_format, redirect_url, teaser, allow_draft, submit_notice, submit_text, submit_limit, submit_interval, progressbar_page_number, progressbar_percent, progressbar_bar, progressbar_pagebreak_label) VALUES (%d, '%s', %d, '%s', %d, %d, %d, '%s', %d, %d, %d, %d, %d, %d)", $node->nid, $node->webform['confirmation'], $node->webform['confirmation_format'], $node->webform['redirect_url'], $node->webform['teaser'], $node->webform['allow_draft'], $node->webform['submit_notice'], $node->webform['submit_text'], $node->webform['submit_limit'], $node->webform['submit_interval'], $node->webform['progressbar_page_number'], $node->webform['progressbar_percent'], $node->webform['progressbar_bar'], $node->webform['progressbar_pagebreak_label']);
 
   // Insert the components into the database. Used with clone.module.
   if (isset($node->webform['components']) && !empty($node->webform['components'])) {
@@ -898,7 +905,7 @@
   }
 
   // Update the webform entry.
-  db_query("UPDATE {webform} SET confirmation = '%s', confirmation_format = %d, redirect_url = '%s', teaser = %d, allow_draft = %d, submit_notice = %d, submit_text = '%s', submit_limit = %d, submit_interval = %d where nid = %d", $node->webform['confirmation'], $node->webform['confirmation_format'], $node->webform['redirect_url'], $node->webform['teaser'], $node->webform['allow_draft'], $node->webform['submit_notice'], $node->webform['submit_text'], $node->webform['submit_limit'], $node->webform['submit_interval'], $node->nid);
+  db_query("UPDATE {webform} SET confirmation = '%s', confirmation_format = %d, redirect_url = '%s', teaser = %d, allow_draft = %d, submit_notice = %d, submit_text = '%s', submit_limit = %d, submit_interval = %d, progressbar_page_number = %d, progressbar_percent = %d, progressbar_bar = %d, progressbar_pagebreak_label = %d WHERE nid = %d", $node->webform['confirmation'], $node->webform['confirmation_format'], $node->webform['redirect_url'], $node->webform['teaser'], $node->webform['allow_draft'], $node->webform['submit_notice'], $node->webform['submit_text'], $node->webform['submit_limit'], $node->webform['submit_interval'], $node->webform['progressbar_page_number'], $node->webform['progressbar_percent'], $node->webform['progressbar_bar'], $node->webform['progressbar_pagebreak_label'], $node->nid);
 
   // Compare the webform components and don't do anything if it's not needed.
   $original = node_load($node->nid);
@@ -1119,6 +1126,14 @@
       $form['actions']['submit']['#submit'][] = 'webform_form_submit';
     }
   }
+  
+  if (substr($form_id, 0, 19) == 'webform_client_form' && $form['details']['page_count']['#value'] > 1) {
+    $form['progressbar'] = array(
+      '#type' => 'markup',
+      '#value' => theme('webform_progressbar', $form['#node']->webform, $form['details']['page_num']['#value'], $form['details']['page_count']['#value'], webform_page_label($form['#node']->webform, $form['details']['page_num']['#value'])),
+      '#weight' => -100
+    );
+  }
 }
 
 /**
@@ -1347,7 +1362,6 @@
 function webform_client_form(&$form_state, $node, $submission, $is_draft = FALSE, $filter = TRUE) {
   global $user;
 
-  drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform.css');
   drupal_add_js(drupal_get_path('module', 'webform') . '/js/webform.js');
   module_load_include('inc', 'webform', 'includes/webform.components');
 
@@ -2133,6 +2147,17 @@
 }
 
 /**
+ * Prepare for theming of the webform progressbar.
+ */
+function template_preprocess_webform_progressbar(&$vars) {
+  $vars['progressbar_page_number'] = $vars['webform']['progressbar_page_number'];
+  $vars['progressbar_percent'] = $vars['webform']['progressbar_percent'];
+  $vars['progressbar_bar'] = $vars['webform']['progressbar_bar'];
+  $vars['progressbar_pagebreak_label'] = $vars['webform']['progressbar_pagebreak_label'];
+  $vars['percent'] = $vars['page_number'] / $vars['page_count'] * 100;
+}
+
+/**
  * Prepare to theme the contents of e-mails sent by webform.
  */
 function template_preprocess_webform_mail_message(&$vars) {
@@ -2975,3 +3000,26 @@
 
   return $form_info;
 }
+
+/**
+ * Find the label of a page
+ *
+ * @param $webform
+ *     The webform object
+ * @param $page_number
+ *     The page number of the page in question
+ * @return string
+ *     The label of the page
+ */
+function webform_page_label($webform, $page_number) {
+  $page_count = 1;
+  foreach($webform['components'] as $component) {
+    if ($component['type'] == 'pagebreak') {
+      $page_count++;
+      if ($page_count == $page_number) {
+        return $component['name'];
+      }
+    }
+  }
+  return ''; //The default for the first page
+}
\ No newline at end of file
