/*
**	slider library based on SimpleSlide
**	Author      : Tobias Wallin, <www.gravita.se> <http://tobiaswallin.com/files/SlideShow/documentation.php>
**	Modified by :  Valerian Kalafate, <vkalafate@i-medias.fr>
**	
**	License:
**		MIT-style license
**    <http://www.opensource.org/licenses/mit-license.php>
*/

var hslider_init = {
  hinit: function()
  {
    if($('block_scroller') && $('slider_main')) {
      this.slider = new hslider("slider_main", {duration: 1000});
      
      if($('slider:next') && $('slider:prev')) {
        $('slider:next').onclick = this.slide_next.pass($('slider:next'), this);
        $('slider:prev').onclick = this.slide_prev.pass($('slider:prev'), this);
      }
      
      this.thumb_init();
      this.slider.slide_reset();
      this.slider_show();
      
      if($('slideto')) {
        var slideto = $('slideto');
        this.slider.slide_to(slideto.rel);
      }
    }
  },
  slide_next: function(el) {
    this.slider.slide('next');
    return false;
  },
  slide_prev: function(el) {
    this.slider.slide('prev');
    return false;
  },
  slider_show: function() {
    $('block_scroller').setStyle('display', 'block');
  },
  thumb_init: function() {
    $A(document.getElementsByTagName('div')).each(function(el) {
      if(el.id && el.id.test('^divimage:')) {
        var divsrcnum = el.id.replace(/divimage:/, '');
        if($('src:'+divsrcnum)) {
          $ES('a', 'divimage:'+divsrcnum).each(function(sel) {
            if(sel.rel && sel.id.test('^src:'+divsrcnum)) {
              var imgsrc = 'url('+sel.rel.replace(/src:/, '')+')';
              var tmbdst = 'divimage:'+divsrcnum;
              $(tmbdst).setStyle('background-image', imgsrc);
            }
          }, this);
        }
      }
    }, this);
  }
};

var hslider = new Class({
	initialize: function(container, options) {
		this.container = $(container);
		this.options = options;
		this.forceduration = 1;
	},
	slide_to: function(to) {
	 var child;
	 var children;
	 var nodetogo = to.toInt();
	 
	 if(nodetogo > 0) {
	   children = this.container.getChildren().getChildren()[0];
	   children.each(function(e) {
			if(e.id == "currentChild") {
				child = e;
			}
		});
		
		if(this.container.getChildren()[0].getChildren()[nodetogo]) {
     child = this.container.getChildren()[0].getChildren()[nodetogo];
     this.scroll(this.container, children, child);
     this.slide_prev_button_showhide(1);
    }
	 }
	},
	slide_reset: function() {
	 var child;
	 var children;

   children = this.container.getChildren().getChildren()[0];
	 children.each(function(e) {
			if(e.id == "currentChild") {
				child = e;
			}
	 });

   this.forceduration = 0;
   
	 if(this.container.getChildren()[0].getChildren()[0]) {
	   child = this.container.getChildren()[0].getChildren()[0];
	   if(child) {
	     this.scroll(this.container,children,child);
	   }
	   
	   this.slide_prev_button_showhide(0);
	 }
	},
	slide_next_button_showhide: function(action) {
    if(action == 0) { //disable
      if($('slidernextbutton')) {
        var el = $('slidernextbutton');
        $(el).setStyle('visibility', 'hidden');
      }
    }
    if(action == 1) { //enable
      if($('slidernextbutton')) {
        var el = $('slidernextbutton');
        $(el).setStyle('visibility', 'visible');
      }
    }
  },
  slide_prev_button_showhide: function(action) {
    if(action == 0) { //disable
      if($('sliderprevbutton')) {
        var el = $('sliderprevbutton');
        $(el).setStyle('visibility', 'hidden');
      }
    }
    if(action == 1) { //enable
      if($('sliderprevbutton')) {
        var el = $('sliderprevbutton');
        $(el).setStyle('visibility', 'visible');
      }
    }
  },
	slide: function(direction)
  {
		var child;		
		var children;
    this.forceduration = 1;
    
    children = this.container.getChildren().getChildren()[0];
		children.each(function(e) {
			if(e.id == "currentChild") {
				child = e;
			}
		});
		
		if(!child)
    {
      if(direction == "next") {
        child = children[0].getNext();
			}
			else if(direction == "prev") {
			 child = this.container.getChildren()[0].getLast();
			}
		}
    else
    {
      if(direction == "next") {
					var lastElement;
          lastElement = this.container.getChildren()[0].getLast();
          
          if(lastElement != child) {
            child = child.getNext();
            this.slide_prev_button_showhide(1);
          }
			}
			else if(direction == "prev") {
					var firstElement;
          firstElement = this.container.getChildren()[0].getFirst();
          if(firstElement != child) {
            child = child.getPrevious();
          }
			}
		}

		if(child) {
			this.scroll(this.container,children,child);
		}
	},
	scroll: function(container,children,child)
  {
    var sduration = 1000;
    if(this.forceduration == 0) {
      sduration = 0;
    }
    
		var scroll = new Fx.Scroll(container,{duration: sduration, onComplete: function()
    {
			children.each(function(e) {
				e.id = "";
			});
			child.id = "currentChild";
			
		}}).toElement(child);
		
		var lastElement = container.getChildren()[0].getLast();
		if(lastElement == child) {
			 this.slide_next_button_showhide(0);
		} else {
		  this.slide_next_button_showhide(1);
		}
		
		firstElement = container.getChildren()[0].getFirst();
		if(firstElement == child) {
		  this.slide_prev_button_showhide(0);
		}
	}
});

Window.onLoad = function() {
  Window.onDomReady(hslider_init.hinit.bind(hslider_init));
}

Window.onLoad();

