﻿$.fn.extend({
    GetRandomInt: function (min, max) {//返回min到max之间的整数【包括min,不包括max】
        return parseInt(Math.random() * (max - min), 10) + min;
    },
    RandomImgListPlayer: function (options) {
        var settings = { select: "div[name='focus_img_list']", timer: 5000, menu: "#play_text", imgsrc: "originalsrc" };
        options = options || {};
        $.extend(settings, options);

        var image_list = $("'" + settings.select + "'", this);
        var n = 0;
        var count = 1;
        image_list.hide();
        if (image_list.length > 0) {
            var auto = null;
            var rand = this.GetRandomInt(0, image_list.length);
            if (rand >= image_list.length)
                rand = image_list.length - 1;
            var obj = image_list.eq(rand);
            obj.show();
            var img_list = $("a > img", obj);
            count = img_list.length;
            img_list.each(function (i) {
                var originalsrc = img_list.eq(i).attr(settings.imgsrc);
                if (originalsrc != null && this.src == "") {
                    this.src = originalsrc;
                }
            });
            var ulcontent = "<ul>";
            for (i = 1; i <= count; i++) { ulcontent = ulcontent + "<li>" + i + "</li>"; }
            ulcontent = ulcontent + "</ul>";
            $(settings.menu).html(ulcontent);
            $("a:not(:first-child)", this).hide();
            $(settings.menu + " li").eq(0).css({ "background": "#7f0019", "color": "#fff", "font-weight": "bolder" });
            $(settings.menu + " li").mouseover(function () {
                i = $(this).text() - 1;
                n = i;
                if (n >= count) return;
                $("a", obj).filter(":visible").fadeOut(200, function () { $(this).parent().children().eq(n).fadeIn(300); });
                $(this).css({ "background": "#7f0019", "color": "#fff", "font-weight": "bolder" }).siblings().css({ "background": "#fff", "color": "#7f0019", "font-weight": "normal" });
            });
            var auto = setInterval(showAuto, settings.timer);
            obj.hover(function () { clearInterval(auto) }, function () { auto = setInterval(showAuto, settings.timer); });
        }
        function showAuto() {
            n = n >= (count - 1) ? 0 : ++n;
            $(settings.menu + " li").eq(n).trigger('mouseover');
        }
    },
    RandomImgIsInit: false,
    RandomImgList: new Object(),
    AddRandomImg: function (_url, _scale, _link, _aparam) {
        if (this.RandomImgIsInit == false) {
            this.RandomImgList.imgAry = new Array();
            this.RandomImgList.max = 0;
            this.RandomImgIsInit = true;
        }
        var imgView = new Object();
        imgView.url = _url;
        imgView.scale = parseInt(_scale);
        imgView.link = _link;
        if (_aparam == null)
            imgView.aparam = '';
        else
            imgView.aparam = _aparam;
        index = this.RandomImgList.imgAry.length;
        this.RandomImgList.imgAry[index] = imgView;
        this.RandomImgList.imgAry[index].scalemin = this.RandomImgList.max;
        this.RandomImgList.max = this.RandomImgList.max + this.RandomImgList.imgAry[index].scale;
        this.RandomImgList.imgAry[index].scalemax = this.RandomImgList.max;
    },
    GetRandomImg: function () {
        ran = this.GetRandomInt(1, this.RandomImgList.max + 1);
        if (ran > this.RandomImgList.max) {
            return this.RandomImgList.imgAry[this.RandomImgList.imgAry.length - 1];
        }
        else {
            for (i = 0; i < this.RandomImgList.imgAry.length; i++) {
                if (ran > this.RandomImgList.imgAry[i].scalemin && ran <= this.RandomImgList.imgAry[i].scalemax) {
                    return this.RandomImgList.imgAry[i];
                }
            }
        }
    },
    GetRandomImgHTML: function () {
        var obj = this.GetRandomImg();
        return "<a href='" + obj.link + "' " + obj.aparam + " target='_blank'><img src='" + obj.url + "'/></a>";
    },
    GetRandomImgListHtml: function () {
        var first = this.GetRandomImg();
        var html = "";
        html = html + "<a href='" + first.link + "' " + first.aparam + " target='_blank'><img src='" + first.url + "'/></a>";
        this.RandomImgList.imgAry.sort(function (a, b) { if (a.scale != b.scale) { return b.scale - a.scale; } else { return a.Index - b.Index; } });
        for (i = 0; i < this.RandomImgList.imgAry.length; i++) {
            if (this.RandomImgList.imgAry[i].url != first.url) {
                html = html + "<a href='" + this.RandomImgList.imgAry[i].link + "' " + this.RandomImgList.imgAry[i].aparam + " target='_blank'><img src='" + this.RandomImgList.imgAry[i].url + "'/></a>";
            }
        }
        return html;
    },
    RandomImgPlayer: function (options) {
        var settings = { multiImg: false };
        options = options || {};
        $.extend(settings, options);

        if (settings.multiImg == true)
            this.html(this.GetRandomImgListHtml());
        else
            this.html(this.GetRandomImgHTML());
    }
});

