(function() {  
// plugin
jQuery.fn.slideviewer = function(config){

	// 初期設定
	config = jQuery.extend({
			container	:	".viewbox",
			navigater	:	".thumb",
			btnName		:	".btn",
			slideSpeed	:	1000,
			easingType	:	"easeOutCubic",
			isAutoPlay	:	true,
			timerSec	:	1000,
			isDebug		:	false
		},config);
	
	//debug mode
	setDebugMode(config.isDebug);

	var slideNum = 1;
	var slideLeft=0;
	var isMove = true;
	var slideContainer = config.container;
	var slideViewer = $(slideContainer);
	var slideWrapper = $(slideContainer + ' ul');
	var slideBox = $(slideContainer + ' ul li');
	var slideSpeed = config.slideSpeed;
	var len = slideBox.length;
	var boxWidth = slideWrapper.width()+10;	
	var boxHeight = $(slideContainer + ' ul li:eq(0)').height();
	var easingType = config.easingType;
	//slideWrapper.css({'position':'static'});
	//slideViewer.css('overflow', 'hidden');
	slideWrapper.width(boxWidth * len);
	//slideViewer.css('height', boxHeight);
	//slideBox.css('float', 'left');
	slideBox.width(boxWidth);
	
	
	//navigation
	var nav = config.navigater;
	var navContainer = $(nav+ ' ul');
	var navList = $(nav+ ' ul li');
	
	var btnName = config.btnName;
	
	//addEvent
	for(i=0;i<navList.length;i++){
		var targetObj = $(nav+' ul li:eq('+i+') '+btnName);	
		var counter = i+1;
		targetObj.bind("mouseover", {id:counter}, onMouseOver);
		targetObj.bind("mouseout", {id:counter}, onMouseOut);
	}
	
	function onMouseOver(e){
		timerStop();
		slideAnimate(e.data.id);
	}
	function onMouseOut(e){
		timerStart();
	}
	
	//AutoPlay
	var timerObj;
	var isAutoPlay = config.isAutoPlay;
	var timerSec = config.timerSec+slideSpeed;
	
	function timerStart(){
		timerObj = setInterval(function(){			
			slideAnimate("next");
		},timerSec);
	}
	
	function timerStop(){
		clearInterval(timerObj);
	}

	
	//slide
	function slideAnimate(value){
		//trace("slideviewer:slideAnimate! "+isMove);
		if(isMove==false){
			slideWrapper.stop();
			isMove=true;
			slideAnimate(value);
			return false;
		}else{
			isMove=false;
		}

		if(value=="next" && slideNum < len){
			slideNum++;
		}else{
			slideNum = 1;
		}

		if(value <= len && slideNum != value){
			slideNum = value;
		}

		slideLeft = -(boxWidth *(slideNum - 1));
		
		slideWrapper.animate({
			marginLeft: slideLeft
		}, slideSpeed, easingType,function(){isMove=true;});
		
	}
	
	//start
	trace("[slideviewer isDebug : "+isMove+"]");
	timerStart();
};
	
	//debug mode
	var isDebug = false;
	function setDebugMode (bool){
		isDebug = bool;
	}
	function trace(val){
		if(isDebug) console.log(val);
	}
	
})(jQuery);
