Ok, something to keep in mind, you NEVER assign a value to the first field in any table (in this case, calendarid). You don't even specify it in your save SQL. That field auto-increments and should never be assigned a value in any query that adds a record to the table.
The save routine IS this..
Code:
$db->query_write(fetch_query_sql($vbulletin->GPC['calendar'], 'calendar'));
I said to just ignore it because all it does is parse the calendar data into the calendar table. Other than the parse, there's nothing special about it. The fetch_query_sql is in includes/functions.php if you want to look at it.
If you just duplicated an existing calendar that you can view (with a different name I hope), there's no reason why it shouldn't work.
So far as that code, it's not really needed if you write directly to the table with known values.
--------------- Added [DATE]1313587108[/DATE] at [TIME]1313587108[/TIME] ---------------
Just to be sure I'm not talking out of my hind end, I just added a calendar with all of the same settings as the default calendar on my dev server by a direct SQL add and it does work.
The only settings I changed were the calendar name, and the display order.