/* моталка */

/* зависит от mootools.js*/

if(typeof window.Class != "undefined"){

var viewerWidth, scrollWidth;
var viewerContent;
var viewerViewport;
var viewerScroll;

Fx.MyScroll = Fx.Scroll.extend({

	compute: function(from, to){
		return this.options.transition(this.cTime, from, (to - from), this.options.duration, this.options.params );
	},

  smoothStop: function(){
    //если времени осталось и так мало, то тормознуть          
    var T = 500;
		var time = new Date().getTime();

	  var speed = this.options.transition(this.cTime + 1/this.options.fps, this.from[0], (this.to[0] -this.from[0]), this.options.duration) - this.now[0];
	  
	  this.options.params = { v: speed * this.options.fps };

	  this.stop();        
	  //alert(this.options.params.v);
	  //alert(this.options.params.v * T);
	  return;
	  
	  this.options.transition = Fx.Transitions.square;
	  this.from[0] = this.now[0];
	  this.to[0]   = this.now[0] + this.options.params.v * T/4;
	  this.cTime = 0;
	  this.options.duration = T;
  }

});

Fx.Transitions.square = function(t, b, c, d, params){
    //Квадратичное замедление
    //вызывается (this.cTime, from, (to - from), this.options.duration);
    //выдать расстояние от времени
    // .        .    .  . ..
		// return b + v*t ( c - v*t )*t*t / d*d
		// нужно ввести параметры для этой функции
		return b + params.v*t ( c - params.v*d )*t*t / d*d;
	};

function viewerInit(){
  if (viewerWidth) return;

  viewerContent = $('viewer-content');
  viewerViewport = $('viewer-viewport');
  viewerViewport.scrollLeft = 0;
  viewerScroll = new Fx.MyScroll(viewerViewport,{duration:3000});
  
  viewerWidth = 9999;

  // получить Element.getOffsets для последнего элемента 
  viewerContent.setStyle('width', viewerWidth+'px');

  lis = viewerContent.getElements('li');
  el = lis[lis.length-1];
  viewerWidth = el.getLeft()+el.offsetWidth - viewerContent.getLeft() + 10;
  scrollWidth = viewerWidth - viewerViewport.offsetWidth + (window.IE?10:0);

  if ( viewerWidth < viewerViewport.offsetWidth ) {
    $('viewer-right').onmouseover = null;
    $('viewer-right').onmouseout = null;
    $('viewer-right').onclick = null;
    $('viewer-right').addClass('nohand');
    $('viewer-left').onmouseover = null;
    $('viewer-left').onmouseout = null;
    $('viewer-left').onclick = null;
    $('viewer-left').addClass('nohand');
  }  
  
  viewerContent.setStyle('width', viewerWidth+'px');
  viewerViewport.scrollLeft = 0;
}


function viewerGoRight( ){
  viewerScroll.options.duration = viewerWidth-viewerViewport.scrollLeft;
  viewerScroll.options.transition=Fx.Transitions.sineInOut,
  viewerScroll.scrollTo( scrollWidth, 0 );
}

function viewerGoLeft( ){
  viewerScroll.options.duration = viewerViewport.scrollLeft;
  viewerScroll.options.transition=Fx.Transitions.sineInOut,
  viewerScroll.toLeft();
}

function viewerStop( ){
  viewerScroll.smoothStop();
}

if (Window) Window.onDomReady(viewerInit);

}

