Ну много ж чего быть может, вы отладчиком пользоваться учитесь
Uncaught TypeError: Cannot call method 'getElementById' of undefined - значит что объект, в контексте которого вы вызываете метод "getElementById" есть undefined, может документ фрейма еще не прогружен, может еще что, вы б рабочий пример сделали тут, виднее было б, к тому же в методе hidemenu вы все равно ищете document прямо в элементе фрейма. Посмотрите на результат top.document.getElementById("outterframe"). В отладчике же можно посмотреть в любую переменную. К тому же в методе hidemenu вы все равно ищете document не в window а в самом элементе. И сделайте наконец
var outterFrame = top.document.getElementById("outterframe"), innerFrame = outterFrame.contentWindow.document.getElementById("frames2")
Так ваш код и гибче и производительнее и читабельнее и удобнее для отладки будет. И проследите чтобы на момент поиска одного фрейма в другом, тот другой загрузился, если нет уверенности этом, то повесьте на outterFrame.contentWindow слушатель onload, а в его обработчике уже и делайте выборку #frame2