--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/See09/session.js Thu Oct 22 15:52:58 2009 +0100
@@ -0,0 +1,111 @@
+// ////////////////////////////////////////////////////////////////////////////
+// Symbian Foundation Example Code
+//
+// This software is in the public domain. No copyright is claimed, and you
+// may use it for any purpose without license from the Symbian Foundation.
+// No warranty for any purpose is expressed or implied by the authors or
+// the Symbian Foundation.
+// ////////////////////////////////////////////////////////////////////////////
+
+// Session class is used to encapsulate all session data
+function Session(){
+ this.date = null;
+ this.location = null;
+ this.startTime = null;
+ this.endTime = null;
+ this.topic = null;
+ this.chair = null;
+ this.speakers = null;
+ this.title = null;
+ this.description = null;
+}
+
+Session.prototype.GetContentHTML = function () {
+ var buf = "<small><i>" + this.startTime + " - " + this.endTime;
+ if ( this.location ) {
+ buf += ", " + this.location;
+ }
+ buf += "</i>";
+ var haschair = false;
+ if ( this.chair && this.chair != null && this.chair.length > 0 ) {
+ var ch = this.chair.replace(/<br>/g, ", ");
+ buf += "<br><b>Chair: " + ch + "</b>";
+ haschair = true;
+ }
+ if (this.speakers && this.speakers != null && this.speakers.length > 0) {
+ buf += "<b>, "
+ if ( haschair ) {
+ buf += "Speakers: ";
+ }
+ // remove nasty newlines
+ var spk = this.speakers.replace(/<br>/g, ", ");
+ buf += spk + "</b>";
+ }
+ buf += "<br>" + this.description + "</small>";
+ return buf;
+}
+
+
+// Used when parsing to assign a value by ordinal
+Session.prototype.SetFieldByOrdinal = function(ordinal, val) {
+ switch(ordinal) {
+ case 0: this.date = val; break;
+ case 1: this.location = val; break;
+ case 2: this.startTime = val; break;
+ case 3: this.endTime = val; break;
+ case 4: this.topic = val; break;
+ case 5: this.chair = val; break;
+ case 6: this.speakers = val; break;
+ case 7: this.title = val; break;
+ case 8: this.description = val; break;
+ }
+}
+
+Session.prototype.GetNumberOfFields = function () {
+ return 9;
+}
+
+Session.prototype.GetStartUtc = function(){
+ return this.GetUtcTime(this.date, this.startTime);
+}
+
+Session.prototype.GetEndUtc = function(){
+ return this.GetUtcTime(this.date, this.endTime);
+}
+
+Session.prototype.GetUtcTime = function(dateString, timeString){
+ // make a date, then we'll mod it
+ var d = new Date();
+ // dateString is in the format DD-mmm-YY
+ var parts = dateString.split("-");
+ d.setFullYear(parseInt(parts[2]) + 2000);
+ d.setDate(parseInt(parts[0]));
+ d.setMonth(indexOfMonth(parts[1]));
+ // time is in the format HH:MM
+ parts = timeString.split(":");
+ d.setHours(parseInt(parts[0]));
+ d.setMinutes(parseInt(parts[1]));
+ // convert to msec since Jan 1 1970
+ var localTime = d.getTime();
+ // obtain local UTC offset and convert to msec
+ var localOffset = d.getTimezoneOffset() * 60000;
+ // obtain UTC time in msec
+ return localTime + localOffset;
+}
+
+function indexOfMonth(m){
+ switch(m.toLowerCase()) {
+ case "jan": return 1;
+ case "feb": return 2;
+ case "mar": return 3;
+ case "apr": return 4;
+ case "may": return 5;
+ case "jun": return 6;
+ case "jul": return 7;
+ case "aug": return 8;
+ case "sep": return 9;
+ case "oct": return 10;
+ case "nov": return 11;
+ case "dec": return 12;
+ }
+}