/*
 * jQuery galleryScroll v1.2.2
 */
jQuery.fn.galleryScroll = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		btPrev: 'a.prev',
		btNext: 'a.next',
		holder: 'div',
		mover: 'ul',
		scrollEl: 'li',
		duration : 1000,
		tabset: false,
		step: false,
		autoRotation:false,
		stopARbyHover:false,
		startARafterClick:false,
		generateNumLinks:false,
		currentNum:false,
		allNum:false,
		disable:false,
		slideFinish:function(){}
	},_options);

	return this.each(function(){
		var _wraper = jQuery(this),
			_holder = jQuery(_options.holder, _wraper),
			_mover = jQuery(_options.mover, _holder),
			_lis = jQuery(_options.scrollEl, _mover),
			_links = _options.tabset ? jQuery(_options.tabset, _wraper) : null,
			_prev = jQuery(_options.btPrev, _wraper),
			_next = jQuery(_options.btNext, _wraper),
			_step = _options.step ? (_lis.eq(0).outerWidth(true) * _options.step) : _holder.innerWidth(),
			_duration = _options.duration,
			_allNum = jQuery(_options.allNum, _wraper),
			_currentNum = jQuery(_options.currentNum, _wraper);
		
		var _maxMargin = _lis.length*_lis.eq(0).outerWidth(true)-_holder.innerWidth(),
			_length = Math.floor(_maxMargin/_step)+1,
			_current = 0, _margin = 0, _startARafterClickTimer;
		
		if (_maxMargin < 0) {
			_prev.css('visibility','hidden');
			_next.css('visibility','hidden');
		}
		if (_maxMargin%_step == 0) _length -= 1;
		
		// generate Number Links
		if (_options.generateNumLinks) {
			var _linkHolder = jQuery(_options.generateNumLinks, _wraper),
				_numLinksStr = '<ul class="slider-nav">';
			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).parent().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){
				jQuery(link).click(function(){
					if (_timer) clearInterval(_timer);
					_links.parent().removeClass('active');
					_margin = _step*i;
					if (i >= _length) _margin = _maxMargin;
					_mover.animate({'marginLeft': -_margin}, {duration:_duration, queue:false})
					_current = i;
					if (_options.autoRotation && _options.startARafterClick) {
						if (_startARafterClickTimer) clearInterval(_startARafterClickTimer);
						_startARafterClickTimer = setTimeout(function(){
							_timer = setInterval(function(){nextSlides()},_options.autoRotation);
						},_options.startARafterClick-_options.autoRotation);
					}
					jQuery(this).parent().addClass('active');
					if (_options.disable && _current == _length)
						_next.addClass('next-disable').addClass('disable');
					else _next.removeClass('next-disable').removeClass('disable');
					if (_options.disable && _current == 0)
						_prev.addClass('prev-disable').addClass('disable');
					else _prev.removeClass('prev-disable').removeClass('disable');
					return false;
				});
			});
		}
		_next.click(function(){
			if ($(this).hasClass('disable')) return false;
			if (_timer) clearInterval(_timer);
			if (_options.autoRotation && _options.startARafterClick) {
				if (_startARafterClickTimer) clearInterval(_startARafterClickTimer);
				_startARafterClickTimer = setTimeout(function(){
					_timer = setInterval(function(){nextSlides()},_options.autoRotation);
				},_options.startARafterClick-_options.autoRotation);
			}
			nextSlides();
			return false;
		});
		if (_options.disable && _current == 0) _prev.addClass('prev-disable').addClass('disable');
		_prev.click(function(){
			if ($(this).hasClass('disable')) return false;
			if (_timer) clearInterval(_timer);
			if (_options.autoRotation && _options.startARafterClick) {
				if (_startARafterClickTimer) clearInterval(_startARafterClickTimer);
				_startARafterClickTimer = setTimeout(function(){
					_timer = setInterval(function(){nextSlides()},_options.autoRotation);
				},_options.startARafterClick-_options.autoRotation);
			}
			
			_current -= 1;
			if (_options.disable && _current < _length) _next.removeClass('next-disable').removeClass('disable');
			if (_options.disable && _current == 0) _prev.addClass('prev-disable').addClass('disable');
			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 (_options.disable && _current > 0) _prev.removeClass('prev-disable').removeClass('disable');
			if (_options.disable && _current >= _length) _next.addClass('next-disable').addClass('disable');
			if (_current > _length) _current = 0;
			_margin = _step*_current;
			if (_current >= _length) _margin = _maxMargin;
			_options.slideFinish(_margin, _step);
			_mover.animate({'marginLeft': -_margin}, {duration:_duration, queue:false});
			setActive();
		}
		function setActive () {
			if (_options.tabset && _links) {
				_links.parent().removeClass('active');
				_links.eq(_current).parent().addClass('active');
			}
			currentNum();
		}
		if (_options.currentNum && _currentNum.length) {
			_allNum.html(_length+1);
			currentNum();
		}
		
		function currentNum() {
			if (_currentNum.length && _options.currentNum)
				_currentNum.html(_current+1);
		}
	});
}

$(document).ready(function(){
	
	$('div.gallery-block').galleryScroll({
		btPrev: 'li.prev a',
		btNext: 'li.next a',
		holder: 'div.gallery',
		mover: '> ul',
		scrollEl: '> li',
		duration : 1000,
		tabset: 'a.bullet',
		autoRotation:false,
		stopARbyHover:false,
		startARafterClick:10000
	});
	
	$('div.items-area').galleryScroll({
		btPrev: 'li.prev a',
		btNext: 'li.next a',
		holder: 'div.items-holder',
		mover: '> div.items',
		scrollEl: '> div.item',
		duration : 1000,
		tabset: 'a.bullet',
		autoRotation:false,
		stopARbyHover:false,
		startARafterClick:10000
	});
	
	var _cur = $('span.cur'),
		_cur2 = $('span.cur2');
	
	if (_cur2.length) {
		_cur.text(1);
		_cur2.text(4);
	}
	
	$('div.custom-gallery').galleryScroll({
		btPrev: 'li.prev a',
		btNext: 'li.next a',
		holder: 'div.slide-holder',
		mover: 'ul.slide',
		scrollEl: '> li',
		duration : 300,
		tabset: 'a.bullet',
		autoRotation:false,
		stopARbyHover:false,
		step:1,
		startARafterClick:10000,
		slideFinish:function(_m,_s){
			if (_cur2.length) {
				_cur.text(_m/_s+1);
				_cur2.text(_m/_s+4);
			}
		}
	});
});


