/*   

 用法:$("#focus").Jfocus({
 path:"top" //path表示图片滚动方向,默认向上滚动 ,可设置left滚动
 time:"3000" //图片滚动时间,默认3000毫秒
 auto:"true" //是否自动滚动
 number:"true" //是否显示按钮数字
 bgdiv:"true" //是否显示背景标题
 });

 整体focus骨架不变,依然是常用的结构如下:
 <div id="focus">
 <ul>
 <li><a href="#"><img src="图片1" alt /></a></li>
 <li><a href="#"><img src="图片2" alt /></a></li>
 <li><a href="#"><img src="图片3" alt /></a></li>
 <li><a href="#"><img src="图片4" alt /></a></li>
 </ul>
 </div>

 整体样式不变,可以更改 id 名称,样式属性值。但不能更改按钮样式名 btn 。更改焦点图显示大小,请修改对应样式值
 #focus {width:490px; height:170px; overflow:hidden; position:relative;}
 #focus ul {height:380px; position:absolute;}
 #focus ul li {float:left; width:490px; height:170px;}
 #focus ul li img { width:490px; height:170px;}
 #focus .btn {position:absolute; width:490px; height:24px; left:0; bottom:5px; text-align:right}
 #focus .btn span {display:inline-block; _display:inline; _zoom:1; width:20px; height:20px; line-height:20px;  border-radius:20px;margin-right:15px; background:#f90; color:#fff;  text-align:center; font-size:14px; font-family:"Microsoft YaHei",SimHei; cursor:pointer;font-weight:bold; }
 #focus .btn span.on {background:#fff !important; color:#f80;}

 */

(function ($) {
    $.fn.Jfocus = function (options) {
        var defaults = {path: "top", time: "3000", auto: "true", number: "false", bgdiv: "false"}; //定义图片默认滚动方向
        var opts = $.extend({}, defaults, options);
        var $this = $(this);
        var $objul = $this.find("ul");

        var sWidth = $this.width(); //获取焦点图的宽度
        var sHeight = $this.height(); //获取焦点图的高度
        var $objli = $objul.find("li");
        var len = $objli.length; //获取焦点图个数
        var index = 0;
        var picTimer;
        var timer;

        //以下代码添加数字按钮
        if (len != 1) {
            var btnhtml = "<div class='btn'>";
            if (opts.bgdiv == "true") {
                var btnbghtml = "<div class='btnbg'><strong></strong></div>"
                $this.append(btnbghtml);
                showTit(0);
            }
            if (opts.number == "true") {
                for (var i = 0; i < len; i++) {
                    i == 0 ? btnhtml += "<span class='on'>" + 1 + "</span>" : btnhtml += "<span>" + (i + 1) + "</span>";
                }
            }
            else {
                for (var i = 0; i < len; i++) {
                    i == 0 ? btnhtml += "<span class='on'></span>" : btnhtml += "<span></span>";
                }
            }
            btnhtml += "</div>";
            $this.append(btnhtml);
        }
        var $objspan = $this.find("span");

        //判断图片滚动方向
        if (opts.path == "left") {
            $objul.css("width", sWidth * (len + 1));  //如果左右滚动,计算出外围ul元素的宽度
        }
        else {
            $objli.css("float", "none"); //如果上下滚动,清除li的左浮动
        }

        //为数字按钮添加鼠标滑入事件,以显示相应的内容
        $objspan.hover(function () {
            var that = this;
            timer = setTimeout(function () {
                index = $objspan.index(that);
                showTit(index);
                showPics(index);
            }, 200);
        }, function () {
            clearTimeout(timer);
        });

        //鼠标滑上焦点图时停止自动播放,滑出时开始自动播放
        $this.hover(function () {
            clearInterval(picTimer);
        }, function () {
            interval();
        });

        if (opts.auto = "true") {
            function interval() {
                picTimer = setInterval(function () {
                    if (index == len) { //如果索引值等于li元素个数,说明最后一张图播放完毕,接下来要显示第一张图,即调用showFirPic(),然后将索引值清零
                        showFirPic();
                        index = 0;
                    } else { //如果索引值不等于li元素个数,按普通状态切换,调用showPics()
                        showPics(index);
                        showTit(index);
                    }
                    index++;
                }, opts.time); //time自动播放的间隔
            }

            interval();
        }

        function showTit(index) { //显示标题
            $tit = $objli.find("img").eq(index).attr("title");
            $(".btnbg").find("strong").text($tit);
        }

        //显示图片函数,根据接收的index值显示相应的内容
        function showPics(index) {
            if (opts.path == "left") {
                var nowLeft = -index * sWidth; //根据index值计算ul元素的left值
                $objul.stop(true, false).animate({"left": nowLeft}, 500); //通过animate()调整ul元素滚动到计算出的position
                $objspan.removeClass("on").eq(index).addClass("on"); //为当前的按钮切换到选中的效果
            } else {
                var nowTop = -index * sHeight;
                $objul.stop(true, false).animate({"top": nowTop}, 500);
                $objspan.removeClass("on").eq(index).addClass("on");
            }
        }

        function showFirPic() { //最后一张图自动切换到第一张图时专用
            $objul.append($objli.first().clone());
            if (opts.path == "left") {
                var nowLeft = -len * sWidth; //通过li元素个数计算ul元素的left值,也就是最后一个li元素的右边
                $objul.stop(true, false).animate({"left": nowLeft}, 500, function () {
                    //在动画结束后把ul元素重新定位到起点,然后删除最后一个复制过去的元素
                    showTit(0);
                    $objul.css("left", "0");
                    $objli.last().next().remove();
                });
            } else {
                var nowTop = -len * sHeight; //top值
                $objul.stop(true, false).animate({"top": nowTop}, 500, function () {
                    showTit(0);
                    $objul.css("top", "0");
                    $objli.last().next().remove();
                });
            }
            $objspan.removeClass("on").eq(0).addClass("on"); //为第一个按钮添加选中的效果
        }
    };
})(jQuery);