var slider_el = new Array();


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

// зто создаем объекты-карусельки
function initializeSlider(liWidth, liMargin)
{
	if(scroll.length > 0) {
		//Не удалось заставить правильно считаться размеры галереи с произвольными картинками.
		//поэтому просто уничтожаем все и создаем объекты заново.
		scroll.each(function(item,index){delete(scroll[index])});
		scroll = new Array();
	}
	var galleries = new Array();
	galleries = $$('.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()
		});
	}
	
	
}

window.addEvent('domready',function(){
	if($('galleryBlckStatic')){
		$('list_next').addEvent('click',function(){
			scroll2Right(104);
		});
		$('list_prev').addEvent('click',function(){
			scroll2Left(104);
		});
	}
});

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

function scroll2Right(id){

	scroll[id].scrollRight();
}

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

function setLength(id){
	initializeSlider();
}

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




/* ***************************
*
* класс для нескольких каруселек на одной странице
* html должен быть такой
*
*<div class="galleryBlck" id="galleryBlck_%parent%">
* <table cellpadding=0 cellspacing=0  class="gallery gallery_block" 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: true

	},
	initialize: function (id){
			var params = Array.link(arguments, {options: Object.type, elements: $defined});
			this.setOptions(params.options || null);
			this.id = id || '104';
			this.storeW = 285;
			if(Browser.Engine.trident && (Browser.Engine.version == 4)) this.is_ie6 = true;
			
			
			var slider = this.addEffect();
			//slider.set(600,0);
			this.scroll = this.set2Hash(slider);
			this.setCache(0);//начальная фотка
			
			
			
			var _self = this;
			window.addEvent('resize', function(){
				
				_self.go();
				_self.go();
			});
			
			this.go();
			this.go();
	},
	go: function(){
			//формируем строку для фоток с класом foto_slider внутри элемнта с #id
			var _self = this;
			//var str = '#' + id + ' .li_slider';
			//Возвращает массив: все фоты в списке, исключая display:none и длину строки
			var ss = this.calculateMaxWidth();
			
			var allFotos = ss[0];//Переименовываем для удобства

			this.fotos = $$(allFotos).length;//всего фоток
			
			this.allWidth = ss[1]+4;//ширина ленты из всеч фот
			
			//if(this.allWidth < 100) this.allWidth = $('slider_list_' + id).getParent('.radioAccord_1').getSize().x;

			
			
			//this.updateListLength();//устанавливаем ширину видимой части слайдера
			this.updateListLength2();//устанавливаем ширину видимой части слайдера без учета целостности фот


			this.addId(allFotos);//ставим ид на li для навигации
			
			$(this.myName('slider_list')).style.width = this.allWidth + 'px';

/*
			if(this.options.startPoint) 
				this.scroll.slider.set(this.options.startPoint,0);
			else this.scroll.slider.toLeft();*/
			
			
			var slidercontainer = this.myName('slidercontainer');
			
			
			var newEl = _self.getCache();
			
			this.scroll.slider.start(this.liw * newEl, 0);
			
			
			//this.scroll.slider.set(600,0);
			
			
			
		},

	//все фоты в одну ленту. Возвращает массив: все фоты в списке, исключая display:none и длину строки
	calculateMaxWidth: function(){
		var str = '#' + this.id + ' .li_slider';
		var sss = 0;
		var _self = this;
		var ss = new Array();
		$$(str).each(function(item,index){
			if(item.getStyle('display') != 'none') ss[index] = item;
			//считаем размер li и ее отсутпы. все суммируем без разбора
			//sss +=  item.getDimensions().x + item.getStyle('margin-left').toInt() + item.getStyle('margin-right').toInt();
			sss +=  item.getDimensions().x + item.getStyle('margin-left').toInt() + item.getStyle('margin-right').toInt();
		});
		return [ss, sss];
	},
	
	myName: function(s){
		//return s + '_' + this.id;
		var e = $(this.id).getElement('.'+s);
		return e;
	},
	
	addId: function(str){
		//ставим ид на li для навигации
		$$(str).each(function(item,index){
			item.setProperty('id', 'li_' + index);
			var title = item.getElement('div.hidetitle');
			if(title) {
				title = title.get('html');
				item.getElement('a').setProperty('title', title);
				//item.getElement('a').store('title', title);
			}
		});
	},
	
	addEffect: function(){
		//var slidercontainer = this.myName('slidercontainer');
		var slidercontainer = $('slidercontainer_104');
		var slider = new Fx.Scroll(slidercontainer, {
			duration: 1000,
			link: 'cancel',
			transition: Fx.Transitions.Quad.easeInOut
		});
		//slider.set(600,0);
		return slider;
	},
	set2Hash: function(slider){
		this.scroll = new Hash({
						'id': this.id,
						'slider': slider,
						'x': 0,
						'fotos': this.fotos
					});
		return this.scroll;
	},
	

	//считаем сколько фоток модет поместиться макс в контейнере
	countMaxFotos: function(){
		//this.intFoto = (this.gallWFull / this.liw).toInt();
		this.intFoto = (this.gallWFull / 305).toInt();
		//this.intFoto = 2;//ЭТО ПЕРЕМОТКА ОДНОЙ ФОТЫ
		//alert(this.intFoto);
		return this.intFoto;
	},
	
	calculateWidth: function(){
		if(this.gallW > this.gallWFull)	this.trueWidth = this.gallWFull;
		else this.trueWidth = this.gallW;
		return this.trueWidth;
	},

	setListLength2: function(){
	
	
	
		this.gallW = this.allWidth;
		this.liw = this.allWidth / this.fotos;//для переменной ширины
		this.countMaxFotos();//макс фото в контейнере
this.trueWidth = this.calculateWidth();//реальная ширина
		this.lw = this.trueWidth / this.intFoto; 
		this.lw = this.lw.toInt();
if(this.lw < this.storeW) this.lw = this.storeW;
		var str = '#' + this.id + ' .li_slider';
		$$(str).setStyle('width', this.lw);
		
		//this.scroll.slider.toLeft();
	},
	
	updateListLength2: function(){
	
		this.gallWFull = $(this.myName('sider_container_td')).getDimensions().x - 188;
		
		//this.setListLength2();
		
		this.gallW = this.allWidth;
		this.liw = this.allWidth / this.fotos;//для переменной ширины
		this.liw = this.liw.toInt();
		
		this.countMaxFotos();//макс фото в контейнере
		
this.trueWidth = this.calculateWidth();//реальная ширина
		this.lw = this.trueWidth / this.intFoto; 
		this.lw = this.lw.toInt();
if(this.lw < this.storeW) this.lw = this.storeW;

var _self = this;
		var str = '#104 .li_slider';

		$$(str).setStyle('width', this.lw);


		//
	},
	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.start(this.liw * newEl, 0);
				//this.scroll.slider.toRight();
				//alert(this.liw * newEl);
			}
			
	},
	scrollLeft: function(){
			var newEl = this.getCache() - (this.intFoto * 2) + 1;
		
			if(newEl < 0){
				this.setCache(0);
				this.scroll.slider.toLeft();
				//this.scroll.slider.set(600,0);
			}
			else{
				this.setCache(newEl);
				this.scroll.slider.start(this.liw * newEl, 0);
			}
	},
	reset: function(){
		
		this.setCache(0);
		this.scroll.slider.toLeft();
		//this.scroll.slider.set(600,0);
	},
	
	scrollToElement: function(newEl){
		this.setCache(newEl);
		this.scroll.slider.set(this.liw * newEl, 0);
	}

});


