/*
 * jQuery galleryScroll v1.1.0
 */
jQuery.fn.galleryScroll = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		btPrev: 'a.up-arrow',
		btNext: 'a.down-arrow',
		holder: 'div',
		mover: 'ul',
		scrollEl: 'li',
		duration : 1000,
		tabset: false,
		step: false,
		autoRotation:false,
		stopARbyHover:false,
		startARafterClick:false,
		generateNumLinks:false
	},_options);

	return this.each(function(){
		var _wraper = $(this);
		var _holder = $(_options.holder, _wraper);
		var _mover = $(_options.mover, _holder);
		var _lis = $(_options.scrollEl, _mover);
		var _links = _options.tabset ? $(_options.tabset, _wraper) : null;
		var _prev = $(_options.btPrev, _wraper);
		var _next = $(_options.btNext, _wraper);
		var _step = _options.step ? (_lis.eq(0).outerWidth(true) * _options.step) : _holder.outerWidth();
		var _duration = _options.duration;
		
		var _maxMargin = _lis.length*_lis.eq(0).outerWidth(true)-_holder.outerWidth();
		var _length = Math.floor(_maxMargin/_step)+1;
		var _current = 0;
		var _margin = 0;
		
		if (_maxMargin%_step == 0) _length -= 1;
		
		// generate Number Links
		if (_options.generateNumLinks) {
			var _linkHolder = $(_options.generateNumLinks, _holder);
			var _numLinksStr = '<ul class="numLinks">';
			for (var i=0; i<_length+1; i++) {
				_numLinksStr += '<li><a href="#">'+(i+1)+'</a></li>';
			}
			_numLinksStr += '</ul>';
			_options.tabset = true;
			_linkHolder.append(_numLinksStr);
			_links = _linkHolder.find('a');
			_links.eq(_current).addClass('active');
		}
		// init timer
		var _timer = false;
		if (_options.autoRotation) {
			_timer = setInterval(function(){nextSlides()},_options.autoRotation);
			if (_options.stopARbyHover)
				_holder.hover(function(){
					if (_timer) clearInterval(_timer);
				}, function(){
					_timer = setInterval(function(){nextSlides()},_options.autoRotation);
				});
		}
		
		// click events
		if (_options.tabset) {
			_links.each(function(i, link){
				$(link).click(function(){
					_links.removeClass('active');
					_margin = _step*i;
					if (i >= _length) _margin = _maxMargin;
					_mover.animate({'marginLeft': -_margin}, {duration:_duration, queue:false})
					_current = i;
					$(this).addClass('active');
					return false;
				});
			});
		}
		_next.click(function(){
			if (_timer) clearInterval(_timer);
			if (_options.autoRotation && _options.startARafterClick) {
				setTimeout(function(){
					_timer = setInterval(function(){nextSlides()},_options.autoRotation);
				},_options.startARafterClick-_options.autoRotation)
			}
			nextSlides();
			return false;
		});
		_prev.click(function(){
			if (_timer) clearInterval(_timer);
			if (_options.autoRotation && _options.startARafterClick) {
				setTimeout(function(){
					_timer = setInterval(function(){nextSlides()},_options.autoRotation);
				},_options.startARafterClick-_options.autoRotation)
			}
			
			_current -= 1;
			if (_current < 0) _current = _length;
			_margin = _step*_current;
			if (_current >= _length) _margin = _maxMargin;
			_mover.animate({'marginLeft': -_margin}, {duration:_duration, queue:false});
			setActive();
			return false;
		});
		function nextSlides(){
			_current += 1;
			if (_current > _length) _current = 0;
			_margin = _step*_current;
			if (_current >= _length) _margin = _maxMargin;
			_mover.animate({'marginLeft': -_margin}, {duration:_duration, queue:false});
			setActive();
		}
		function setActive () {
			if (_options.tabset) {
				_links.removeClass('active');
				_links.eq(_current).addClass('active');
			}
		}
	});
}

$(document).ready(function(){
	$('div.main-content').galleryScroll({
		btPrev: 'div.buttons span.prev',
		btNext: 'div.buttons span.next',
		holder: 'div.gallery',
		mover: 'ul',
		scrollEl: 'li',
		duration : 1000,
		tabset: false,
		step: 1,
		autoRotation:false,
		stopARbyHover:false,
		startARafterClick:10000,
		generateNumLinks:'div.num'
	});
});


