
function objScroller(x, y, width, height, border, padding){
	this.x = x
	this.y = y
	this.width = width
	this.height = height
	this.border = border
	this.padding = padding

	this.items = new Array()
	this.itemLayers = new Array()
	this.created = 0

	// Style stuff..
	this.fgColor = "#FFFFFF"
	this.bgColor = "#000000"
	this.bdColor = "#FF6600"
	this.fontFace = "Arial,Helvetica"
	this.fontSize = "2"

	// Scroll stuff..
	this.speed = 20
	this.pauseTime = 4000
	this.pauseAllowed = 1
	this.timerId = null
	this.running = 1
	this.divShown = 1 //Number of Divs shown at the same time.
	this.direction = 1 //1 or -1

	//Methods.
	this.addItem = objScroller_addItem
	this.moveToLayer = objScroller_moveToLayer
	this.moveLayers = objScroller_moveLayers
	this.create = objScroller_create
	this.run = objScroller_run
	this.pause = objScroller_pause
	this.start = objScroller_start
	this.stop = objScroller_stop
	this.fastFoward = objScroller_fastFoward
	this.fastBackward = objScroller_fastBackward
	this.runNormally = objScroller_runNormally
}

function objScroller_addItem(){
	if(!this.created) this.items[this.items.length] = arguments[0]
}

function objScroller_moveToLayer(){
	if(this.itemLayers.length-this.divShown >= arguments[0]){
		var x = getLayerTop(this.itemLayers[arguments[0]])
		var y = getLayerLeft(this.itemLayers[arguments[0]])
		this.moveLayers(x,y)
	}
}

function objScroller_moveLayers(){
	for(var i=0; i<this.itemLayers.length; i++){
		moveLayerTo(this.itemLayers[i], (getLayerTop(this.itemLayers[i])-arguments[0]), (getLayerLeft(this.itemLayers[i])-arguments[1]))
	}
}

function objScroller_create(objName){
	if(this.created) return
	this.name = objName

	// Here is a tricky part.. Useful to perform looping..
	for(var i=0; i<this.divShown; i++){
		this.items[this.items.length] = this.items[i]
	}

	var html = ''
	var html_begin  = '<table border="'+ this.border +'" cellpadding="'+ this.padding +'" cellspacing="0" width="100%"><tr>'
		html_begin += '<td><font color="'+ this.fgColor +'" face="'+ this.fontFace +'" size="'+ this.fontSize +'">'
	var html_end    = '</font></td></tr></table>'

	if(browser.name == "ns4"){
		html += '\n<layer id="div_panel" visibility="hidden" width="'+ this.width +'" height="'+this.height+'">'
		for(i=0; i<this.items.length; i++){
			html += '\n<layer id="div_row_'+ i +'" visibility="inherit" left="0" top="'+ ((this.height / this.divShown) * i) +'" width="'+ this.width +'" height="'+this.height +'">'
			html += html_begin + this.items[i] + html_end
			html += '</layer>'
		}
		html += '</layer>'
	}
	else {
		html += '\n<div id="div_panel" style="visibility:hidden; position:absolute; width:'+ this.width +'px; height:'+ this.height +'px;">\n'
		for(i=0; i<this.items.length; i++){
			html += '\n<div id="div_row_'+ i +'" style="position:absolute; left:0px; top:'+ ((this.height / this.divShown) * i) +'px; width:'+ this.width +'px; height:'+ this.height +'px; visibility:inherit;">\n'
			html += html_begin + this.items[i] + html_end
			html += '</div>'
		}
		html += '</div>'
	}

	document.write(html)
	document.close()

    this.div_panel = getLayerById("div_panel")
	for(i=0; i<this.items.length; i++){
		this.itemLayers[i] = getLayerById("div_row_" + i + "")
		clipLayer(this.itemLayers[i], 0, 0, this.width, (this.height / this.divShown))
	}

	moveLayerTo(this.div_panel, this.x, this.y)
	clipLayer(this.div_panel, 0, 0, this.width, this.height)
	setLayerVisibility(this.div_panel, 'visible')

	this.create = 1
}

function objScroller_run(){
	var pauseFlag = 0

	for(var i=0; i<this.itemLayers.length; i++)
		if(getLayerTop(this.itemLayers[i]) == 0){
			if(this.itemLayers.length - this.divShown == i && this.direction == 1)
				this.moveToLayer(0)
			else if(i == 0 && this.direction == -1){
					this.moveToLayer(this.itemLayers.length-this.divShown)
				 }
			pauseFlag = 1
			break
		}

	this.moveLayers(1*this.direction,0)
	if(pauseFlag && this.pauseAllowed)this.pause()
}

function objScroller_pause(){
	if(this.running){
		this.stop()
		setTimeout(this.name+".start()", this.pauseTime)
	}
}

function objScroller_start(){
	this.stop()
	this.timerId = setInterval(this.name+".run()", this.speed)
	this.running = 1
}

function objScroller_stop(){
	if(this.running){
		clearInterval(this.timerId)
		this.running = 0
	}
}

function objScroller_fastBackward(){this.pauseAllowed = 0; this.direction = -1; this.start()}
function objScroller_fastFoward(){this.pauseAllowed = 0; this.direction = 1; this.start()}
function objScroller_runNormally(){this.pauseAllowed = 1}