//keyframe tween
tween = {tweens:[]};
tween.add = function(twn) {
	n=tween.tweens.length;
	tween.tweens[n] = {};
	tween.tweens[n].data = twn;
	tween.tweens[n].interval = 0;
	tween.tweens[n].motion = function() {
		if(this.data.hasOwnProperty("frames")) {
			for(f = 0;f<this.data.frames.length;f++) {
				if(typeof this.data.frames[f].anim == "number") {
					clearTimeout(this.data.frames[f].anim);
				}
				this.data.frames[f].anim = setTimeout(function(obj) {
					ob = {}
					ob[obj.property] = obj.value
					$(obj.selector).stop().animate(ob,obj.duration,"linear")
			  },this.data.frames[f].wait,this.data.frames[f]);	
			}
		}
	}
	setTimeout(function(twn) {
		twn.motion.call(twn);
		twn.playing = true;
		if(twn.data.loop) {
			twn.interval = setInterval(function(twn) {
				if(twn.playing) {
					twn.motion.call(twn);					
				}
			},twn.data.loop,twn);
		}
	},twn.delayBefore,tween.tweens[n]);	
	return n;
}
tween.stop = function(n) {
	tween.tweens[n].playing = false;
	for(f=0;f<tween.tweens[n].data.frames.length;f++) {
		$(tween.tweens[n].data.frames[f].selector).stop();
		clearTimeout(tween.tweens[n].data.frames[f].anim);
	}
	clearInterval(tween.tweens[n].interval)	
}
