/*	usemedia.com . joes koppers . 2009
	ease-out animation object, usage:

	var ease = new Slide(update [, callback [, speed [, refresh [, margin ]]]]);
			//update 	function, called during ease, with current values
			//callback 	function, called at end of ease
			//speed		number, ease speed <1, default .35
			//refresh	number, update rate (milliseconds) default 40
			//margin	number, snap margin at end of ease, default 1
		
		ease.start(values);
			//values	object, { a:[start value,end value], b:[start,end], ... } */

function Slide(e,d,c,a,b){this.a=false;this.s=c||0.35;this.m=b||1;this.r=a||40;this.uCb=e;this.eCb=d}Slide.prototype.start=function(a){this.oV=a;this.v=[];this.t=[];var b=0;for(var c in a){this.v[b]=a[c][0];this.t[b]=a[c][1];b++}this.sld()};Slide.prototype.abort=function(b){if(this.a){window.clearTimeout(this.a)}if(b){var a={};for(var c in this.oV){a[c]=this.oV[c][0]}this.uCb(a)}};Slide.prototype.upd=function(){var a={},b=0;for(var c in this.oV){a[c]=this.v[b];b++}this.uCb(a)};Slide.prototype.sld=function(){var f=false;for(var a=0;a<this.v.length;a++){var e=this.t[a]-this.v[a];this.v[a]+=this.s*(e);var b=(e>0&&this.v[a]<this.t[a]-this.m)||(e<0&&this.v[a]>this.t[a]+this.m);if(b){f=true}}if(f){this.upd();var c=this;this.a=window.setTimeout(function(){c.sld()},this.r)}else{for(var a=0;a<this.v.length;a++){this.v[a]=this.t[a]}this.upd();if(this.eCb){this.eCb()}this.a=false}};
