diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index d1e4f73..04151f2 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -1081,6 +1081,26 @@ function template_preprocess_field(&$variables, $hook) {
       $variables['items'][$delta] = $element[$delta];
     }
   }
+	
+  // Pre-compute the maximum delta of an items array to easily implement first 
+  // and last classes.
+  $max_delta = count($variables['items']) - 1;
+	
+	// Create an array of the keys so we can base even and odd on order not delta.
+	$keys = array_keys($variables['items']);
+	
+	// For each item, determine its appropriate classes and assign them to a new
+	// array called delta_classes.
+	for($i=0;$i<count($keys);$i++){
+		if (!empty($variables['items'][$keys[$i]])) {
+			$item_classes = array();
+			$item_classes[] = ($i % 2) ? 'odd' : 'even';
+			if($i == 0) $item_classes[] = 'first';
+			if($i == $max_delta) $item_classes[] = 'last';
+			
+      $variables['delta_classes'][$keys[$i]] = implode(" ",$item_classes);
+    }
+	}
 
   // Add default CSS classes. Since there can be many fields rendered on a page,
   // save some overhead by calling strtr() directly instead of
@@ -1203,7 +1223,7 @@ function theme_field($variables) {
   // Render the items.
   $output .= '<div class="field-items"' . $variables['content_attributes'] . '>';
   foreach ($variables['items'] as $delta => $item) {
-    $classes = 'field-item ' . ($delta % 2 ? 'odd' : 'even');
+    $classes = 'field-item ' . $variables['delta_classes'][$delta];
     $output .= '<div class="' . $classes . '"' . $variables['item_attributes'][$delta] . '>' . drupal_render($item) . '</div>';
   }
   $output .= '</div>';
diff --git a/core/modules/field/theme/field.tpl.php b/core/modules/field/theme/field.tpl.php
index 9e76e3b..665a521 100644
--- a/core/modules/field/theme/field.tpl.php
+++ b/core/modules/field/theme/field.tpl.php
@@ -54,7 +54,7 @@ HTML comment.
   <?php endif; ?>
   <div class="field-items"<?php print $content_attributes; ?>>
     <?php foreach ($items as $delta => $item): ?>
-      <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></div>
+      <div class="field-item <?php print $delta_classes[$delta] ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></div>
     <?php endforeach; ?>
   </div>
 </div>
