/*
 * jQuery corusel v1.0.0 
 */
jQuery.fn.corusel = function(_options){
	// defaults options
	var _options = jQuery.extend({
		btPrev: 'a.link-prev',
		btNext: 'a.link-next',
		slider: 'ul.tabs a',
		holderList: 'div',
		scrollElParent: 'ul',
		scrollEl: 'li',
		duration: 1000
	},_options)

	return this.each(function(){
		var _this = jQuery(this);
		var _holderList = jQuery(_options.holderList, _this);
		var _mover = jQuery(_options.scrollElParent, _holderList);
		var _scrollEl = jQuery(_options.scrollEl, _mover);
		var _gWidth = _holderList.innerWidth();
		var _liWidth = _scrollEl.outerWidth(true);
		var _liSum = _scrollEl.length * _liWidth;
		var _rightArrow = jQuery(_options.btNext, _this);
		var _leftArrow = jQuery(_options.btPrev, _this);
		
		var _sliderHolder = jQuery(_options.slider, _this);
		var _slider = _sliderHolder.children('a');
		var _sliderHWidth = _sliderHolder.innerWidth();
		var _sliderW = _slider.innerWidth();
		var _k = (_sliderHWidth-_sliderW)/(_liSum-_gWidth);
		var _pos = _sliderHolder.offset();
		var _left = 0;
		
		var _margin = 0;
		var _duration = _options.duration;
		
		var _step = _liWidth;
		_this.nextSlide = function() {
			_margin += _step
			if (_liSum - _gWidth < _margin) _margin = 0
			_mover.animate({marginLeft: -_margin}, {queue:false, duration: _duration});
			sliderAnimate(_duration);
			return false;
		}
		_this.prevSlide = function() {
			_margin = _margin - _step;
			if (_margin < 0) _margin = _liSum - _gWidth;
			_mover.animate({marginLeft: -_margin}, {queue:false, duration: _duration});
			sliderAnimate(_duration);
			return false;
		}
		if (_options.btNext) {
			jQuery(_rightArrow).click(_this.nextSlide);
			//jQuery(_rightArrow).mouseover(_this.nextSlide);
		}
		if (_options.btPrev) {
			jQuery(_leftArrow).click(_this.prevSlide);
			//jQuery(_leftArrow).mouseover(_this.prevSlide);
		}
		function sliderAnimate(_d){
			_left = _margin * _k;
			_slider.animate({left: _left}, {queue:false, duration: _d});
		}
		_slider.click(function(){return false});
		_slider.mousedown(function(e){
			var _dif = e.pageX - _pos.left;
			var _sl = parseInt(_slider.css('left'));
			jQuery(document).bind('mousemove', function(e){
				_left = e.pageX - _pos.left - _dif + _sl;
				if (_left < 0) _left = 0;
				if (_left > _sliderHWidth-_sliderW) _left = _sliderHWidth-_sliderW;
				_slider.css({left: _left});
				_margin = _left/_k;
				_mover.css({marginLeft: -_margin});
				return false;
			});
			jQuery('body').bind('mouseup', function(e){
				var _num = Math.round(_margin/_step);
				_margin = _step*_num;
				_mover.animate({marginLeft: -_margin}, {queue:false, duration: _duration/2});
				sliderAnimate(_duration/2);
				jQuery(document).unbind('mousemove');
				jQuery(document).unbind('mouseup');
				return false;
			});
			return false;
		});
		
	});
}

jQuery(document).ready(function(){
	if(jQuery('div.visual')!= null)
	{
		jQuery('div.visual').corusel({
			btPrev: 'a.left-btn',
			btNext: 'a.right-btn',
			slider: 'div.scroller-box',
			holderList: '#carusel > div',
			duration: 1000
		});
	}
});

