﻿(function($) {
    $.extend({ adv: {
        show: function(ads) {
            this.adFlagId = new Date().getTime();
            if (!ads || ads.length < 1) return;
            var th = this;

            function makeAd(ad) {
                var str = ["<div id='ad"];
                str.push(ad.position);
                str.push(th.adFlagId);
                str.push("' style='position:absolute;");
                if (ad.top) {
                    str.push("top:");
                    str.push(ad.top);
                    str.push("px;");
                } else {
                    str.push("top:200px;");
                }
                if (ad.position.toLowerCase() == 'left') {
                    str.push("left:");
                    str.push(ad.left ? ad.left : 2);
                } else if (ad.position.toLowerCase() == 'right') {
                    str.push("right:");
                    str.push(ad.right ? ad.right : 2);
                }
                str.push("px;'>");
                if (ad.showclose) {
                    str.push("<div style='text-align:right;padding-right:5px;'><span style='cursor:pointer;color:red;' onclick=\"$('#ad" + ad.position + th.adFlagId + "').hide();\" id='close_" + ad.position + th.adFlagId + "'>关闭</span></div>");
                }
                if (!ad.isObject) {
                    str.push("<div>");
                    if (ad.isflash) {
                        str.push("<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0' ><param name='movie' value='");
                        str.push(ad.imgUrl);
                        str.push("' /><param name='quality' value='high' /><embed src='");
                        str.push(ad.imgUrl);
                        str.push("' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash'></embed></object>");
                    } else {
                        str.push("<a href='");
                        str.push(ad.targetUrl);
                        str.push("' target='_blank'><img src='");
                        str.push(ad.imgUrl);
                        str.push("' border='0' /></a>");
                    }
                    str.push("</div>");
                    str.push("</div>");
                    return str.join("");
                }
                else {
                    str.push("</div>");
                    return $(str.join("")).append($(ad.objId));
                }
            }

            for (var i = 0; i < ads.length; i++) {
                $(document.body).append(makeAd(ads[i]));
            }
            var tmpt = 0;
            if (window.innerHeight) {
                tmpt = window.pageYOffset;
            } else if (document.documentElement && document.documentElement.scrollTop) {
                tmpt = document.documentElement.scrollTop;
            }
            else if (document.body) {
                tmpt = document.body.scrollTop;
            }
            this.oldFloatAdTop = tmpt + 200;
            setInterval(function() { th.scroll(); }, 5);
        },
        scroll: function() {
            var o = $("div[id^='ad']:visible");
            if (o.length < 1) return;
            var pos = o.offset();
            var tmpt = 0;
            if (window.innerHeight) {
                tmpt = window.pageYOffset;
            } else if (document.documentElement && document.documentElement.scrollTop) {
                tmpt = document.documentElement.scrollTop;
            } else if (document.body) {
                tmpt = document.body.scrollTop;
            }
            var step = 20;
            var topMarg = 20;
            if (pos.top <= tmpt + topMarg) {
                if (Math.abs(pos.top - tmpt - topMarg) > step) {
                    this.oldFloatAdTop += step;
                }
                o.css("margin-top", (this.oldFloatAdTop) + "px");
            } else if (pos.top > tmpt + topMarg) {
                if (Math.abs(pos.top - tmpt - topMarg) > step) {
                    this.oldFloatAdTop -= step;
                }
                o.css("margin-top", (this.oldFloatAdTop) + "px");
            }
        }
    }
    });
})(jQuery);