Sólo comentar dos cosillas:
   Código PHP:
    function foo(){
       alert("Hola Mundo");
}
obj.onclick = foo(); (a)
 //ó
obj.onclick = foo; (b) 
    
  La forma (a) funciona siempre que 
foo() devuelva una función. Es decir: 
 Código PHP:
    function foo(){
    var f = function() {
        alert("Hola Mundo");
    };
    return f;
} 
    
  Tolo lo que le asignes a 
onclick tiene que ser una función en sí, no el resultado de esa función (tu 
obj.onclick = foo(); es lo mismo que 
obj.onclick = undefined; porque tu 
foo() no devuelve nada , o undefined). 
Funciones que devuelven funciones, un temita complicado, pero leí hace poco un par de utilidades que puede tener. De momento sólo les veo complicación.   
Un saludo.