/*
by 王志刚（vv.hn）
 */

jQuery.fn.vv_flash = function(options) {
	return this.each(function(){
		settings = jQuery.extend({
			speed: 'slow', // 切换速度
			interval: 4000, // 切换间隔
			PlayPauseElement: false, // 开始/暂停css的ID
			PlayText: '开始', // 开始文本
			PauseText: '暂停', // 暂停文本
			NextElement: false, // 下一张css的ID
			//NextElementText: '下一张', // 下一张默认的文本
			PrevElement: false, // 上一张css的ID
			//PrevElementText: '上一张', // 上一张默认的文本
			ListElement: 'num', // 控制数字列表ID
			ListLi: 'li', // 控制列表li的css的class
			ListLiActive: 'on', // 控制列表当前的li的css的class
			addListToId: true, // add the controll list to special id in your code - default false
			allowKeyboardCtrl: true, // 左右键控制上一张下一张
			autoplay: true // 自动切换
	 	}, options);
		
		// set style for wrapper element
		jQuery(this).css({
			position: 'relative',
			overflow: 'hidden'
		});
		
		// set styles for child element
		jQuery('> *',this).css({
			position: 'absolute'
		});
		
		// count number of slides
		var Slides = jQuery('> *', this).length;
		//alert(Slides);
		var Slides = Slides - 1;
		var ActSlide = Slides;
		// Set jQuery Slide short var
		var jQslide = jQuery('> *', this);
		// save this
		var fssThis = this;
//////////////////////////////////////////////////////////////////////////////////////////////////////
//自动切换
		autoplay = function(){
			intval = setInterval(function(){
				jQslide.eq(ActSlide).fadeOut(settings.speed);
				jQuery('.title').text('nihao');
				// if list is on change the active class
				if(settings.ListElement){
					setActLi = (Slides - ActSlide) + 1;
					if(setActLi > Slides){setActLi=0;}
					//jQuery('#'+settings.ListElement+' li').removeClass(settings.ListLiActive);
					//jQuery('#'+settings.ListElement+' li').eq(setActLi).addClass(settings.ListLiActive);
					jQuery('#'+settings.ListElement+' li').removeClass(settings.ListLiActive).eq(setActLi).addClass(settings.ListLiActive);
				}
				
				if(ActSlide <= 0){
					jQslide.fadeIn(settings.speed);
					ActSlide = Slides;
				}else{
					ActSlide = ActSlide - 1;	
				}
			}, settings.interval);
			
			if(settings.PlayPauseElement){
				jQuery('#'+settings.PlayPauseElement).html(settings.PauseText);
			}
		}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//停止自动切换
		stopAutoplay = function(){
			clearInterval(intval);
			intval = false;
			if(settings.PlayPauseElement){
				jQuery('#'+settings.PlayPauseElement).html(settings.PlayText);
			}
		}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//跳转到第几个
		jumpTo = function(newIndex){
			if(newIndex < 0){newIndex = Slides;}
			else if(newIndex > Slides){newIndex = 0;}
			if( newIndex >= ActSlide ){
				jQuery('> *:lt('+(newIndex+1)+')', fssThis).fadeIn(settings.speed);
			}else if(newIndex <= ActSlide){
				jQuery('> *:gt('+newIndex+')', fssThis).fadeOut(settings.speed);
			}
			
			// set the active slide
			ActSlide = newIndex;

			if(settings.ListElement){
				// set active
				jQuery('#'+settings.ListElement+' li').removeClass(settings.ListLiActive).eq((Slides-newIndex)).addClass(settings.ListLiActive);
				//jQuery('#'+settings.ListElement+' li').removeClass(settings.ListLiActive);
				//jQuery('#'+settings.ListElement+' li').eq((Slides-newIndex)).addClass(settings.ListLiActive);
			}
		}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//控制列表
		if(settings.ListElement){
			i=0;
			li = '';
			while(i<=Slides){
				if(i==0){
					li = li+'<li class="'+settings.ListLi+i+' '+settings.ListLiActive+'"><a href="#">'+(i+1)+'<\/a><\/li>';
				}else{
					li = li+'<li class="'+settings.ListLi+i+'"><a href="#">'+(i+1)+'<\/a><\/li>';
				}
				i++;
			}
			//List = '<ul id="'+settings.ListElement+'">'+li+'<\/ul>';
			
			// add list to a special id or append after the slideshow
			//if(settings.addListToId){
				//alert(li);
				jQuery('#'+settings.ListElement).append(li);
			//}else{
				//jQuery(this).after(li);
			//}
			
			jQuery('#'+settings.ListElement+' a').bind('click', function(){
				index = jQuery('#'+settings.ListElement+' a').index(this);
				//stopAutoplay();
				ReverseIndex = Slides-index;
				
				jumpTo(ReverseIndex);
				
				return false;
			});
		}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//开始暂停
		if(settings.PlayPauseElement){
			if(!jQuery('#'+settings.PlayPauseElement).css('display')){
				jQuery(this).after('<a href="#" id="'+settings.PlayPauseElement+'"><\/a>');
			}
			
			if(settings.autoplay){
				jQuery('#'+settings.PlayPauseElement).html(settings.PauseText);
			}else{
				jQuery('#'+settings.PlayPauseElement).html(settings.PlayText);
			}
			
			jQuery('#'+settings.PlayPauseElement).bind('click', function(){
				if(intval){
					stopAutoplay();
				}else{
					autoplay();
				}
				return false;
			});
		}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//上一张下一张操作
		if(settings.NextElement){
//			if(!jQuery('#'+settings.NextElement).css('display')){
//				jQuery(this).after('<a href="#" id="'+settings.NextElement+'">'+settings.NextElementText+'<\/a>');
//			}
			
			jQuery('#'+settings.NextElement).bind('click', function(){
				nextSlide = ActSlide-1;
				//stopAutoplay();
				jumpTo(nextSlide);
				return false;
			});
		}
		
		if(settings.PrevElement){
//			if(!jQuery('#'+settings.PrevElement).css('display')){
//				jQuery(this).after('<a href="#" id="'+settings.PrevElement+'">'+settings.PrevElementText+'<\/a>');
//			}
			
			jQuery('#'+settings.PrevElement).bind('click', function(){
				prevSlide = ActSlide+1;
				//stopAutoplay();
				jumpTo(prevSlide);
				return false;
			});
		}
//////////////////////////////////////////////////////////////////////////////////////////////////////
		if(settings.allowKeyboardCtrl){
			jQuery(document).bind('keydown', function(e){
				if(e.which==39){
					nextSlide = ActSlide-1;
					//stopAutoplay();
					jumpTo(nextSlide);
				}else if(e.which==37){
					prevSlide = ActSlide+1;
					//stopAutoplay();
					jumpTo(prevSlide);
				}else if(e.which==32){
					if(intval){stopAutoplay();}
					else{autoplay();}
					return false;
				}
			});
		}
		
		// start autoplay or set it to false
		if(settings.autoplay){autoplay();}else{intval=false;}
	});
};
