function initCorusel(_c) {
	if (!_c) return false;
	_c.each(function(corusel, i){
		var _wraper = corusel.select(_c.wrapper)[0];
		if (_wraper) {
			var _lis = corusel.select(_c.lis);
			var _holder = corusel.select(_c.ul)[0];
			var _links = corusel.select(_c.links);
			var _prev = corusel.select(_c.prev)[0];
			var _next = corusel.select(_c.next)[0];
			var _step = _wraper.offsetWidth;
			var _animated = false;
			var _duration = 0.4;
			var _margins = (parseInt(_lis[0].getStyle('marginLeft')) + parseInt(_lis[0].getStyle('marginRight')));
			if (!_margins) _margins = 0;
			
			var _maxMargin = 0;
			_lis.each(function(li, j){
				_maxMargin += li.offsetWidth + _margins;
			});
			_maxMargin = _maxMargin - _step;
			
			var _length = Math.floor(_maxMargin/_step)+1;
			var _current = 0;
			var _margin = 0;
			if (_maxMargin%_step == 0) _length -= 1;
			
			if (_links.length) {
				_links.each(function(link, i){
					link.onclick = function(){
						if (!_animated) {
							_links[_current].up(0).removeClassName('active');
							_margin = _step*i;
							if (i >= _length) _margin = _maxMargin;
							new Effect.Morph(_holder, {
								style: {'marginLeft': -(_margin)+'px'},
								duration: _duration
							});
							_current = i;
							this.up(0).addClassName('active');
						}		
						return false;
					};
				});
			}
			_next.onclick = function(){
				if (_links[_current]) {_links[_current].up(0).removeClassName('active');}
				_current += 1;
				if (_current > _length) _current = 0;
				_margin = _step*_current;
				if (_current >= _length) _margin = _maxMargin;
				new Effect.Morph(_holder, {
					style: {'marginLeft': -(_margin)+'px'},
					duration: _duration
				});
				if (_links[_current]) {_links[_current].up(0).addClassName('active');}
				return false;
			}
			if (_prev)
				_prev.onclick = function(){
					if (_links.length) {_links[_current].up(0).removeClassName('active');}
					_current -= 1;
					if (_current < 0) _current = _length;
					_margin = _step*_current;
					if (_current >= _length) _margin = _maxMargin;
					new Effect.Morph(_holder, {
						style: {'marginLeft': -(_margin)+'px'},
						duration: _duration
					});
					if (_links.length) {_links[_current].up(0).addClassName('active');}
					return false;
				}
		}
	});
};

Event.observe(window, 'load', function() {
	var _coruselCat = $$('.carousel');
	if (_coruselCat) {
		_coruselCat.wrapper = 'div';
		_coruselCat.ul = 'ul.slider';
		_coruselCat.lis = 'ul.slider > li';
		_coruselCat.links = 'ul.switcher a.tab';
		_coruselCat.prev = 'a.link-prev';
		_coruselCat.next = 'ul.switcher a.next';
		initCorusel(_coruselCat);
	}
});
