// Hover Object

// A Dynlayer addon object to move a layer in a hovering motion (vertical/horizontal)

// 19990326



// Copyright (C) 1999 Dan Steinman

// Distributed under the terms of the GNU Library General Public License

// Available at http://www.dansteinman.com/dynapi/



function Hover(dynlayer,name) {

	this.dynlayer = dynlayer

	this.name = name

	this.play = HoverPlay

	this.slide = HoverSlide

	this.pause = HoverPause

	this.stop = HoverStop

}

function HoverPlay(amplitude,angleinc,angle,cycles,orientation,speed,fn) {

	if (this.active) return

	if (!this.paused) {

		this.amplitude = amplitude

		this.angleinc = angleinc

		this.angle = angle

		this.cycles = cycles

		this.orientation = orientation

		this.speed = speed

		this.active = false

		this.centerX = eval(this.dynlayer+'.x') - this.amplitude*Math.sin(this.angle*Math.PI/180)

		this.centerY = eval(this.dynlayer+'.y') + this.amplitude*Math.sin(this.angle*Math.PI/180)

	}

	this.active = true

	this.paused = false

	eval(this.dynlayer+'.'+this.name+'.slide()')

}

function HoverSlide() {

	if (this.active && (this.cycles==null || Math.abs(this.angleinc)<Math.abs(this.cycles*360-this.angle))) {

		this.angle += this.angleinc

		var x = (this.orientation=="h")? this.centerX + this.amplitude*Math.sin(this.angle*Math.PI/180) : null

		var y = (this.orientation=="v")? this.centerY - this.amplitude*Math.sin(this.angle*Math.PI/180) : null

		eval(this.dynlayer+'.moveTo('+x+','+y+')')

		setTimeout(this.dynlayer+'.'+this.name+'.slide()',this.speed)

	}

	else if (!this.paused) {

		this.active = false

		eval(this.fn)

	}

}

function HoverPause() {

	if (this.active) {

		this.active = false

		this.paused = true

	}

}

function HoverStop() {

	this.active = false

	this.paused = false

}

