// NewsTicker Object
// an animated news ticker
// 19990623

// Copyright (C) 1999 Dan Steinman
// Distributed under the terms of the GNU Library General Public License
// Available at http://www.dansteinman.com/dynapi/
// Heavily modified by Joao Paulo Vasconcellos, e4w, 30/11/2004


function NewsTicker(x,y,width,height) {
	this.name = 'NewsTicker'+(NewsTicker.count++)
	this.x = x
	this.y = y
	this.w = width
	this.h = height
	this.obj = this.name + "Object"
	eval(this.obj + "=this")
	this.items = new Array()
	this.scrollCount = 0

	this.pauseLength = 3000	//3000
	this.inc = 1
	this.speed = 10 //30
	this.fromX = 0
	this.fromY = this.h
	this.bgColor = null

	this.addItem = NewsTickerAddItem
	this.activate = NewsTickerActivate
	this.build = NewsTickerBuild
	this.start = NewsTickerStart
	this.stop = NewsTickerStop
	this.slide = NewsTickerSlide

}

function NewsTickerAddItem(text) {
	var i = this.items.length
	this.items[i] = new Object()
	this.items[i].text = text
}

function NewsTickerBuild() {
	this.css = css(this.name,this.x,this.y,this.w,this.h)
	this.div = '<div id="'+this.name+'">'
	for (var i=0;i<this.items.length;i++) {
		this.css += css(this.name+'Item'+i,0,0,this.w,this.h,this.bgColor,'hidden')
		this.div += '<div id="'+this.name+'Item'+i+'">'+this.items[i].text+'</div>'
	}
	this.div += '</div>'
}

function NewsTickerActivate(autostart) {
	for (var i=0;i<this.items.length;i++) {
		this.items[i].lyr = new DynLayer(this.name+'Item'+i)
		this.items[i].lyr.moveTo(this.fromX,this.fromY)
		this.items[i].lyr.show()
	}
	
	/*
	this.items[0].lyr.moveTo(0,0)
	this.items[1].lyr.moveTo(0,22)
	this.items[2].lyr.moveTo(0,44)
	this.items[3].lyr.moveTo(0,66)
	*/
	
	this.items[0].lyr.moveTo(0,0)
	this.items[1].lyr.moveTo(0,50)
	this.items[2].lyr.moveTo(0,100)
	this.items[3].lyr.moveTo(0,150)
		
	this.lyr = new DynLayer(this.name)
	var num = Math.sqrt(Math.pow(this.fromX,2) + Math.pow(this.fromY,2))/this.inc
	this.dx = this.fromX/num || 0
	this.dy = this.fromY/num || 0
	if (autostart!=false) setTimeout(this.obj+'.start()',this.pauseLength)
		
}

function NewsTickerStart() {
	if (!this.started) {

		this.started = true
		var t = this.scrollCount

		//--------------------------
		var b = this.items.length - (this.items.length - (this.scrollCount + 1))
		if(b >= this.items.length)
			b -= this.items.length

		var c = this.items.length - (this.items.length - (this.scrollCount + 2))
		if(c >= this.items.length)
			c -= this.items.length

		var d = this.items.length - (this.items.length - (this.scrollCount + 3))
		if(d >= this.items.length)
			d -= this.items.length
		
		var e = this.items.length - (this.items.length - (this.scrollCount + 4))
		if(e >= this.items.length)
			e -= this.items.length

//alert("t: " + t +"\nb: " + b + "\nc: " + c + "\nd: " + d + "\ne: " + e + "\nlength: " + this.items.length)

/*
		var b = (this.scrollCount==this.items.length-1)? 0 : this.scrollCount+1
		var c = (this.scrollCount==this.items.length-2)? 0 : this.scrollCount+2
		var d = (this.scrollCount==this.items.length-3)? 0 : this.scrollCount+3
		var e = (this.scrollCount==this.items.length-4)? 0 : this.scrollCount+4
*/
		//--------------------------
		
/*		if (this.scrollCount==this.items.length-1) { 	// só pra mover o ultimo layer
			var e = 1
		}	// fim*/

		var obj1 = this.items[t].lyr.obj
		var obj2 = this.items[b].lyr.obj
		var obj3 = this.items[c].lyr.obj
		var obj4 = this.items[d].lyr.obj
		var obj5 = this.items[e].lyr.obj

		this.timer = setInterval(this.obj+'.slide('+obj1+','+obj2+','+obj3+','+obj4+','+obj5+')',this.speed)
	
	}
}

function NewsTickerStop() {
	clearInterval(this.timer)
	this.started = false
}

function NewsTickerSlide(obj1,obj2,obj3, obj4, obj5) {

	obj1.moveBy(-this.dx,-this.dy)
	obj2.moveBy(-this.dx,-this.dy)
	obj3.moveBy(-this.dx,-this.dy)
	obj4.moveBy(-this.dx,-this.dy)
	obj5.moveBy(-this.dx,-this.dy)
	//if ((this.dx!=0 && Math.floor(obj2.x)==0) || (this.dy!=0 && Math.floor(obj2.y)==0)) {
		// o ultimo valor desse if deve ser 1/2 da altura do ticker
//	 if ((this.dx!=0 && Math.floor(obj5.x)==0) || (this.dy!=0 && Math.floor(obj5.y)==0)) {
	 if ((this.dx!=0 && Math.floor(obj4.x)==0) || (this.dy!=0 && Math.floor(obj4.y)==0) || (this.dy!=0 && Math.floor(obj4.y)==100)) {
		clearInterval(this.timer)
		obj1.moveTo(this.fromX,this.fromY)
		/*
		obj2.moveTo(0,0)
		obj3.moveTo(0,22)
		obj4.moveTo(0,44)
		obj5.moveTo(0,66)
		*/
		obj2.moveTo(0,0)
		obj3.moveTo(0,50)
		obj4.moveTo(0,100)
		obj5.moveTo(0,150)
		
		this.scrollCount = (this.scrollCount==this.items.length-1)? 0 : this.scrollCount+1
		
		this.timer = setTimeout(this.obj+'.started=false;'+this.obj+'.start()',this.pauseLength)
		
	}
}

NewsTicker.count = 0
