
        function addEvent(obj, evtType, func, cap) {

            cap = cap || false;

            if (obj.addEventListener) {

                obj.addEventListener(evtType, func, cap);

                return true;

            } else if (obj.attachEvent) {

                if (cap) {

                    obj.setCapture();

                    return true;

                } else {

                    return obj.attachEvent("on" + evtType, func);

                }

            } else {

                return false;

            }

        }

        function removeEvent(obj, evtType, func, cap) {

            cap = cap || false;

            if (obj.removeEventListener) {

                obj.removeEventListener(evtType, func, cap);

                return true;

            } else if (obj.detachEvent) {

                if (cap) {

                    obj.releaseCapture();

                    return true;

                } else {

                    return obj.detachEvent("on" + evtType, func);

                }

            } else {

                return false;

            }

        }

        function getPageScroll() {

            var xScroll, yScroll;

            if (self.pageXOffset) {

                xScroll = self.pageXOffset;

            } else if (document.documentElement && document.documentElement.scrollLeft) {

                xScroll = document.documentElement.scrollLeft;

            } else if (document.body) {

                xScroll = document.body.scrollLeft;

            }

            if (self.pageYOffset) {

                yScroll = self.pageYOffset;

            } else if (document.documentElement && document.documentElement.scrollTop) {

                yScroll = document.documentElement.scrollTop;

            } else if (document.body) {

                yScroll = document.body.scrollTop;

            }

            arrayPageScroll = new Array(xScroll, yScroll);

            return arrayPageScroll;

        }

        function GetPageSize() {

            var xScroll, yScroll;

            if (window.innerHeight && window.scrollMaxY) {

                xScroll = document.body.scrollWidth;

                yScroll = window.innerHeight + window.scrollMaxY;

            } else if (document.body.scrollHeight > document.body.offsetHeight) {

                xScroll = document.body.scrollWidth;

                yScroll = document.body.scrollHeight;

            } else {

                xScroll = document.body.offsetWidth;

                yScroll = document.body.offsetHeight;

            }

            var windowWidth, windowHeight;

            if (self.innerHeight) {

                windowWidth = self.innerWidth;

                windowHeight = self.innerHeight;

            } else if (document.documentElement && document.documentElement.clientHeight) {

                windowWidth = document.documentElement.clientWidth;

                windowHeight = document.documentElement.clientHeight;

            } else if (document.body) {

                windowWidth = document.body.clientWidth;

                windowHeight = document.body.clientHeight;

            }

            if (yScroll < windowHeight) {

                pageHeight = windowHeight;

            } else {

                pageHeight = yScroll;

            }

            if (xScroll < windowWidth) {

                pageWidth = windowWidth;

            } else {

                pageWidth = xScroll;

            }

            arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)

            return arrayPageSize;

        }

        var AdMoveConfig = new Object();

        AdMoveConfig.IsInitialized = false;

        AdMoveConfig.AdCount = 0;

        AdMoveConfig.ScrollX = 0;

        AdMoveConfig.ScrollY = 0;

        AdMoveConfig.MoveWidth = 0;

        AdMoveConfig.MoveHeight = 0;

        AdMoveConfig.Resize = function() {

            var winsize = GetPageSize();

            AdMoveConfig.MoveWidth = winsize[2];

            AdMoveConfig.MoveHeight = winsize[3];

            AdMoveConfig.Scroll();

        }

        AdMoveConfig.Scroll = function() {

            var winscroll = getPageScroll();

            AdMoveConfig.ScrollX = winscroll[0];

            AdMoveConfig.ScrollY = winscroll[1];

        }

        addEvent(window, "resize", AdMoveConfig.Resize);

        addEvent(window, "scroll", AdMoveConfig.Scroll);

        function AdMove(id, addCloseButton) {

            if (!AdMoveConfig.IsInitialized) {

                AdMoveConfig.Resize();

                AdMoveConfig.IsInitialized = true;

            }

            AdMoveConfig.AdCount++;

            var obj = document.getElementById(id);

            obj.style.position = "absolute";

            var W = AdMoveConfig.MoveWidth - obj.offsetWidth;

            var H = AdMoveConfig.MoveHeight - obj.offsetHeight;

            var x = W * Math.random(), y = H * Math.random();

            var rad = (Math.random() + 1) * Math.PI / 6;

            var kx = Math.sin(rad), ky = Math.cos(rad);

            var dirx = (Math.random() < 0.5 ? 1 : -1), diry = (Math.random() < 0.5 ? 1 : -1);

            var step = 1;

            var interval;

            if (addCloseButton) {

                var closebtn = document.createElement("div");

                obj.appendChild(closebtn);

                closebtn.style.position = "absolute";

                closebtn.style.top = "1px";

                closebtn.style.left = (obj.offsetWidth - 28) + "px";

                closebtn.style.width = "26px";
                closebtn.style.height = "12px";

                closebtn.style.borderStyle = "solid";

                closebtn.style.borderWidth = "1px";

                closebtn.style.borderColor = "#000";

                closebtn.style.backgroundColor = "#fff";

                closebtn.style.fontSize = "12px";

                closebtn.style.color = "#000";

                closebtn.style.cursor = "pointer";

                closebtn.innerHTML = "关闭";

                closebtn.onclick = function() {

                    obj.style.display = "none";

                    clearInterval(interval);

                    closebtn.onclick = null;

                    obj.onmouseover = null;

                    obj.onmouseout = null;

                    obj.MoveHandler = null;

                    AdMoveConfig.AdCount--;

                    if (AdMoveConfig.AdCount <= 0) {

                        removeEvent(window, "resize", AdMoveConfig.Resize);

                        removeEvent(window, "scroll", AdMoveConfig.Scroll);

                        AdMoveConfig.Resize = null;

                        AdMoveConfig.Scroll = null;

                        AdMoveConfig = null;

                    }

                }

            }

            obj.MoveHandler = function() {

                obj.style.left = (x + AdMoveConfig.ScrollX) + "px";

                obj.style.top = (y + AdMoveConfig.ScrollY) + "px";

                rad = (Math.random() + 1) * Math.PI / 6;

                W = AdMoveConfig.MoveWidth - obj.offsetWidth;

                H = AdMoveConfig.MoveHeight - obj.offsetHeight;

                x = x + step * kx * dirx;

                if (x < 0) { dirx = 1; x = 0; kx = Math.sin(rad); ky = Math.cos(rad); }

                if (x > W) { dirx = -1; x = W; kx = Math.sin(rad); ky = Math.cos(rad); }

                y = y + step * ky * diry;

                if (y < 0) { diry = 1; y = 0; kx = Math.sin(rad); ky = Math.cos(rad); }

                if (y > H) { diry = -1; y = H; kx = Math.sin(rad); ky = Math.cos(rad); }

            }

            this.SetLocation = function(vx, vy) { x = vx; y = vy; }

            this.SetDirection = function(vx, vy) { dirx = vx; diry = vy; }

            this.Run = function() {

                var delay = 10;

                interval = setInterval(obj.MoveHandler, delay);

                obj.onmouseover = function() { clearInterval(interval); }

                obj.onmouseout = function() { interval = setInterval(obj.MoveHandler, delay); }

            }

        }

