diff --git a/fancybox.module b/fancybox.module
index c24cd18..875da77 100644
--- a/fancybox.module
+++ b/fancybox.module
@@ -1,4 +1,5 @@
 <?php
+// $Id: fancybox.module,v 1.1.4.6 2010/10/25 23:24:19 sbacelic Exp $
 
 /**
  * @file
@@ -27,6 +28,19 @@ function fancybox_init() {
 }
 
 /**
+ * Supported fancybox JS library events.
+ */
+function fancybox_supported_events() {
+  return array(
+    'onStart',
+    'onComplete',
+    'onClosed',
+    'onCleanup',
+    'onCancel',
+  );
+}
+
+/**
  * Include the Fancybox JS.
  */
 function fancybox_activate($settings = NULL) {
@@ -50,6 +64,15 @@ function fancybox_activate($settings = NULL) {
     // Expose settings to the DOM.
     $exposed_settings['options'] = $settings['options'];
     $exposed_settings['selector'] = $settings['activation']['selector'];
+
+    // Proceed some final cleanup to avoid JS errors. If we give an JSON empty
+    // string to the fancybox library, it will fail trying to execute it.
+    foreach (fancybox_supported_events() as $event) {
+      if (empty($exposed_settings['options'][$event])) {
+        unset($exposed_settings['options'][$event]);
+      }
+    }
+
     drupal_add_js(array('fancybox' => $exposed_settings), 'setting');
 
     // Initialize Fancybox.
@@ -115,6 +138,10 @@ function fancybox_theme() {
         'function' => 'theme_fancybox_formatter_imagefield',
         'arguments' => array('element' => NULL),
       );
+			$theme['fancybox_formatter_'. $preset['presetname'] .'|fancybox-grouped'] = $base + array(
+        'function' => 'theme_fancybox_grouped_formatter_imagefield',
+        'arguments' => array('element' => NULL),
+      );
     }
   }
 
@@ -521,6 +548,13 @@ function fancybox_field_formatter_info() {
       );
     }
 
+		 foreach (imagecache_presets() as $preset) {
+			$presets[$preset['presetname'] .'|fancybox-grouped'] = array(
+        'label' => t('Fancybox grouped image: @preset image', array('@preset' => $preset['presetname'])),
+        'field types' => array('image', 'filefield'),
+      );
+    }
+
     if (is_array($presets)) {
       $formatters = array_merge($presets);
     }
@@ -563,7 +597,7 @@ function fancybox_insert_content($item, $style, $widget) {
 /**
  * Implementation of hook_field_formatter().
  */
-function fancybox_imagefield_image_imagecache($field, $item, $formatter, $node) {
+function fancybox_imagefield_image_imagecache($field, $item, $formatter, $node, $grouped = false) {
   $settings = variable_get('fancybox_settings', array());
 
   if ($settings['imagefield']['use_list_field'] && $item['list'] == 0) {
@@ -587,18 +621,22 @@ function fancybox_imagefield_image_imagecache($field, $item, $formatter, $node)
 
   $loop_item = '';
   $nid = $item['nid'] ? $item['nid'] : ($node->nid ? $node->nid : '');
-  switch ($settings['imagefield']['grouping']) {
-    case 1:
-      $loop_item = $nid .'-'. $field;
-      break;
-    case 2:
-      $loop_item = 'all';
-      break;
-  }
+  if($grouped){
+		$loop_item = 'grouped';
+	}else{
+		switch ($settings['imagefield']['grouping']) {
+			case 1:
+				$loop_item = $nid .'-'. $field;
+				break;
+			case 2:
+				$loop_item = 'all';
+				break;
+		}
+	}
 
   list($namespace, $presetname) = explode('|', $formatter, 2);
 
   if ($preset = imagecache_preset_by_name($namespace)) {
     return theme('imagefield_image_imagecache_fancybox', $namespace, $field, $item['filepath'], $image_title, $loop_item);
   }
-}
+}
\ No newline at end of file
diff --git a/fancybox.theme.inc b/fancybox.theme.inc
index 98bef39..0648599 100644
--- a/fancybox.theme.inc
+++ b/fancybox.theme.inc
@@ -1,4 +1,5 @@
 <?php
+// $Id: fancybox.theme.inc,v 1.1.2.4 2010/11/01 01:38:19 sbacelic Exp $
 
 /**
  * @file
@@ -17,6 +18,16 @@ function theme_fancybox_formatter_imagefield($element) {
 }
 
 /**
+ * Theme ImageCache + Imagefield CCK field formatter.
+ */
+function theme_fancybox_grouped_formatter_imagefield($element) {
+  if (module_exists('imagecache') && module_exists('imagefield')) {
+    $node = node_load($element['#item']['nid']);
+    return fancybox_imagefield_image_imagecache($element['#field_name'], $element['#item'], $element['#formatter'], $node, true);
+  }
+}
+
+/**
  * Theme ImageCache + Imagefield CCK field.
  */
 function theme_imagefield_image_imagecache_fancybox($namespace, $field, $path, $title = '', $loop = '', $attributes = NULL) {
@@ -84,4 +95,4 @@ function theme_fancybox_formatter_emvideo_fancybox_video($element) {
   $formatter = "emvideo";
   $node = node_load($element['#node']->nid);
   return module_invoke('emfield', 'emfield_field_formatter', $field, $item, $formatter, $node, 'fancybox');
-}
+}
\ No newline at end of file
