Как уже упоминалось, IE не передает объект события в качестве параметра. Попробуйте это:
var form = document.getElementById('theform')
/* create the event handler */
form.gen.onclick = function( evt ) {
if(!evt)
evt = window.event;
var f = evt.target.form
var y = f.year.value
var m = f.month.value
genCalendar( document, y, m, 'theCalendar' )
}
Или, что еще лучше, используйте кросс-браузерную библиотеку, например Prototype.js или jQuery .