diff -urp ./galleria.admin.inc ../galleria-cpct/galleria.admin.inc
--- ./galleria.admin.inc	2009-05-18 11:34:16.000000000 +0300
+++ ../galleria-cpct/galleria.admin.inc	2010-10-20 19:40:27.296523999 +0300
@@ -52,29 +52,66 @@ function galleria_admin_settings() {
       $presets[$preset] = $preset;
     }
   }
-
+  
+  // Create a new preset array that includes the option "Use default". 
+  // Used for all per content type override dropdowns.
+  $mpresets = $presets;
+  $mpresets['galleria-use-default'] = t("Use default");
+  
   $form['galleria_imagecache'] = array(
     '#type' => 'fieldset',
     '#collapsible' => TRUE,
     '#title' => t('ImageCache integration'),
   );
-
+  
+  // Get node types to create per content type dropdowns
+  $node_types = node_get_types();
+   
   if (module_exists('imagecache')) {
     $form['galleria_imagecache']['#description'] = t('Galleria can integrate with the ImageCache module to control the appearance of uploaded images and their thumbnails.');
 
     $form['galleria_imagecache']['galleria_imagecache_preset'] = array(
       '#type' => 'select',
-      '#title' => t('ImageCache gallery preset'),
+      '#title' => t('Default ImageCache gallery preset'),
       '#options' => $presets,
       '#default_value' => variable_get('galleria_imagecache_preset', ''),
     );
 
     $form['galleria_imagecache']['galleria_thumb_imagecache_preset'] = array(
       '#type' => 'select',
-      '#title' => t('ImageCache thumbnail preset'),
+      '#title' => t('Default ImageCache thumbnail preset'),
       '#options' => $presets,
       '#default_value' => variable_get('galleria_thumb_imagecache_preset', ''),
     );
+
+    $form['galleria_imagecache']['galleria_imagecache_node_override'] = array(
+      '#type'         => 'fieldset',
+      '#collapsible'  => TRUE,
+      '#collapsed'    => TRUE,
+      '#title'        => t('Per content type override'),
+    );
+
+    // Add configuration per node
+    foreach( $node_types as $node ) {    
+       $form['galleria_imagecache']['galleria_imagecache_node_override'][$node->type.'_imagecache'] = array(
+          '#type' => 'fieldset',
+          '#collapsible' => TRUE,
+          '#collapsed' => TRUE,
+          '#title' => $node->name,
+        );
+        $form['galleria_imagecache']['galleria_imagecache_node_override'][$node->type.'_imagecache']['galleria_imagecache_preset_'.$node->type] = array(
+          '#type' => 'select',
+          '#title' => t('ImageCache gallery preset override'),
+          '#options' => $mpresets,
+          '#default_value' => variable_get('galleria_imagecache_preset_'.$node->type, 'galleria-use-default'),
+        );
+        $form['galleria_imagecache']['galleria_imagecache_node_override'][$node->type.'_imagecache']['galleria_thumb_imagecache_preset_'.$node->type] = array(
+          '#type' => 'select',
+          '#title' => t('ImageCache thumbnail preset override'),
+          '#options' => $mpresets,
+          '#default_value' => variable_get('galleria_thumb_imagecache_preset_'.$node->type, 'galleria-use-default'),
+        );
+    }
   }
   else {
     $form['galleria_imagecache']['#description'] = '<em>' . t('Install the ImageCache module to control the appearance of uploaded images and their thumbnails.') . '</em>';
@@ -86,7 +123,9 @@ function galleria_admin_settings() {
     '#collapsible' => TRUE,
     '#title' => t('jCarousel integration'),
   );
-
+  
+  
+  // Node types are already populated
   if (module_exists('jcarousel')) {
     $form['galleria_jcarousel']['#description'] = t('Galleria can integrate with the jCarousel module to display thumbnails in a scrolling carousel.');
 
@@ -146,6 +185,82 @@ function galleria_admin_settings() {
       '#default_value' => variable_get('galleria_jcarousel_wrap', 'null'),
       '#description' => t('Specifies whether to wrap at the first/last item (or both) and jump back to the start/end.'),
     );
+    
+    $form['galleria_jcarousel']['galleria_jcarousel_node_override'] = array(
+      '#type'         => 'fieldset',
+      '#collapsible'  => TRUE,
+      '#collapsed'    => TRUE,
+      '#title'        => t('Per content type override'),
+    );
+    
+    foreach( $node_types as $node ) {
+      $form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel'] = array(
+        '#type'         => 'fieldset',
+        '#collapsible'  => TRUE,
+        '#collapsed'    => TRUE,
+        '#title'        => $node->name,
+      );
+      
+      $form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_'.$node->type] = array(
+        '#type'     => 'select',
+        '#title'    => t('jCarousel Integration override'),
+        '#options'  => array(
+          'enabled'   => t('Enabled'),
+          'disabled'  => t('Disabled'),
+          'galleria-use-default'   => t('Use default'),
+        ),
+        '#default_value' => variable_get('galleria_jcarousel_'.$node->type,  'galleria-use-default'),
+      );
+
+      $form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_vertical_'.$node->type] = array(
+        '#type'     => 'select',
+        '#title'    => t('Orientation override'),
+        '#options'  => array(
+          'false' => t('Horizontal'),
+          'true'  => t('Vertical'),
+          'galleria-use-default'   => t('Use default'),          
+        ),
+        '#default_value' => variable_get('galleria_jcarousel_vertical_'.$node->type, 'galleria-use-default'),
+      );
+
+      $form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_visible_'.$node->type] = array(
+        '#type' => 'textfield',
+        '#title' => t('Limit of visible thumbnails override'),
+        '#size' => 15,
+        '#default_value' => variable_get('galleria_jcarousel_visible_'.$node->type, ''),
+        '#description' => t('Leave this field blank to use the default value.'),
+      );
+      
+      $form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_scroll_'.$node->type] = array(
+        '#type' => 'textfield',
+        '#title' => t('Scroll size override'),
+        '#size' => 15,
+        '#default_value' => variable_get('galleria_jcarousel_scroll_'.$node->type, ''),
+        '#description' => t('Leave this field blank to use the default value.'),
+     );
+
+      $form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_animation_'.$node->type] = array(
+        '#type' => 'textfield',
+        '#title' => t('Animation speed override'),
+        '#size' => 15,
+        '#default_value' => variable_get('galleria_jcarousel_animation_'.$node->type, ''),
+        '#description' => t('Leave this field blank to use the default value.'),
+      );
+
+      $form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_wrap_'.$node->type] = array(
+        '#type' => 'select',
+        '#title' => t('Wrap override'),
+        '#options' => array(
+          'null' => t('None'),
+          'left' => t('Left'),
+          'right' => t('Right'),
+          'both' => t('Both'),
+          'galleria-use-default' => t('Use default'),
+        ),
+        '#default_value' => variable_get('galleria_jcarousel_wrap_'.$node->type, 'galleria-use-default'),
+        '#description' => t('Specifies whether to wrap at the first/last item (or both) and jump back to the start/end.'),
+      );
+    }
   }
   else {
     $form['galleria_jcarousel']['#description'] = '<em>' . t('Install the jCarousel module to display Galleria thumbnails in a scrolling carousel.') . '</em>';
@@ -176,6 +291,11 @@ function galleria_admin_settings() {
     if (module_exists('jlightbox')) {
       $form['galleria_lightbox']['galleria_lightbox']['#options']['jlightbox'] = t('jQuery Lightbox');
     }
+    
+    // Copy final lightbox array and add default option for node override    
+    $lightbox_preset = $form['galleria_lightbox']['galleria_lightbox'];
+    $lightbox_preset['#title'] = t('Lightbox module override');
+    $lightbox_preset['#options']['galleria-use-default'] = t('Use default');
 
     if (module_exists('imagecache')) {
       $form['galleria_lightbox']['galleria_lightbox_preset'] = array(
@@ -186,6 +306,35 @@ function galleria_admin_settings() {
         '#description' => t('Select the ImageCache preset to display in Galleria Lightboxes.'),
       );
     }
+    
+    $form['galleria_lightbox']['galleria_lightbox_node_override'] = array(
+      '#type'         => 'fieldset',
+      '#collapsible'  => TRUE,
+      '#collapsed'    => TRUE,
+      '#title'        => t('Per content type override'),
+    );
+        
+    foreach( $node_types as $node ) {
+      $form['galleria_lightbox']['galleria_lightbox_node_override'][$node->type.'_lightbox'] = array(
+        '#type'         => 'fieldset',
+        '#collapsible'  => TRUE,
+        '#collapsed'    => TRUE,
+        '#title'        => $node->name,
+      );
+      $lightbox_preset['#default_value'] = variable_get('galleria_lightbox_'.$node->type, 'galleria-use-default'); 
+      $form['galleria_lightbox']['galleria_lightbox_node_override'][$node->type.'_lightbox']['galleria_lightbox_'.$node->type] = $lightbox_preset;
+      if ( isset($form['galleria_lightbox']['galleria_lightbox_preset']) ) {
+        $form['galleria_lightbox']['galleria_lightbox_node_override'][$node->type.'_lightbox']['galleria_lightbox_preset_'.$node->type] = array(
+          '#type' => 'select',
+          '#title' => t('Lightbox ImageCache override'),
+          '#options' => $mpresets,
+          '#default_value' => variable_get('galleria_lightbox_preset_'.$node->name, 'galleria-use-default'),
+          '#description' => t('Select the ImageCache preset to display in Galleria Lightboxes'),          
+        );      
+      }    
+    }
+    
+    
   }
   else {
     $form['galleria_lightbox']['#description'] = '<em>' . t('Install the Lightbox2 or jQuery Lightbox module to let users open Galleria images in a Lightbox.') . '</em>';
@@ -198,6 +347,93 @@ function galleria_admin_settings() {
  * Validation for the administration form.
  */
 function galleria_admin_settings_validate($form, &$form_state) {
+  
+  // Get rid of all value items that are set to default to keep variables table clean.
+  // If a content type had a value and is now set to default delete the variable. 
+  $node_types = node_get_types();
+  foreach($node_types as $node) {
+    if(module_exists('imagecache')) {
+        if (    $form_state['values']['galleria_imagecache_preset_'.$node->type]       == 'galleria-use-default' ) {
+          if($form['galleria_imagecache']['galleria_imagecache_node_override'][$node->type.'_imagecache']['galleria_imagecache_preset_'.$node->type] != 'galleria-use-default') {
+            variable_del('galleria_imagecache_preset_'.$node->type);
+          }
+          unset($form_state['values']['galleria_imagecache_preset_'.$node->type]);
+        }
+        
+        if (    $form_state['values']['galleria_thumb_imagecache_preset_'.$node->type] == 'galleria-use-default' ) {
+          if($form['galleria_imagecache']['galleria_imagecache_node_override'][$node->type.'_imagecache']['galleria_thumb_imagecache_preset_'.$node->type] != 'galleria-use-default') {
+            variable_del('galleria_thumb_imagecache_preset_'.$node->type);
+          }
+
+          unset($form_state['values']['galleria_thumb_imagecache_preset_'.$node->type]);
+        }
+    }
+    
+    if(module_exists('jcarousel')) {
+       if ($form_state['values']['galleria_jcarousel_'.$node->type] == 'galleria-use-default' ) {
+          if($form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_'.$node->type] != 'galleria-use-default') {
+            variable_del('galleria_jcarousel_'.$node->type);
+          }
+          unset($form_state['values']['galleria_jcarousel_'.$node->type]);
+      }
+      
+      if ($form_state['values']['galleria_jcarousel_vertical_'.$node->type] == 'galleria-use-default' ) {
+          if($form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_vertical_'.$node->type] != 'galleria-use-default') {
+            variable_del('galleria_jcarousel_vertical_'.$node->type);
+          }
+          unset($form_state['values']['galleria_jcarousel_vertical_'.$node->type]);
+      }
+      
+      if ($form_state['values']['galleria_jcarousel_visible_'.$node->type] == '' ) {
+          if($form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_visible_'.$node->type] != '') {
+            variable_del('galleria_jcarousel_visible_'.$node->type);
+          }
+          unset($form_state['values']['galleria_jcarousel_visible_'.$node->type]);
+      }
+      
+      if ($form_state['values']['galleria_jcarousel_scroll_'.$node->type] == '' ) {
+          if($form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_scroll_'.$node->type] != '') {
+            variable_del('galleria_jcarousel_scroll_'.$node->type);
+          }
+          unset($form_state['values']['galleria_jcarousel_scroll_'.$node->type]);
+      }
+      
+      if ($form_state['values']['galleria_jcarousel_animation_'.$node->type] == '' ) {
+          if($form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_animation_'.$node->type] != '') {
+            variable_del('galleria_jcarousel_animation_'.$node->type);
+          }
+          unset($form_state['values']['galleria_jcarousel_animation_'.$node->type]);
+      }
+      
+      if ($form_state['values']['galleria_jcarousel_wrap_'.$node->type] == 'galleria-use-default' ) {
+          if($form['galleria_jcarousel']['galleria_jcarousel_node_override'][$node->type.'_jcarousel']['galleria_jcarousel_wrap_'.$node->type] != 'galleria-use-default') {
+            variable_del('galleria_jcarousel_wrap_'.$node->type);
+          }
+          unset($form_state['values']['galleria_jcarousel_wrap_'.$node->type]);
+      }
+      
+    }
+    
+    if (module_exists('lightbox2') || module_exists('jlightbox')) {  
+
+      if (    $form_state['values']['galleria_lightbox_'.$node->type] == 'galleria-use-default' ) {
+        if($form['galleria_lightbox']['galleria_lightbox_node_override'][$node->type.'_lightbox']['galleria_lightbox_'.$node->type]['#default_value'] != 'galleria-use-default') {
+          variable_del('galleria_lightbox_'.$node->type);
+        }
+        unset($form_state['values']['galleria_lightbox_'.$node->type]);
+      }
+      
+      if (    $form_state['values']['galleria_lightbox_preset_'.$node->type] == 'galleria-use-default' ) {
+        if($form['galleria_lightbox']['galleria_lightbox_node_override'][$node->type.'_lightbox']['galleria_lightbox_preset_'.$node->type] != 'galleria-use-default') {
+          variable_del('galleria_lightbox_preset_'.$node->type);
+        }
+        unset($form_state['values']['galleria_lightbox_preset_'.$node->type]);
+      }
+    }
+  }
+  
+  
+  
   if (module_exists('jcarousel')) {
     $input_names = array(
       'visible' => t('Limit of visible thumbnails'),
diff -urp ./galleria.module ../galleria-cpct/galleria.module
--- ./galleria.module	2009-06-02 13:04:02.000000000 +0300
+++ ../galleria-cpct/galleria.module	2010-10-20 19:43:45.280523999 +0300
@@ -260,7 +260,8 @@ function theme_galleria_files($node) {
     if (!in_array($ext, $allowed_extensions, TRUE)) {
       continue;
     }
-    $images[] = $file;
+    $images[0][] = $file;
+    $images[1] = $node->type;
   }
 
   return theme('galleria', $images);
@@ -278,18 +279,22 @@ function theme_galleria_files($node) {
  *   Themed Galleria.
  */
 function template_preprocess_galleria(&$vars) {
-  $images = $vars['images'];
+  $images = $vars['images'][0];
+  $node_type = $vars['images'][1];
   $image_list = array();
   $i = 0;
 
   $imagecache_exists = module_exists('imagecache');
-  $img_preset = variable_get('galleria_imagecache_preset', '');
-  $thumb_preset = variable_get('galleria_thumb_imagecache_preset', '');
-  $lightbox_integration = variable_get('galleria_lightbox', 'none');
-  $lightbox_preset = variable_get('galleria_lightbox_preset', '');
 
+  // Check for node type specific configuration, if that fails fall back to generic configuration, and if that fails suggest something.
+  $img_preset           = variable_get('galleria_imagecache_preset_'      .$node_type, variable_get('galleria_imagecache_preset',       ''));
+  $thumb_preset         = variable_get('galleria_thumb_imagecache_preset_'.$node_type, variable_get('galleria_thumb_imagecache_preset', ''));
+  $lightbox_integration = variable_get('galleria_lightbox_'               .$node_type, variable_get('galleria_lightbox',                'none'));
+  $lightbox_preset      = variable_get('galleria_lightbox_preset_'        .$node_type, variable_get('galleria_lightbox_preset',         ''));
+  drupal_set_message("For $node_type, I have thumb $thumb_preset, lightbox *$lightbox_integration*, on $lightbox_preset");
   foreach ($images as $image) {
     $caption = ($image->description != $image->filename) ? $image->description : '';
+    if ( isset($image->title) ) $caption = $caption.$image->title;
     $filepath = $image->filepath;
 
     // We have the main image opening in a lightbox.
@@ -311,6 +316,7 @@ function template_preprocess_galleria(&$
     }
 
     if ($imagecache_exists && $img_preset) {
+    //drupal_set_message(print_r($img_preset,1));
       if ($thumb) {
         // There is an imagecache preset for both thumbnail and gallery image.
         $image = l($thumb, imagecache_create_url($img_preset, $filepath), array('html' => TRUE, 'attributes' => array('title' => $caption)));
@@ -349,13 +355,16 @@ function template_preprocess_galleria(&$
   $vars['next'] = t('next');
 
   // jCarousel integration setup
-  if (module_exists('jcarousel') && variable_get('galleria_jcarousel', 'enabled') == 'enabled' && $i > 1) {
+  $jc_enabled = variable_get('galleria_jcarousel_'         .$node_type, variable_get('galleria_jcarousel', 'enabled'));
+  $vertical   = variable_get('galleria_jcarousel_vertical_'.$node_type, variable_get('galleria_jcarousel_vertical', 'false'));
+
+  if (module_exists('jcarousel') && $jc_enabled == 'enabled' && $i > 1) {
     $options = array(
-      'vertical' => (variable_get('galleria_jcarousel_vertical', 'false') == 'true') ? TRUE : FALSE,
-      'visible' => variable_get('galleria_jcarousel_visible', '3'),
-      'scroll' => variable_get('galleria_jcarousel_scroll', '3'),
-      'animation' => variable_get('galleria_jcarousel_animation', 'fast'),
-      'wrap' => variable_get('galleria_jcarousel_wrap', 'null'),
+      'vertical'     => ($vertical == 'true') ? TRUE : FALSE,
+      'visible'      => variable_get('galleria_jcarousel_visible_'  .$node_type, variable_get('galleria_jcarousel_visible',      '3')),
+      'scroll'       => variable_get('galleria_jcarousel_scroll_'   .$node_type, variable_get('galleria_jcarousel_scroll',       '3')),
+      'animation'    => variable_get('galleria_jcarousel_animation_'.$node_type, variable_get('galleria_jcarousel_animation', 'fast')),
+      'wrap'         => variable_get('galleria_jcarousel_wrap_'     .$node_type, variable_get('galleria_jcarousel_wrap',      'null')),
       'initCallback' => 'Drupal.galleria.jcarousel_initCallback',
     );
     jcarousel_add('.gallery', $options);
@@ -384,13 +393,16 @@ function theme_galleria_formatter_imagef
   galleria_includes();
 
   $images = array();
+  $images[1] = $element['#node']->type;
+
   foreach (element_children($element) as $key) {
     if ($element[$key]['#item'] != NULL) {
-      $images[] = (object) array(
+      $images[0][] = (object) array(
         'filepath' => $element[$key]['#item']['filepath'],
         'filename' => $element[$key]['#item']['filename'],
         'description' => $element[$key]['#item']['data']['description'],
-        'alt' => $element[$key]['#item']['data']['alt'],
+        'title'       => $element[$key]['#item']['data']['title'],
+        'alt'         => $element[$key]['#item']['data']['alt'],
       );
     }
   }
