Когда браузер прочитал JS-файл, он ещё не "дошёл" до вашего поля и поэтому выдаёт undefined (ну или вообще Error).
Правильно будет так:
<body onload="alert(author_link().value);">
…
<input id="author" value="TEXT" type="text" class="txt" tabindex="1" size="22" name="author" />
<!--
Тут ваш файл JS. В нём пишите:
function author_link() {
return document.getElementById('author');
}
-->
Или же можно воспользоваться событием
onDOMContentLoaded