TextSlider = function(className) {
    document.write("<div id='TextSliderPLayer_"+ className +"'><div id='TextSliderLayer_"+ className +"'></div></div>");

    this.item = [];
    this.width = this.height = this.speed = this.pixel = this.interval =
        this.size = this.moveCount = this.X = this.Y = this.maxwidth =this.maxheight=0;
    this.direction = "";
    this.pLayer = document.getElementById("TextSliderPLayer_"+ className);
    this.layer = document.getElementById("TextSliderLayer_"+ className);
    this.align = "left";
    this.intervalId = null;
    this.className = className;
    this.isPause = false;
	this.items=0;
}
TextSlider.prototype.init = function() {
	this.items=this.item.length;
	this.maxwidth = this.direction=='up' || this.direction=='down' ? this.width : this.size*(this.item.length);
    this.maxheight = this.direction=='up' || this.direction=='down' ? this.size*(this.item.length) : this.height;
	if(this.direction=='up' || this.direction=='down')
	{
		while(this.maxheight<this.height)
		{
			this.item[this.item.length] ="<div style=\"width:1px;height:1px;overflow:hidden;\">&nbsp;</div>";
			this.maxheight=this.size*(this.item.length);
		};
		for (var i=0; i<parseInt(this.maxheight / this.size, 10); i++)
        this.item[this.item.length] = this.item[i];
		this.maxheight=this.maxheight*2;
	}
	else
	{
		while(this.maxwidth<this.width)
		{
			this.item[this.item.length] ="<div style=\"width:1px;height:1px;overflow:hidden;\">&nbsp;</div>";
			this.maxwidth=this.size*(this.item.length);
			//alert(this.item.length);
		};
		for (var i=0; i<parseInt(this.maxwidth / this.size, 10); i++)
        this.item[this.item.length] = this.item[i];
		
		this.maxwidth=this.maxwidth*2;
	}
    with (this.pLayer) {
        style.width = this.width+"px";
        style.height = this.height+"px";
        style.overflow="hidden"; 
    }
    switch (this.direction) {
        case "up": this.X = this.Y = 0; break;
        case "down": this.X = 0; this.pLayer.scrollTop = this.Y = this.maxheight/2; break;
        case "left": this.X = this.Y = 0; break;
        case "right": this.Y = 0; this.pLayer.scrollLeft = this.X = this.maxwidth/2; break;
    }
    var __html = "<div onmouseover='"+this.className+".pause()' onmouseout='"+this.className+".unpause()'>";
    if (this.direction=='up' || this.direction=='down') {
        __html += "<table width='"+ this.maxwidth +"' cellspacing='0' cellpadding='0' border='0'>";
        for (var i in this.item)
            __html += "<tr><td height='"+this.size+"' style='overflow:hidden;' align='"+this.align+"' valign='top'>"+this.item[i]+"</td></tr>";
        __html += "</table>";
		
    } else {
        __html += "<table cellspacing='0' cellpadding='0' border='0' width='"+this.maxwidth+"'><tr>";
        for (var i in this.item)
            __html += "<td width='"+this.size+"' height='"+ this.pLayer.style.height +"' align='"+this.align+"' valign='top' style='overflow:hidden;'>"+this.item[i]+"</td>";
        __html += "</tr></table>";
    }
    __html += "</div>";
    this.layer.innerHTML = __html;
	//alert(this.maxwidth);
    this.start();
}
TextSlider.prototype.start = function() {
    this.intervalId = setInterval(this.className+".move()", this.speed);
}
TextSlider.prototype.move = function() {
    if (this.isPause) return;
    switch (this.direction) {
        case "up": this.Y += this.pixel; break;
        case "down": this.Y -= this.pixel; break;
        case "left": this.X += this.pixel; break;
        case "right": this.X -= this.pixel; break;
    }
    if (this.direction=='up' || this.direction=='down') {
        if (Math.abs(this.Y)%this.size==0) this.stop();
        this.pLayer.scrollTop = this.Y;
    } else {
        if (Math.abs(this.X)%this.size==0) this.stop();
        this.pLayer.scrollLeft =this.X;
    }
}
TextSlider.prototype.stop = function() {
    clearInterval(this.intervalId);
	//alert("maxwidth="+this.maxwidth+";x="+this.X);
    switch (this.direction) {
    case "up":
        if (Math.abs(this.Y) >= this.maxheight-this.size) this.Y = this.pLayer.scrollTop = 0;
        break;

    case "down":
        if (Math.abs(this.Y) <= 0) this.Y = this.pLayer.scrollTop = -this.size*(this.item.length-1);
        break;

    case "left":
        if (Math.abs(this.X) >= this.maxwidth/2) this.X = this.pLayer.scrollLeft = 0;
        break;

    case "right":
        if (Math.abs(this.X) <= 0) this.X = this.pLayer.scrollLeft = this.maxwidth/2;
        break;
    }
    setTimeout(this.className+".start()", this.interval);
}
TextSlider.prototype.pause = function() {this.isPause = true;}
TextSlider.prototype.unpause = function() {this.isPause = false;}