function Marquee()
{
	
	this.ID = document.getElementById(arguments[0]);
	if(!this.ID)
	{
		//alert("您要设置的\"" + arguments[0] + "\"初始化错误\r\n请检查标签ID设置是否正确!\"");
		this.ID = -1;
		return;
	}
	this.Direction = this.Width = this.Height = this.DelayTime = this.WaitTime = this.Correct = this.CTL = this.StartID = this.Stop = this.MouseOver = 0;
	this.Step = 1;
	this.Timer = 30;
	this.DirectionArray = {"top":0 , "bottom":1 , "left":2 , "right":3};
	if(typeof arguments[1] == "number" || typeof arguments[1] == "string")this.Direction = arguments[1];
	if(typeof arguments[2] == "number")this.Step = arguments[2];
	if(typeof arguments[3] == "number")this.Width = arguments[3];
	if(typeof arguments[4] == "number")this.Height = arguments[4];
	if(typeof arguments[5] == "number")this.Timer = arguments[5];
	if(typeof arguments[6] == "number")this.DelayTime = arguments[6];
	if(typeof arguments[7] == "number")this.WaitTime = arguments[7];
	if(typeof arguments[8] == "number")this.ScrollStep = arguments[8]
	this.ID.style.overflow = this.ID.style.overflowX = this.ID.style.overflowY = "hidden";
	this.ID.noWrap = true;
	this.IsNotOpera = (navigator.userAgent.toLowerCase().indexOf("opera") == -1);
	if(arguments.length >= 7)this.Start();
	
}


Marquee.prototype.Start = function()
{
	if(this.ID == -1)return;
	if(this.WaitTime < 800)this.WaitTime = 800;
	if(this.Timer < 20)this.Timer = 20;
	if(this.Width == 0)this.Width = parseInt(this.ID.style.width);
	if(this.Height == 0)this.Height = parseInt(this.ID.style.height);
	if(typeof this.Direction == "string")this.Direction = this.DirectionArray[this.Direction.toString().toLowerCase()];
	this.HalfWidth = Math.round(this.Width / 2);
	this.HalfHeight = Math.round(this.Height / 2);
	this.BakStep = this.Step;
	this.ID.style.width = this.Width + "px";
	this.ID.style.height = this.Height + "px";
	if(typeof this.ScrollStep != "number")this.ScrollStep = this.Direction > 1 ? this.Width : this.Height;
	var msobj = this;
	var timer = this.Timer;
	var delaytime = this.DelayTime;
	var waittime = this.WaitTime;
	msobj.StartID = function(){msobj.Scroll()}
	msobj.Continue = function()
				{
					if(msobj.MouseOver == 1)
					{
						setTimeout(msobj.Continue,delaytime);
					}
					else
					{	clearInterval(msobj.TimerID);
						msobj.CTL = msobj.Stop = 0;
						msobj.TimerID = setInterval(msobj.StartID,timer);
					}
				}

	msobj.Pause = function()
			{
				msobj.Stop = 1;
				clearInterval(msobj.TimerID);
				setTimeout(msobj.Continue,delaytime);
			}

	msobj.Begin = function()
		{
			msobj.ClientScroll = msobj.Direction > 1 ? msobj.ID.scrollWidth : msobj.ID.scrollHeight;
			if((msobj.Direction <= 1 && msobj.ClientScroll <= msobj.Height + msobj.Step) || (msobj.Direction > 1 && msobj.ClientScroll <= msobj.Width + msobj.Step))return;
			msobj.ID.innerHTML += msobj.ID.innerHTML;
			msobj.TimerID = setInterval(msobj.StartID,timer);
			if(msobj.ScrollStep < 0)return;
			msobj.ID.onmousemove = function(event)
						{
							if(msobj.ScrollStep == 0 && msobj.Direction > 1)
							{
								var event = event || window.event;
								if(window.event)
								{
									if(msobj.IsNotOpera)
									{
										msobj.EventLeft = event.srcElement.id == msobj.ID.id ? event.offsetX - msobj.ID.scrollLeft : event.srcElement.offsetLeft - msobj.ID.scrollLeft + event.offsetX;
									}
									else
									{
										msobj.ScrollStep = null;
										return;
									}
								}
								else
								{
									msobj.EventLeft = event.layerX - msobj.ID.scrollLeft;
								}
								msobj.Direction = msobj.EventLeft > msobj.HalfWidth ? 3 : 2;
								msobj.AbsCenter = Math.abs(msobj.HalfWidth - msobj.EventLeft);
								msobj.Step = Math.round(msobj.AbsCenter * (msobj.BakStep*2) / msobj.HalfWidth);
							}
						}
			msobj.ID.onmouseover = function()
						{
							if(msobj.ScrollStep == 0)return;
							msobj.MouseOver = 1;
							clearInterval(msobj.TimerID);
						}
			msobj.ID.onmouseout = function()
						{
							if(msobj.ScrollStep == 0)
							{
								if(msobj.Step == 0)msobj.Step = 1;
								return;
							}
							msobj.MouseOver = 0;
							if(msobj.Stop == 0)
							{
								clearInterval(msobj.TimerID);
								msobj.TimerID = setInterval(msobj.StartID,timer);
							}
						}
		}
	setTimeout(msobj.Begin,waittime);
}

Marquee.prototype.Scroll = function()
{
	switch(this.Direction)
	{
		case 0:
			this.CTL += this.Step;
			if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
			{
				this.ID.scrollTop += this.ScrollStep + this.Step - this.CTL;
				this.Pause();
				return;
			}
			else
			{
				if(this.ID.scrollTop >= this.ClientScroll)
				{
					this.ID.scrollTop -= this.ClientScroll;
				}
				this.ID.scrollTop += this.Step;
			}
		break;

		case 1:
			this.CTL += this.Step;
			if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
			{
				this.ID.scrollTop -= this.ScrollStep + this.Step - this.CTL;
				this.Pause();
				return;
			}
			else
			{
				if(this.ID.scrollTop <= 0)
				{
					this.ID.scrollTop += this.ClientScroll;
				}
				this.ID.scrollTop -= this.Step;
			}
		break;

		case 2:
			this.CTL += this.Step;
			if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
			{
				this.ID.scrollLeft += this.ScrollStep + this.Step - this.CTL;
				this.Pause();
				return;
			}
			else
			{
				if(this.ID.scrollLeft >= this.ClientScroll)
				{
					this.ID.scrollLeft -= this.ClientScroll;
				}
				this.ID.scrollLeft += this.Step;
			}
		break;

		case 3:
			this.CTL += this.Step;
			if(this.CTL >= this.ScrollStep && this.DelayTime > 0)
			{
				this.ID.scrollLeft -= this.ScrollStep + this.Step - this.CTL;
				this.Pause();
				return;
			}
			else
			{
				if(this.ID.scrollLeft <= 0)
				{
					this.ID.scrollLeft += this.ClientScroll;
				}
				this.ID.scrollLeft -= this.Step;
			}
		break;
	}
}

/*		scrollingAD.js		*/

/*

JS滚动类

调用例：

<script type="text/javascript">  
// <![CDATA[  
var moveDiv = new scrollingAD("divId"); 
moveDiv.width = 500; 
moveDiv.height = 100; 
moveDiv.bgColor = "red"; 
moveDiv.direction = "left"; 
moveDiv.delay = 10; 
moveDiv.pauseTime = 1000; 
moveDiv.size = 50; 
moveDiv.isHover = false; 
moveDiv.move(); 
// ]]>  
</script>

*/
function scrollingAD(_id, _width, _height, _bgColor, _direction, _delay, _pauseTime, _size, _isHover){
	this.id              = _id;        //图层的ID，必须的参数，不填或者拼写错误将会报错
    this.width           = _width;     //滚动区域的宽度，默认值是200px，所有的默认值都可以在scrollingAD里修改
    this.height          = _height;    //滚动区域的高度，默认值是50px
    this.bgColor         = _bgColor;   //背景颜色，默认值是"transparent"透明
    this.direction       = _direction; //方向，可选值"up/left"
    this.delay           = _delay;     //每滚动1px的延迟时间，默认值20，单位是ms，值越大滚动越慢
    this.pauseTime       = _pauseTime; //每滚动限定距离后停滞的时间，单位ms，默认2000，就是2秒，不停滞为0
    this.size            = _size;      //每两次停滞之间滚动的距离，默认值是一屏。如方向是"up"，默认值即等于滚动区域的高度，方向"left"，则默认值为滚动区域的宽度
    this.object          = null;
    this.isMove          = true;      //是否悬停，默认是true
    if((this.id == "") || (this.id == null)){  
        alert("必须输入对象的 ID 才能创建滚动区域！");  
        this.isMove = false;  
        return false;  
    }  
    if(document.getElementById(this.id)){  
        this.object = document.getElementById(this.id);  
    } else {  
        window.alert("滚动区域创建失败！\n请确认 " + this.id + " 是否拼写错误。");  
        this.isMove = false;  
        return false;  
    }  
}  
scrollingAD.prototype.checkNumber = function(_attribute, defaultValue) {      
    if(isNaN(_attribute)){  
        return defaultValue;  
    } else {  
        return ((typeof(parseInt(_attribute)) == "number") ? parseInt(_attribute) : defaultValue);  
    }  
}  
scrollingAD.prototype.move = function(){  
    if(this.isMove == false) return false;  
    var defaultWidth           = 200;  
    var defaultHeight          = 50;  
    var defaultDelay           = 20;  
    var defaultPauseTime       = 2000;  
    var defaultIsHover         = true;  
    var defaultBgColor         = "transparent";  
    var defaultDirection       = "up";  
    this.width          = this.checkNumber(this.width, defaultWidth);  
    this.height         = this.checkNumber(this.height, defaultHeight);  
    this.delay          = this.checkNumber(this.delay, defaultDelay);  
    this.pauseTime      = this.checkNumber(this.pauseTime, defaultPauseTime);  
    this.isHover        = (typeof(this.isHover) == "boolean") ? this.isHover : defaultIsHover;  
    if(this.direction == "left"){  
        this.size       = this.checkNumber(this.size, this.width);  
    }else{  
        this.size       = this.checkNumber(this.size, this.height);  
    }  
    if((this.bgColor == null) || (typeof(this.bgColor) == undefined)){  
        this.bgColor = defaultBgColor;  
    }else{  
        this.bgColor = this.bgColor;  
    }  
    if((this.direction == null) || (typeof(this.direction) == undefined)){  
        this.direction = defaultDirection;      
    }else{  
        this.direction = (this.direction.search(/(^up$)|(^left$)/gi) != -1) ? this.direction.toLowerCase() : defaultDirection;  
    }  
    // 创建滚动区域；  
    with(this.object){  
        style.display         = "block";  
        style.width           = this.width + "px";  
        style.height          = this.height + "px";  
        style.overflow        = "hidden";  
        style.backgroundColor = this.bgColor;  
    }  
    if(this.direction == "up"){  
        this.object.innerHTML = "<div id=\"" + this.id + "_mirror\">" + this.object.innerHTML + "</div>" + "<div>" + this.object.innerHTML + "</div><input type=\"hidden\" value=\"1\" id=\"" + this.id + "_isHover\" />";  
    }else{  
        this.object.innerHTML = "<span id=\"" + this.id + "_mirror\">" + this.object.innerHTML + "</span>" + "<span>" + this.object.innerHTML + "</span><input type=\"hidden\" value=\"1\" id=\"" + this.id + "_isHover\" />";  
    }  
    if(document.getElementById(this.id)){  
        var evalString;  
        if(this.direction == "up"){  
            evalString = "scrollToUp(\"" + this.id + "\", " + this.isHover + ", " + this.delay + ", " + this.size + ", " + this.pauseTime + ", 0) ";  
        }else{  
            evalString = "scrollToLeft(\"" + this.id + "\", " + this.isHover + ", " + this.delay + ", " + this.size + ", " + this.pauseTime + ", 0) ";  
        }  
        eval(evalString);  
    }else{  
        return false;  
    }  
    function pixelToNum(_string){  
    //该函数用于去掉数值后面的px，并将之转化为数字。  
        if(_string.slice(_string.length - 2) == "px"){  
            return parseInt(_string.slice(0, (_string.length - 2)));  
        }else{  
            return _string;  
        }  
    }  
    function scrollToLeft(_id, _isHover, _delay, _size, _pauseTime, _s){  
        var obj = document.getElementById(_id);  
        var mirror = document.getElementById(_id + "_mirror");      
        if(_size*(1 + parseInt(_s)) + pixelToNum(mirror.style.marginLeft) >= 0){  
            var evalString =_id + "_timer = window.setTimeout(function() {scrollToLeft(\"" + _id + "\", " + _isHover + ", " + _delay + ", " + _size + ", " + _pauseTime + ", " + _s + ");}, " + _delay + ")";  
            if(_isHover){  
                mirror.onmouseover = function() {document.getElementById(_id + "_isHover").value = 0;}  
                mirror.onmouseout  = function() {document.getElementById(_id + "_isHover").value = 1;}  
                var step = parseInt(document.getElementById(_id + "_isHover").value);  
                mirror.style.marginLeft = (pixelToNum(mirror.style.marginLeft) - step) + "px";      
                eval("var " + evalString);  
            }else{                  
                mirror.style.marginLeft = (pixelToNum(mirror.style.marginLeft) - 1) + "px";      
                eval("var " + evalString);  
            }  
        }else{  
            if(mirror.offsetWidth + pixelToNum(mirror.style.marginLeft) >= 0){  
                _s += 1;  
                window.setTimeout(function() {scrollToLeft(_id, _isHover, _delay, _size, _pauseTime, _s)}, _pauseTime);  
            }else{  
                mirror.style.marginLeft = mirror.offsetWidth + pixelToNum(mirror.style.marginLeft) + "px";;  
                window.setTimeout(function() {scrollToLeft(_id, _isHover, _delay, _size, _pauseTime, 0)}, _pauseTime);  
            }  
        }  
    }  
    function scrollToUp(_id, _isHover, _delay, _size, _pauseTime, _s){  
        var obj = document.getElementById(_id);  
        var mirror = document.getElementById(_id + "_mirror");      
        if(_size*(1 + parseInt(_s)) + pixelToNum(mirror.style.marginTop) >= 0){  
            var evalString =_id + "_timer = window.setTimeout(function() {scrollToUp(\"" + _id + "\", " + _isHover + ", " + _delay + ", " + _size + ", " + _pauseTime + ", " + _s + ");}, " + _delay + ")";  
            if(_isHover){  
                mirror.onmouseover = function() {document.getElementById(_id + "_isHover").value = 0;}  
                mirror.onmouseout  = function() {document.getElementById(_id + "_isHover").value = 1;}  
                var step = parseInt(document.getElementById(_id + "_isHover").value);  
                mirror.style.marginTop = (pixelToNum(mirror.style.marginTop) - step) + "px";      
                eval("var " + evalString);  
            }else{                  
                mirror.style.marginTop = (pixelToNum(mirror.style.marginTop) - 1) + "px";      
                eval("var " + evalString);  
            }  
        }else{  
            if(mirror.offsetHeight + pixelToNum(mirror.style.marginTop) >= 0){  
                _s += 1;  
                window.setTimeout(function() {scrollToUp(_id, _isHover, _delay, _size, _pauseTime, _s)}, _pauseTime);  
            }else{  
                mirror.style.marginTop = mirror.offsetHeight + pixelToNum(mirror.style.marginTop) + "px";;  
                window.setTimeout(function() {scrollToUp(_id, _isHover, _delay, _size, _pauseTime, 0)}, _pauseTime);  
            }  
        }  
    }  
} 