Вот, начал писать функцию для анимации..
var anim_ = {};
function anim(e){
  return {
	'go' : function(param, time, z){
	  if(e){
	    anim_[e] = true;
	    var tm = new Date().getTime();
	    setTimeout(function(){
		var pr = ((new Date().getTime()) - tm) / time;
		  z(e,pr);
		  if(pr < 1 && anim_[e]){
		    setTimeout(arguments.callee, 50);
		  };
	    }, 50);
	  };
	  return this;
	},
	'stop' : function(){
	  delete anim_[e];
	  return this;
	}
  };
};
Пример использования:
	
	| 
		 Код: 
	 | 
	<div id="lo">text</div>
<script>
var pb = document.getElementById('lo');
pb.onmouseover = function(){
  anim(this).stop().go([12, 15], 500, function(e, l){
    e.style.fontSize = 15 - 12 * l + 12 +'px';
  });
};
pb.onmouseout = function(){
  anim(this).stop().go([15, 12], 500, function(e, l){
    e.style.fontSize = 12 - 15 * l + 15+'px';
  });
};
</script>
  | 
	
Проблема в том, чтобы сделать остановку анимации.. при отведении курсора, если элемент ещё не до конца "анимировался", чтобы он анимированно начал возвращаться в предыдущее состояние..