// JavaScript Document
function Kampfer_Slide(obj) {
	var opts = $.extend({},this.default_options,obj);	
    var index = 1;
	var $this = $(opts.wraper);
	var $targetLi = $(opts.claNav + " li", $this);
	var $clickNext = $(opts.nextButton, $this);
	var $clickPrev = $(opts.prevButton, $this);
	var $contentBox = opts.$contentBox = $(opts.claCon, $this);
	var contentBoxNum = $contentBox.children().size();
	
	var slideH = $contentBox.children().first().height();
	var slideW = $contentBox.children().first().width();
	var shadowHeight = opts.shadowHeight = $(opts.shadow).height();
	opts.$shadowText = $(opts.shadowText,$this);
	opts.$shadow = $(opts.shadow,$this);
	var autoPlay;
	var slideWH;
	var that = this;
	
	if(opts.effect=="scrollY"||opts.effect=="scrollTxt"){
		slideWH=slideH;
	}else if(opts.effect=="scrollX"||opts.effect=="scrollLoop"){
		$contentBox.css("width",contentBoxNum*slideW);
		slideWH=slideW;
	}else if(opts.effect=="fade"){
		$contentBox.children().first().css("z-index","1").next().css('opacity',0);
	}
	
	function play(){
		that.effect[opts.effect]($contentBox, $targetLi, index, slideWH, opts);
		that.animateShadow(opts,index);
		index++;
		if (index*opts.steps >= contentBoxNum) {
			index = 0;
		}	
	};
	
	if (opts.autoPlay) {
		autoPlay = setInterval(play, opts.timer);
		$contentBox.hover(function(){
			if(autoPlay){
				clearInterval(autoPlay);
			}
		},function(){
			if(autoPlay){
				clearInterval(autoPlay);
			};
			autoPlay=setInterval(play, opts.timer);
		});
	};
			
	$targetLi.hover(function(){
		if(autoPlay){
			clearInterval(autoPlay);
		}
		index=$targetLi.index(this);
		that.effect[opts.effect]($contentBox, $targetLi, index, slideWH, opts);
		that.animateShadow(opts,index);	
	},function(){
		if(autoPlay){
			clearInterval(autoPlay);
		}
		index++;
		if (index*opts.steps >= contentBoxNum) {
			index = 0;
		}
		autoPlay = setInterval(play, opts.timer);
	});
		
	if($clickNext&&$clickPrev){ 
		$clickNext.click(function(event){							 
			that.effect.scrollLoop.scrollLeft($contentBox, $targetLi, index, slideWH, opts, function(){
				for(var i=0;i<opts.steps;i++){
					$contentBox.find("li:first").appendTo($contentBox);
				};
				$contentBox.css({"left":0});
			});
			event.preventDefault();
		});
		$clickPrev.click(function(event){
			for(var i=0;i<opts.steps;i++){
				$contentBox.find("li:last").prependTo($contentBox);
			}
			$contentBox.css({"left":-index*opts.steps*slideW});
			that.effect.scrollLoop.scrollRight($contentBox, $targetLi, index, slideWH, opts);
			event.preventDefault();
		});
	};
}
Kampfer_Slide.prototype = {
	default_options : {
	    effect : "scrollY",
		scrollText : false,
		autoPlay : true,
		speed : "normal",
		timer : 3000,
		defIndex : 0,
		steps: 1,
		wraper : ".kampfer-slide",
		claNav : ".kampfer-slide-nav",
		claCon : ".kampfer-slide-content",
		shadow : ".kampfer-slide-shadow",
		shadowText : ".kampfer-slide-text",
		nextButton : ".next",
		prevButton : ".prev",
		hoverStyle : "on"
	},
	effect : {
		fade:function(contentObj,navObj,i,slideW,opts){
			contentObj.children().eq(i).stop().animate({opacity:1},opts.speed).css({"z-index": "1"})
			.siblings().css({'z-index': '0', opacity: 0});
			navObj.eq(i).addClass(opts.hoverStyle).siblings().removeClass(opts.hoverStyle);
		},
		scrollTxt:function(contentObj,undefined,i,slideH,opts){
			contentObj.animate({"margin-top":-opts.steps*slideH},opts.speed,function(){
                for( var j=0;j<opts.steps;j++){
                	contentObj.find("li:first").appendTo(contentObj);
                }
                contentObj.css({"margin-top":"0"});
            });
		},
		scrollX:function(contentObj,navObj,i,slideW,opts,callback){
			contentObj.stop().animate({"left":-i*opts.steps*slideW},opts.speed,callback);
			if (navObj) {
				navObj.eq(i).addClass(opts.hoverStyle).siblings().removeClass(opts.hoverStyle);
			}
		},
		scrollY:function(contentObj,navObj,i,slideH,opts){
			contentObj.stop().animate({"top":-i*opts.steps*slideH},opts.speed);
			if (navObj) {
				navObj.eq(i).addClass(opts.hoverStyle).siblings().removeClass(opts.hoverStyle);
			}
		},
		scrollLoop:{
			scrollLeft:function(contentObj,navObj,i,slideW,opts,callback){
				//alert(slideW);
				contentObj.animate({"left":-i*opts.steps*slideW},opts.speed,callback);
				if (navObj) {
					navObj.eq(i).addClass(opts.hoverStyle).siblings().removeClass(opts.hoverStyle);
				}
			},
			scrollRight:function(contentObj,navObj,i,slideW,opts,callback){
				contentObj.stop().animate({"left":0},opts.speed,callback);
			}
		}
	},
	animateShadow : function(opts,i){
		var str = [];
		opts.$contentBox.find('img').each(function(){
			str.push(this.alt);
		});
		opts.$shadowText.text('');
		opts.$shadow.stop().animate({'height':0},400,function(){	
			opts.$shadow.animate({'height':opts.shadowHeight},400,function(){
				opts.$shadowText.text(str[i]);
			});
		});	
	}	
	
}
