diff --git a/public/opac/java/slider_navigation/slider_navigation.js b/public/opac/java/slider_navigation/slider_navigation.js
index c20e8954207851c2ecc6b88f7d4a8d3cd3eaa65c..120b292cea64fbe4be6594f4e32e68de87c12a4a 100755
--- a/public/opac/java/slider_navigation/slider_navigation.js
+++ b/public/opac/java/slider_navigation/slider_navigation.js
@@ -25,103 +25,103 @@
 
     var html = $(this);
     var articles = html.find('article');
-
-    if(!articles.length>0){
-      return $(this);
-    }
     
-    var article_width = width;
-    var article_height = height;
-    var article_size = 'width:'+article_width+'px;height:'+article_height+'px';
-
-    prepareHtml();
-
-    var news_row = html.find('div.news_row');
-    var position = 0;
-
-    var strategy;
-
-    initArticles();
-
-    strategy = getStrategy();
-
-    html = strategy.createButton();
-    html = strategy.implementsButtons();
+    if(!articles.length>0)
+      return html;
+    
+    var properties = new SliderProperties({'url' : url,
+					   'width' :  width,
+					   'height' : height,
+					   'strategy_label' : button_strategy});
+    
+    html = upgradeHtml(html);
+    html = setWindowAndArticleSize(html, properties.article_size);
+    html = placeArticlesWithPosition(html, properties.position, properties.width);
 
+    var strategy = getStrategy(properties.strategy_label);
+    html = strategy.generateButtons(html);
+    html = strategy.implementsButtons(html, properties);
 
 
 
-    function getStrategy() {
-      if(button_strategy === "next_previous")
-	return new Strategy_Next_Previous(html, articles, article_width, news_row);
+    function getStrategy(strategy) {
+      if(strategy === "next_previous")
+	return new Strategy_Next_Previous();
       
-      if(button_strategy ==="preview")
-	return new Strategy_Preview(html, articles, article_width, position, news_row)
+      if(strategy ==="preview")
+	return new Strategy_Preview()
 
-      return new Strategy(html, articles, article_width, position, news_row);
+      return new Strategy();
 
     }
 
 
-    function prepareHtml() {
+    function upgradeHtml(html) {
       html.find('div.article_full_separator').remove();
-      articles.wrapAll('<div class="news_row"></div>');
+      html.find('article').wrapAll('<div class="news_row"></div>');
       html.find('div.news_row').wrap('<div class="window"></div>');
       html.find('div.window').wrap('<div class="slider_navigation"></div>');
       html.find('div.slider_navigation').append('<div class="slider_navigation_controls"></div>');
-      setSize();
+      return html;
     }
 
     
-    function setSize() {
-      articles.attr('style', article_size);
-      html.find('div.window').attr('style', article_size);
+    function setWindowAndArticleSize(html, size) {
+      html.find('article').attr('style', size);
+      html.find('div.window').attr('style', size);
+      return html;
     }
 
 
-    function initArticles() {
-      news_row.css('margin-left', position+'px');
-      news_row.width(articles.length*article_width);
+    function placeArticlesWithPosition(html, position, width) {
+      html.find('div.news_row').css('margin-left', position+'px');
+      html.find('div.news_row').width(html.find('article').length * width);
+      return html;
     }
   };
 
 
-  var initCssForHorizontalSlideOnElement = function(element, length) {
-    return element.css({'margin-left': length+'px', 
-			'transition-property': 'all', 
-			'transition-duration': '0.8s'});
+
+  
+  function initCssForHorizontalSlide(length) {
+    return {'margin-left': length+'px', 
+	    'transition-property': 'all', 
+	    'transition-duration': '0.8s'};
+  }
+
+
+
+  
+  function SliderProperties(options, jquery) {
+    this.url = options.url;
+    this.width = options.width;
+    this.height = options.height;
+    this.strategy_label = options.strategy_label;
+    this.article_size = 'width:' + this.width + 'px;height:' + this.height + 'px';
+    return this;
   }
 
 
-  var Strategy = function(html, articles, article_width, position, news_row) {
-    var html = html;
-    var articles = articles;
-    var article_width = article_width;
-    var position = position;
-    var news_row = news_row;
+
+
+  function Strategy() {
     
-    this.createButton = function() {
-      var slider_controls = html.find('div.slider_navigation_controls');
-      articles.each(function(index) {
-	slider_controls.append('<div class="slider_button" data-article="'+(index+=1)+'"></div>');
+    this.generateButtons = function(html) {
+      html.find('article').each(function(index) {
+	html.find('div.slider_navigation_controls').append('<div class="slider_button" data-article="'+(index+=1)+'"></div>');
       });
       return html;
     };
 
-    this.implementsButtons = function() {
+    this.implementsButtons = function(html, properties) {
       html.find('div[data-article=1]').addClass('selected');
+      html.find('div.news_row').css(initCssForHorizontalSlide(0));
       var current_position = 0;
-
       html.find('div[data-article]').click(function() {
-	
 	html.find('div[data-article]').removeClass('selected');
 	$(this).addClass('selected');
-
 	current_position = $(this).data('article');
-
-	position = (-1) * (current_position-1) * article_width;
-	
-	initCssForHorizontalSlideOnElement(news_row, position);
+	html.find('div.news_row').css(initCssForHorizontalSlide(((-1) * ((current_position-1) * properties.width))));
       });
       return html;
     }
@@ -129,40 +129,35 @@
 
 
 
-  var Strategy_Next_Previous = function(html, articles, article_width, news_row) {
-    var html = html;
-    var articles = articles;
-    var article_width = article_width;
-    var news_row = news_row;
-
-    this.createButton = function() {
+  function Strategy_Next_Previous() {
+    this.generateButtons = function(html) {
       html.find('div.slider_navigation_controls')
 	.append('<div class="slider_button" data-event="previous"></div>')
 	.append('<div class="slider_button" data-event="next"></div>');
       return html;
     };
 
-    this.implementsButtons = function() {
-      var right_cleat = ((articles.length * article_width) - article_width) * (-1);
+    this.implementsButtons = function(html, properties) {
+      var right_cleat = ((html.find('article').length * properties.width) - properties.width) * (-1);
       var left_cleat = 0;
-
+      html.find('div.news_row').css(initCssForHorizontalSlide(0));
       html.find('div[data-event="next"]').click(function() {
-	var old_margin = parseInt( news_row.css('margin-left'));
-	var length = (old_margin > right_cleat && (old_margin % article_width == 0)) 
-	  ? old_margin - article_width 
+	var old_margin = parseInt( html.find('div.news_row').css('margin-left'));
+	var length = (old_margin > right_cleat && (old_margin % properties.width == 0)) 
+	  ? old_margin - properties.width 
 	  : right_cleat;
 
-	initCssForHorizontalSlideOnElement(news_row, length);
+	html.find('div.news_row').css(initCssForHorizontalSlide(length));
       });
 
 
       html.find('div[data-event="previous"]').click(function() {
-	var old_margin = parseInt( news_row.css('margin-left'));
-	var length = (old_margin < left_cleat && (old_margin % article_width == 0)) 
-	  ? old_margin + article_width 
+	var old_margin = parseInt( html.find('div.news_row').css('margin-left'));
+	var length = (old_margin < left_cleat && (old_margin % properties.width == 0)) 
+	  ? old_margin + properties.width 
 	  : 0;
 
-	initCssForHorizontalSlideOnElement(news_row, length);
+	html.find('div.news_row').css(initCssForHorizontalSlide(length));
       });
 
       return html;
@@ -171,16 +166,9 @@
 
 
 
-  var Strategy_Preview = function(html, articles, article_width, position, news_row) {
-    var html = html;
-    var articles = articles;
-    var article_width = article_width;
-    var position = position;
-    var news_row = news_row;
-    
-    this.createButton = function() {
-      var slider_controls = html.find('div.slider_navigation_controls');
-      articles.each(function(index) {
+  function Strategy_Preview() {
+    this.generateButtons = function(html, properties) {
+      html.find('article').each(function(index) {
 	var image_url = $(this).find('.article_content img').attr('src');
 	var title = $(this).find('header h2').text();
 
@@ -191,27 +179,13 @@
 	if(!image_url) {
 	  image_url= baseUrl + '/public/opac/images/buttons/no_preview.png';
 	}
-	slider_controls.append('<div class="preview_button" data-article="'+(index+=1)+'"><img src='+image_url+'></img><span>'+title+'</span></div>');
+	html.find('div.slider_navigation_controls').append('<div class="preview_button" data-article="'+(index+=1)+'"><img src='+image_url+'></img><span>'+title+'</span></div>');
       });
       return html;
     };
 
-    this.implementsButtons = function() {
-      html.find('div[data-article=1]').addClass('selected');
-      var current_position = 0;
-
-      html.find('div[data-article]').click(function() {
-	
-	html.find('div[data-article]').removeClass('selected');
-	$(this).addClass('selected');
-
-	current_position = $(this).data('article');
-
-	position = (-1) * (current_position-1) * article_width;
-	
-	initCssForHorizontalSlideOnElement(news_row, position);
-      });
-      return html;
+    this.implementsButtons = function(html, properties) {
+      return (new Strategy()).implementsButtons(html, properties);
     }
   };
 
diff --git a/public/opac/java/slider_navigation/tests/preview_slider_test.js b/public/opac/java/slider_navigation/tests/preview_slider_test.js
index e59adb5f3101b889cc61b7cc98904b9bd6626f2a..5e957218636065c683281779a9d3f943c9070f84 100644
--- a/public/opac/java/slider_navigation/tests/preview_slider_test.js
+++ b/public/opac/java/slider_navigation/tests/preview_slider_test.js
@@ -32,16 +32,16 @@ QUnit.module('slider_navigation', {
 });
 
 
-test('first button should have preview.png as background', function() {
-  deepEqual(fixture.find('div.preview_button[data-article="1"][style="background: url(preview.png) no-repeat center;"]').length, 1, fixture.html());
+test('first button should have preview.png as img', function() {
+  deepEqual(fixture.find('div.preview_button[data-article="1"]').find('img').attr('src'), 'preview.png', fixture.html());
 });
 
 
 test('second button should have playa.png as background', function() {
-  deepEqual(fixture.find('div.preview_button[data-article="2"][style="background: url(../folder/playa.png) no-repeat center;"]').length, 1, fixture.html());
+  deepEqual(fixture.find('div.preview_button[data-article="2"]').find('img').attr('src'), '../folder/playa.png', fixture.html());
 });
 
 
 test('third button should have no_preview.png as background', function() {
-  deepEqual(fixture.find('div.preview_button[data-article="3"][style="background: url(../public/opac/images/buttons/no_preview.png) no-repeat center;"]').length, 1, fixture.html());
+  deepEqual(fixture.find('div.preview_button[data-article="3"]').find('img').attr('src'), '../public/opac/images/buttons/no_preview.png', fixture.html());
 });