/* 		dw_slide.js 		requires dw_core.js		version date: July 2002		This code is from Dynamic Web Coding - www.dyn-web.com     See Terms of Use at http://www.dyn-web.com/bus/terms.html    Permission granted to use this code     as long as this entire notice is included.				This code was developed while studying code from: 		dynduo by Dan Steinman at www.dansteinman.com/dynduo,		www.cross-browser.com by Mike Foster,		and www.youngpup.net by Aaron Boodman.		Code is adapted from those sources.				The slide methods are modified from cbe_slide.js from		www.cross-browser.com by Mike Foster, where the following		notice is included:				* Copyright (c) 2002 Michael Foster (mike@cross-browser.com) 		* This library is distributed under the terms of the 		* GNU Lesser General Public License (gnu.org).	  * Time-based, parametric equation animation derived from 	  * algorithms by Aaron Boodman (youngpup.net), 	  * and Sebastien Chevrel (sebchevrel.com).		*/dynObj.prototype.slideTo = function(destX,destY,slideTime,fn,container) {	this.slideTime = slideTime||.0001; this.fn=fn||null;	// ok to slide along one axis only	if (destX==null) destX=this.x;	if (destY==null) destY=this.y;	if (isNaN(parseInt(destX))) {	// if relative to container (string)		this.posRel(destX,destY,container);		this.destX=this.leftPos; this.destY=this.topPos;	} else {		this.destX=destX; this.destY=destY;	}	this.distX=this.destX-this.x; this.startX=this.x;	this.distY=this.destY-this.y; this.startY=this.y;	this.slideStart = (new Date()).getTime();	if (this.slideProp=="steady") this.per = 1/this.slideTime;	else this.per = Math.PI/(2*this.slideTime);	if (this.slideProp=="acc") {		this.distX=-this.distX; this.distY=-this.distY;		this.startX=this.destX; this.startY=this.destY;	}	this.sliding=true;	this.doSlide();}dynObj.prototype.slideBy = function(dx,dy,slideTime,fn,container) {	var destX=this.x+dx; var destY=this.y+dy;	this.slideTo(destX,destY,slideTime,fn,container);}dynObj.prototype.doSlide = function() {	if (!this.sliding) return;	// slide can be interrupted	var elapsed = (new Date()).getTime()-this.slideStart;	if (elapsed<this.slideTime) {		if (this.slideProp=="dec") {			var x = Math.round((this.distX)*Math.sin(this.per*elapsed)+this.startX);			var y = Math.round((this.distY)*Math.sin(this.per*elapsed)+this.startY);		} else if (this.slideProp=="acc") {			var x = Math.round((this.distX)*Math.cos(this.per*elapsed)+this.startX);			var y = Math.round((this.distY)*Math.cos(this.per*elapsed)+this.startY);		} else {			var x = Math.round((this.distX)*(this.per*elapsed)+this.startX);			var y = Math.round((this.distY)*(this.per*elapsed)+this.startY);		}		this.shiftTo(x,y);		this.onSlide();		setTimeout(this.obj+".doSlide()",35);	} else {	// if time's up		this.shiftTo(this.destX,this.destY);		this.onSlide();		this.sliding=false;		this.onSlideEnd();		if (this.fn) eval(this.fn);	}}// do you want your slides to be steady, accelerate or decelerate?dynObj.prototype.slideProp="dec";	// can be "steady", "acc", or "dec"dynObj.prototype.onSlide=function() {}dynObj.prototype.onSlideEnd=function() {}