﻿function Advertising(oPnl) {
    this.advPnl = oPnl;
    this.advPnlTit = oPnl.find(".mainTitTxt");
    this.advPnlSubTit = oPnl.find(".subTitTxt");
    this.advBigList = oPnl.find(".picList");
    this.advSmlList = oPnl.find(".controlBar ul");
    this.advBigImgs = new Object();
    this.advSmlImgs = new Object();
    this.advSource = [];
//    this.advbigWidth;
//    this.advbigHeight;
//    this.advsmlWidth;
//    this.advsmlHeight;
    this.advCss = {
        advItemSe: "advItemSe",
        advLoading: "advLoading"
    };
    this.timeId = "";
    if (typeof Advertising.prototype._initialized == "undefined") {
        Advertising.prototype.Init = function() {
            var _self = this;
            var bigLstHtml = [];
            var smlLstHtml = [];
            for (var i = 0; i < _self.advSource.length; i++) {
                var json = _self.advSource[i];
                var linkUrl = json.linkUrl.length > 0 ? json.linkUrl : "javascript:;";
                bigLstHtml.push('<a href="' + linkUrl + '" target="_blank" key="' + i + '" mainTit="' + json.mainTit + '" subTit="' + json.subTit + '"><img src="" alt="' + json.mainTit + '" /></a>');
                smlLstHtml.push('<li key="' + i + '" mainTit="' + json.mainTit + '" subTit="' + json.subTit + '" bigUrl="' + json.bigUrl + '"><img src="' + json.smlUrl + '" alt="" /><i></i></li>');
            }
            _self.advBigList.html(bigLstHtml.join(""));
            _self.advSmlList.html(smlLstHtml.join(""));
            _self.advBigImgs = _self.advBigList.find("a");
            _self.advSmlImgs = _self.advSmlList.find("li").mouseover(function() {
                clearInterval(_self.timeId);
                var key = $(this).attr("key");
                _self.Load(key);
            }).mouseout(function() {
                var key = $(this).attr("key");
                _self.timeId = setInterval(function() {
                    var nextItem = _self.advSmlList.find("li[key='" + key + "']").next();
                    key = nextItem.length > 0 ? nextItem.attr("key") : 0;
                    _self.Load(key);
                }, 3500);
            });
            _self.LoadAllImage(0, function() {
                _self.Load(0);
                var intKeyId = 0;
                _self.timeId = setInterval(function() {
                    var nextItem = _self.advSmlList.find("li[key='" + intKeyId + "']").next();
                    intKeyId = nextItem.length > 0 ? nextItem.attr("key") : 0;
                    _self.Load(intKeyId);
                }, 3500);
            });
        };
        Advertising.prototype.LoadImage = function(imgUrl, callback) {
            var img = new Image(); //创建一个Image对象，实现图片的预下载
            img.src = imgUrl;
            if (img.complete) { // 如果图片已经存在于浏览器缓存，直接调用回调函数
                callback.call(img);
                return; // 直接返回，不用再处理onload事件
            }
            img.onload = function() { //图片下载完毕时异步调用callback函数。
                callback.call(img); //将回调函数的this替换为Image对象
            };
        };
        Advertising.prototype.LoadAllImage = function(key, callback) {
            var _self = this;
            _self.advBigList.toggleClass(_self.advCss.advLoading, true);
            if (_self.advSource.length > 0) {
                var nextItem = _self.advSource[key];
                if (typeof (nextItem) == "undefined") {
                    _self.advBigList.toggleClass(_self.advCss.advLoading, false);
                    callback.call();
                    return;
                }

                _self.LoadImage(nextItem.bigUrl, function() {
                    var _oImg = $(this);
                    _self.advBigImgs.each(function() {
                        if (key == $(this).attr("key")) {
                            $(this).find("img")[0].src = _oImg.attr("src");
                            return;
                        }
                    });
                    key++;
                    _self.LoadAllImage(key, callback);
                });
            }
        };
        Advertising.prototype.Load = function(key) {
            var _self = this;
            _self.advSmlImgs.each(function() {
                var _smlItem = $(this);
                if (_smlItem.attr("key") == key) {
                    _self.advPnlTit.html(_smlItem.attr("mainTit")).attr("title", _smlItem.attr("mainTit"));
                    _self.advPnlSubTit.html(_smlItem.attr("subTit")).attr("title", _smlItem.attr("mainTit"));
                    _self.advSmlImgs.toggleClass(_self.advCss.advItemSe, false);
                    _smlItem.toggleClass(_self.advCss.advItemSe, true);
                    _self.advBigImgs.each(function() {
                        var _bigItem = $(this);
                        if (_bigItem.attr("key") == key) {
                            _bigItem.find("img").show();
                            _self.advBigImgs.stop(false, true).animate({
                                opacity: 'hide'
                            }, {
                                queue: false,
                                duration: 100
                            });
                            _bigItem.stop(false, true).animate({
                                opacity: 'show'
                            }, {
                                queue: false,
                                duration: 600
                            });
                            return;
                        }
                    });
                    return;
                }
            });
        };
    }
    Advertising._initialized = true;
}

