// TAILORED VERSION FOR JB 7/2/2006
//
// written by Bugimus
//

function getoOpacity() {
	if(bugimus.IE5) return this.filters.alpha.opacity
	else if(bugimus.NN6) return this.style.MozOpacity
}
function setoOpacity(c) {
	if(bugimus.IE5) this.filters.alpha.opacity = c
	else if(bugimus.NN6)this.style.MozOpacity = c + "%"
}
function getoX() {
	if(bugimus.IE5)return parseInt(this.style.pixelLeft)
	else if(bugimus.NN4)return parseInt(this.style.left)
	else if(bugimus.NN6||bugimus.OPA)return parseInt(this.style.left)
}
function getoY() {
	if(bugimus.IE5)return parseInt(this.style.pixelTop)
	else if(bugimus.NN4)return parseInt(this.style.top)
	else if(bugimus.NN6||bugimus.OPA)return parseInt(this.style.top)
}
function setoX(x) {
	if(bugimus.IE5)this.style.left=x + "px"
	else if(bugimus.NN4)this.style.left=x
	else if(bugimus.NN6||bugimus.OPA)this.style.left=x + "px"
}
function setoY(y) {
	if(bugimus.IE5)this.style.top=y + "px"
	else if(bugimus.NN4)this.style.top=y
	else if(bugimus.NN6||bugimus.OPA)this.style.top=y + "px"
}
function showoDiv() {
	this.style.visibility = "visible";
}
function hideoDiv() {
	this.style.visibility = "hidden";
}
function getoWidth() {
	return parseInt(this.style.width)
}
function getoHeight() {
	return parseInt(this.style.height)
}
function setoWidth(w) {
	this.style.width=w + "px"
}
function setoHeight(h) {
	this.style.height=h + "px"
}
function setoZindex( z ) {
	this.style.zIndex = z
}
function getoZindex() {
	return this.style.zIndex
}
function clipoDiv(top,right,bottom,left){
	if(bugimus.IE5) {
		this.style.clip="rect("+top+","+right+","+bottom+","+left+")"
	} else {
		this.style.clip.top=top
		this.style.clip.right=right
		this.style.clip.bottom=bottom
		this.style.clip.left=left
	}
}

function getoPadding() {
	return parseInt(this.style.padding)
}
function setoPadding(s) {
	this.style.padding=s
}
function getoBorderWidth() {
	return parseInt(this.style.borderWidth)
}
function setoBorderWidth(s) {
	this.style.borderWidth=s+"px"
}

function warpoTo(x,y) {
	if(bugimus.IE5) {
		this.style.left = x + "px"
		this.style.top = y + "px"
	} else if(bugimus.NN4) {
		this.style.moveTo(x,y)
	} else if(bugimus.NN6||bugimus.OPA) {
		this.style.left = x + "px"
		this.style.top = y + "px"
	}
}

function cursorChase( x, y ) {
    step = 2;
	dx = this.x - x + 0;
	dy = this.y - y + 0;
	this.distance = parseInt(Math.sqrt(dx*dx+dy*dy));
	if( dx!=0 ) this.alpha = Math.atan( dy/dx );
	else this.alpha = Math.PI/2;
	if( dx>0 ) this.alpha+=Math.PI;
	xstep = step*Math.cos(this.alpha);
	ystep = step*Math.sin(this.alpha);
	dspeed = 0.5 + this.distance/75;
	if( Math.abs(dx) > this.qzone ) {
		this.x+=xstep*dspeed;
		this.obj.left = this.x;
	} 
	if( Math.abs(dy) > this.qzone ) {
		this.y+=ystep*dspeed;
		this.obj.top = this.y;
	}
}

//-----------------------------------------------------------------
function chaseoTo( x, y ) {
	if(this.active)clearTimeout(this.timer)
	dx=x-this.getx()
	dy=this.gety()-y
	distance=Math.round(Math.sqrt(dx*dx+dy*dy))
//alert("hello   dx="+this.getx()+" dy="+dy+" distance="+distance )
	if(dx==0) angle=Math.PI*((dy>0)?.5:1.5)
	else angle=Math.atan(dy/dx)+(Math.PI*((dx<0)?1:(dy<0)?2:0))
	xstep=(dx>1)?Math.ceil(distance*Math.cos(angle)/this.decay):Math.floor(distance*Math.cos(angle)/this.decay)
	ystep=(dy<1)?Math.ceil(-distance*Math.sin(angle)/this.decay):Math.floor(-distance*Math.sin(angle)/this.decay)
	if(!this.constrainX) {
		this.setx(this.getx()+xstep)
	}
	if(!this.constrainY) {
		this.sety(this.gety()+ystep)
	}
//	if(this.fade)this.doAlpha()
	if( distance>1 ) {
		this.active=true
		this.timer=setTimeout(this.objname+".chase("+x+","+y+")", this.speed)
	} else {
		clearTimeout(this.timer)
		this.warp(x,y)
		this.active=false
	}
}

function doAlpha() {
	if(this.orientation=="h") {
		for(i=0; i<this.numpix; i++) {
			x=Math.abs( this.sweetspot-this.stripObj.getx()-this.pixObj[i].getx() )
			o=this.a*Math.exp((-x^2)/this.s) 
			this.pixObj[i].setopacity(Math.abs(o))
		}
	} else {
		for(i=0; i<this.numpix; i++) {
			y=Math.abs( this.sweetspot-this.stripObj.gety()-this.pixObj[i].gety() )
			o=this.a*Math.exp((-y^2)/this.s) 
			this.pixObj[i].setopacity(Math.abs(o))
		}
	}
}



