From 3aafacddae1215c9d67a8b5d7bbc3d4da3d754d0 Mon Sep 17 00:00:00 2001
From: capynet <capy.net@gmail.com>
Date: Wed, 26 Feb 2014 17:35:43 +0100
Subject: [PATCH] Added vertical thumbnails slider, and the ability to specify
 how many thumbnails to show in each slide.

---
 .../galleryformatter/galleryformatter.module       |   41 ++-
 .../gallerystyles/greenarrows/greenarrows.css      |  292 ++++++++++++++------
 .../greenarrows/images/source/sprite.svg           |  279 +++++++++++++++++--
 .../gallerystyles/greenarrows/images/sprite.png    |  Bin 16625 -> 32106 bytes
 .../galleryformatter/theme/galleryformatter.css    |  116 +++++---
 .../galleryformatter/theme/galleryformatter.js     |  177 +++++++-----
 .../theme/galleryformatter.tpl.php                 |   49 ++--
 .../galleryformatter/theme/infiniteCarousel.js     |  144 +++++-----
 8 files changed, 782 insertions(+), 316 deletions(-)

diff --git a/galleryformatter/galleryformatter.module b/galleryformatter/galleryformatter.module
index f3b1582..0a4deeb 100644
--- a/galleryformatter/galleryformatter.module
+++ b/galleryformatter/galleryformatter.module
@@ -18,7 +18,9 @@ function galleryformatter_field_formatter_info() {
         'linking_method' => 'show_full_link',
         'link_to_full' => 1,
         'link_to_full_style' => 0,
+        'orientation' => 0,
         'modal' => 'none',
+        'images_by_slide' => 4,
       ),
       'description' => t('Display multi-value fields as an jQuery Image gallery.'),
     ),
@@ -95,6 +97,9 @@ function galleryformatter_field_formatter_settings_form($field, $instance, $view
   if (module_exists('lightbox2')) {
     $modal_options['lightbox2'] = 'lightbox2';
   }
+  if (module_exists('fancybox')) {
+    $modal_options['fancybox'] = 'fancybox';
+  }
   $modal_options['none'] = t('Do not use modal');
   $form['modal'] = array(
    '#type' => 'select',
@@ -125,6 +130,21 @@ function galleryformatter_field_formatter_settings_form($field, $instance, $view
     )
   );
 
+  $form['orientation'] = array(
+    '#type' => 'radios',
+    '#title' => t('Gallery orientation'),
+    '#options' => array('Horizontal', 'Vertical'),
+    '#default_value' => $settings['orientation'],
+  );
+
+  $form['images_by_slide'] = array(
+    '#type' => 'select',
+    '#title' => t('Images by slide'),
+    '#options' => drupal_map_assoc(range(2, 20)),
+    '#default_value' => $settings['images_by_slide'],
+    '#description' => t('How many images you want to show by slide group?'),
+  );
+
   return $form;
 }
 
@@ -150,6 +170,9 @@ function galleryformatter_field_formatter_settings_summary($field, $instance, $v
     $summary[] =  t('Linking method: @value', array('@value' => $linking_method));
   }
 
+  $summary[] = t('Gallery orientation: @value', array('@value' => ($settings['orientation'] ? "vertical" : "Horizontal")));
+  $summary[] = t('Images by slide: @value', array('@value' => $settings['images_by_slide']));
+
   return implode ('<br />', $summary);
 }
 
@@ -324,6 +347,10 @@ function galleryformatter_field_formatter_view($entity_type, $entity, $field, $i
         case 'lightbox2':
           $link_attributes['rel'] = 'lightbox['. $slideset_id .']';
           break;
+        case 'fancybox':
+          $link_attributes['class'] = 'fancybox';
+          $link_attributes['rel'] = 'fancybox['. $slideset_id .']';
+          break;
       }
       $link_url = $settings['link_to_full_style'] ? image_style_url($settings['link_to_full_style'], $item['uri']) : file_create_url($item['uri']);
 
@@ -351,12 +378,20 @@ function galleryformatter_field_formatter_view($entity_type, $entity, $field, $i
     }
   }
 
-  if($num_of_images > 1){
+  galleryformatter_add_css($settings['style']);
+  drupal_add_css($modulepath . '/theme/galleryformatter.css');
+
+  // Add some computed CSS class.
+  $settings['style'] .= ' images-by-slide-' . $settings['images_by_slide'];
+  $settings['style'] .= ' orientation-' . ($settings['orientation'] ? 'vertical' : 'horizontal');
+  $galleryId = 'galleryformatter-'.$field['id'];
+  $settings['gallery-id'] = $galleryId;
+
+  if ($num_of_images > 1) {
     drupal_add_js($modulepath . '/theme/infiniteCarousel.js');
     drupal_add_js($modulepath . '/theme/galleryformatter.js');
+    drupal_add_js(array('galleryformatter' => array($galleryId => $settings)), 'setting');
   }
-  galleryformatter_add_css($settings['style']);
-  drupal_add_css($modulepath . '/theme/galleryformatter.css');
 
   // prepare the variables for our theme function
   $element['#theme'] ='galleryformatter';
diff --git a/galleryformatter/gallerystyles/greenarrows/greenarrows.css b/galleryformatter/gallerystyles/greenarrows/greenarrows.css
index 948e80c..8999292 100644
--- a/galleryformatter/gallerystyles/greenarrows/greenarrows.css
+++ b/galleryformatter/gallerystyles/greenarrows/greenarrows.css
@@ -1,117 +1,227 @@
-.galleryformatter-greenarrows { }
 
-.galleryformatter-greenarrows .gallery-thumbs { padding: 0 46px; }
-.galleryformatter-greenarrows .gallery-slides { }
-.galleryformatter-greenarrows .gallery-slide { }
+/* General styles
+-------------------------------------------------- */
+.galleryformatter-greenarrows .gallery-slides .panel-overlay {
+    position: absolute;
+    bottom: 0.5em;
+    left: 0;
+    background: transparent url('images/bg-trans.png') repeat;
+    width: 100%;
+    color: white;
+}
+
+.galleryformatter-greenarrows.gallery-thumbs ul {
+    list-style: none;
+}
+
+.galleryformatter-greenarrows .gallery-thumbs .arrow {
+    bottom: 0;
+    display: block;
+    height: 46px;
+    position: absolute;
+    text-indent: -9999px;
+    width: 46px;
+}
+
+.galleryformatter-greenarrows .slide-button {
+    background: transparent url("images/next-prev.png") no-repeat top right;
+    height: 64px;
+    width: 32px;
+    top: 43%;
+    text-indent: -9999px;
+    filter: alpha(opacity=20);
+    -ms-filter: ” alpha(opacity=20) ”;
+    -moz-opacity: 0.2;
+    -khtml-opacity: 0.2;
+    opacity: 0.2;
+}
+
+.galleryformatter-greenarrows .slide-button:hover {
+    filter: alpha(opacity=100);
+    -ms-filter: ” alpha(opacity=100) ”;
+    -moz-opacity: 1;
+    -khtml-opacity: 1;
+    opacity: 1;
+}
+
+.galleryformatter-greenarrows .prev-slide {
+    background-position: top left;
+}
+
+.galleryformatter-greenarrows.next-slide {
+    background-position: top right;
+}
 
 .galleryformatter-greenarrows .gallery-thumbs .arrow,
 .galleryformatter-greenarrows .gallery-thumbs .wrapper,
 .galleryformatter-greenarrows .gallery-thumbs li.active a,
 .galleryformatter-greenarrows .gallery-thumbs li a:hover,
-.galleryformatter-greenarrows .view-full { background:url("images/sprite.png") no-repeat scroll 0 0 transparent; }
-
-.galleryformatter-greenarrows .gallery-slides .panel-overlay {
-  position: absolute;
-  bottom: 0.5em; left: 0;
-  background: transparent url(images/bg-trans.png) repeat;
-  width:100%;
-  color: white;
-}
-.galleryformatter-greenarrows .gallery-slides .panel-overlay .overlay-inner { padding: 10px; }
-.galleryformatter-greenarrows .gallery-thumbs .wrapper {
-  overflow: auto;
-  line-height:0;
-  background-position: center -326px;
-  background-repeat: repeat-x;
-  border-bottom: 1px solid #EEEEEE;
+.galleryformatter-greenarrows .view-full {
+    background: url("images/sprite.png") no-repeat scroll 0 0 transparent;
 }
+
 .galleryformatter-greenarrows .view-full {
-  background-position:center -205px;
-  height:46px; width:46px;
-  margin:10px;
-  position:absolute;
-  right:0; top:0;
-  text-indent:-9999px;
+    background-position: center -413px;
+    height: 46px;
+    width: 46px;
+    margin: 10px;
+    position: absolute;
+    right: 0;
+    top: 0;
+    text-indent: -9999px;
 }
+
 .galleryformatter-greenarrows a:hover .view-full {
-  background-position: center -252px;
-}
-.galleryformatter-greenarrows .gallery-thumbs ul { list-style: none; }
-.galleryformatter-greenarrows .gallery-thumbs li {
-  float: left;
-  background: transparent none;
-  overflow:hidden;
-  padding-top: 3px;
-}
-.galleryformatter-greenarrows .gallery-thumbs li a {
-  display: block;
-  padding: 19px 0 7px;
-}
-.galleryformatter-greenarrows .gallery-thumbs li a:hover { background-position: center -307px; }
-.galleryformatter-greenarrows .gallery-thumbs li.active a { background-position: center -303px; }
-
-.galleryformatter-greenarrows .gallery-thumbs li.active img,
-.galleryformatter-greenarrows .gallery-thumbs li a:hover img {
-  filter:alpha(opacity=100);
-  -ms-filter:”alpha(opacity=100)”;
-  -moz-opacity:1;
-  -khtml-opacity: 1;
-  opacity: 1;
-}
-.galleryformatter-greenarrows .gallery-thumbs li img {
-  filter:alpha(opacity=60);
-  -ms-filter:”alpha(opacity=60)”;
-  -moz-opacity:0.6;
-  -khtml-opacity: 0.6;
-  opacity: 0.6;
+    background-position: center -459px;
 }
 
-.galleryformatter-greenarrows .gallery-thumbs .arrow {
-  bottom:0;
-  display:block;
-  height:46px;
-  position:absolute;
-  text-indent:-9999px;
-  width:46px;
+/* Horizonal styles
+-------------------------------------------------- */
+.galleryformatter-greenarrows.orientation-horizontal {
+    text-align: center;
 }
 
-.galleryformatter-greenarrows .gallery-thumbs .forward {
-  background-position: 0px 0;
-  right: 0;
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs {
+    padding: 0 46px;
 }
 
-.galleryformatter-greenarrows .gallery-thumbs .back {
-  background-position: -4px -102px;
-  left: 0;
+.galleryformatter-greenarrows.orientation-horizontal .gallery-slides .panel-overlay .overlay-inner {
+    padding: 10px;
 }
 
-.galleryformatter-greenarrows .gallery-thumbs .forward:hover { background-position: 0px -52px; }
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs .wrapper {
+    overflow: auto;
+    line-height: 0;
+    background-position: center -533px;
+    background-repeat: repeat-x;
+    border-bottom: 1px solid #EEEEEE;
+}
 
-.galleryformatter-greenarrows .gallery-thumbs .back:hover { background-position: -4px -156px; }
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs li {
+    float: left;
+    background: transparent none;
+    overflow: hidden;
+    padding-top: 3px;
+}
 
-.galleryformatter-greenarrows .slide-button {
-  background: transparent url(images/next-prev.png) no-repeat top left;
-  height: 64px;
-  width: 32px;
-  top: 43%;
-  text-indent: -9999px;
-  filter:alpha(opacity=20);
-  -ms-filter:”alpha(opacity=20)”;
-  -moz-opacity:0.2;
-  -khtml-opacity: 0.2;
-  opacity: 0.2;
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs li a {
+    display: block;
+    padding: 19px 0 7px;
 }
 
-.galleryformatter-greenarrows .prev-slide {
-  background-position: top left;
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs li a:hover {
+    background-position: center -513px;
 }
-.galleryformatter-greenarrows .next-slide {
-  background-position: top right;
+
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs li.active a {
+    background-position: center -510px;
 }
-.galleryformatter-greenarrows .slide-button:hover {
+
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs li.active img,
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs li a:hover img {
     filter: alpha(opacity=100);
-  -ms-filter: ”alpha(opacity=100)”;
-  -moz-opacity: 1;
-  -khtml-opacity: 1;
-  opacity: 1;
+    -ms-filter: ” alpha(opacity=100) ”;
+    -moz-opacity: 1;
+    -khtml-opacity: 1;
+    opacity: 1;
+}
+
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs li img {
+    filter: alpha(opacity=60);
+    -ms-filter: ” alpha(opacity=60) ”;
+    -moz-opacity: 0.6;
+    -khtml-opacity: 0.6;
+    opacity: 0.6;
+}
+
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs .forward {
+    background-position: 0 -207px;
+    right: 0;
+}
+
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs .back {
+    background-position: -4px -308px;
+    left: 0;
+}
+
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs .forward:hover {
+    background-position: 0 -258px;
+}
+
+.galleryformatter-greenarrows.orientation-horizontal .gallery-thumbs .back:hover {
+    background-position: -4px -361px;
+}
+
+/* Vertical styles
+-------------------------------------------------- */
+.galleryformatter-greenarrows.orientation-vertical {
+    text-align: center;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs {
+    padding: 46px 0;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs .wrapper {
+    overflow: auto;
+    line-height: 0;
+    background: none;
+    border: none;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs li {
+    overflow: hidden;
+    padding: 1px 0;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs li a {
+    display: block;
+    padding: 0;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs li a:hover {
+    background-position: center -307px;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs li.active a {
+    background-position: center -303px;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs li.active img,
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs li a:hover img {
+    filter: alpha(opacity=100);
+    -ms-filter: ” alpha(opacity=100) ”;
+    -moz-opacity: 1;
+    -khtml-opacity: 1;
+    opacity: 1;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs li img {
+    filter: alpha(opacity=60);
+    -ms-filter: ” alpha(opacity=60) ”;
+    -moz-opacity: 0.6;
+    -khtml-opacity: 0.6;
+    opacity: 0.6;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs .forward {
+    background-position: 0 0;
+    bottom: 0;
+    left: 50%;
+    margin-left: -23px;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs .back {
+    background-position: -4px -102px;
+    top: 0;
+    left: 50%;
+    margin-left: -23px;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs .forward:hover {
+    background-position: 0 -52px;
+}
+
+.galleryformatter-greenarrows.orientation-vertical .gallery-thumbs .back:hover {
+    background-position: -4px -156px;
 }
diff --git a/galleryformatter/gallerystyles/greenarrows/images/source/sprite.svg b/galleryformatter/gallerystyles/greenarrows/images/source/sprite.svg
index c80920d..a38344a 100644
--- a/galleryformatter/gallerystyles/greenarrows/images/source/sprite.svg
+++ b/galleryformatter/gallerystyles/greenarrows/images/source/sprite.svg
@@ -12,9 +12,9 @@
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    id="svg2"
    version="1.1"
-   inkscape:version="0.47 r22583"
+   inkscape:version="0.48.3.1 r9886"
    width="35.25"
-   height="300.07986"
+   height="450"
    sodipodi:docname="sprite.svg"
    inkscape:export-filename="/home/manuel/htdocs/drupal6/galleryformatter-HEAD/gallerystyles/greenarrows/images/sprite.png"
    inkscape:export-xdpi="127.74619"
@@ -839,6 +839,50 @@
          id="rect2976"
          style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
     </clipPath>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3724"
+       id="radialGradient3181"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.05130999,2.2627318,-2.078711,-0.04476341,-244.64462,203.59249)"
+       cx="-108.21909"
+       cy="-60.25388"
+       fx="-108.21909"
+       fy="-60.25388"
+       r="31.788679" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="radialGradient3183"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.05130999,2.2627318,-2.078711,-0.04476341,-244.64462,203.59249)"
+       cx="-108.21909"
+       cy="-60.25388"
+       fx="-108.21909"
+       fy="-60.25388"
+       r="31.788679" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2887"
+       id="radialGradient3185"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.05130999,2.2627318,-2.078711,-0.04476341,-244.64462,203.59249)"
+       cx="-108.21909"
+       cy="-60.25388"
+       fx="-108.21909"
+       fy="-60.25388"
+       r="31.788679" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3724"
+       id="radialGradient3187"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.05130999,2.2627318,-2.078711,-0.04476341,-244.64462,203.59249)"
+       cx="-108.21909"
+       cy="-60.25388"
+       fx="-108.21909"
+       fy="-60.25388"
+       r="31.788679" />
   </defs>
   <sodipodi:namedview
      pagecolor="#ffffff"
@@ -849,19 +893,20 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1678"
-     inkscape:window-height="949"
+     inkscape:window-width="1920"
+     inkscape:window-height="993"
      id="namedview4"
      showgrid="false"
-     inkscape:zoom="8"
-     inkscape:cx="0.28514512"
-     inkscape:cy="76.94769"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="144.48305"
+     inkscape:cy="179.63021"
      inkscape:window-x="0"
-     inkscape:window-y="52"
-     inkscape:window-maximized="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
      inkscape:current-layer="layer2"
-     showguides="false"
-     inkscape:guide-bbox="true">
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="false">
     <inkscape:grid
        type="xygrid"
        id="grid3730"
@@ -893,13 +938,17 @@
        orientation="0,1"
        position="-1.502602,190.66751"
        id="guide3716" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="15.15625,300.0625"
+       id="guide3238" />
   </sodipodi:namedview>
   <g
      inkscape:groupmode="layer"
      id="layer1"
      inkscape:label="VIEW FULL ICONS"
      style="display:inline"
-     transform="translate(-0.7419253,-1.383303)">
+     transform="translate(-0.7419253,148.537)">
     <g
        style="display:inline"
        transform="matrix(1.019462,0,0,1.019462,2.1473934,145.74241)"
@@ -1015,7 +1064,7 @@
      id="layer2"
      inkscape:label="ARROWS"
      style="display:inline"
-     transform="translate(-0.7419253,-1.383303)">
+     transform="translate(-0.7419253,148.537)">
     <g
        id="g3952">
       <g
@@ -1060,7 +1109,8 @@
            sodipodi:nodetypes="cccccccccc"
            id="path3720"
            d="m 19.240274,45.063495 -1.844641,1.843754 3.689294,3.687506 -10.569454,0 -0.01473,2.765631 10.584175,0 -3.690142,3.154922 1.845496,1.940665 7.049599,-6.498222 -7.049599,-6.894256 z"
-           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           inkscape:connector-curvature="0" />
       </g>
       <g
          id="g3876">
@@ -1104,7 +1154,8 @@
            style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none"
            d="m 19.240274,8.4259379 -1.84464,1.8437531 3.689294,3.687507 -10.569455,0 -0.01473,2.765631 10.584176,0 -3.690143,3.154922 1.845496,1.940665 7.049599,-6.498222 -7.049599,-6.8942561 z"
            id="path3734"
-           sodipodi:nodetypes="cccccccccc" />
+           sodipodi:nodetypes="cccccccccc"
+           inkscape:connector-curvature="0" />
       </g>
     </g>
     <g
@@ -1152,7 +1203,8 @@
            sodipodi:nodetypes="cccccccccc"
            id="path3826"
            d="m 17.519795,80.807017 1.844641,1.843753 -3.689295,3.687507 10.569455,0 0.0029,2.765631 -10.572367,0 3.690142,3.154922 -1.845496,1.940665 -7.049598,-6.498222 7.049598,-6.894256 z"
-           style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+           style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           inkscape:connector-curvature="0" />
       </g>
       <g
          transform="matrix(-1,0,0,1,36.732048,72.774811)"
@@ -1197,7 +1249,8 @@
            style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
            d="m 19.240274,45.063495 -1.844641,1.843754 3.689294,3.687506 -10.569454,0 -0.01473,2.765631 10.584175,0 -3.690142,3.154922 1.845496,1.940665 7.049599,-6.498222 -7.049599,-6.894256 z"
            id="path3732"
-           sodipodi:nodetypes="cccccccccc" />
+           sodipodi:nodetypes="cccccccccc"
+           inkscape:connector-curvature="0" />
       </g>
     </g>
     <rect
@@ -1233,11 +1286,11 @@
          inkscape:flatsided="false"
          inkscape:rounded="0"
          inkscape:randomized="0"
-         d="M -589.5465,-43.710512 -566,-84.49424 l 23.5465,40.783727 23.54649,40.7837297 -47.09299,-1.2e-6 -47.09299,-1.3e-6 23.54649,-40.7837262 z"
+         d="M -589.5465,-43.710512 -566,-84.49424 l 23.5465,40.783727 23.54649,40.7837297 -47.09299,-1.2e-6 -47.09299,-1.3e-6 z"
          transform="matrix(0.18540392,0,0,-0.12363327,123.05612,234.74579)" />
       <path
          transform="matrix(0.15055118,0,0,-0.13619588,103.32947,233.00909)"
-         d="M -589.5465,-43.710512 -566,-84.49424 l 23.5465,40.783727 23.54649,40.7837297 -47.09299,-1.2e-6 -47.09299,-1.3e-6 23.54649,-40.7837262 z"
+         d="M -589.5465,-43.710512 -566,-84.49424 l 23.5465,40.783727 23.54649,40.7837297 -47.09299,-1.2e-6 -47.09299,-1.3e-6 z"
          inkscape:randomized="0"
          inkscape:rounded="0"
          inkscape:flatsided="false"
@@ -1252,5 +1305,193 @@
          style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
          sodipodi:type="star" />
     </g>
+    <g
+       id="g3149"
+       transform="translate(1.0606608,-145.66399)" />
+    <g
+       id="g3217"
+       transform="translate(-1.1776966,-2.35561)">
+      <g
+         transform="translate(1.0606608,-145.66399)"
+         id="g3139">
+        <path
+           transform="matrix(0.4525759,0,0,0.19448298,70.675475,72.690342)"
+           inkscape:transform-center-y="-4.8084864"
+           inkscape:transform-center-x="20.433354"
+           d="m -90.245424,-38.581131 c 0,6.252468 -10.564326,11.321095 -23.596086,11.321095 -13.03175,0 -23.59608,-5.068627 -23.59608,-11.321095 0,-6.252468 10.56433,-11.321095 23.59608,-11.321095 13.03176,0 23.596086,5.068627 23.596086,11.321095 z"
+           sodipodi:ry="11.321095"
+           sodipodi:rx="23.596083"
+           sodipodi:cy="-38.581131"
+           sodipodi:cx="-113.84151"
+           id="path3141"
+           style="fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline;filter:url(#filter3710)"
+           sodipodi:type="arc" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ededeb;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+           id="path3143"
+           sodipodi:cx="-113.84151"
+           sodipodi:cy="-38.581131"
+           sodipodi:rx="31.788679"
+           sodipodi:ry="30.973585"
+           d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+           inkscape:transform-center-x="19.513127"
+           inkscape:transform-center-y="-10.966964"
+           transform="matrix(0.4321939,0,0,0.44356742,67.596914,68.873067)" />
+        <path
+           transform="matrix(0.38275785,0,0,0.39283042,61.969039,66.915576)"
+           inkscape:transform-center-y="-9.7125198"
+           inkscape:transform-center-x="17.281138"
+           d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+           sodipodi:ry="30.973585"
+           sodipodi:rx="31.788679"
+           sodipodi:cy="-38.581131"
+           sodipodi:cx="-113.84151"
+           id="path3145"
+           style="fill:url(#radialGradient3181);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+           sodipodi:type="arc" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 25.091546,52.604701 -1.843754,-1.844641 -3.687506,3.689294 0,-10.569454 -2.765631,-0.01473 0,10.584175 -3.154922,-3.690142 -1.940665,1.845496 6.498222,7.049599 6.894256,-7.049599 z"
+           id="path3147"
+           sodipodi:nodetypes="cccccccccc" />
+      </g>
+      <path
+         sodipodi:type="arc"
+         style="fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline;filter:url(#filter3710)"
+         id="path3151"
+         sodipodi:cx="-113.84151"
+         sodipodi:cy="-38.581131"
+         sodipodi:rx="23.596083"
+         sodipodi:ry="11.321095"
+         d="m -90.245424,-38.581131 c 0,6.252468 -10.564326,11.321095 -23.596086,11.321095 -13.03175,0 -23.59608,-5.068627 -23.59608,-11.321095 0,-6.252468 10.56433,-11.321095 23.59608,-11.321095 13.03176,0 23.596086,5.068627 23.596086,11.321095 z"
+         inkscape:transform-center-x="20.433354"
+         inkscape:transform-center-y="-4.8084864"
+         transform="matrix(0.4525759,0,0,0.19448298,71.736136,-109.61121)" />
+      <path
+         transform="matrix(0.4321939,0,0,0.44356742,68.657574,-113.42848)"
+         inkscape:transform-center-y="-10.966964"
+         inkscape:transform-center-x="19.513127"
+         d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+         sodipodi:ry="30.973585"
+         sodipodi:rx="31.788679"
+         sodipodi:cy="-38.581131"
+         sodipodi:cx="-113.84151"
+         id="path3153"
+         style="fill:#ededeb;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient3183);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+         id="path3155"
+         sodipodi:cx="-113.84151"
+         sodipodi:cy="-38.581131"
+         sodipodi:rx="31.788679"
+         sodipodi:ry="30.973585"
+         d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+         inkscape:transform-center-x="17.281138"
+         inkscape:transform-center-y="-9.7125198"
+         transform="matrix(0.38275785,0,0,0.39283042,63.0297,-115.38597)" />
+      <path
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccccccccc"
+         id="path3157"
+         d="m 25.091546,15.967144 -1.843753,-1.84464 -3.687507,3.689294 0,-10.5694551 -2.765631,-0.01473 0,10.5841761 -3.154922,-3.690143 -1.940665,1.845496 6.498222,7.049599 6.894256,-7.049599 z"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+         transform="translate(1.0606608,-145.66399)" />
+      <g
+         id="g3161"
+         transform="translate(1.0606608,-146.63269)">
+        <path
+           transform="matrix(-0.4525759,0,0,0.19448298,-33.92133,108.43386)"
+           inkscape:transform-center-y="-4.8084864"
+           inkscape:transform-center-x="20.433354"
+           d="m -90.245424,-38.581131 c 0,6.252468 -10.564326,11.321095 -23.596086,11.321095 -13.03175,0 -23.59608,-5.068627 -23.59608,-11.321095 0,-6.252468 10.56433,-11.321095 23.59608,-11.321095 13.03176,0 23.596086,5.068627 23.596086,11.321095 z"
+           sodipodi:ry="11.321095"
+           sodipodi:rx="23.596083"
+           sodipodi:cy="-38.581131"
+           sodipodi:cx="-113.84151"
+           id="path3163"
+           style="fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline;filter:url(#filter3710)"
+           sodipodi:type="arc" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ededeb;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+           id="path3165"
+           sodipodi:cx="-113.84151"
+           sodipodi:cy="-38.581131"
+           sodipodi:rx="31.788679"
+           sodipodi:ry="30.973585"
+           d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+           inkscape:transform-center-x="19.513127"
+           inkscape:transform-center-y="-10.966964"
+           transform="matrix(-0.4321939,0,0,0.44356742,-30.842769,104.61658)" />
+        <path
+           transform="matrix(-0.38275785,0,0,0.39283042,-25.214894,102.6591)"
+           inkscape:transform-center-y="-9.7125198"
+           inkscape:transform-center-x="17.281138"
+           d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+           sodipodi:ry="30.973585"
+           sodipodi:rx="31.788679"
+           sodipodi:cy="-38.581131"
+           sodipodi:cx="-113.84151"
+           id="path3167"
+           style="fill:url(#radialGradient3185);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+           sodipodi:type="arc" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 25.055075,86.664214 -1.843753,1.844641 -3.687507,-3.689295 0,10.569455 -2.765631,0.0029 0,-10.572367 -3.154922,3.690142 -1.940665,-1.845496 6.498222,-7.049598 6.894256,7.049598 z"
+           id="path3169"
+           sodipodi:nodetypes="cccccccccc" />
+      </g>
+      <g
+         id="g3171"
+         transform="matrix(-1,0,0,1,37.792709,-72.889179)">
+        <path
+           sodipodi:type="arc"
+           style="fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline;filter:url(#filter3710)"
+           id="path3173"
+           sodipodi:cx="-113.84151"
+           sodipodi:cy="-38.581131"
+           sodipodi:rx="23.596083"
+           sodipodi:ry="11.321095"
+           d="m -90.245424,-38.581131 c 0,6.252468 -10.564326,11.321095 -23.596086,11.321095 -13.03175,0 -23.59608,-5.068627 -23.59608,-11.321095 0,-6.252468 10.56433,-11.321095 23.59608,-11.321095 13.03176,0 23.596086,5.068627 23.596086,11.321095 z"
+           inkscape:transform-center-x="20.433354"
+           inkscape:transform-center-y="-4.8084864"
+           transform="matrix(0.4525759,0,0,0.19448298,70.675475,72.690342)" />
+        <path
+           transform="matrix(0.4321939,0,0,0.44356742,67.596914,68.873067)"
+           inkscape:transform-center-y="-10.966964"
+           inkscape:transform-center-x="19.513127"
+           d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+           sodipodi:ry="30.973585"
+           sodipodi:rx="31.788679"
+           sodipodi:cy="-38.581131"
+           sodipodi:cx="-113.84151"
+           id="path3175"
+           style="fill:#ededeb;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+           sodipodi:type="arc" />
+        <path
+           sodipodi:type="arc"
+           style="fill:url(#radialGradient3187);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+           id="path3177"
+           sodipodi:cx="-113.84151"
+           sodipodi:cy="-38.581131"
+           sodipodi:rx="31.788679"
+           sodipodi:ry="30.973585"
+           d="m -82.052828,-38.581131 c 0,17.106239 -14.232276,30.9735851 -31.788682,30.9735851 -17.5564,0 -31.78868,-13.8673461 -31.78868,-30.9735851 0,-17.106239 14.23228,-30.973585 31.78868,-30.973585 17.556406,0 31.788682,13.867346 31.788682,30.973585 z"
+           inkscape:transform-center-x="17.281138"
+           inkscape:transform-center-y="-9.7125198"
+           transform="matrix(0.38275785,0,0,0.39283042,61.969039,66.915576)" />
+        <path
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccccccc"
+           id="path3179"
+           d="m 11.699068,50.914767 1.843754,1.844641 3.687506,-3.689294 0,10.569454 2.765631,0.01473 0,-10.584175 3.154922,3.690142 1.940665,-1.845496 -6.498222,-7.049599 -6.894256,7.049599 z"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+      </g>
+    </g>
   </g>
 </svg>
diff --git a/galleryformatter/gallerystyles/greenarrows/images/sprite.png b/galleryformatter/gallerystyles/greenarrows/images/sprite.png
index 8ad8269f154e0bec875536ea8ed23b43a26b9de4..6e09d3dd10ec9fc8a1ac0c5d959887cc67708dbe 100644
GIT binary patch
literal 32106
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
BUWfny

literal 16625
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
KiPQ=i1pXhTYnyKX

diff --git a/galleryformatter/theme/galleryformatter.css b/galleryformatter/theme/galleryformatter.css
index 6f185e1..90c13c0 100644
--- a/galleryformatter/theme/galleryformatter.css
+++ b/galleryformatter/theme/galleryformatter.css
@@ -1,68 +1,118 @@
 /* hard reset for now sorry*/
-.galleryformatter { margin: 0 auto; }
-.galleryformatter * { padding: 0; margin: 0; }
+.galleryformatter {
+    margin: 0 auto;
+    text-align: center;
+}
+
+.galleryformatter * {
+    padding: 0;
+    margin: 0;
+}
+
 .galleryformatter li {
-  margin-left: 0;
-  padding-left: 0;
-  list-style: none;
+    margin-left: 0;
+    padding-left: 0;
+    list-style: none;
+}
+
+.galleryformatter .gallery-slides {
+    vertical-align: top;
 }
 
 .galleryformatter .gallery-slides,
-.galleryformatter .gallery-thumbs { margin: 0 auto; }
+.galleryformatter .gallery-thumbs {
+    margin: 0 auto;
+    display: inline-block;
+}
+
 .galleryformatter .gallery-slides ul,
-.galleryformatter .gallery-thumbs ul { margin: 0; }
+.galleryformatter .gallery-thumbs ul {
+    margin: 0;
+}
 
 /** css gallery */
-li.gallery-slide { display: block; }
+li.gallery-slide {
+    display: block;
+}
 
 .gallery-thumbs .wrapper,
-.gallery-slides { overflow: hidden; position: relative; }
-.gallery-frame { width: 99999px; }
+.gallery-slides {
+    overflow: hidden;
+    position: relative;
+}
 
-.gallery-slides .gallery-slide { float: left; position: relative; }
+.gallery-frame {
+    width: 99999px;
+}
+
+.gallery-slides .gallery-slide {
+    float: left;
+    position: relative;
+}
+
+.gallery-thumbs {
+    position: relative;
+}
 
-.gallery-thumbs { position: relative; }
 .galleryformatter .gallery-slides ul,
 .galleryformatter .gallery-thumbs ul {
-  list-style-image:none;
-  list-style-position:outside;
-  list-style-type:none;
-  margin: 0; padding: 0;
+    display: inline-block;
+    list-style-image: none;
+    list-style-position: outside;
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
 }
+
 .gallery-thumbs ul li {
-  display:block;
-  float:left;
-  padding: 0 4px 0 0;
+    display: block;
+    padding: 0 4px 0 0;
 }
-.gallery-thumbs li a { outline: none; }
+
+.gallery-thumbs li a {
+    outline: none;
+}
+
 /*** end css gallery ****/
 
 /** buttons **/
 .galleryformatter .view-full {
- position: absolute;
+    position: absolute;
 }
+
 .galleryformatter .slide-button {
-  top: 42%;
-  position: absolute;
-  display: block;
-  cursor: pointer;
+    top: 42%;
+    position: absolute;
+    display: block;
+    cursor: pointer;
 }
+
 .galleryformatter .prev-slide {
-  left: 0;
+    left: 0;
 }
+
 .galleryformatter .next-slide {
-  right: 0;
+    right: 0;
 }
+
 .galleryformatter .gallery-thumbs .arrow {
- cursor:pointer;
+    cursor: pointer;
 }
 
 /*** js enabled gallery css **/
-.gallery-processed .gallery-frame { position:relative; }
-.gallery-processed .gallery-slides .gallery-slide  {
-  float: none;
-  position: absolute;
-  top: 0; left: 0;
+.gallery-processed .gallery-frame {
+    position: relative;
+}
+
+.gallery-processed .gallery-slides .gallery-slide {
+    float: none;
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.gallery-thumbs ul li a img {
+    vertical-align: top;
 }
 
 
diff --git a/galleryformatter/theme/galleryformatter.js b/galleryformatter/theme/galleryformatter.js
index c33640a..748b348 100644
--- a/galleryformatter/theme/galleryformatter.js
+++ b/galleryformatter/theme/galleryformatter.js
@@ -1,38 +1,68 @@
-
 Drupal.behaviors.galleryformatter = {
-  attach: function (context) {
+  attach: function (context, settings) {
     // We must wait for everything to load in order to get images' dimensions.
-    (jQuery)(window).bind('load', function() {
-      (jQuery)('.galleryformatter:not(.gallery-processed)', context).each(function(){
-        Drupal.galleryformatter.prepare(this);
-      }).addClass('gallery-processed');
-    });
+    jQuery('.galleryformatter:not(.gallery-processed)', context).each(function () {
+      Drupal.galleryformatter.prepare(this, settings.galleryformatter[this.id]);
+    }).addClass('gallery-processed');
   }
 };
 
 Drupal.galleryformatter = Drupal.galleryformatter || {};
 
-// setting up the main behaviour
-Drupal.galleryformatter.prepare = function(el) {
+// Setting up the main behaviour.
+Drupal.galleryformatter.prepare = function (el, settings) {
   (function ($) {
-    // var $settings = Drupal.settings.galleryformatter;
-    $el = $(el);
+
+    // By default we assume vertical orientation.
+    var widthOrHeight = 'width';
+    var outerWidthOrHeight = 'outerWidth';
+    var innerWidthOrHeight = 'innerWidth';
+    var topOrLeft = 'left';
+    var scroll = 'scrollLeft';
+
+    if (settings.orientation == 1) {
+      widthOrHeight = 'height';
+      outerWidthOrHeight = 'outerHeight';
+      innerWidthOrHeight = 'innerHeight';
+      topOrLeft = 'top';
+      scroll = 'scrollTop';
+    }
+
+    var $el = $(el);
     var $slides = $('li.gallery-slide', $el);
     var $slideContainer = $('div.gallery-slides', $el);
 
     var $thumbs = $('.gallery-thumbs', $el);
     var $thumbsLi = $('li', $thumbs);
-    var thumbWidth = $thumbsLi.filter(':first').width() + 'px';
-    var liWidth = $thumbsLi.outerWidth(); // includes padding
+    var thumbHeight = $thumbsLi.filter(':first')[widthOrHeight]() + 'px';
+    var liHeight = $thumbsLi[outerWidthOrHeight](true); // includes padding
     var $wrapper = $('.wrapper', $el);
-    var visibleWidth = $wrapper.outerWidth();
+
+    // Since we use fixed image styles, we can get the first
+    // thumb and image and read it sizes for the initial setup
+    var $firstImage = $slideContainer.find('ul li img:first');
+    var $firstThumb = $thumbs.find('.wrapper ul li img:first');
+
+    // Set wrapper width or height based on how many imagen we want display.
+    $wrapper[widthOrHeight]($firstThumb.closest('li')[outerWidthOrHeight](true) * settings.images_by_slide);
+
+    $slideContainer.width($firstImage.width());
+    $slideContainer.find('ul li').width($firstImage.width());
+    $slideContainer.height($firstImage.height());
 
     /*
      * Only start the thumbs carrousel if needed
      */
-    if (($thumbsLi.size() * liWidth) > $thumbs.width()) {
-      $('ul', $thumbs).width('99999px');
-      $thumbs.infiniteCarousel();
+    if (($thumbsLi.size() * liHeight) > $thumbs[widthOrHeight]()) {
+      $('ul', $thumbs)[widthOrHeight]('99999px');
+      $thumbs.infiniteCarousel({
+        widthOrHeight: widthOrHeight,
+        outerWidthOrHeight: outerWidthOrHeight,
+        innerWidthOrHeight: innerWidthOrHeight,
+        topOrLeft: topOrLeft,
+        scroll: scroll
+      });
+
       $thumbsLi = $('li', $thumbs); // we need to reselect because infiniteCarousel inserts new empty li elements if necessary
       // we need to reselect because infiniteCarousel inserts new empty li elements if necessary
       $el = $(el);
@@ -40,27 +70,23 @@ Drupal.galleryformatter.prepare = function(el) {
     }
 
     $thumbsLi = $('li', $thumbs); // we need to reselect because infiniteCarousel inserts new empty li elements if necessary
-
-    $thumbsLi.each(function(){
-      $(this).css({
-          width: thumbWidth
-        });
-    });
+    $thumbsLi.css(widthOrHeight, thumbHeight);
     var $thumbslinks = $('a', $thumbsLi);
 
     /*
      * @TODO:
      * figure out how to get this into proper functions reusing selections
      */
-    $thumbslinks.click(function(e){
-      $hash = $(this.hash);
-      if(!$hash.is(':visible')){
+    $thumbslinks.click(function (e) {
+      var $hash = $(this.hash);
+      if (!$hash.is(':visible')) {
         $thumbsLi.removeClass('active');
         $(this).parent().addClass('active');
         $slides.filter(':visible').fadeOut('slow');
         $hash.fadeIn('slow');
         // set the slide container's height to allow use of portrait images
-        $slideContainer.css("height",$hash.find('img').height());
+        var imgHeight = $hash.find('img').height();
+        $slideContainer.height(imgHeight);
         /*
          * @FIXME
          * Need to figure out a way to update the location bar of the browser, for bookmarking etc, without making the scroll jump
@@ -79,10 +105,10 @@ Drupal.galleryformatter.prepare = function(el) {
     }
     var $locationHash = window.location.hash; // if we are being deeplinked to a specific slide, capture that
 
-    function showFirstSlide(){
+    function showFirstSlide() {
       // Activate the first slide
       $('a', $thumbsLi.filter('.slide-0:not(".cloned")')).trigger('click');
-     }
+    }
 
     // if we have a hash in the url
     if ($locationHash) {
@@ -90,7 +116,7 @@ Drupal.galleryformatter.prepare = function(el) {
       // if the hash corresponds to one of our slides
       if ($slideToShow.length > 0) {
         $slideToShow.show(); //  show that slide
-        $thumbsLi.not($(".cloned")).find("a[href="+$locationHash+"]").parent().addClass('active'); // activate that thumbnail
+        $thumbsLi.not($(".cloned")).find("a[href=" + $locationHash + "]").parent().addClass('active'); // activate that thumbnail
         // set the slide container's height to allow use of portrait images
         $slideContainer.css("height", $slideToShow.find('img').height());
       }
@@ -104,66 +130,67 @@ Drupal.galleryformatter.prepare = function(el) {
       showFirstSlide();
     }
 
-    /*
-     * Create a public interface to move to the next and previous images
+    /**
+     * Creates a public interface to move to the next and previous images.
      */
-    // Shows the previous slide and scrolls to the previous page if necessary
-    $thumbs.bind('showPrev', function (event) {
-      var currentScroll = $wrapper.get(0).scrollLeft;
-      var $prevThumbLi = $thumbsLi.filter('.active').prev(':not(".cloned, .empty, .active")');
+    $thumbs.bind('moveThumb', function (event, direction) {
+
+      var $moveToThisLi = $thumbsLi.filter('.active')[direction](':not(".cloned, .empty, .active")');
+
       // if no results we are on the first element
-      if(!$prevThumbLi.size()) {
+      if (!$moveToThisLi.size()) {
         // select the last one
-        $prevThumbLi = $thumbsLi.not('.empty, .cloned').filter(':last');
-      }
-      var $slideToClick = $('a', $prevThumbLi);
-      var $prevIsVisible = (($prevThumbLi.get(0).offsetLeft >= currentScroll) && ($prevThumbLi.get(0).offsetLeft <= (visibleWidth + currentScroll)));
-      if($prevIsVisible) {
-        $slideToClick.trigger('click');
-      }
-      else {
-        $thumbs.trigger('prev');
-        $slideToClick.trigger('click');
-      }
-    });
-    // Shows the next slide and scrolls to the next page if necessary
-    $thumbs.bind('showNext', function (event) {
-      var currentScroll = $wrapper.get(0).scrollLeft;
-      // this selector could be optimized perhaps, but
-      var $nextThumbLi = $thumbsLi.filter('.active').next(':not(".cloned, .empty, .active")');
-      // if no results we are on the last element
-      if(!$nextThumbLi.size()) {
-        // select the first one
-        $nextThumbLi = $thumbsLi.not('.empty, .cloned').filter(':first');
+        $moveToThisLi = $thumbsLi.not('.empty, .cloned').filter((direction == 'prev' ? ':last' : ':first'));
       }
 
-      var $slideToClick = $('a', $nextThumbLi);
-      var $nextIsVisible = (($nextThumbLi.get(0).offsetLeft >= currentScroll) && ($nextThumbLi.get(0).offsetLeft <= (visibleWidth + currentScroll)));
-      if($nextIsVisible) {
-        var $slideToClick = $('a', $nextThumbLi);
-        $('a', $nextThumbLi).trigger('click');
-      }
-      else {
-        $thumbs.trigger('next');
-        $slideToClick.trigger('click');
-      }
+      var $slideToClick = $('a', $moveToThisLi);
+      var moveThumbsPage = thumbIsOverflowed($wrapper, $moveToThisLi, topOrLeft);
+
+      if (moveThumbsPage) $thumbs.trigger(direction);
+      $slideToClick.trigger('click');
+
     });
 
-    $('.shownext + img', $slideContainer).click(function(){
+    $('.shownext + img', $slideContainer).click(function () {
       $thumbs.trigger('showNext');
     });
 
     if ($slides.length > 1) {
+
       // Setup buttons for next/prev slide
-      $slideButtons = ('<a class="prev-slide slide-button" title="'+ Drupal.t('Previous image') +'">&lt;</a><a class="next-slide slide-button" title="'+ Drupal.t('Next image') +'">&gt;</a>');
+      var $slideButtons = ('<a class="prev-slide slide-button" title="' + Drupal.t('Previous image') + '">&lt;</a><a class="next-slide slide-button" title="' + Drupal.t('Next image') + '">&gt;</a>');
       $('.gallery-slides', $el).append($slideButtons);
+
+      var $btn = $(".slide-button");
+      $btn.css({top: ($firstImage.height() / 2) - ($btn.height() / 2)});
+
       // Trigger the appropiate events on click
-      $('a.prev-slide', $el).click(function(){
-        $thumbs.trigger('showPrev');
+      $('a.prev-slide', $el).click(function () {
+        $thumbs.trigger('moveThumb', ['prev']);
       });
-      $('a.next-slide', $el).click(function(){
-        $thumbs.trigger('showNext');
+
+      $('a.next-slide', $el).click(function () {
+        $thumbs.trigger('moveThumb', ['next']);
       });
     }
+
+    /**
+     * Checks if an element is overflowed.
+     *
+     * @param {jQuery} $overflowBox The container with "overflow" applied.
+     * @param {jQuery} $element the element will be tested.
+     * @param {String} [orientation=top] Indicates if checks are vertical or horizontal.
+     * @returns {boolean} true is element it's out of box's limits (its overflowed)
+     */
+    var thumbIsOverflowed = function ($overflowBox, $element, orientation) {
+      // Dafaults.
+      orientation || (orientation = "top");
+      var wOrH = (orientation == 'left') ? 'width' : 'height';
+      var boxOffset = $overflowBox.offset()[orientation];
+      var boxOffsetAndHimSize = boxOffset + $overflowBox[wOrH]();
+      var elementOffset = $element.offset()[orientation];
+      return (elementOffset >= boxOffsetAndHimSize) || (elementOffset < boxOffset);
+    };
+
   })(jQuery);
-}
+};
diff --git a/galleryformatter/theme/galleryformatter.tpl.php b/galleryformatter/theme/galleryformatter.tpl.php
index b5dbd77..0960f14 100644
--- a/galleryformatter/theme/galleryformatter.tpl.php
+++ b/galleryformatter/theme/galleryformatter.tpl.php
@@ -18,35 +18,38 @@
  * $settings - The settings for galleryformatter as configured for this field instance.
  */
 ?>
-<div class="galleryformatter galleryview galleryformatter-<?php print $settings['style'] ?>">
-  <div class="gallery-slides" style="width: <?php print $dimensions['slides']['width']; ?>px; height: <?php print $dimensions['slides']['height']; ?>px;">
+<div id="<?php print $settings['gallery-id'] ?>" class="galleryformatter galleryview galleryformatter-<?php print $settings['style'] ?>">
+
+  <div class="gallery-slides">
     <div class="gallery-frame">
       <ul>
-      <?php foreach ($slides as $id => $data): ?>
-        <li class="gallery-slide" id="<?php print $data['hash_id']; ?>">
-          <?php print $data['image']; ?>
-          <?php if (!empty($data['title']) || !empty($data['alt'])): ?>
-            <div class="panel-overlay">
-              <div class="overlay-inner">
-                <?php if ($data['alt']): ?><h4><?php print $data['alt']; ?></h4><?php endif; ?>
-                <?php if ($data['title']): ?><h3><?php print $data['title']; ?></h3><?php endif; ?>
+        <?php foreach ($slides as $id => $data): ?>
+          <li class="gallery-slide" id="<?php print $data['hash_id']; ?>">
+            <?php print $data['image']; ?>
+            <?php if (!empty($data['title']) || !empty($data['alt'])): ?>
+              <div class="panel-overlay">
+                <div class="overlay-inner">
+                  <?php if ($data['alt']): ?><h4><?php print $data['alt']; ?></h4><?php endif; ?>
+                  <?php if ($data['title']): ?><h3><?php print $data['title']; ?></h3><?php endif; ?>
+                </div>
               </div>
-            </div>
-          <?php endif; ?>
-        </li>
-      <?php endforeach; ?>
-      </ul>
-    </div>
-  </div>
-  <?php if(!empty($thumbs)): ?>
-  <div class="gallery-thumbs" style="width: <?php print $dimensions['slides']['width']; ?>px;">
-    <div class="wrapper">
-      <ul>
-        <?php foreach ($thumbs as $id => $data): ?>
-          <li class="slide-<?php print $id; ?>" style="width: <?php print $dimensions['thumbs']['width']; ?>px;"><a href="#<?php print $data['hash_id']; ?>"><?php print $data['image']; ?></a></li>
+            <?php endif; ?>
+          </li>
         <?php endforeach; ?>
       </ul>
     </div>
   </div>
+
+  <?php if (!empty($thumbs)): ?>
+    <div class="gallery-thumbs">
+      <div class="wrapper">
+        <ul>
+          <?php foreach ($thumbs as $id => $data): ?>
+            <li class="slide-<?php print $id; ?>"><a href="#<?php print $data['hash_id']; ?>"><?php print $data['image']; ?></a></li>
+          <?php endforeach; ?>
+        </ul>
+      </div>
+    </div>
   <?php endif; ?>
+
 </div>
diff --git a/galleryformatter/theme/infiniteCarousel.js b/galleryformatter/theme/infiniteCarousel.js
index f2c759e..d669371 100644
--- a/galleryformatter/theme/infiniteCarousel.js
+++ b/galleryformatter/theme/infiniteCarousel.js
@@ -1,4 +1,3 @@
-
 /**
  * Plugin written by the great jqueryfordesigners.com
  * http://jqueryfordesigners.com/jquery-infinite-carousel/
@@ -6,86 +5,87 @@
  * Slightly addapted for our use case
  */
 (function ($) {
-  $.fn.infiniteCarousel = function () {
+  $.fn.infiniteCarousel = function (settings) {
 
-      function repeat(str, num) {
-          return new Array( num + 1 ).join( str );
-      }
+    function repeat(str, num) {
+      return new Array(num + 1).join(str);
+    }
 
-      return this.each(function () {
+    return this.each(function () {
 
-          var $wrapper = $('> div', this).css('overflow', 'hidden'),
-              $slider = $wrapper.find('> ul'),
-              $items = $slider.find('> li'),
-              $single = $items.filter(':first'),
+      var $wrapper = $('> div', this).css('overflow', 'hidden'),
+        $slider = $wrapper.find('> ul'),
+        $items = $slider.find('> li'),
+        $single = $items.filter(':first'),
 
-              singleWidth = $single.outerWidth(),
-              visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
-              currentPage = 1,
-              pages = Math.ceil($items.length / visible);
+        singleHeight = $single[settings.outerWidthOrHeight](),
+        visible = Math.ceil($wrapper[settings.innerWidthOrHeight]() / singleHeight), // note: doesn't include padding or border
+        currentPage = 1,
+        pages = Math.ceil($items.length / visible);
 
+      // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
+      if (($items.length % visible) != 0) {
+        $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
+        $items = $slider.find('> li');
+      }
 
-          // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
-          if (($items.length % visible) != 0) {
-              $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
-              $items = $slider.find('> li');
+      // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
+      $items.filter(':first').before($items.slice(-visible).clone().addClass('cloned'));
+      $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
+
+      // 3. Set the left position to the first 'real' item
+      $wrapper[settings.scroll](singleHeight * visible);
+
+      // 4. paging function
+      function gotoPage(page) {
+        var dir = page < currentPage ? -1 : 1,
+          n = Math.abs(currentPage - page),
+          left = singleHeight * dir * visible * n;
+
+        var animateSettings = {};
+        animateSettings[settings.scroll] = '+=' + left;
+
+        $wrapper.filter(':not(:animated)').animate(animateSettings, 500, function () {
+          if (page == 0) {
+            $wrapper[settings.scroll](singleHeight * visible * pages);
+            page = pages;
+          } else if (page > pages) {
+            $wrapper[settings.scroll](singleHeight * visible);
+            // reset back to start position
+            page = 1;
           }
 
-          // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
-          $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
-          $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
-          $items = $slider.find('> li'); // reselect
-
-          // 3. Set the left position to the first 'real' item
-          $wrapper.scrollLeft(singleWidth * visible);
-
-          // 4. paging function
-          function gotoPage(page) {
-              var dir = page < currentPage ? -1 : 1,
-                  n = Math.abs(currentPage - page),
-                  left = singleWidth * dir * visible * n;
-
-              $wrapper.filter(':not(:animated)').animate({
-                  scrollLeft : '+=' + left
-              }, 500, function () {
-                  if (page == 0) {
-                      $wrapper.scrollLeft(singleWidth * visible * pages);
-                      page = pages;
-                  } else if (page > pages) {
-                      $wrapper.scrollLeft(singleWidth * visible);
-                      // reset back to start position
-                      page = 1;
-                  }
-
-                  currentPage = page;
-              });
-
-              return false;
-          }
+          currentPage = page;
+        });
 
-          $wrapper.after('<a class="arrow back" title="'+ Drupal.t('Previous page') +'">&lt;</a><a class="arrow forward" title="'+ Drupal.t('Next page') +'">&gt;</a>');
-
-          // 5. Bind to the forward and back buttons
-          $('a.back', this).click(function () {
-              return gotoPage(currentPage - 1);
-          });
-
-          $('a.forward', this).click(function () {
-              return gotoPage(currentPage + 1);
-          });
-
-          // create a public interface to move to a specific page
-          $(this).bind('goto', function (event, page) {
-              gotoPage(page);
-          });
-
-          // custom events to trigger next and prev pages
-          $(this).bind('next', function () {
-            gotoPage(currentPage + 1);
-          });
-          $(this).bind('prev', function () {
-            gotoPage(currentPage - 1);
-          })
+        return false;
+      }
+
+      $wrapper.after('<a class="arrow back" title="' + Drupal.t('Previous page') + '">&lt;</a><a class="arrow forward" title="' + Drupal.t('Next page') + '">&gt;</a>');
+
+      // 5. Bind to the forward and back buttons
+      $('a.back', this).click(function () {
+        return gotoPage(currentPage - 1);
       });
+
+      $('a.forward', this).click(function () {
+        return gotoPage(currentPage + 1);
+      });
+
+      // create a public interface to move to a specific page
+      $(this).bind('goto', function (event, page) {
+        gotoPage(page);
+      });
+
+      // custom events to trigger next and prev pages
+      $(this).bind('next', function () {
+        gotoPage(currentPage + 1);
+      });
+
+      $(this).bind('prev', function () {
+        gotoPage(currentPage - 1);
+      })
+
+    });
   };
 })(jQuery);
-- 
1.7.10.4

