// updated for w3c only.// updates and changes// -------------------------------------// 11.21.2003 - glide now supports interrupting callsfunction pointer(name, link) {    this.p = document.getElementById(name).style    this.elm = this.event = document.getElementById(name)    this.width = this.elm.offsetWidth 	this.height = this.elm.offsetHeight	this.x = this.elm.offsetLeft	this.y = this.elm.offsetTop		this.name = name	this.lcname = name.toLowerCase()	this.obj = name + "pointer"	eval (this.obj+"=this")		if(link) this.link = link		this.moveto = pointerMoveTo	this.moveby = pointerMoveBy	this.clipto = pointerClipTo	this.show = pointerShow	this.hide = pointerHide		this.scroll_moving = 0	this.s_up = pointerScrollUp 	this.s_down = pointerScrollDown	this.expand_moving=0	this.expand = pointerExpand	this.contract_moving=0	this.contract = pointerContract	this.glide_moving = 0	this.glide_dest = 0	this.glide_destv = 0	this.glide_movingv = 0	this.glideh = pointerGlideHoriz	this.glideh_c = pointerGlideHorizCore		this.glidev = pointerGlideVert	this.glidev_c = pointerGlideVertCore}function pointerMoveTo(x,y) {	if(this.link) this.link.moveby(x-this.x,y-this.y)	this.p.left = this.x = x	this.p.top = this.y = y}function pointerMoveBy(x,y) {	this.moveto(this.x+x, this.y+y)}function pointerClipTo(t,r,b,l) {	this.width = r	this.height = b	this.p.clip = "rect("+t+"px "+r+"px "+b+"px "+l+"px)"}function pointerShow() {	this.p.visibility = "visible"}function pointerHide() {	this.p.visibility = "hidden"}function pointerScrollUp(max_y, cur_jump, max_jump, speed) {	if (this.scroll_moving) {		if (this.y <= max_y) {			this.moveby(0,cur_jump)			if(cur_jump<max_jump) cur_jump++;			setTimeout(this.name.toLowerCase()+".s_up("+max_y+","+cur_jump+","+max_jump+","+speed+")",speed)		}	}}function pointerScrollDown(min_y, cur_jump, max_jump, speed) {	if (this.scroll_moving) {		if (this.y >= min_y) {			this.moveby(0,-cur_jump)			if(cur_jump<max_jump) cur_jump++;			setTimeout(this.name.toLowerCase()+".s_up("+min_y+","+cur_jump+","+max_jump+","+speed+")",speed)		}	}}function pointerExpand(x, y, xmov, ymov, speed) {	if(!this.contract_moving){		this.expand_moving=1;		this.clipto(0, this.width+xmov, this.height+ymov, 0)		if(this.width>x) this.clipto(0, x, this.height, 0)		if(this.height>y) this.clipto(0, this.width, y, 0)		if((this.width!=x)||(this.height!=y))			setTimeout(this.name.toLowerCase()+".expand("+x+","+y+","+xmov+","+ymov+","+speed+")", speed)		else this.expand_moving--;	}}function pointerContract(x, y, xmov, ymov, speed) {	if(!this.expand_moving){		this.contract_moving=1;		this.clipto(0, this.width-xmov, this.height-ymov, 0)		if(this.width<x) this.clipto(0, x, this.height, 0)		if(this.height<y) this.clipto(0, this.width, y, 0)		if((this.width!=x)||(this.height!=y))			setTimeout(this.name.toLowerCase()+".contract("+x+","+y+","+xmov+","+ymov+","+speed+")", speed)		else this.contract_moving--;	}}function pointerGlideHoriz(x) {	this.glide_dest = x	if((!this.glide_moving)&&(this.x!=x)){		this.glide_moving=1		this.glideh_c(0,1,10)	}}function pointerGlideHorizCore(xmov, speed, fuzzyness) {	if(Math.abs(this.x-this.glide_dest)>3){		xmov_mod = 0		if(!xmov)			if(this.glide_dest<this.x) xmov--				else xmov++		if(Math.abs(this.glide_dest-this.x)<Math.abs(xmov)*fuzzyness) xmov_mod -= xmov/fuzzyness			else this.glide_dest<this.x?xmov_mod--:xmov_mod++		this.moveby(xmov,0)		xmov += xmov_mod		setTimeout(this.name.toLowerCase()+".glideh_c("+xmov+","+speed+","+fuzzyness+")", speed)	}		else {			this.moveto(this.glide_dest,this.y)			this.glide_moving=0		}}function pointerGlideVert(y) {	if(!this.glide_movingv){		this.glide_movingv=1		this.glidev_c(y,0,1,10)	}}function pointerGlideVert(y) {	this.glide_destv = y	if((!this.glide_movingv)&&(this.y!=y)){		this.glide_movingv=1		this.glidev_c(0,1,10)	}}function pointerGlideVertCore(ymov, speed, fuzzyness) {	if(Math.abs(this.y-this.glide_destv)>3){		ymov_mod = 0		if(!ymov)			if(this.glide_destv<this.y) ymov--				else ymov++		if(Math.abs(this.glide_destv-this.y)<Math.abs(ymov)*fuzzyness) ymov_mod -= ymov/fuzzyness			else this.glide_destv<this.y?ymov_mod--:ymov_mod++		this.moveby(ymov,0)		ymov += ymov_mod		setTimeout(this.name.toLowerCase()+".glidev_c("+ymov+","+speed+","+fuzzyness+")", speed)	}		else {			this.moveto(this.x,this.glide_destv)			this.glide_movingv=0		}}function pointerGlideVert(y) {	if(!this.glide_movingv){		this.glide_movingv=1		this.glidev_c(y,0,1,10)	}}function pointerGlideVertCore(y, ymov, speed, fuzzyness) {	if(Math.abs(this.y-y)<=Math.abs(this.y-ymov-y)+1){		ymov_mod = 0		if(!ymov) ymov++		if(y<this.y) ymov = -Math.abs(ymov)		if(Math.abs(y-this.y)<Math.abs(ymov)*fuzzyness) ymov_mod -= ymov/fuzzyness			else ymov<0?ymov_mod--:ymov_mod++		this.moveby(0,ymov)		ymov += ymov_mod		setTimeout(this.name.toLowerCase()+".glidev_c("+y+","+ymov+","+speed+","+fuzzyness+")", speed)	}		else {			this.moveto(this.x,y)			this.glide_movingv=0			if(this.link) this.link.glide_movingv=0		}}
