Todos los eventos tienen un TARGET(el TARGET vendria a ser el objeto/nodo/etiqueta donde se manifesto el EVENTO)
si vos pones..
el target seria el input, el evento seria focus y el alert seria la accion que le asignaste al evento para ejecutar
Mediante propiedades como
parentNode..
childNodes...
nodeName, etc..
Podes saber exactamente donde estas situado a nivel de nodos... verificas la rama de nodos y si el TARGET no esta dentro del menu, ejecutas la funcion de ocultar
Intenta ponerle el evento al body(<body onclick="algo();">) y en la funcion "algo" verificas el target
p.d.: Aca te dejo un
link