/*
	需要jquery
	fairin 插件
	一些常用的功能
	
	如果需要特殊的滑动效果的话，需要加载jquery.easing.1.3.js
*/

;(function($){
$.fn.extend({
	fairin_filter:function(settings, callback){
		var _this = this;
		var current = 0;
		var options = {
			width	:	777,
			height	:	280,
			autoplay:	true,
			duration:	6000,
			top		:	415,
			left	:	650
		}
		options = $.extend(options, settings);
		var ul = this.find('ul');
		var li = this.find('li');
		var img = this.find('img');
		var num = li.length;
		var playing = null;
		
		//创建一个新的层，显示原点
		var p_layer = $('<div></div>');
		var icon = new Array();
		
		var bt_pre = $('<span class="png bt_pre"></span>');
		var bt_next = $('<span class="png bt_next"></span>');
		bt_pre.css({'display':'inline-block', 'cursor':'pointer', width:14, height:15});
		bt_next.css({'display':'inline-block', 'cursor':'pointer', width:14, height:15});
		
		bt_pre.appendTo(p_layer);
		
		$.each(li, function(i){
			icon[i] = $('<span class="png nor"></span>');
			icon[i].css({'display':'inline-block', 'padding-right':10, 'cursor':'pointer', width:8, height:8, 'padding-top':3});
			icon[i].bind('click', function(){play(i)});
			icon[i].bind('mouseover', function(){clearInterval(aPlay)});
			icon[i].appendTo(p_layer);
		});
		bt_next.appendTo(p_layer);
		p_layer.css({position:'absolute', 'z-index':999/*, 'margin-top':-(options.height*(num-1)+50)*/, 'margin-left':options.left, 'top':options.top});
		p_layer.prependTo(_this);
		//按钮
		bt_pre.bind('click', function(){
			play(current-1<0?num-1:current-1);
		});
		bt_next.bind('click', function(){
			play(current+1==num?0:current+1);
		});
		bt_pre.bind('mouseover', function(){clearInterval(aPlay)});
		bt_next.bind('mouseover', function(){clearInterval(aPlay)});
		this.append(p_layer);
		play(0);
		
		var autoplay = function(){
			play(current+1);
		}
		
		if(options.autoplay){
			aPlay = setInterval(autoplay, options.duration );
			li.bind('mouseover', function(){clearInterval(aPlay)});
			li.bind('mouseout', function(){aPlay = setInterval(autoplay, options.duration )});
		}
		
		
		function play(index){
			//当前播放
			//if(index == current)	return;
			index = index == li.length ? 0 : index;
			//ul.animate({'margin-top':-index*options.height}, 500, 'swing');
			$(li[current]).fadeOut(800, function(){
				$(li[index]).fadeIn(800);
			});
			$(li[current]).find('.wrap').fadeOut(800, function(){
				$(li[index]).find('.wrap').fadeIn(800);
				$(li[index]).find('p').fadeIn(800);
			});
			$(icon[current]).removeClass('cur');
			$(icon[index]).addClass('cur');
			current = index;
		}
	},
	
	
	fairin_slider:function(settings, callback){
		var _this = this;
		var items = this.find('li');
		var current = 0;
		var links = this.find('.caption a');
		var options = {height:160};
		options = $.extend(options, settings);
		
		$.each(links, function(i){
			$(this).bind('click', function(){play(i)});
		});
		
		function play(index){
			if(index == current)	return false;
			$(items[current]).find('.main').animate({height:0}, 500, function(){$(this).hide()});
			$(items[index]).find('.main').animate({height:options.height}, 500, function(){$(this)});
			current = index;
		}
		
		play(0);
	},
	
	fairin_twitter	:	function(settings, callback){
		var _this = this;
		var ul = this.find('ul');
		var items = this.find('li');
		var height = 70;
		var current = 0;
		
		var autoplay = function(){
			play(current-1);
		}
		
		function play(index){
			if(index == items.length)	index = 0;
			if(index < 0)	index = items.length-1;
			var pre = index - 1;
			if(pre < 0)	pre = items.length-1;
			ul.animate({'margin-top':height});
			ul.animate({'margin-top':0}, 0);
			$(items[pre]).hide();
			$(items[pre]).prependTo(ul);
			$(items[pre]).show(1000);
			current = index;
		}
		
		setInterval(autoplay, 6000);
	},
	
	fairin_img_slider	:	function(settings, callback){
		var _this = this;
		var items = this.find('img');
		var l = items.length;
		var current = 0;
		var autoplay = function(){
			play(current+1);
		}
		
		var playing = setInterval(autoplay, 3000);
		
		$.each(items, function(i){
			span = $('<span class="bar">'+(i+1)+'</span>')
			span.bind('click', function(){play(i)});
			span.css({cursor:'pointer'});
			span.bind('mouseover', function(){
				clearInterval(playing);
			})
			span.bind('mouseout', function(){
				playing = setInterval(autoplay, 3000);
			})
			$(this).bind('mouseover', function(){
				clearInterval(playing);
			})
			$(this).bind('mouseout', function(){
				playing = setInterval(autoplay, 3000);
			})
			$("#wallpaper_slider_bar").append(span);
		})
		
		
		function play(index){
			index = index == l ? 0 : index;
			index = index < 0 ? l-1 : index;
			$(items[current]).hide(1000);
			$(items[index]).show(1000);
			//样式
			$("#wallpaper_slider_bar span").removeClass('current');
			$($("#wallpaper_slider_bar span")[index]).addClass('current');
			current = index;
		}
		
		play(0);
	},
	
	fairin_scroll		:	function(settings, flag, callback){
		var _this = this;
		var items = this.find('li');
		var ul = this.find('ul');
		var height = 23;
		var current = 0;
		var l = items.length;
		var step = 8;
		var max = l-10;
		max = max > 0 ? max : 0;
		
		this.find('.bt_up img').bind('click', function(){
			play(current-step);
		});
		
		this.find('.bt_down img').bind('click', function(){
			play(current+step);
		});
		
		
		function play(index){
			if(index == l)	index = 0;
			if(index < 0)	index = 0;
			if(index > max)		index = max;
			ul.animate({'margin-top':(-height*index)});
			current = index;
		}
		
		if(flag)	play(flag-3);
	},
	
	
	
	fairin_scroll2		:	function(settings, flag, callback){
		var _this = this;
		var items = this.find('li');
		var ul = this.find('ul');
		var current = 0;
		var distance = 100;
		var height = ul.height();
		var w_height = this.height();
		
		this.find('.bt_up img').bind('click', function(){
			play(current-distance);
		});
		
		this.find('.bt_down img').bind('click', function(){
			play(current+distance);
		});
		
		function play(index){
			index = index > height - w_height ? height - w_height : index;
			index = index < 0 ? 0 : index;
			ul.animate({'margin-top':(-index)});
			current = index;
		}
	},
	
	
	fairin_scroll_x		:	function(settings){
		var _this = this;
		var items = this.find('.scroll_main li');
		var ul = this.find('.scroll_main ul');
		var current = 0;
		var bt_left = this.find('.bt_left');
		var bt_right = this.find('.bt_right');
		var l = items.length;
		var options = {'scroll_x':190,cMax:5, step:3};
		options = $.extend(options, settings);
		
		bt_left.bind('click', function(){
			play(current-options.step);
		});
		
		bt_right.bind('click', function(){
			play(current+options.step);
		});
		
		
		
		function play(index){
			index = index < 0 ? 0 : index;
			index = index > (l-options.step-2) ? (l-options.step-2) : index;
			
			ul.animate({'margin-left':(-options.scroll_x*index)}, 500);
			
			current = index;
		}
	}
});
})(jQuery)
























