Podrías generar un método vacío para luego sobreescribirlo y que funcione como pseudoevento, algo semejante a broadcasting. Un ejemplo muy rápido:
  Código PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
function fadeElement(e){
       this.element = document.getElementById(e);
       this.element.style.visibility='visible';
       this.finish = function(){};//método vacío
       this.timmer=0;
       this.ejecutar=function(inicio,fin){
           if(inicio<fin){
               clearTimeout(this.timmer);
                this.element.style.visibility='hidden';
                   return this.finish();//llamamos al método vacío
           }
           this.element.style.opacity=inicio;
           this.element.style.filter='alpha(opacity='+inicio*100+')';
           var _self=this;
           this.timmer=setTimeout(function(){_self.ejecutar(inicio-0.05,0)},50);
       }
       
         
}
onload=function(){
    var hidebox = new fadeElement("box");
    hidebox.finish = function(){
       alert("ya se oculto");
    }
    hidebox.ejecutar(1,0);
}
</script>
</head>
<body>
<div id="box" style="background-color:#F00">Colocar aquí el contenido para  id "box"</div>
</body>
</html> 
   
  Normalmente en animaciones se suele agregar para poder usar pseudoeventos como onMotionStart, onMotionProgress, onMotionFinished, etc.