Name: Calendar Week Numbers
Version: 1.4.0-5
Author: frause
Description: Adds ISO 8601 week numbers in the calendar headers. (MIT license)


--- /usr/palm/applications/com.palm.app.calendar/app/controllers/week-assistant.js.orig	Wed Mar 31 19:24:06 2010
+++ /usr/palm/applications/com.palm.app.calendar/app/controllers/week-assistant.js	Thu Apr  1 17:35:29 2010
@@ -103,11 +103,13 @@
 	buildWeekTitle: function() {
 		var today = Date.today().clearTime();
 		var dayOfWeek = this.getFirstDayOfWeek(this.weekDate);
+		var weekNumber = new Date(this.weekDate).getISO8601Week();
 		
-		var template = new Template($L("Week of #{dateStr}"));
+		var template = new Template($L("Week") + " #{weekStr}, " + $L("#{dateStr}"));
 		var templateModel = {};
-		templateModel.dateStr = Mojo.Format.formatDate(dayOfWeek, $L("MMM d, yyyy"));
-		this.title.innerHTML = template.evaluate(templateModel);
+ 		templateModel.dateStr = Mojo.Format.formatDate(dayOfWeek, $L("MMM yyyy"));
+		templateModel.weekStr = weekNumber;
+		this.title.innerHTML = template.evaluate(templateModel);		
 		
 		if (this.changingWeeks)
 			return;
--- /usr/palm/applications/com.palm.app.calendar/app/controllers/day-assistant.js.orig	Wed Mar 31 21:08:14 2010
+++ /usr/palm/applications/com.palm.app.calendar/app/controllers/day-assistant.js	Thu Apr  1 17:28:19 2010
@@ -214,17 +214,23 @@
 	buildDayTitle: function(doScrim) {
 		var today = Date.today().clearTime();
 		var dayDateNoTime = new Date(this.dayDate).clearTime();
+		var weekNumber = new Date(this.dayDate).getISO8601Week();
 		
 		if (dayDateNoTime.compareTo(today) == 0) {
-			var template = new Template($L("#{todayStr}, #{dateStr}"));
+			var template = new Template($L("#{todayStr}, #{dateStr}") + ", W#{weekStr}");
 			var todayStr= Mojo.Format.formatRelativeDate(today, {date: "short"}).capitalize();
 			
 			var templateModel = {};
 			templateModel.todayStr = todayStr;
+			templateModel.weekStr = weekNumber;
 			templateModel.dateStr = Mojo.Format.formatDate(this.dayDate, $L("EEE MMM d"));
 			this.controller.get('dv_title').update(template.evaluate(templateModel)); // Localize this date format string
 		} else {
-			this.controller.get('dv_title').update(Mojo.Format.formatDate(this.dayDate, $L("EEE MMM d, yyyy"))); // Localize this date format string
+			var template = new Template($L("#{dateStr}") + ", W#{weekStr}");
+			var templateModel = {};
+			templateModel.weekStr = weekNumber;
+			templateModel.dateStr = Mojo.Format.formatDate(this.dayDate, $L("EEE MMM d, yyyy"));
+			this.controller.get('dv_title').update(template.evaluate(templateModel)); // Localize this date format string
 		}
 		
 		if (doScrim) {
--- /usr/palm/applications/com.palm.app.calendar/app/controllers/month-assistant.js.orig	Thu Apr  1 22:19:21 2010
+++ /usr/palm/applications/com.palm.app.calendar/app/controllers/month-assistant.js	Thu Apr  1 22:15:08 2010
@@ -37,7 +37,13 @@
 	
 	buildMonthTitle: function() 
 	{
-		this.mvTitle.innerText = Mojo.Format.formatDate(this.monthDate, $L("MMM yyyy")); // Localize this date format string
+		var wn = new Date(this.monthDate);
+		wn.setDate(1);
+		var firstWeek = wn.getISO8601Week();	
+		wn.setMonth(wn.getMonth()+1);
+		wn.setDate(wn.getDate()-1);
+		var lastWeek = wn.getISO8601Week();
+		this.mvTitle.innerText = Mojo.Format.formatDate(this.monthDate, $L("MMM yyyy")) + ", " + $L("Week") + " " + firstWeek + "-" + lastWeek; // Localize this date format string
   	},
 
  	buildDayHeader: function() {
--- /usr/palm/applications/com.palm.app.calendar/javascripts/datejs/week.js.orig	Thu Apr  1 17:43:29 2010
+++ /usr/palm/applications/com.palm.app.calendar/javascripts/datejs/week.js	Thu Apr  1 17:31:21 2010
@@ -0,0 +1,9 @@
+Date.prototype.getISO8601Week = function() {
+	var d = new Date(this);
+	d.setUTCDate(d.getUTCDate() - (d.getUTCDay() + 6) % 7 + 3);
+	var ms = d.valueOf();
+	d.setUTCMonth(0, 4);
+	var w = Math.round((ms - d.valueOf()) / 604800000) + 1;
+	if (w <= 9) { w = "0" + w; }
+	return w;
+}
--- /usr/palm/applications/com.palm.app.calendar/sources.json.orig	Thu Apr  1 17:09:08 2010
+++ /usr/palm/applications/com.palm.app.calendar/sources.json	Thu Apr  1 17:09:22 2010
@@ -3,6 +3,9 @@
     "source": "javascripts\/datejs\/date.js"
   },
   {
+    "source": "javascripts\/datejs\/week.js"
+  },
+  {
     "source": "javascripts\/recurrence-rule.js"
   },
   {

