jQuery.fn.galleryCircle = function(_options){
	// defaults options
	var _options = jQuery.extend({
		btPrev: 'a.prev',
		btNext: 'a.next',
		scrollElParent: '.gallery-wrapper div.gallery',
		scrollElHolder: '.gallery-wrapper ul',
		scrollEl: '.gallery-wrapper ul > li',
		slideNum: '#slide-num',
		duration : 3000,
		circleSlide: true,
		autoSlide: 3000,
		step: false,					/*not done*/
		disableClass: 'disable',		/*not done*/
		funcOnclick: null,				/*not done*/
		innerMargin:0,					/*not done*/
		stepWidth:false					/*not done*/
	},_options);
	
	return this.each(function(){
		
	var _this = jQuery(this);
	var _autoSlide = _options.autoSlide;
	var _duration = _options.duration;
	var _circleSlide = jQuery(_options.circleSlide);
	var _scrollElParent = jQuery(_options.scrollElParent);
	var _scrollElHolder = jQuery(_options.scrollElHolder);
	var _scrollEl = jQuery(_options.scrollEl);
	var _slideNum = jQuery(_options.slideNum);
	var _btPrev = jQuery(_options.btPrev);
	var _btNext = jQuery(_options.btNext);
	var _liSum = jQuery(_options.scrollEl,_this).length;
	var _mM = _scrollElHolder.width();
	var marginNow = _mM;
	var _ElWidth = _scrollEl.width();
	var _timerSlide = null;
	
	// Number list
	jQuery.fn.galleryCircle.numListCreate = function(_elNumList, _liSum){
		var _numListElC = '';
		var _num = 1;
		var _difference = _scrollEl.length;
		
		while(_difference > 0)
		{
			_numListElC += '<li><a href="">'+_num+'</a></li>';
			_num++;
			_difference--;
		}
		jQuery(_elNumList).html('<ul>'+_numListElC+'</ul>');
	};
	//Call Create Num List
	jQuery.fn.galleryCircle.numListCreate(jQuery(_options.slideNum, _this), _liSum);
	
	//for control element
	var _CurItem =0;
	var _NumLinks = _slideNum.find('a');
	
	//set active on load to num list
	_NumLinks.eq(_CurItem).parents('li').addClass('active');

		//Coppy item list and set start margin
		_scrollElHolder.clone(true).insertAfter(_scrollElHolder);
		_scrollElHolder.clone(true).insertBefore(_scrollElHolder);
		_mM = _scrollElHolder.width();
		_scrollElParent.css('marginLeft', -_mM);
		
		
		
		
		var _AnimatedStep =false;
		//next click
		jQuery(_options.btNext,_this).bind('click',function(){
			if(!_AnimatedStep) {
				_AnimatedStep = true;
				_scrollElParent.animate({
					'marginLeft':'-=' + parseInt(_scrollEl.width())
				},_duration,function(){
					marginNow = parseInt(_scrollElParent.css('margin-left'));
					_CurItem =Math.abs((marginNow+parseInt(_scrollElHolder.width()))/_scrollEl.width());
					if (_CurItem ==_scrollEl.length) {_CurItem=0}
					_NumLinks.parents('li').removeClass('active');
					_NumLinks.eq(_CurItem).parents('li').addClass('active');
					if (marginNow <= -2*_scrollElHolder.width()) {
						_scrollElParent.css({'margin-left': -_scrollElHolder.width()})
					}
					_AnimatedStep = false;
				});
			}

			if (_timerSlide) {
				clearTimeout(_timerSlide);
				_timerSlide = setTimeout(function(){
					autoSlide(_options.autoSlide)
				}, _options.autoSlide);
			}
			return false;
		});

		//prev click
		jQuery(_options.btPrev,_this).bind('click',function(){
			if(!_AnimatedStep) {
				_AnimatedStep = true;
				_scrollElParent.animate({
					'marginLeft':'+=' + parseInt(_scrollEl.width())
				},_duration,function(){
					marginNow = parseInt(_scrollElParent.css('margin-left'));
					_CurItem =(marginNow+parseInt(_scrollElHolder.width()))/_scrollEl.width();
					if (_CurItem<0) {
						_NumLinks.parents('li').removeClass('active');
						_NumLinks.parents('li').eq(Math.abs(_CurItem)).addClass('active');
					} else if (_CurItem>0) {
						_NumLinks.parents('li').removeClass('active');
						_NumLinks.parents('li').eq(_scrollEl.length-Math.abs(_CurItem)).addClass('active');
					} else if (_CurItem==0) {
						_NumLinks.parents('li').removeClass('active');
						_NumLinks.parents('li').eq(0).addClass('active');
					};
					if (marginNow >= 0) {
						_scrollElParent.css({'margin-left': -_scrollElHolder.width()})
					}
					_AnimatedStep = false;

				});
			}
			return false;
		});
		//Num link Click
		_NumLinks.click(function(){
			var _index = $(_slideNum.find('a')).index(this);
			_mM = _ElWidth*_index + _scrollElHolder.width();
			_scrollElParent.animate({marginLeft: -_mM}, _duration);
			_NumLinks.parents('li').removeClass('active');
			$(this).parents('li').addClass('active');
			return false;
		});
		//autoslide
		if (_autoSlide) {
				_timerSlide = setTimeout(function(){
					autoSlide(_autoSlide);
				}, _autoSlide);
			jQuery(_options.scrollElParent,_this).hover(function(){
				clearTimeout(_timerSlide);
			}, function(){
				_timerSlide = setTimeout(function(){
					autoSlide(_autoSlide)
				}, _autoSlide);
			});
		}
		// auto slide
		function autoSlide(autoSlideDuration){
			//if (_options.circleSlide) {
				jQuery(_options.btNext,_this).trigger('click');
			//}
		};
	});
}

$(window).bind("load", function(){
	$('#carusel').galleryCircle({autoSlide:9000});
});