var eventsPerWidget = 4; // number of events to show per widget. Default is 4\r
var showNothingText = true; // if set to "true", show a text if no events are in the list\r
var nothingText = 'No further events within ' + monthRange + ' months'; // text to show when no events are in the list\r
+var enableDaylightSaving = true;// enable this if you are in a timezone that has daylight saving time (+1h)\r
\r
//-------------------------------------------------------\r
// Nothing of interest from here on...\r
var orientation = '';\r
var now = new Date();\r
\r
+// vars for daylight saving time\r
+var daylightsavingWinter = 0;\r
+var daylightsavingSummer = 0;\r
+var summertime = false;\r
+\r
window.onload = init;\r
window.onresize = updateScreen;\r
window.onshow = updateScreen;\r
\r
+function isLeapYear( year ) {\r
+ if (( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 )\r
+ return true;\r
+ else\r
+ return false;\r
+}\r
+ \r
+function calcLeapYear(year, days)\r
+{\r
+ if (isLeapYear(year))\r
+ return ++days;\r
+ else\r
+ return days;\r
+}\r
+ \r
+function subToSunday(myDate, year, days, prevMonthDays)\r
+{\r
+ for (i = myDate.getDay(); i > 0 ;i--)\r
+ days--;\r
+ days -= prevMonthDays;\r
+ days = isLeapYear(year) ? --days : days;\r
+ return days;\r
+}\r
+ \r
+function calcDaylightSaving()\r
+{\r
+ var thisYearS = new Date(now.getFullYear(), 3, 0, 0, 0, 0 );\r
+ var thisYearW = new Date(now.getFullYear(), 10, 0, 0, 0, 0 );\r
+ var nextYearS = new Date(now.getFullYear() + 1, 3, 0, 0, 0, 0 );\r
+ var nextYearW = new Date(now.getFullYear() + 1, 10, 0, 0, 0, 0 );\r
+ var summer = false;\r
+ var winter = false;\r
+ \r
+ thisYearSDays = nextYearSDays = 90;\r
+ thisYearWDays = nextYearWDays = 304;\r
+ \r
+ thisYearSDays = calcLeapYear(now.getFullYear(), thisYearSDays);\r
+ thisYearWDays = calcLeapYear(now.getFullYear(), thisYearWDays);\r
+ nextYearSDays = calcLeapYear(now.getFullYear() + 1, nextYearSDays);\r
+ nextYearWDays = calcLeapYear(now.getFullYear() + 1, nextYearWDays);\r
+ \r
+ thisYearSDays = subToSunday(thisYearS, now.getFullYear(), thisYearSDays, 59);\r
+ thisYearWDays = subToSunday(thisYearW, now.getFullYear(), thisYearWDays, 273);\r
+ nextYearSDays = subToSunday(nextYearS, now.getFullYear() + 1, nextYearSDays, 59);\r
+ nextYearWDays = subToSunday(nextYearW, now.getFullYear() + 1, nextYearWDays, 273);\r
+ \r
+ daylightsavingSummer = new Date (now.getFullYear(), 03-1, thisYearSDays, 2, 0, 0);\r
+ daylightsavingWinter = new Date (now.getFullYear(), 10-1, thisYearWDays, 2, 0, 0);\r
+ if (daylightsavingSummer < now) {\r
+ daylightsavingSummer = new Date (now.getFullYear()+1, 03-1, nextYearSDays, 2, 0, 0);\r
+ var summer = true;\r
+ }\r
+ if (daylightsavingWinter < now) {\r
+ daylightsavingWinter = new Date (now.getFullYear()+1, 10-1, nextYearWDays, 2, 0, 0);\r
+ var winter = true;\r
+ }\r
+ if (summer && !winter)\r
+ summertime = true;\r
+ else\r
+ summertime = false;\r
+}\r
+\r
function error(message)\r
{\r
console.info('Error: ' + message);\r
\r
console.info('year=' + year + ' month=' + month + ' day=' + day + ' hours=' + hours + ' minutes=' + minutes+ ' seconds=' + seconds);\r
\r
+ // take care of daylight saving time\r
+ if (enableDaylightSaving) {\r
+ var date = new Date(year, month - 1, day, hours, minutes, seconds);\r
+ if (summertime && date > daylightsavingWinter && date < daylightsavingSummer)\r
+ hours -= 1;\r
+ else if (!summertime && date > daylightsavingSummer && date < daylightsavingWinter)\r
+ hours += 1;\r
+ }\r
+\r
return new Date(year, month - 1, day, hours, minutes, seconds);\r
}\r
\r
\r
function updateData()\r
{\r
+ calcDaylightSaving();\r
try {\r
// meetings have time\r
// note: anniveraries have a start time of 12:00am. So since we want to include them, we have to query the whole day and check if events have passed later\r
if (isToday(date) && showTodayAsText) // show weekday if the date string is not text. looks odd otherwise\r
entriesHtml += '<td colspan="4"><span class="date">' + dateStr + '</span> ';\r
else\r
- entriesHtml += '<td class="weekDay">' + weekDay + '</td><td class="date">' + dateStr + '</td><td colspan="2">';\r
+ entriesHtml += '<td class="weekDay">' + weekDay + '</td><td width="1px" class="date">' + dateStr + '</td><td colspan="2">';\r
} else if (entry.Type == 'Meeting') {\r
if (showCombinedDateTime) {\r
if (isToday(date))\r
- entriesHtml += '<td colspan="4"><span class="today">' + time + '</span> ';\r
+ entriesHtml += '<td width="1px" colspan="4"><span class="today">' + time + '</span> ';\r
else\r
- entriesHtml += '<td class="weekDay">' + weekDay + '</td><td class="date">' + dateStr + '</td><td colspan="2">';\r
+ entriesHtml += '<td width="1px" class="weekDay">' + weekDay + '</td><td width="1px" class="date">' + dateStr + '</td><td colspan="2">';\r
} else {\r
if (isToday(date) && showTodayAsText)\r
entriesHtml += '<td colspan="4"><span class="today">' + dateStr + '</span> <span class="time">' + time + '</span> ';\r
else\r
- entriesHtml += '<td class="weekDay">' + weekDay + '</td><td class="date">' + dateStr + '</td><td width="1px" class="time">' + time + '</td><td>';\r
+ entriesHtml += '<td width="1px" class="weekDay">' + weekDay + '</td><td width="1px" class="date">' + dateStr + '</td><td width="1px" class="time">' + time + '</td><td>';\r
}\r
}\r
}\r