Hola Dundee:
¡Uff!, con tantos comentarios se hace difícil la lectura... pero ya que no descubro el "poblema", te voy a decir algunas cosas que valen para encontrarlos.
Por ejemplo
setTimeout('proceso()', 1000);
y
setTimeout('proceso(CatId)', 1000);
Tienen una diferencia que deberías controlar... y si importa ese contenido, podrías chequear (en fase de pruebas y depuración) que le llega el valor adecuado, tal vez con una alerta...
Otra cosa que parece que no debe ser problema es algunos nombres de variables que pueden confundirse con objetos, como images... existe la colección document.images, que creo que no es igual incluso en explorer, pero en el caso de frames (y no sé si habrá más) existe indo.frames y document.frames (me refiero a explorer)... bueno, esto último no creo que sea necesario chequear porque creo que está bien...
Por cierto, ¿provoca algún error?
Saludos