

/* ****************************
*
*	Навешиваем обработчики и инициализаторы
*
***************************** */




// зто создаем объекты-карусельки
function initializeSlider(liWidth, liMargin)
{
	var galleries = new Array();
	galleries = $$('table.gallery');
	
	for(a=0;a<galleries.length;a++)
	{
		var id = galleries[a].id;
		scroll[id] = new multiSlider(id,{
			liWidth: liWidth,
			liMargin: liMargin,
			startPoint: startPoint.toInt()
		});
	}
	

}


/* ********************************************
*
*	  начало слайдера 
*
********************************************* */

function scroll2Right(id)
{
	scroll[id].scrollRight();
}

function scroll2Left(id)
{
	scroll[id].scrollLeft();
}

function setLength(id)
{
	scroll[id].updateListLength();
}

function setStartPoint()
{
	var sl = $$('.slidercontainer');
	var startPoint = sl[0].getScroll().x;
	var cook = Cookie.write('startPoint', startPoint);
	
}




/* ***************************
*
* класс для нескольких каруселек на одной странице
* html должен быть такой
*
* <table cellpadding=0 cellspacing=0  class="gallery" id="%id%">
*		<tr>
*			<td class="gallery-arr-l"  onclick="scroll_to(%id%, 'left')">
*				<img class="slider_arrow" src="/gif/l.gif">
*			</td>
*			<td align="center">
*				<div class="browser">	
*					<div class="slidercontainer" id="slidercontainer_%id%">
*						<ul class="slider_list" id="slider_list_%id%">
*							<li><a.....><img...>
*
****************************** */

var scroll = new Array();
startPoint = Cookie.read('startPoint');
if(!startPoint) startPoint = 0;


var multiSlider = new Class({

	Implements: [Events, Options],

	options: {
		liWidth: 98,
		liMargin: 0,
		startPoint: false,
		fixWidth: false

	},
	initialize: function (id){
			var params = Array.link(arguments, {options: Object.type, elements: $defined});
			this.setOptions(params.options || null);
			this.id = id;
			this.li = 5;// кол целых фот. считется дальше. это от бады
			
			
			
			//this.updateListLength();
			this.setListLength();//устанавливаем ширину видимой часи слайдера
			
			/* идея такая:
				считаем количество li и умножем на ширину,
				для простоты ширину li и отступы задаем при инициализации
			*/
			this.fixWidth = this.options.fixWidth;
			var str = '#' + id + ' .li_slider';//формируем строку для фоток с класом foto_slider внутри элемнта с #id
		
			var ss = new Array();
			$$(str).each(function(item,index){
				if(item.getStyle('display') != 'none') ss[index] = item;
			});
			str = ss;
			this.fotos = $$(str).length;
			//ставим ид на li для навигации
			$$(str).each(function(item,index){
				item.setProperty('id', 'li_' + index);
				//alert(index);
			});
			
			var sliderLength = (this.options.liWidth + (this.options.liMargin * 2))* this.fotos;
			
			
			$('slider_list_' + id).style.width = sliderLength + 'px';

			var slidercontainer = 'slidercontainer_' + id;
			var slider = new Fx.Scroll(slidercontainer, {
				duration: 2000,
				link: 'cancel',
				transition: Fx.Transitions.Quad.easeInOut
			});
				
			this.scroll = new Hash({
						'id': id,
						'slider': slider,
						'x': 0,
						'fotos': this.fotos
					});
			
			
			
			if(this.options.startPoint) 
				this.scroll.slider.set(this.options.startPoint,0);
			else this.scroll.slider.toLeft();
			
		if(this.fotos < this.intFoto)
		{
			//$$('.gallery-arr').destroy();
			$$('.gallery-arr').setStyle('visibility', 'hidden');
		}
			
			this.setCache(0);//начальная фотка
			
		},

	setListLength: function(){
		//alert(this.id);
		var gallW = $('sider_container_td_' + this.id).getSize().x;
		
		//alert(gallW);
		this.fixWidth = true;
		if(this.fixWidth){
			//считаем ширину фоты
			var li = this.options.liWidth + (this.options.liMargin * 2);
			this.liw = li;
			//кол. целых фот
			this.intFoto = (gallW / li).toInt();
			
			
			gallW = this.intFoto * li;
			
			
		}
		else {

			//считаем ширину фоты
			var li = this.options.liWidth + (this.options.liMargin * 2);
			this.liw = li;
			//кол. целых фот
			this.intFoto = (gallW / li).toInt();
			
			
			//gallW = this.intFoto * li;
			
		}
		
		$('browser_' + this.id).setStyle('width',gallW);
		$('slidercontainer_' + this.id).setStyle('width',gallW);
		$(this.id).setStyle('width','auto');
		
		
	},
	updateListLength: function(){
		//ширина табл 100%, ширина контейнеров 720 чтобы уменьшить
		$(this.id).setStyle('width','100%');
		$('browser_' + this.id).setStyle('width',420);
		$('slidercontainer_' + this.id).setStyle('width',420);
		this.setListLength();
	},
	getCache: function(){
			x = this.scroll.x; 
			return x;
	},
	setCache: function(x){
			this.scroll.x = x;
			return x;
	},
	scrollRight: function(){
			var newEl = this.getCache() + this.intFoto;
			var end = this.fotos - 1;
		
			if(newEl > end) 
			{
				this.setCache(end);
				this.scroll.slider.toRight();
			}
			else{
				this.setCache(newEl);
				//this.scroll.slider.toElement($('li_' + newEl));
				this.scroll.slider.start(this.liw * newEl, 0);
				
			}
			//$('echo').set('text', newEl + ' ' + end);
	},
	scrollLeft: function(){
			var newEl = this.getCache() - (this.intFoto * 2) + 1;
			
			
			if(newEl < 0) 
			{
				this.setCache(0);
				this.scroll.slider.toLeft();
			}
			else{
				this.setCache(newEl);
				//var el = $('li_' + newEl);
				
				//this.scroll.slider.toElement(el);
				this.scroll.slider.start(this.liw * newEl, 0);
				
				//$('echo').set('text', this.liw * newEl);
			}
			//$('echo').set('text', newEl);
	}

});

