--- /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js.org	Sun Nov  7 12:33:49 2010
+++ /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js	Thu Nov 11 15:45:36 2010
@@ -1980,6 +1980,9 @@
 		var needToInstantiateButtons = false;
 		var today = Date.now();
 		var d = new Date();
+		var today_year  = d.getFullYear();
+		var today_month = d.getMonth();
+		var today_date  = d.getDate();
 		var prevAddress = "";
 		for (var i = 0; i < stuff.length; i++) {
 			var delayed = {};
@@ -2016,23 +2019,34 @@
 				prevAddress = MessagingUtils.formatPhoneNumber(remoteAddr);
 				msg.dividerAddress = prevAddress; // this used to use msg.timeStamp - changed 2008-11-05	
 			}
-			msg.niceDate = BucketDateFormatter.getDateBucket(d, true, true);
-
+			
+			msg.time = Mojo.Format.formatDate(d, {'time': 'short'});
+			
+			var d_year  = d.getFullYear();
+			var d_month = d.getMonth();
+			var d_date  = d.getDate();
+			
+			if (d_year != today_year) {
+				msg.date = Mojo.Format.formatDate(d, 'd MMM yyyy');
+			} else if (d_month != today_month || Math.abs(d_date - today_date) > 7) {
+				msg.date = Mojo.Format.formatDate(d, 'd MMM');
+			} else if (d_date != today_date) {
+				msg.date = Mojo.Format.formatDate(d, 'EEE');
+			} else {
+				msg.date = $L('Today');
+			}
+			
 			// divider hack - round to the nearest 5 minutes
 			// we have to do this because the list divider implementation does not allow a divider
 			// to have knowledge about other dividers
 			var deviceTimeStampMinutes = d.getMinutes();
-			d.setMinutes((deviceTimeStampMinutes - (deviceTimeStampMinutes % 5)));
+			d.setMinutes((deviceTimeStampMinutes - (deviceTimeStampMinutes % 60)));
 			d.setSeconds(0);
 			// Do this to prevent the divider from showing up if an address isn't available. 
 			if (prevAddress) {
 				this.dividerAddress = prevAddress;
 			}
-			if (msg.locked !== true) {
-				msg.dividerLabel = msg.transportClass + BucketDateFormatter.getDateBucket(d, true, true) + this.dividerAddress;
-			}else if(i>1){
-				msg.dividerLabel = stuff[i-1].dividerLabel; 
-			}
+			msg.dividerLabel = msg.transportClass + d + this.dividerAddress;
 			
 			// HACK: Always display the message sent time for GCF
 			// When this is fixed, it should use 'timestamp' instead of 'localTimestamp'
@@ -2398,6 +2412,8 @@
 					this.handleMessageErrorPopup(results[0]);
 				}
 			});
+		} else if (value === 'show-message-info') {
+			this.showMessageInfo(messageId);
 		}
 	},
 	
@@ -2462,6 +2478,8 @@
 					this.handleMessageErrorPopup(results[0]);
 				}
 			});
+		} else if (value === 'show-message-info') {
+			this.showMessageInfo(paramsIn.messageId);
 		}
 	},
 	
@@ -2519,6 +2537,7 @@
 					popupItems = [{label: $L(deliveryReceiptMsg), command: '', disabled: true}];
 				}
 				popupItems = popupItems.concat([
+					{label: $L('Info'), command: 'show-message-info'},
 					{label: $L('Forward'), command: 'forward-cmd'},
 					{label: $L('Forward Via Email'), command: 'forward-as-email-cmd'},
 					{label: $L('Copy Text'), command: 'copy-cmd'},
@@ -2577,6 +2596,7 @@
 			params.filePath = mmsTarget.getAttribute('originalSrc');
 			params.mediaIndex = mmsTarget.getAttribute('mediaIndex');
 			popupItems = popupItems.concat([
+				{label: $L('Info'), command: 'show-message-info'},
 				{label: $L('View'), command: 'view-image-cmd'},
 				{label: $L('Forward'), command: 'forward-cmd'},
 				{label: $L('Forward Via Email'), command: 'forward-as-email-cmd'},
@@ -2603,6 +2623,7 @@
 			params.fileName = mmsTarget.getAttribute('fileInfo');
 			
 			popupItems = popupItems.concat([
+				{label: $L('Info'), command: 'show-message-info'},
 				{label: $L('Play'), command: 'play-video-cmd'},
 				{label: $L('Forward'), command: 'forward-cmd'},
 				{label: $L('Forward Via Email'), command: 'forward-as-email-cmd'},
@@ -2627,6 +2648,7 @@
 			params.filePath = mmsTarget.getAttribute('filePath');
 			
 			popupItems = popupItems.concat([
+				{label: $L('Info'), command: 'show-message-info'},
 				{label: $L('Add to Contacts'), command: 'add-contact-cmd'},
 				{label: $L('Forward'), command: 'forward-cmd'},
 				{label: $L('Forward Via Email'), command: 'forward-as-email-cmd'},
@@ -2655,6 +2677,7 @@
 		 onChoose:  this.handleContextMenuSelectMms.bind(this, params),
 		 placeNear: mmsTarget,
 		 items: [
+		 {label: $L('Info'), command: 'show-message-info'},
 		 {label: $L('Add to Calendar'), command: 'add-calendar-cmd'},
 		 {label: $L('Forward'), command: 'forward-cmd'},
 		 {label: $L('Forward Via Email'), command: 'forward-as-email-cmd'},
@@ -2707,6 +2730,7 @@
 		}
 		
 		popupItems = popupItems.concat([
+			{label: $L('Info'), command: 'show-message-info'}, 
 			{label: $L('Forward'), command: 'forward-cmd'},
 			{label: $L('Forward Via Email'), command: 'forward-as-email-cmd'},
 			{label: $L('Copy Text'), command: 'copy-text-cmd'},
@@ -2721,6 +2745,37 @@
 			placeNear: eventTarget.target,
 			items: popupItems
 		});
+	},
+	
+	/**
+	 * Show info about the message
+	 *
+	 * @param {Object} messsageId
+	 */
+	showMessageInfo: function(messageId) {
+		var future = MessagingDB.Messages.get(messageId);
+		future.then(this, function() {
+			var results = future.result ? future.result.results : [];
+			var msg = results[0];
+			var d = new Date(msg.localTimestamp);
+		
+			var localTs = Mojo.Format.formatDate(d, {'time': 'medium'});
+			var localDate = Mojo.Format.formatDate(d, {'date': 'medium'});
+			var address = MessagingUtils.formatPhoneNumber(this.getAddressFromMsg(msg));
+			var from = new Template($L("From: #{address}")).evaluate({ address: address });
+		
+			if (msg.folder === MessagingDB.Messages.Folders.OUTBOX) {
+				from = $L("To:") + " " + address;
+			}
+		
+			this.controller.showAlertDialog({
+				onChoose: function(whatever) {},
+				title: "Info",
+				message: from + "<br>" + $L("Time:") + " " + localTs + "<br>" + $L("Date:") + " " + localDate,
+				choices: [{label: "Ok", value: 'close'}],
+				allowHTMLMessage: true
+			});
+		});	
 	},
 	
 	/**
