Если объемы большие, лучше писать в отдельных JS-файлах.
Сейчас часто используется jQuery, там проблема с формированием DOM решается просто: запуск кода по событию готовности документа делается так:
$(function() {
//Код, который запустится после того, как все прогрузилось
})
Без jQuery можно сделать примерно так (возможно, я ошибся в названии событий):
if (window.addEventListener)
window.addEventListener('load', loadHandler);
else if (window.attachEvent)
window.attachEvent('onload', loadHandler);
else
window.onload = loadHandler; //Переопределит все остальные обработчики, добавленные так
function loadHandler() {
alert('Страница загрузилась');
}