David,
I've investigated the error a little bit. It seems to be an IE bug that appears when you modify the body element before the document is fully loaded (see
http://support.microsoft.com/default.aspx/kb/927917 and
others...).
The functions you are calling using Exts.onReady do touch the body element before onload event. It seems that it somehow interferes with DayPilot (which also includes quite a complex JavaScript initialization code that is executed before onload - it doesn't modify document.body but it still builds its inner DOM structure using JavaScript).
The error is caused even by the first part:
var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
myMask.show();
When I replaced it with
var myMask = new Ext.LoadMask(Ext.get('calendar-main'), {msg:"Please wait..."});
myMask.show();
return;
the error disappeared. But there is no chance to eliminate the document.body access in the remaining code.
I'm afraid looking for the interference cause would be unproductive (I can't remove the DOM operations from DayPilot anyway) but moving the Ext init code to onload event seems to work:
// Ext.onLoad(function(){
window.onload = function(){
var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
myMask.show();
// define the center panel - this pulls the calendar from the div with id "calendar-main"
var panelCenter = new Ext.Panel({
region: 'center',
layout: 'fit',
autoScroll: true,
title: 'Calendar View',
contentEl:'calendar-main'
});
// define the navigation panel
var navigationPanel = new Ext.Panel({
region: 'west',
border: false,
bodyStyle: 'background-color: #d6e8ff',
split: true,
width: 175,
title: 'Navigation',
minSize: 175,
maxSize: 175,
collapsible: true
});
// define the header panel
var headerPanel = new Ext.Panel({
region: 'north',
title: 'header',
height:80
});
// define the page structure - this does the actual setting up of the page
var viewport = new Ext.FormViewport({
layout: 'border',
items: [panelCenter,headerPanel, navigationPanel]
});
setTimeout(function(){
myMask.hide();
}, 250);
//});
};
Let me know if this could work for you.