/* 
 * jQuery Fixed Plugins 1.5.1
 * Author:
 * Url:
 * Data
 *
 *  Update Log:
 * 
 *  Status       Date            Name      Version           BUG-Description
 *  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 *  Created      2012-08-15    	 Ru	       1.0               None
 
 *  Modified     2012-09-02      Ru        1.4.1             修复了webkit内核浏览器右边浮动有一定距离的bug(负外边距),增加了悬浮靠边的定位、是否显示关闭按钮、是否垂直居中定位
 
 *  Modified     2013-01-02    	 Ru	       1.5.1             增加了垂直方向的位置;把核心函数(关闭、展开、定位、最小化)重构,修复了webkit内核浏览器右边浮动最小化时没有显示出来
 *  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

;(function($){
    $.fn.fix = function(options){
        var defaults = {
            position 		: "left",	//悬浮位置 - left或right
			horizontal  	: 0,		//水平方向的位置 - 默认为数字
			vertical    	: null,		//垂直方向的位置 - 默认为null
			halfTop     	: false,	//是否垂直居中位置
			minStatue 		: false,	//是否最小化
			hideCloseBtn 	: false,	//是否隐藏关闭按钮
			skin 			: "gray",	//风格皮肤
			showBtnWidth 	: 28,       //show_btn_width
			contentBoxWidth : 154, 		//side_content_width
			durationTime 	: 1000		//完成时间
        }
        var options = $.extend(defaults, options);		

        this.each(function(){			
            //获取对象
			var thisBox = $(this),
				closeBtn = thisBox.find(".close_btn"),
				show_btn = thisBox.find(".show_btn"),
				contentBox = thisBox.find(".content_box"),
				sideList = thisBox.find(".side_list")
				;	
			
			//设置内容的高度
			thisBox.height( contentBox.height() );
			
			//最小化
			if(options.minStatue){
				show_btn.show();
				if(options.position=="left"){
					contentBox.css({ left: -options.contentBoxWidth });
				}else if(options.position=="right"){
					contentBox.css({ right: -options.contentBoxWidth });
				}
				thisBox.css({ width: options.showBtnWidth });
			}
			//皮肤控制
			if(options.skin) thisBox.addClass("skin_" + options.skin);
			//隐藏关闭按钮
			if(options.hideCloseBtn) closeBtn.css("display", "none");
			
			//定位			
			var boxTop = null,
				defaultTop = thisBox.offset().top,	//对象的默认top
				halfTop = ($(window).height() - thisBox.height())/2  //垂直居中时候的top
				;
			if(options.vertical == null){
				boxTop = defaultTop;
			}else {
				boxTop = options.vertical;
			}
			if( options.halfTop ) {	boxTop = halfTop; }
			
			thisBox.css(options.position, options.horizontal);
			thisBox.css("top", boxTop);
						
						
			//核心scroll事件			
			$(window).bind("scroll",function(){
				var offsetTop = boxTop + $(window).scrollTop() + "px";
	            thisBox.animate({
	                top: offsetTop
	            },{
	            	duration: options.durationTime,	
	                queue: false    //此动画将不进入动画队列
	            });
			});
			
			//关闭
			closeBtn.bind("click",function(){
				show_btn.show();
				if(options.position=="left"){
					contentBox.animate({left: -options.contentBoxWidth},"fast");
				}else if(options.position=="right"){
					contentBox.animate({right: -options.contentBoxWidth },"fast");
				}
				thisBox.animate({width: options.showBtnWidth },"fast");
			});
			
			//展开
			 show_btn.bind("click", function() {
				if(options.position=="left"){
					contentBox.animate({left: 0},"fast");
				}
				else if(options.position=="right"){
					contentBox.animate({right: 0},"fast");
				}
				thisBox.animate({width: options.contentBoxWidth },"fast");
				show_btn.hide();
	        });
				
        });	//end this.each

    };
})(jQuery);