// Correctif Effect.Move de scriptaculous
Effect.Move2 = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      x:    0,
      y:    0,
      mode: 'relative'
    }, arguments[1] || { });
    this.start(options);
  },
  setup: function() {
    this.element._madePositioned = true;
    this.element.style.position = 'static';
    this.originalLeft = parseFloat(this.element.getStyle('marginLeft') || '0');
    if (this.options.mode == 'absolute') {
      this.options.x = this.options.x - this.originalLeft;
    }
  },
  update: function(position) {
    this.element.setStyle({
      marginLeft: (this.options.x  * position + this.originalLeft).round() + 'px'
    });
  }
});

function getTotImgWidth(container){
  var pContainer = $(container.parentNode);
  var larg=pContainer.getWidth();
  var calclarg=0;
  var pas=5;

  var lst = container.select('img');
  lst.each(function(item) {
	calclarg=calclarg+item.getWidth()+pas;
  });
  calclarg=calclarg-pas;
  return calclarg;
}

function moveToPrevious(idcont)
{
  var pContainer = $($(idcont).parentNode);
  var totimgslength=getTotImgWidth($(idcont));
  var positionx = parseFloat( $(idcont).getStyle('marginLeft') || '0');
  var largcontainer=pContainer.getWidth();

  if ( totimgslength > largcontainer ) {
	if ( positionx < -180 ) {
  		new Effect.Move2(idcont, { x: 180, y: 0, transition: Effect.Transitions.sinoidal });
	} else if ( positionx < 0 ) {
		var restetranslat=-1*positionx;
  		new Effect.Move2(idcont, { x: restetranslat, y: 0, transition: Effect.Transitions.sinoidal });
	}
  } 
}

function moveToNext(idcont)
{
  var pContainer = $($(idcont).parentNode);
  var totimgslength=getTotImgWidth($(idcont));
  var positionx = parseFloat( $(idcont).getStyle('marginLeft') || '0');
  var largcontainer=pContainer.getWidth();

  if ( totimgslength > largcontainer ) {
	var restatrans = totimgslength+positionx-largcontainer;
	if ( restatrans >= 180 ) {
  		new Effect.Move2(idcont, { x: -180, y: 0, transition: Effect.Transitions.sinoidal });
	} else if ( restatrans > 0 ) {
		var trans = -1*restatrans;
  		new Effect.Move2(idcont, { x: trans , y: 0, transition: Effect.Transitions.sinoidal });
	}
  }
}
