
var Carousel = Fx.Carousel = new Class({

	Extends: Fx.Elements,

	options: {
		'step':			135,
		'visible':		5,
		'trigger': 		'click',
		'button_prev': 	'scroller-prev',
		'button_next': 	'scroller-next'
	},

	initialize: function(){
		var params = Array.link(arguments, {'container': Element.type, 'feed': $defined, 'blocks': $defined, 'options': Object.type });
		this.parent(params.elements, params.options);
		
		this.container = document.id(params.container);
		this.feed = this.container.getElement(params.feed);
		this.blocks = this.feed.getElements(params.blocks);
		
		this.$button_prev = $(this.options.button_prev);
		this.$button_next = $(this.options.button_next);
		
		this.cur_index = 0;
		this.total_amount = this.blocks.length;
		this.max_index = this.total_amount - this.options.visible;
		
		this.margin_left = (this.cur_index - this.max_index) * this.options.step;
		
		this.feed.setStyles({
			'width': 		this.blocks.length * this.options.step,
			'margin-left':	this.margin_left
		});
		
		this.blocks.removeClass("nojsonly")
		
		this.tween = new Fx.Tween(this.feed);
		
		(this.cur_index == this.max_index) ? this.$button_prev.addClass('disabled') : this.$button_prev.removeClass('disabled');
		(this.cur_index == 0) ? this.$button_next.addClass('disabled') : this.$button_next.removeClass('disabled');
		
		this.$button_next.addEvent(this.options.trigger, function(e){
			e.stop();
			this.next();
		}.bind(this));
		
		this.$button_prev.addEvent(this.options.trigger, function(e){
			e.stop();
			this.prev();
		}.bind(this));
		
		$(this.container).addEvent('mousewheel', function(e){
			e.stop();
			if (e.wheel<0){this.prev();}
			if (e.wheel>0){this.next();}
		}.bind(this))
	},
	
	next: function(){
		this.cur_index -= 1;
		if (this.cur_index >= 0){
			this.margin_left = (this.cur_index - this.max_index) * this.options.step;
			this.tween.start('margin-left', this.margin_left);
		}else{
			this.cur_index = 0;
		}
		(this.cur_index == this.max_index) ? this.$button_prev.addClass('disabled') : this.$button_prev.removeClass('disabled');
		(this.cur_index == 0) ? this.$button_next.addClass('disabled') : this.$button_next.removeClass('disabled');
	},
	
	prev: function(){
		this.cur_index += 1;
		if (this.cur_index <= this.max_index){
			this.margin_left = (this.cur_index - this.max_index) * this.options.step;
			this.tween.start('margin-left', this.margin_left);
		}else{
			this.cur_index = this.max_index;
		}
		(this.cur_index == this.max_index) ? this.$button_prev.addClass('disabled') : this.$button_prev.removeClass('disabled');
		(this.cur_index == 0) ? this.$button_next.addClass('disabled') : this.$button_next.removeClass('disabled');
	}

	
});





window.addEvent('domready', function(){   
	
	var $login = $('login'), $auth = $('auth');
	if ($login && $auth){
		$login.addEvent('click', function(e){
			e.stop();
			$login.toggleClass('on');
			if ($auth.getStyle('display')==='block'){
				$auth.setStyle('display', 'none')
			}else{
				$auth.setStyle('display','block');
				
			}
		})
	}
	
	$$('.breadcrumbs span').addEvent('click', function(e){e.stop()})
	
	var $banner = $('banner');
	if ($banner && $auth){
		$auth.setStyle('margin-bottom', - $banner.getHeight())
	}
	
	
	var $scroller = $('scroller');
	if ($scroller){
		new Carousel($scroller, 'ul', 'li', {transition:'quad:in:out', duration:1000});
	}
	
	var $scroller_b = $('scroller-b');
	if ($scroller_b){
		new Carousel($scroller_b, 'ul', 'li', {transition:'quad:in:out', duration:1000, step:178, visible:3});
	}
	
	var $accordion = $('accordion');
	if ($accordion){
		var $$dt = $accordion.getElements('dt');
		var dt_len = 20;
		if($$dt){
			$$dt.each(function($dt){
				
				var $dd = $dt.getNext('dd');
				var $dd__ = $dd.getElement('.dd__')
				var $cb = $dd.getElement('.check-block');
				$dt.setStyle('z-index', dt_len--);
				$dd.setStyle('z-index',  dt_len--);
				if ($cb){
					$dd__.setStyle('min-height', $cb.getHeight() - 40);
				}
			})
		}
		new Accordion($accordion, 'dt', 'dd', {opacity:false, display:-1, duration:250});
	}
	
	var $$input_a = $$('.input-a');
	if ($$input_a){
		$$input_a.each(function(el){
			el.getElement('input').addEvents({
				focus: function(e){el.addClass('focus')},
				blur: function(e){el.removeClass('focus')}
			})	
		})
	}
	
	var $$input_b = $$('.input-b');
	if ($$input_b){
		$$input_b.each(function(el){
			el.getElement('input').addEvents({
				focus: function(e){e.stop(); el.addClass('focus');},
				blur: function(e){e.stop(); el.removeClass('focus');}
			})	
		})
	}
	
	var $$checkbox_a = $$('.checkbox-a');
	if ($$checkbox_a){
		$$checkbox_a.each(function(el){		
			el.getElement('label').addEvent('click', function(e){
				el.toggleClass('checked');
			})	
		})
	}
	
	var $slider = $('slider'), $opener = $('open-slider');
	if ($slider && $opener){
		var mySlide = new Fx.Slide($slider)
		mySlide.hide();
		$opener.addEvent('click', function(e){
			e.stop();
			mySlide.toggle();
		})
	}
	
	
});
