/*************************************************************************  dw_lib.js - used with dw_glide.js, dw_glider.js, ...  document.getElementById and document.all compatible (not ns4)  version date September 2003    This code is from Dynamic Web Coding   at http://www.dyn-web.com/  Copyright 2003 by Sharon Paine   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.*************************************************************************/dynObj.holder = {}; // constructorfunction dynObj(id,x,y,w,h) {  this.el = dynObj.getElemRef(id);  if (!this.el) return;  this.id = id;   dynObj.holder[this.id] = this; this.animString = "dynObj.holder." + this.id;  var px = window.opera? 0: "px";	this.x = x || 0;	if (x) this.el.style.left = this.x + px;	this.y = y || 0;	if (y) this.el.style.top = this.y + px;	this.w = w || this.el.offsetWidth || 0;	this.h = h || this.el.offsetHeight || 0;	// if w/h passed, set style width/height	if (w) this.el.style.width = w + px; if (h) this.el.style.height = h + px;  // methods (ref's)  this.shiftTo = dw_shiftTo;  this.shiftBy = dw_shiftBy;  this.show = dw_show;  this.hide = dw_hide;  }// ref can be discarded (with other prop's retained) and re-obtained using getInstancedynObj.getElemRef = function(id) {   var el = document.getElementById? document.getElementById(id): document.all? document.all[id]: null;  return el;} dynObj.getInstance = function(id) {  var obj = dynObj.holder[id];  if (!obj) obj = new dynObj(id);  else if (!obj.el) obj.el = dynObj.getElemRef(id);  return obj;}function dw_shiftTo(x,y) {  if (x != null) this.el.style.left = (this.x = x) + "px";  if (y != null) this.el.style.top = (this.y = y) + "px";}function dw_shiftBy(x,y) { this.shiftTo(this.x+x, this.y+y); }function dw_show() { this.el.style.visibility = "visible"; }function dw_hide() { this.el.style.visibility = "hidden"; }  // for time-based animations// resources: www.13thparallel.org and www.youngpup.net (accelimation)var dw_Bezier = {  B1: function (t) { return t*t*t },  B2: function (t) { return 3*t*t*(1-t) },  B3: function (t) { return 3*t*(1-t)*(1-t) },  B4: function (t) { return (1-t)*(1-t)*(1-t) },  // returns current value based on percentage of time passed  getValue: function (percent,startVal,endVal,c1,c2) {    return endVal * this.B1(percent) + c2 * this.B2(percent) + c1 * this.B3(percent) + startVal * this.B4(percent);  }}// adapted from accelimation.js by Aaron Boodman of www.youngpup.netdw_Animation = {  instances: [],  add: function(fp) {    this.instances[this.instances.length] = fp;  	if (this.instances.length == 1) this.timerID = window.setInterval("dw_Animation.control()", 20);  },    remove: function(fp) {    for (var i = 0; i < this.instances.length; i++) {  		if (fp == this.instances[i]) {  			this.instances = this.instances.slice(0,i).concat( this.instances.slice(i+1) );  			break;  		}  	}  	if (this.instances.length == 0) {  		window.clearInterval(this.timerID);	this.timerID = null;  	}  },    control: function() {    for (var i = 0; i < this.instances.length; i++) {  		if (typeof this.instances[i] == "function" ) this.instances[i]();      else eval(this.instances[i]);    }  }}
