Event.onReady( function(){
	var mainSliderBlock = $('main_slider_block'),
		mainSlider = $('main_slider'),
		mainLayer = $('content').down('.line'),
		mainLayerWidth = mainLayer.getWidth(),
		holderWidth = $('content').down('.content-scope').getWidth(),
		slider, sliderValue = 0,
		sliderWidthFull = 0,		// полная ширина контента для прокрутки
		sliderWidth = 0,			// с вычетом видимой части (реальная)
		stepAbs = 15,
		positionOld = 0,
		i, N,
		onWindowResize;

	//////////////////////////  SLIDER MOVEMENT  ////////////////////////////
	for(i = 0, N = contentBlockWidths.size(); i < N; i++) {
		sliderWidth += contentBlockWidths[i];
	}
	sliderWidthFull = sliderWidth;
	mainLayer.setStyle({width: sliderWidth + 'px'});
	sliderWidth -= holderWidth;
	mainLayerWidth = mainLayer.getWidth();
	
	// On window resize
	Event.observe(window, 'resize', onWindowResize = function(){
		holderWidth = $('content').down('.content-scope').getWidth();
		sliderWidth = sliderWidthFull - holderWidth;
		
		if( (mainLayerWidth - holderWidth) < 50 ) {
			mainSliderBlock.hide();
			return;
		}
		mainSliderBlock.show();

		if(slider) {
			slider.range.end = sliderWidth;
			slider.trackLength = mainSlider.getWidth();
			slider.setValue( slider.value );
		}
		else slider = new Control.Slider(mainSlider.down('.handle'), mainSlider, {
			range: $R(0, sliderWidth),
			sliderValue: sliderValue,
			onSlide: function(value) {
				sliderValue = positionOld = value;
				mainLayer.setStyle({ marginLeft: -value + 'px' });
			},
			onChange: function(value) {
				var Jump = Math.abs(sliderValue - value) > stepAbs;
				if(Jump) {
					sliderMove(value);
				}
				sliderValue = value;
				if(!Jump) mainLayer.setStyle({ marginLeft: -value + 'px' });
			}
		});
	});
	onWindowResize();
	if(!mainSliderBlock.visible()) return;
	
	function sliderMove(newPosition) {
		var position = positionOld;
		
		if(isSlideNow) return;
		isSlideNow = true;
		
		// smooth movement
		/*var track = (newPosition - position),
			trackAbs = Math.abs(track),
			isShortTrack = trackAbs < 150,
			N = isShortTrack? 10 : 50,
			step = track / N,
			timeout = isShortTrack? 200 / N : 1000 / N,
			sliderStepFunc;*/
		
		// constant speed movement
		var track = (newPosition - position),
			trackAbs = Math.abs(track),
			step = (track >= 0)? stepAbs : -stepAbs,
			N = Math.ceil(track / step),
			timeout = 1,
			sliderStepFunc;
		
		// track is to short - fastest jump
		if(trackAbs <= stepAbs) {
			N = 1;
			step = trackAbs;
			timeout = 10;
		}
		
		sliderStepFunc = function(){
			window.setTimeout( function(){
				position += step;
				slider.setValue( position );
				positionOld = position;
				N--;
				if(N) sliderStepFunc();
				else {
					slider.setValue( newPosition );
					isSlideNow = false;
				}
			}, timeout);
		}
		sliderStepFunc();
	}
	
	var contentCurBlockIndx = 0, isSlideNow = false;
	function sliderMoveByButtons(direction) {
		var i, N, point = 0, leftPoint = 0, rightPoint = 0, rightMaxPoint = 0, newPosition,
			holderWidth = $('content').down('.content-scope').getWidth(),
			position = slider.value; ///[0-9]+/.exec(mainLayer.getStyle('marginLeft')) * 1;
		
		if(isSlideNow) return;
		
		for(i = 0, N = contentBlockWidths.size(); i < N; i++) {
			point += contentBlockWidths[i];
			if( (point < position) ) leftPoint = point;
			else if( !rightPoint && (point > position) ) rightPoint = point;
		}
		rightMaxPoint = point;
		if(!rightPoint) rightPoint = rightMaxPoint;
		if(rightPoint > sliderWidth) rightPoint = sliderWidth;
		if(rightPoint < 0) rightPoint = 0;
		// move the slider
		newPosition = direction == 'left'? leftPoint : rightPoint;
		//slider.setValue(newPosition);

		sliderMove(newPosition);
	};
	
	Event.observe(mainSliderBlock.down('.backward'), 'click', function(event){
		sliderMoveByButtons('left');
	});
	
	Event.observe(mainSliderBlock.down('.forward'), 'click', function(event){
		sliderMoveByButtons('right');
	});
} );
//---------------------------------------------------------------------------