/*幻灯片切换*/
var movepic;
var nowpic = 0;
function slide() {
	movepic = setInterval(function() {
		nowpic = jQuery("#imgBox ul li.current").index(), nextpic = nowpic + 1;
		if (nowpic == maxNum) {
			nextpic = 0;
		}
		fadePic(nowpic, nextpic);
	}, 3000);
}

/*经典站内播放*/
function play(obj){
	$(obj).parent().find("div").css("display","block");
	$(obj).remove();
}

/*2.2版弹窗播放*/
function coolPlay(obj){
	var vedioCode = $(obj).parent().find("div[class='vedio_box']").html();
	var vedioWin = window.open ('','vedioWin','height=500,width=600,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no') ;
	vedioWin.document.write("<style>embed{width:100%;height:100%}</style>");
	vedioWin.document.write(vedioCode);
}

/**
 * 提交互动
 */
function interaction(opt,comment_id,obj){
	
	jQuery.ajax({
 
		url:"?action=interaction&opt="+opt+"&comment_id="+comment_id,
 
		success:function(data){
			if(data!=false){
				if(opt=='agree'){
					jQuery(obj).find('.icon-ilike').html("支持("+data+")");
				}else{
					jQuery(obj).find('.icon-ihate').html("反对("+data+")");
				}	
			}else{
				alert('您已经表过态了');
			}
		}
 
	});
}

function out(obj,realsrc){
	var src = jQuery(obj).parent().find('img').attr('src');
	src = src.replace('thumbnail',realsrc);
	jQuery(obj).parent().find('img').attr('src',src).css({height:'auto',maxWidth:'600px',width:'auto'});
	var top_position = jQuery(obj).offset().top+'px';
	jQuery(obj).hide();
}
function preview(obj,realsrc){
	var src = jQuery(obj).parent().find('img').attr('src');
	src = src.replace('thumbnail',realsrc);
	var top_position = jQuery(obj).offset().top+'px';
	jQuery(obj).attr('src',src);
}

function SetCookie(name,value)
{
    var Days = 30; 
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)    
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
     if(arr != null) return unescape(arr[2]); return null;

}

/**
 * 鲜花鸡蛋
 */
function article_interaction(opt,post_id,obj){
	
	jQuery.ajax({
 
		url:"?action=article_interaction&opt="+opt+"&post_id="+post_id,
 
		success:function(data){
			if(data!=false){
				if(opt=='agree'){
					jQuery(obj).html("鲜花("+data+")");
				}else{
					jQuery(obj).html("鸡蛋("+data+")");
				}	
			}else{
				alert('您已经表过态了');
			}
		}
 
	});
}

/**
 * 换肤
 */
function change_skin(skin){
	var theme_url = $('#skin_style').attr('url');
	var url = "";
	if(skin=='blue'){
		url = theme_url+'/blue_skin.css';
	}else if(skin=='black'){
		url = theme_url+'/black_skin.css';
	}else if(skin=='pink'){
		url = theme_url+'/pink_skin.css';
	}
	$('#skin_style').attr('href',url);
	$('body').append("<script src='"+theme_url+"/js/respond.js'/>");
}

var preview_img_index = 0;

/**
 * 查看完整图片
 */
function view_control(img_src,index){
	preview_img_index = index;
	$('#view_box').html("<img id='preview_img' src='"+img_src+"'/><span id='close_btn' onclick='clearViewBox()'></span><div id='leftArea' onclick=img_change('pre')>‹</div><div id='rightArea' onclick=img_change('next')>›</div>").fadeIn(300);
	var img = new Image;
	var img_width=0;
	img.onload = function(){
		img_width=img.width;
		$('#view_shadow').css({width:$(window).width(),height:$(window).height(),display:"block",background:"#ccc",position:"fixed"});
	};
	img.src = img_src;
}

function img_change(opt){
	var img_length = $('.alignnone').length;
	if(opt=='pre'){
		if(preview_img_index==0){
			alert('已经是第一张了');return;
		}
		var pre_index = preview_img_index-1;
		if(pre_index<0){
			pre_index = 0;
		}
		preview_img_index = pre_index;
		$('#preview_img').css('display','none');
		$('#view_box').find('img').attr('src',$('.alignnone').eq(pre_index).attr('src'));
		//$('#view_box').html("<img id='preview_img' src='"+$('.alignnone').eq(pre_index).attr('src')+"'/><span id='close_btn' onclick='clearViewBox()'></span><div id='leftArea' onclick=img_change('pre')>‹</div><div id='rightArea' onclick=img_change('next')>›</div>").fadeIn(300);	
		$('#preview_img').fadeTo(300,1);
	}else{
		if(preview_img_index==(img_length-1)){
			alert('已经是最后一张了');return;
		}
		var next_index = preview_img_index+1;
		if(next_index==img_length){
			next_index = img_length-1;
		}
		preview_img_index = next_index;
		$('#preview_img').css('display','none');
		$('#view_box').find('img').attr('src',$('.alignnone').eq(next_index).attr('src'));
		//$('#view_box').html("<img id='preview_img' src='"+$('.alignnone').eq(next_index).attr('src')+"'/><span id='close_btn' onclick='clearViewBox()'></span><div id='leftArea' onclick=img_change('pre')>‹</div><div id='rightArea' onclick=img_change('next')>›</div>").fadeIn(300);	
		$('#preview_img').fadeTo(300,1);
	}
}

/**
 * 关闭蒙版
 */
function clearViewBox(){
	$('#view_box').html("").fadeOut(300);
	$('#view_shadow').fadeOut(300);
}


/**
 * 初始化图片预览窗口
 */
function initViewBox(){
	var post_image_length = $('#post-content').find('a').length;
	if(post_image_length>0){
		var img_a_array = new Array();//符合条件链接长度
		var img_a_obj_array = new Array();//存储符合条件对象
		var img_length = 0;//图片数量
		for(var i=0;i<post_image_length;i++){
			var img_a = $('#post-content').find('a').eq(i).find("img[class*='alignnone']");
			if(img_a!=null&&img_a.length>0){
				img_length++;
				img_a_array.push($(img_a).parent().attr('href'));
				img_a_obj_array.push($(img_a).parent());
			}
		}
		if(img_length>0){
			for(var i=0;i<img_length;i++){
				var url = img_a_array[i];
				var function_text = "javascript:view_control('"+url+"',"+i+")";
				$(img_a_obj_array[i]).attr("href",function_text);
				$(img_a_obj_array[i]).after("<div class='image_view' onclick=view_control('"+url+"',"+i+") >点击查看图片</div>");
			}
		}
	}
}

/**
 * 幻灯片切换逻辑
 */
function fadePic(nowpic, nextpic) {

	jQuery("#imgNum ul li span").eq(nowpic).removeClass("current");
	jQuery("#imgNum ul li span").eq(nextpic).addClass("current");
	var url = jQuery("#imgBox ul li img").eq(
			$("#imgNum ul li span.current").index("#imgNum ul li span"))
			.parent().attr("href");
	jQuery(".imgTitle").html(
			"<a href='"
					+ url
					+ "'>"
					+ jQuery("#imgBox ul li img").eq(
							$("#imgNum ul li span.current").index(
									"#imgNum ul li span")).attr("title")
					+ "</a>");
	// alert(jQuery("#imgBox ul li img").eq($("#imgNum ul li
	// span.current").index("#imgNum ul li span")).attr("title"));

	jQuery("#imgBox ul li").eq(nowpic).animate({
		'opacity' : '0'
	}, 700).removeClass("current");
	jQuery("#imgBox ul li").eq(nextpic).animate({
		'opacity' : '1'
	}, 700, function() {
	}).addClass("current");
}

/**
 * 等比例缩放图片
 */
function ResizeImage(currentImage){
  var flag=false;
  var image=new Image();
  var allowWidth = 255;  //定义允许图片宽度
  var allowHeight =165;  //定义允许图片高度
  image.src=$(currentImage).attr('src');
  if(image.width>0 && image.height>0){
    flag=true;
    if(image.width/image.height>= allowWidth/allowHeight){
      if(image.width>allowWidth){  
        $(currentImage).css('width',allowWidth);
        $(currentImage).css('height',(image.height*allowWidth)/image.width);
      }else{
        $(currentImage).css('width',image.width);  
         $(currentImage).css('height',image.height);
      }
    }
    else{
      if(image.height>allowHeight){  
       $(currentImage).css('height',allowHeight);
         $(currentImage).css('width',(image.width*allowHeight)/image.height);  
      }else{
         $(currentImage).css('width',image.width);  
         $(currentImage).css('height',image.height);
      }
    }
  }
} 
$(function() {
	
	
		$('#full-width-slider').royalSlider({
		    arrowsNav: true,
		    loop: true,
		    keyboardNavEnabled: true,
		    controlsInside: false,
		    imageScaleMode: 'fill',
		    arrowsNavAutoHide: false,
		    autoScaleSlider: true, 
		    autoScaleSliderWidth: 960,     
		    autoScaleSliderHeight: 350,
		    controlNavigation: 'bullets',
		    thumbsFitInViewport: false,
		    navigateByClick: true,
		    startSlideId: 0,
		    //autoPlay: false,
		    transitionType:'move',
		    globalCaption: true,
		    deeplinking: {
		      enabled: true,
		      change: false
		    },
		    autoPlay: {
		    		// autoplay options go gere
		    		enabled: true,
		    		pauseOnHover: true,
		    		stopAtAction:false,
		    		delay:4000
		    	},
		    /* size of all images http://help.dimsemenov.com/kb/royalslider-jquery-plugin-faq/adding-width-and-height-properties-to-images */
		    imgWidth: 1080,
		    imgHeight: 320
		});
	

	$('#commentSubmit').click(function(){
		jQuery('#commentSubmit').after("<br/><div id='loading'></div>");
	});
	initViewBox();
	$(window).scroll(function(){
	   if($(this).scrollTop() <80){
			$("#roll").fadeOut("slow");
		}else{
			$("#roll").fadeIn("slow");
		}
	});
	
	$('.nav_text').click(function(){
		if ($(this).text()=='导航') {
			$('#nav').fadeIn();
			$(this).text('关闭');
		}else{
			$('#nav').fadeOut();
			$(this).text('导航')
		}
	});
	
	jQuery('.commentlist li').each(function(){
		var href = jQuery(this).find('p').find('a').attr('href');
		if(href){
			//href = href.replace('','thumbnail')
			var index = href.indexOf('.gif');
			if (index>0) {
				var oldStr = href.substring(22,href.lastIndexOf('/'));
				var newFormat = 'bmiddle';
				var newUrl = "";
				if(href.indexOf('mw')>0){
					newUrl = href.substr(0,href.indexOf('mw'))+'thumbnail'+href.substring(href.lastIndexOf('/'));
				}else{
					newUrl = href.substr(0,href.indexOf('bmiddle'))+'thumbnail'+href.substring(href.lastIndexOf('/'));
				}
				var position = jQuery(this).attr("id");
				jQuery(this).find('p a').hide();
				jQuery(this).find('p').append("<p style='text-align:center'><a href='#"+position+"'><img style='height:90px' width='130px' src='"+newUrl+"'/></a></p>");
				jQuery(this).find('p p').append('<a href="#'+position+'" onclick=out(this,"'+oldStr+'") style="position:absolute;top:32px;left:243px;width:140px;height:100px;line-height: 93px;color:#fff;background-color:#000;cursor:pointer;text-align:center;opacity: 0.3;" class="gif-mask">点击播放动画</a>');
			}
			
			var imgIndex = href.indexOf('.jpg');
			if (imgIndex>0) {
				var oldStr = href.substring(22,href.lastIndexOf('/'));
				//var newUrl = href.substr(0,href.indexOf('mw'))+'thumbnail'+href.substring(href.lastIndexOf('/'));
				var newUrl = href.substr(0,href.indexOf('mw'))+oldStr+href.substring(href.lastIndexOf('/'));
				var img = new Image();
				jQuery(img).load(function () {
					var width_old = jQuery(this).width();
					var height_old = jQuery(this).height();
					jQuery(this).autoZoomLoadImage(true, 600, 600);
					jQuery(this).click(function(){
						if (jQuery(this).width()<width_old&&width_old<600) {
							jQuery(this).css({width:width_old+"px",height:height_old+"px"});
						}else if (jQuery(this).width()<width_old&&width_old>=600) {
							jQuery(this).css({width:"600px",height:height_old+"px"});
						} else{
							jQuery(this).autoZoomLoadImage(true, 600, 600);	
						}
					});
				    
					
				}).error(function () {
				   
				}).attr('src', newUrl);
				
				
				var position = jQuery(this).attr("id");
				jQuery(this).find('p a').hide();
				jQuery(this).find('p').append("<p style='text-align:center'><a href='#"+position+"'></a></p>");
				jQuery(this).find('p').find('a').append(img);
			}
		}
		
	});

	/**
	 * 翻页
	 */
	if($('#next_link').html()!=null){
		if($('#next_link').html().trim()=='end'){
			$('#next_a').css('display','none');
		}else{
			$('#next_a').attr('href',$('#next_link').find('a').attr('href')).attr('title',$('#next_link').find('a').html().trim())
		}
	}
	if($('#prev_link').html()!=null){
		if($('#prev_link').html().trim()=='end'){
			$('#prev_a').css('display','none');
		}else{
			$('#prev_a').attr('href',$('#prev_link').find('a').attr('href')).attr('title',$('#prev_link').find('a').html().trim())
		}
	}
	if($('.next').html()!=null){
		if($('.next').find('.end').html().trim()=='到底啦.'){
			$('#next_a').css('display','none');
		}else{
			$('#next_a').attr('href',$('.next').find('a').attr('href')).attr('title',$('.next').find('a').html().trim())
		}
	}
	if($('.before').html()!=null){
		if($('.before').find('.start').html().trim()=='到头啦.'){
			$('#prev_a').css('display','none');
		}else{
			$('#prev_a').attr('href',$('.before').find('a').attr('href')).attr('title',$('.before').find('a').html().trim())
		}
	}

	/*文章幻灯相关*/
	Galleria.addTheme({
    name: 'classic',
    author: 'Galleria',
    version: '1.5',
    defaults: {
        transition: 'slide',
        thumb_crop: 'height',
        
		// set this to false if you want to show the caption all the time:
        _toggle_info: true
    },
    init: function(options) {
        
        // add some elements
        this.addElement('info-link','info-close');
        this.append({
            'info' : ['info-link','info-close']
        });
        
        // cache some stuff
        var toggle   = this.$('image-nav-left,image-nav-right,counter'),
            info     = this.$('info-link,info-close,info-text'),
            click    = Galleria.TOUCH ? 'touchstart' : 'click';
        
        // show loader & counter with opacity
        this.$('loader,counter').show().css('opacity',.8)

        // some stuff for non-touch browsers
        if (! Galleria.TOUCH ) {
            
            // fade thumbnails
            this.$('thumbnails').children().hover(function() {
                $(this).not('.active').children().stop().fadeTo(100, 1);
            }, function() {
                $(this).not('.active').children().stop().fadeTo(400, .6);
            });
            
            this.addIdleState( this.get('image-nav-left'), { left:-50 });
            this.addIdleState( this.get('image-nav-right'), { right:-50 });
            this.addIdleState( this.get('counter'), { opacity:0 });
        }
        
        // toggle info
        if ( options._toggle_info ) {
            info.bind( click, function() {
                info.toggle();
            });
        }
        
        // bind some stuff
        this.bind(Galleria.THUMBNAIL, function(e) {
            $(e.thumbTarget).parent(':not(.active)').children().css('opacity',.6)
        });
        
        this.bind(Galleria.LOADSTART, function(e) {
            if (!e.cached) {
                this.$('loader').show().fadeTo(200, .6);
            }
            
            this.$('info').toggle( this.hasInfo() );
            
            $(e.thumbTarget).css('opacity',1).parent().siblings().children().css('opacity',.8);
        });
        
        this.bind(Galleria.LOADFINISH, function(e) {
            this.$('loader').fadeOut(200);
        });
    }
});

	/*文章浏览字体大小*/
	var small = document.getElementById('small');
	var middle = document.getElementById('middle');
	var big = document.getElementById('big');
	var post_content = document.getElementById('post-content');
	if(small!=null){
		small.onclick = function(){
			post_content.style.fontSize='12px';
		};
	}
	if(middle!=null){
		middle.onclick = function(){
			post_content.style.fontSize='15px';
		};
	}
	if(big!=null){
		big.onclick = function(){
			post_content.style.fontSize='18px';
		};
	}
	
	/*首页视频列表链接点击后播放*/
	$('.vedio_list ul li a').click(function() {
		$(".vedio_main").css("width","100%");
	});
	
	/*选项卡脚本*/
	$(".post_collection_top li").click(function() {
		for(var i=1;i<6;i++){
			$("#tab_" + i).css("display","none");
			$(".post_collection_top li[class='current']").removeClass('current');
		}
		$(this).addClass('current');
		$("#tab_" + parseInt($(this).attr('rel'))).fadeIn(300);
		
	});

	/*皮肤脚本*/
	$("#skin_change li").click(function() {
		SetCookie ("aesroom_skin",$(this).attr('id'));
		if($(this).attr('id')=='pink_skin'){
			change_skin('pink');
			$(this).css('background-position','-10px -20px');
			$('#blue_skin').css('background-position','0px -10px');
			$('#black_skin').css('background-position','0px -50px');
		}else if($(this).attr('id')=='blue_skin'){
			change_skin('blue');
			$('#pink_skin').css('background-position','0px -20px');
			$('#black_skin').css('background-position','0px -50px');
			$(this).css('background-position','-10px -10px');
		}
		else if($(this).attr('id')=='black_skin'){
			change_skin('black');
			$(this).css('background-position','-10px -50px');
			$('#blue_skin').css('background-position','0px -10px');
			$('#pink_skin').css('background-position','0px -20px');
		}
	});
	
	//导航菜单高亮
	$("#nav li ").has('ul').append('<span></span>');
	
	$('.l_imgbox img').removeAttr("title");
  
	//相册页左边Top排行榜偶数行背景色
	$('dd:odd').css("background", "#EFEFEF");

	//侧边栏幻灯片默认第一个被选中赋予默认样式
	jQuery("#imgBox ul li").eq(0).addClass("current");
	$("#nav li li").has('ul').children("a").append(" &raquo;");
	$("#nav li").has('ul').hover(function() {
		$(this).children("ul").slideDown(200);
	}, function() {
		$(this).children("ul").slideUp(200);
	});
	
	$(".cool-post-img img").each(function(){
    	//ResizeImage($(this));
  	});

	//一些后来添加的链接颜色渐变
	$('h2 a,.single_relations ul a,.single_random ul a,.l_text a').hover(
			function() {
				$(this).stop().animate({
					color : '#FF76AB'
				}, 200)
			}, function() {
				$(this).stop().animate({
					color : '#464646'
				}, 200)
			});
	//首页伸缩广告关闭与打开
	$('#playbtn').click(function() {
		$("#slide").stop().animate({
			height : "500px"
		}, 2000);
		$('#closebtn').css('display', 'block');
		$(this).css('display', 'none');
	});
	$('#closebtn').click(function() {
		$("#slide").stop().animate({
			height : "0px"
		}, 2000);
		$('#playbtn').css('display', 'block');
		$(this).css('display', 'none');
	});
	//控制伸缩广告初始化
	$(window).load(function() {
		$('#closebtn').css('display', 'block');
		var timeoutProcess = setTimeout(function() {
			$("#slide").stop().animate({
				height : "500px"
			}, 3000, function() {
				clearTimeout(timeoutProcess);
				$("#slide_space_ad").css('display', 'block');
				$("#slide").delay(2000).animate({
					height : "0px"
				}, 3000, function() {
					$('#closebtn').css('display', 'none');
					$('#playbtn').css('display', 'block');
				});

			});

		}, 2000);

	});
	
	//假装异步加载
	$('.cool-post-title a').click(function() {
		$(this).html("正在加载中....");
	});
	$('.cool-read a').click(function() {
		$(this).parent().parent().find('.cool-post-title a').html("正在加载中....");
	});
	//添加一些title提示
	$("a[rel='tag']").attr("title", "点击查看此标签下的所有亮点");
	jQuery("#imgBox ul li img").eq(0).addClass("current");
	var url = jQuery("#imgBox ul li img").eq(
			$("#imgNum ul li span.current").index("#imgNum ul li span"))
			.parent().attr("href");
	jQuery(".imgTitle").html(
			"<a href='"
					+ url
					+ "'>"
					+ jQuery("#imgBox ul li img").eq(
							$("#imgNum ul li span.current").index(
									"#imgNum ul li span")).attr("title")
					+ "</a>");
	slide();
	//侧边栏幻灯片控制选项，谨慎修改
	$("#imgNum ul li span").click(
			function() {
				clearInterval(movepic);
				$("#imgNum ul li span").removeClass("current");
				$(this).addClass("current");
				$("#imgBox ul li").animate({
					'opacity' : '0'
				}, 700).removeClass("current");
				$("#imgBox ul li").eq(
						$("#imgNum ul li span.current").index(
								"#imgNum ul li span")).animate({
					'opacity' : '1'
				}, 700, function() {
				}).addClass("current");
				var url = jQuery("#imgBox ul li img").eq(
						$("#imgNum ul li span.current").index(
								"#imgNum ul li span")).parent().attr("href");
				jQuery(".imgTitle").html(
						"<a href='"
								+ url
								+ "'>"
								+ jQuery("#imgBox ul li img").eq(
										$("#imgNum ul li span.current").index(
												"#imgNum ul li span")).attr(
										"title") + "</a>");

				movepic = setInterval(function() {
					var nowpic = $("#imgNum ul li span.current").index(
							"#imgNum ul li span"), nextpic = nowpic + 1;
					if (nowpic == maxNum) {
						nextpic = 0;
					}
					fadePic(nowpic, nextpic);
				}, 3000);

			});
	
	/*侧边栏h2下插入hr*/
	$('.widget').after("<hr/>");
	/*--------------TAB选项卡脚本-------------*/
	$("#explore-nav li a").click(function() {
		var curList = $("#explore-nav li a.current").attr("rel");
		var $newList = $(this);
		var curListHeight = $("#all-list-wrap").height();
		$("#all-list-wrap").height(curListHeight);
		$("#explore-nav li a").removeClass("current");
		$newList.addClass("current");
		var listID = $newList.attr("rel");
		if (listID != curList) {
			$("#" + curList).fadeOut(300, function() {
				$("#" + listID).fadeIn();
				var newHeight = $("#" + listID).height();
				$("#all-list-wrap").animate({
					height : newHeight
				});

			});
		}
		return false;
	});

	/*--------------聚光灯提示脚本-------------*/
	$(".activeUsers li").each(function() {
		$("a strong", this).css("opacity", "0");
	});
	$(".activeUsers li").hover(function() { // 悬浮
		$(this).stop().fadeTo(500, 1).siblings().stop().fadeTo(500, 0.2);
		$("a strong", this).stop().animate({
			opacity : 1,
			top : "-10px"
		}, 300);
	}, function() { // 寻出
		$(this).stop().fadeTo(500, 1).siblings().stop().fadeTo(500, 1);
		$("a strong", this).stop().animate({
			opacity : 0,
			top : "-1px"
		}, 300);
	});

	$(".list_author_images li").each(function() {
		$("a strong", this).css("opacity", "0");
	});
	$(".list_author_images li").hover(function() { // 悬浮
		$(this).stop().fadeTo(500, 1).siblings("li").stop().fadeTo(500, 0.2);
		$("a strong", this).stop().animate({
			opacity : 1,
			top : "-10px"
		}, 300);
	}, function() { // 寻出
		$(this).stop().fadeTo(500, 1).siblings().stop().fadeTo(500, 1);
		$("a strong", this).stop().animate({
			opacity : 0,
			top : "-1px"
		}, 300);
	});

	/*--------------修改评论模板的cite标签-------------*/
	// $("cite").wrapAll(document.createElement("div"));
	var citeLength = jQuery("cite").length;
	for ( var i = 0; i < citeLength; i++) {
		var citeText = jQuery("cite").eq(i).html();
		jQuery("cite").eq(i).after(
				jQuery("<div class='comment_author_title'></div>").html(
						citeText));
		jQuery("cite").eq(i).hide();
	}
});
/*侧边滚动栏*/
SidebarFollow = function() {

this.config = {
element: null, // 处理的节点
distanceToTop: 0 // 节点上边到页面顶部的距离
};

this.cache = {
originalToTop: 0, // 原本到页面顶部的距离
prevElement: null, // 上一个节点
parentToTop: 0, // 父节点的上边到顶部距离
placeholder: jQuery('<div>') // 占位节点
}
};

SidebarFollow.prototype = {

init: function(config) {
this.config = config || this.config;
var _self = this;
var element = jQuery(_self.config.element);

// 如果没有找到节点, 不进行处理
if(element.length <= 0) {
return;
}

// 获取上一个节点
var prevElement = element.prev();
while(prevElement.is(':hidden')) {
prevElement = prevElement.prev();
if(prevElement.length <= 0) {
break;
}
}
_self.cache.prevElement = prevElement;

// 计算父节点的上边到顶部距离
var parent = element.parent();
var parentToTop = parent.offset().top;
var parentBorderTop = parent.css('border-top');
var parentPaddingTop = parent.css('padding-top');
_self.cache.parentToTop = parentToTop + parentBorderTop + parentPaddingTop;

// 滚动屏幕
jQuery(window).scroll(function() {
_self._scrollScreen({element:element, _self:_self});
});

// 改变屏幕尺寸
jQuery(window).resize(function() {
_self._scrollScreen({element:element, _self:_self});
});
},

/**
* 修改节点位置
*/
_scrollScreen: function(args) {
var _self = args._self;
var element = args.element;
var prevElement = _self.cache.prevElement;

// 获得到顶部的距离
var toTop = _self.config.distanceToTop;

// 如果 body 有 top 属性, 消除这些位移
var bodyToTop = parseInt(jQuery('body').css('top'), 10);
if(!isNaN(bodyToTop)) {
toTop += bodyToTop;
}

// 获得到顶部的绝对距离
var elementToTop = element.offset().top - toTop;

// 如果存在上一个节点, 获得到上一个节点的距离; 否则计算到父节点顶部的距离
var referenceToTop = 0;
if(prevElement && prevElement.length === 1) {
referenceToTop = prevElement.offset().top + prevElement.outerHeight();
} else {
referenceToTop = _self.cache.parentToTop - toTop;
}

// 当节点进入跟随区域, 跟随滚动
if(jQuery(document).scrollTop() > elementToTop) {
// 添加占位节点
var elementHeight = element.outerHeight();
_self.cache.placeholder.css('height', elementHeight).insertBefore(element);
// 记录原位置
_self.cache.originalToTop = elementToTop;
// 修改样式
element.css({
top: toTop + 'px',
position: 'fixed'
});

// 否则回到原位
} else if(_self.cache.originalToTop > elementToTop || referenceToTop > elementToTop) {
// 删除占位节点
_self.cache.placeholder.remove();
// 修改样式
element.css({
position: 'static'
});
}
}
};