function Ticker(width, height, speed, bgcolor) { 
    this.width = width;
    this.height = height;
    this.speed = speed; // 1 ~ 10
    this.currSpeed = speed;
    this.bgcolor = bgcolor;
    this.linkCol = new Array();
    this.linkColLength = 0;
    this.iedom = document.all || document.getElementById;
    this.cross_slide;
    this.cross_slide2;
    this.actualwidth = 0;
    
    this.add = function(str) {
        this.linkCol[this.linkColLength] = str;        
        this.linkColLength ++;
    };
    
    this.render = function(parentElement) {
        var tickerIndex = parseInt('0' + document.body.tickerCount, 10) + 1;
        document.body.tickerCount = tickerIndex;

        var str = '';
        str += '<table border="0" cellspacing="0" cellpadding="0"><tr><td>';
        str += '<div style="position:relative; width:' + this.width + 'px; height:' + this.height + 'px; overflow:hidden;">';
        str += '<div id="ticker_' + tickerIndex + '" style="position:absolute; width:' + this.width + 'px; height:' + this.height + 'px; background-color:' + this.bgcolor + '" onMouseover="this.tickerObj.currSpeed = 0;" onFocus="this.tickerObj.currSpeed = 0;" onMouseout="this.tickerObj.currSpeed = this.tickerObj.speed;" onBlur="this.tickerObj.currSpeed = this.tickerObj.speed;">';
        str += '<div id="ticker_' + tickerIndex + '_slide1" style="position:absolute; left:0px; top:0px;"></div>';
        str += '<div id="ticker_' + tickerIndex + '_slide2" style="position:absolute; left:-1000px;top:0px;"></div>';
        str += '</div></div>';
        str += '</td></tr></table>';
        
		parentElement.insertAdjacentHTML('beforeEnd', str);

        var tickerDivObj = document.getElementById('ticker_' + tickerIndex);
        tickerDivObj.tickerObj = this;
		this.cross_slide = tickerDivObj.children[0];
		this.cross_slide2 = tickerDivObj.children[1];
		
        this.cross_slide.innerHTML = this.cross_slide2.innerHTML = '<nobr>' + this.linkCol.join(" ") + '</nobr>';

        this.actualwidth = this.cross_slide.offsetWidth;
        this.cross_slide2.style.left = (this.actualwidth + 20) + 'px';
        var timerId = setInterval("document.getElementById('ticker_" + tickerIndex + "').tickerObj.slideLeft()", 30);		
    };
        
    this.slideLeft = function() {
        if (parseInt(this.cross_slide.style.left) > (this.actualwidth * (-1) + 8))
            this.cross_slide.style.left = parseInt(this.cross_slide.style.left) - this.currSpeed;
        else
            this.cross_slide.style.left = parseInt(this.cross_slide2.style.left) + this.actualwidth + 30;

        if (parseInt(this.cross_slide2.style.left) > (this.actualwidth * (-1) + 8))
            this.cross_slide2.style.left = parseInt(this.cross_slide2.style.left) - this.currSpeed;
        else
            this.cross_slide2.style.left = parseInt(this.cross_slide.style.left) + this.actualwidth + 30;
    };
}