diff --git a/WPI Calendar Event Creator.xcodeproj/project.pbxproj b/WPI Calendar Event Creator.xcodeproj/project.pbxproj
index 86c488118feef4f284166652147e8fd5ad253312..c75cbd93d4f1b25ccdf46a557a841c82399a3e7e 100644
--- a/WPI Calendar Event Creator.xcodeproj/project.pbxproj	
+++ b/WPI Calendar Event Creator.xcodeproj/project.pbxproj	
@@ -375,6 +375,8 @@
 		C74BF58618E3BB4F00856171 /* tutorial6.png in Resources */ = {isa = PBXBuildFile; fileRef = C74BF58018E3BB4F00856171 /* tutorial6.png */; };
 		C74BF58718E3BB4F00856171 /* tutorial7.png in Resources */ = {isa = PBXBuildFile; fileRef = C74BF58118E3BB4F00856171 /* tutorial7.png */; };
 		C74BF58918E3BF3B00856171 /* tutorial0.png in Resources */ = {isa = PBXBuildFile; fileRef = C74BF58818E3BF3B00856171 /* tutorial0.png */; };
+		C74BF58C18E4C1FC00856171 /* WPICalendarEventCreatorAppIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = C74BF58B18E4C1FC00856171 /* WPICalendarEventCreatorAppIcon.png */; };
+		C74BF58E18E4C2F000856171 /* rsz_wpicalendareventcreatorappicon.png in Resources */ = {isa = PBXBuildFile; fileRef = C74BF58D18E4C2F000856171 /* rsz_wpicalendareventcreatorappicon.png */; };
 		C751D4DA18AB046600CFA0FF /* camesano-formal.jpg in Resources */ = {isa = PBXBuildFile; fileRef = C751D4D918AB046600CFA0FF /* camesano-formal.jpg */; };
 		C751D4DC18AB04B900CFA0FF /* clark-formal.jpg in Resources */ = {isa = PBXBuildFile; fileRef = C751D4DB18AB04B900CFA0FF /* clark-formal.jpg */; };
 		C751D4DE18AB04F500CFA0FF /* Ravi_Recent_rdax_161x179.jpg in Resources */ = {isa = PBXBuildFile; fileRef = C751D4DD18AB04F500CFA0FF /* Ravi_Recent_rdax_161x179.jpg */; };
@@ -890,6 +892,8 @@
 		C74BF58018E3BB4F00856171 /* tutorial6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tutorial6.png; sourceTree = "<group>"; };
 		C74BF58118E3BB4F00856171 /* tutorial7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tutorial7.png; sourceTree = "<group>"; };
 		C74BF58818E3BF3B00856171 /* tutorial0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tutorial0.png; sourceTree = "<group>"; };
+		C74BF58B18E4C1FC00856171 /* WPICalendarEventCreatorAppIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = WPICalendarEventCreatorAppIcon.png; sourceTree = "<group>"; };
+		C74BF58D18E4C2F000856171 /* rsz_wpicalendareventcreatorappicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rsz_wpicalendareventcreatorappicon.png; sourceTree = "<group>"; };
 		C751D4D918AB046600CFA0FF /* camesano-formal.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "camesano-formal.jpg"; sourceTree = "<group>"; };
 		C751D4DB18AB04B900CFA0FF /* clark-formal.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "clark-formal.jpg"; sourceTree = "<group>"; };
 		C751D4DD18AB04F500CFA0FF /* Ravi_Recent_rdax_161x179.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = Ravi_Recent_rdax_161x179.jpg; sourceTree = "<group>"; };
@@ -1134,6 +1138,7 @@
 		2C490FD01846A99B00440D04 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
+				C74BF58A18E4C1EB00856171 /* Icons and Images */,
 				2C49103E1847043100440D04 /* preview.html */,
 				2C4910111846DA3500440D04 /* Model */,
 				2C490FD11846A99B00440D04 /* WPI Calendar Event Creator-Info.plist */,
@@ -1748,6 +1753,15 @@
 			name = Tutorial;
 			sourceTree = "<group>";
 		};
+		C74BF58A18E4C1EB00856171 /* Icons and Images */ = {
+			isa = PBXGroup;
+			children = (
+				C74BF58D18E4C2F000856171 /* rsz_wpicalendareventcreatorappicon.png */,
+				C74BF58B18E4C1FC00856171 /* WPICalendarEventCreatorAppIcon.png */,
+			);
+			name = "Icons and Images";
+			sourceTree = "<group>";
+		};
 		C751D4D818AB044F00CFA0FF /* Chemical Engineering */ = {
 			isa = PBXGroup;
 			children = (
@@ -2209,6 +2223,7 @@
 				C740EC2018AEB83B00C3A701 /* brian-meacham-formal_rdax_161x121.jpg in Resources */,
 				C740ED7118AECD4600C3A701 /* Stapleton_Informal-001_rdax_161x121.jpg in Resources */,
 				C740ED8E18AED3BA00C3A701 /* boynton_rdax_300x200.jpg in Resources */,
+				C74BF58C18E4C1FC00856171 /* WPICalendarEventCreatorAppIcon.png in Resources */,
 				C740ECF018AEC31400C3A701 /* me-chierichetti-profile.jpg in Resources */,
 				C74BF58318E3BB4F00856171 /* tutorial3.png in Resources */,
 				C740ECFB18AEC36500C3A701 /* me-demetriou-profile.jpg in Resources */,
@@ -2242,6 +2257,7 @@
 				C740EDC618AED73000C3A701 /* sports-and-recreation-center-complex.jpg in Resources */,
 				C740ECA318AEC0E900C3A701 /* math-formal-farr.jpg in Resources */,
 				2C3BEE971859533D00BC6753 /* borderTextView.png in Resources */,
+				C74BF58E18E4C2F000856171 /* rsz_wpicalendareventcreatorappicon.png in Resources */,
 				C740EC5A18AEBD3E00C3A701 /* hua-deloray-profile.jpg in Resources */,
 				C740ED5018AEC81F00C3A701 /* johnson-large-new.jpg in Resources */,
 				C751D56C18AB155C00CFA0FF /* cs-rich-formal.jpg in Resources */,
diff --git a/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/Contents.json b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/Contents.json
index a396706db4ec4cfca4d984d38b90dc8098bded40..dc2f18f6864eb2b8abc2276e3d1d57f923d96692 100644
--- a/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/Contents.json	
+++ b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/Contents.json	
@@ -1,18 +1,21 @@
 {
   "images" : [
     {
-      "idiom" : "iphone",
       "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "rsz_1rsz_1rsz_icon.png",
       "scale" : "2x"
     },
     {
-      "idiom" : "iphone",
       "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "rsz_1rsz_icon.png",
       "scale" : "2x"
     },
     {
-      "idiom" : "iphone",
       "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "rsz_icon.png",
       "scale" : "2x"
     }
   ],
diff --git a/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_1rsz_1rsz_icon.png b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_1rsz_1rsz_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d6b31e54d560fd3e2ecec3c1b285cb802b7e511
Binary files /dev/null and b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_1rsz_1rsz_icon.png differ
diff --git a/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_1rsz_icon.png b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_1rsz_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a23bd03a89e0f86d77c4dfcdbdda634bcc5020d
Binary files /dev/null and b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_1rsz_icon.png differ
diff --git a/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_icon.png b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5dcf87537f36d0a043aac307563dceec94d5f4f
Binary files /dev/null and b/WPI Calendar Event Creator/Images.xcassets/AppIcon.appiconset/rsz_icon.png differ
diff --git a/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/BackGround4.png b/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/BackGround4.png
new file mode 100644
index 0000000000000000000000000000000000000000..fff55ba9ecb6ebbb9d04224ec6dc2d41b93949ad
Binary files /dev/null and b/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/BackGround4.png differ
diff --git a/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/BackGround5S.png b/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/BackGround5S.png
new file mode 100644
index 0000000000000000000000000000000000000000..9787537cc7b189a1088fcc3b627097a493367e25
Binary files /dev/null and b/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/BackGround5S.png differ
diff --git a/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/Contents.json b/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/Contents.json
index c79ebd3ada1309bae694b8e6760592b1254e035c..93f97a37f432d0ba2270bb6e0061f434adef23e2 100644
--- a/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/Contents.json	
+++ b/WPI Calendar Event Creator/Images.xcassets/LaunchImage.launchimage/Contents.json	
@@ -5,14 +5,16 @@
       "idiom" : "iphone",
       "extent" : "full-screen",
       "minimum-system-version" : "7.0",
+      "filename" : "BackGround4.png",
       "scale" : "2x"
     },
     {
-      "orientation" : "portrait",
+      "extent" : "full-screen",
       "idiom" : "iphone",
       "subtype" : "retina4",
-      "extent" : "full-screen",
+      "filename" : "BackGround5S.png",
       "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
       "scale" : "2x"
     }
   ],
diff --git a/WPI Calendar Event Creator/WPICalendarEventCreatorAppIcon.png b/WPI Calendar Event Creator/WPICalendarEventCreatorAppIcon.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d75ceb8e9ef30090d5724fec9220e5e543f6166
Binary files /dev/null and b/WPI Calendar Event Creator/WPICalendarEventCreatorAppIcon.png differ
diff --git a/WPI Calendar Event Creator/WPIModel.m b/WPI Calendar Event Creator/WPIModel.m
index 834982fd7474319a67d466021ca14866d4b90ab1..8f9e7de2b026fde4047d52fcecd1cf8c71fa5c4b 100644
--- a/WPI Calendar Event Creator/WPIModel.m	
+++ b/WPI Calendar Event Creator/WPIModel.m	
@@ -8,7 +8,6 @@
 
 #import "WPIModel.h"
 
-
 @implementation WPIModel
 
 static WPIModel *sharedDataModel = nil;
@@ -309,7 +308,9 @@ static WPIModel *sharedDataModel = nil;
     
     NSError* error;
     
-    [self.eventStore saveEvent:event span:EKSpanThisEvent error:&error];
+    //[self.eventStore saveEvent:event span:EKSpanThisEvent error:&error];
+    
+    
     
     UIAlertView* alert;
     if (error) {
@@ -328,6 +329,29 @@ static WPIModel *sharedDataModel = nil;
     [alert show];
 }
 
+-(NSString*)getICSFile {
+    NSString *title = [self getTitleForPurpose:1];
+    NSDate *sDate = [self getDateForPurpose:2];
+    NSDate *eDate = [self getDateForPurpose:3];
+    NSString *location = [self getLocation];
+    
+    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute fromDate:sDate];
+    NSString *startDate = [NSString stringWithFormat:@"%4ld%2ld%2ldT%2ld%2ld00", (long)components.year, (long)components.month , (long)components.day, (long)components.hour, (long)components.minute];
+    startDate = [startDate stringByReplacingOccurrencesOfString:@" " withString:@"0"];
+    components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute fromDate:eDate];
+    NSString *endDate = [NSString stringWithFormat:@"%4ld%2ld%2ldT%2ld%2ld00", (long)components.year, (long)components.month, (long)components.day, (long)components.hour, (long)components.minute];
+    endDate = [endDate stringByReplacingOccurrencesOfString:@" " withString:@"0"];
+    
+    NSLog(@"Date start: %@", startDate);
+    
+    title = [title stringByReplacingOccurrencesOfString:@"," withString:@"\\,"];
+    location = [location stringByReplacingOccurrencesOfString:@"," withString:@"\\,"];
+    
+    NSString *result = [NSString stringWithFormat:@"BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:WPIEventCreatorApp\nBEGIN:VEVENT\nSUMMARY:%@\nLOCATION:%@\nDTSTART;TZID=America/New_York:%@\nDTEND;TZID=America/New_York:%@\nEND:VEVENT\nEND:VCALENDAR", title, location, startDate, endDate];
+    
+    return result;
+}
+
 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
     if (buttonIndex) {
         if ([MFMailComposeViewController canSendMail]) {
@@ -343,6 +367,9 @@ static WPIModel *sharedDataModel = nil;
             NSString *message = [NSString stringWithFormat:@"Dear Professor %@:\n\n I am just writing you a reminder about an appointment we set on %@. \n\n Thank you!\n\n(This is an automated email from WPI Calendar Events Creator app)\n", [prof valueForKey:@"Name"], [self getDateForPurpose:4]];
             [mailViewController setMessageBody:message isHTML:NO];
             
+            
+            [mailViewController addAttachmentData:[[self getICSFile] dataUsingEncoding:NSUTF8StringEncoding] mimeType:@"text/calendar" fileName:@"AppointmentFile"];
+            
             [self.mainTable sendEmail:mailViewController];
         } else {
             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Can't do that :(" message:@"Device is unable to send email in its current state." delegate:self cancelButtonTitle:@"Okey" otherButtonTitles: nil];
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/entries b/WPI Calendar Event Creator/iCalObjCSDK/.svn/entries
new file mode 100755
index 0000000000000000000000000000000000000000..f05fd5290f6ea241aa997be50962576c2645f969
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/entries	
@@ -0,0 +1,581 @@
+10
+
+dir
+2866
+svn://cybergarage.org:3960/project/iphone/iCalObjCSDK/iCalObjCSDK
+svn://cybergarage.org:3960
+
+
+
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+b45aa7d4-fa09-0410-9ebe-fd257a136781
+
+
+
+
+
+
+
+
+()
+
+CGICalendarValue.h
+file
+
+
+
+
+2011-05-13T13:57:29.000000Z
+373ece60bb39da6b589f5a61052fb7c0
+2011-05-13T13:57:59.619818Z
+2849
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1038
+
+CGICalendar.h
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+6979973ac7015b875e63c6b5f743d468
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+910
+
+CGICalendarParameter.h
+file
+
+
+
+
+2011-05-13T13:57:29.000000Z
+2d055fb3742887f778f16467fa6cd124
+2011-05-13T13:57:59.619818Z
+2849
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+375
+
+CGICalendarValue.m
+file
+
+
+
+
+2011-05-13T13:57:29.000000Z
+db516f2e09a816edcca3c10c13311019
+2011-05-13T13:57:59.619818Z
+2849
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1215
+
+CGICalendarContentLine.h
+file
+
+
+
+
+2011-05-13T13:57:29.000000Z
+e7b6429f016bdfea683822c475c44770
+2011-05-13T13:57:59.619818Z
+2849
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1197
+
+CGICalendarProperty.h
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+f5e3e1f6189db1ce0c6bc054bc3cb604
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3137
+
+CGICalendar.m
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+8b06ee68e4cca712f92a8d7805aaa801
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5867
+
+CGICalendarParameter.m
+file
+
+
+
+
+2011-05-13T13:57:29.000000Z
+f321a4e01af4f4391c1b583d01d82fcb
+2011-05-13T13:57:59.619818Z
+2849
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+869
+
+CGICalendarContentLine.m
+file
+
+
+
+
+2011-05-13T13:57:29.000000Z
+a785c9a99341910e0ce5e1976f54634d
+2011-05-13T13:57:59.619818Z
+2849
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4678
+
+CGICalendarProperty.m
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+5bfe1322698bba692c9e40d3a109800f
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6654
+
+NSDate+CGICalendar.h
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+b2e88b2913f4bd32c864b1ef401e3e0d
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+376
+
+NSDate+CGICalendar.m
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+748a536821c18301c40360f5f683d6e2
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1566
+
+CGICalendarComponent.h
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+709e2e5672cf9091a6c18189156e5b19
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4199
+
+CGICalendarObject.h
+file
+
+
+
+
+2011-05-16T13:49:45.000000Z
+5c4148d27566e93e879373c6cba47be7
+2011-05-16T13:50:01.791142Z
+2853
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+968
+
+CGICalendarComponent.m
+file
+
+
+
+
+2011-05-19T11:58:56.000000Z
+a3233db14271ca948a188751bbfddf10
+2011-05-19T10:30:15.863597Z
+2859
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13150
+
+CGICalendarObject.m
+file
+
+
+
+
+2011-05-18T15:58:43.000000Z
+8bbfdc75254c207ca6cf1b1f5413802f
+2011-05-18T15:37:10.257463Z
+2856
+skonno
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2938
+
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendar.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendar.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..f69d8c3cb2cbb83eda820b876aacbe386f23712e
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendar.h.svn-base	
@@ -0,0 +1,39 @@
+//
+//  CGICalendar.h
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "CGICalendarObject.h"
+#import "NSDate+CGICalendar.h"
+#import "CGICalendarComponent.h"
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_HEADER_CONTENTLINE @"BEGIN:VCALENDAR"
+#define CG_ICALENDAR_FOOTER_CONTENTLINE @"END:VCALENDAR"
+
+@interface CGICalendar : NSObject {
+
+}
+@property(retain) NSMutableArray *objects;
+
++ (NSString *)UUID;
+
+- (id)init;
+- (id)initWithString:(NSString *)string;
+- (id)initWithPath:(NSString *)path;
+
+- (BOOL)parseWithString:(NSString *)string  error:(NSError **)error;
+- (BOOL)parseWithPath:(NSString *)path  error:(NSError **)error;
+
+- (void)addObject:(CGICalendarObject *)object;
+- (CGICalendarObject *)objectAtIndex:(NSUInteger)index;
+
+- (NSString *)description;
+
+- (BOOL)writeToFile:(NSString *)path;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendar.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendar.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..a35cd3f23cfc49c8efae5c6744af3b81ed0132c4
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendar.m.svn-base	
@@ -0,0 +1,221 @@
+//
+//  CGICalendar.m
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendar.h"
+#import "CGICalendarContentLine.h"
+
+@interface CGICalendar()
+@property(retain) NSMutableArray *parserStack;
+- (id)peekParserObject;
+- (id)popParserObject;
+- (void)pushParserObject:(id)object;
+- (void)clearParserObjects;
+@end
+
+@implementation CGICalendar
+
+@synthesize objects;
+@synthesize parserStack;
+
+#pragma mark -
+#pragma mark Class Methods
+
++ (NSString *)UUID
+{
+	CFUUIDRef uuid = CFUUIDCreate(nil);
+	NSString *uuidString = (NSString*)CFUUIDCreateString(nil, uuid);
+	CFRelease(uuid);
+	return [uuidString autorelease];    
+}
+
+#pragma mark -
+#pragma mark Initialize
+
+- (id)init
+{
+	if ((self = [super init])) {
+        [self setObjects:[NSMutableArray array]];
+ 	}
+	return self;
+}
+
+- (id)initWithString:(NSString *)aString
+{
+	if ((self = [self init])) {
+		[self parseWithString:aString error:nil];
+	}
+	return self;
+}
+
+- (id)initWithPath:(NSString *)aPath
+{
+	if ((self = [self init])) {
+		[self parseWithPath:aPath error:nil];
+	}
+	return self;
+}
+
+#pragma mark -
+#pragma mark Object
+
+- (void)addObject:(CGICalendarObject *)object
+{
+    [[self objects] addObject:object];
+}
+
+- (CGICalendarObject *)objectAtIndex:(NSUInteger)index
+{
+    return [[self objects] objectAtIndex:index];
+}
+
+#pragma mark -
+#pragma mark Parser
+
+- (NSError *)createErrorAt:(NSUInteger)lineNumber lineString:(NSString *)lineString
+{
+    return [NSError errorWithDomain:@"iCalForObjC" code:-1 userInfo:
+            [NSDictionary dictionaryWithObjectsAndKeys:
+             [NSString stringWithFormat:@"%d", lineString], @"LineNumber",
+             lineString, @"ContentLine",
+             nil]];
+}
+
+- (BOOL)parseWithString:(NSString *)aString error:(NSError **)error
+{
+    [self setObjects:[NSMutableArray array]];
+    [self clearParserObjects];
+    
+	if (aString == nil)
+		return NO;
+    
+	NSArray *foldingContentLines = [aString componentsSeparatedByString:CG_ICALENDAR_CONTENTLINE_TERM];
+    NSMutableArray *contentLines = [NSMutableArray array];
+	for (NSString *foldingContentLine in foldingContentLines) {
+        if (foldingContentLine == nil)
+            continue;
+        if ([CGICalendarContentLine IsFoldingLineString:foldingContentLine] == NO) {
+            [contentLines addObject:[NSMutableString stringWithString:foldingContentLine]];
+            continue;
+        }
+        NSMutableString *lastLineString = [contentLines lastObject];
+        if (lastLineString == nil)
+            continue;
+        [lastLineString appendString:[foldingContentLine substringWithRange:NSMakeRange(1, ([foldingContentLine length] - 1))]];
+    }
+    
+    int contentLineNumber = 0;
+	for (NSString *contentLine in contentLines) {
+        contentLineNumber++;
+        
+		CGICalendarContentLine *icalContentLine = [[CGICalendarContentLine alloc] initWithString:contentLine];
+        CGICalendarComponent *icalParentComponent = [self peekParserObject];
+                
+        // BEGIN
+        if ([icalContentLine isBegin]) {
+            CGICalendarComponent *icalComponent;
+            if (icalParentComponent == nil) {
+                icalComponent = [[CGICalendarObject alloc] init];
+                [self addObject:(CGICalendarObject *)icalComponent];
+            }
+            else {
+                icalComponent = [[CGICalendarComponent alloc] init];
+                [icalParentComponent addComponent:icalComponent];
+            }
+            [icalComponent setType:[icalContentLine value]];
+            [self pushParserObject:icalComponent];
+            [icalComponent release];
+            [icalContentLine release];
+            continue;
+        }
+        
+        // END
+        if ([icalContentLine isEnd]) {
+            [self popParserObject];
+            [icalContentLine release];
+            continue;
+        }
+
+        NSString *propertyName = [icalContentLine name];
+        CGICalendarProperty *icalProperty = [icalParentComponent propertyForName:propertyName];
+        if (icalProperty == nil) {
+            icalProperty = [[[CGICalendarProperty alloc] init] autorelease];
+            [icalProperty setName:propertyName];
+            [icalParentComponent addProperty:icalProperty];
+        }
+        [icalProperty setValue:[icalContentLine value]];
+        for (CGICalendarParameter *icalParameter in [icalContentLine parameters])
+            [icalProperty setParameterValue:[icalParameter value] forName:[icalParameter name]];
+        
+		[icalContentLine release];
+	}
+	
+    return YES;
+}
+
+- (BOOL)parseWithPath:(NSString *)path  error:(NSError **)error
+{
+	NSData *fileData = [NSData dataWithContentsOfFile:path];
+	if (fileData == nil)
+		return NO;
+    return [self parseWithString:[[[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding] autorelease] error:error];
+}
+
+#pragma mark -
+#pragma mark Parser Stack Methods
+
+- (id)peekParserObject
+{
+    return [[self parserStack] lastObject];
+}
+
+- (id)popParserObject
+{
+	id lastObject = [[self parserStack] lastObject];
+    [[self parserStack] removeLastObject];
+	return [[lastObject retain] autorelease];
+}
+
+- (void)pushParserObject:(id)object
+{
+    [[self parserStack] addObject:object];
+}
+
+- (void)clearParserObjects
+{
+    [self setParserStack:[NSMutableArray array]];
+}
+
+#pragma mark -
+#pragma mark String
+
+- (NSString *)description
+{
+    NSMutableString *descrString = [NSMutableString string];
+    
+    for (CGICalendarObject *icalObj in [self objects])
+        [descrString appendString:[icalObj description]];
+    
+    return descrString;
+}
+
+#pragma mark -
+#pragma mark File
+
+- (BOOL)writeToFile:(NSString *)path
+{
+    NSString *desc = [self description];
+    if (desc == nil)
+        return NO;
+    
+    NSData *data = [desc dataUsingEncoding:NSUTF8StringEncoding];
+    if (data == nil)
+        return NO;
+
+    return [data writeToFile:path atomically:YES];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarComponent.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarComponent.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..f000bece3d1c7e53018905f5008bd3fe7c031b60
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarComponent.h.svn-base	
@@ -0,0 +1,129 @@
+//
+//  CGICalendarComponent.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_COMPONENT_TYPE_EVENT @"VEVENT"
+#define CG_ICALENDAR_COMPONENT_TYPE_TODO @"VTODO"
+#define CG_ICALENDAR_COMPONENT_TYPE_JOURNAL @"VJOURNAL"
+#define CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY @"VFREEBUSY"
+#define CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE @"VTIMEZONE"
+#define CG_ICALENDAR_COMPONENT_TYPE_ALARM @"VALARM"
+
+@interface CGICalendarComponent : NSObject {
+
+}
+@property(retain) NSString *type;
+@property(retain) NSMutableArray *components;
+@property(retain) NSMutableArray *properties;
+
++ (id)componentWithType:(NSString *)type;
++ (id)event;
++ (id)todo;
++ (id)journal;
++ (id)freebusy;
++ (id)timezone;
++ (id)alarm;
+
+- (id)initWithType:(NSString *)type;
+
+- (BOOL)isType:(NSString *)type;
+- (BOOL)isEvent;
+- (BOOL)isTodo;
+- (BOOL)isJournal;
+- (BOOL)isFreebusy;
+- (BOOL)isTimezone;
+- (BOOL)isAlarm;
+
+- (void)addComponent:(CGICalendarComponent *)component;
+- (void)insertComponent:(CGICalendarComponent *)component atIndex:(NSUInteger)index;
+- (CGICalendarComponent *)componentAtIndex:(NSUInteger)index;
+- (NSUInteger)indexOfComponent:(CGICalendarComponent *)component;
+- (void)removeComponent:(CGICalendarComponent *)component;
+- (void)removeComponentAtIndex:(NSUInteger)index;
+
+- (BOOL)hasPropertyForName:(NSString *)name;
+- (void)addProperty:(CGICalendarProperty *)property;
+- (void)removePropertyForName:(NSString *)name;
+
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name;
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyObject:(id)object forName:(NSString *)name;
+- (void)setPropertyObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name;
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyInteger:(int)value forName:(NSString *)name;
+- (void)setPropertyInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyFloat:(float)value forName:(NSString *)name;
+- (void)setPropertyFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+
+- (NSArray *)allPropertyKeys;
+- (CGICalendarProperty *)propertyAtIndex:(NSUInteger)index;
+- (CGICalendarProperty *)propertyForName:(NSString *)name;
+
+- (NSString *)propertyValueForName:(NSString *)name;
+- (NSDate *)propertyDateForName:(NSString *)name;
+- (int)propertyIntegerForName:(NSString *)name;
+- (float)propertyFloatForName:(NSString *)name;
+
+- (NSString *)description;
+
+// 4.2.12 Participation Status
+- (void)setParticipationStatus:(int)status;
+- (int)participationStatus;
+
+// 4.8.1.5 Description
+- (void)setNotes:(NSString *)value;
+- (NSString *)notes;
+
+// 4.8.1.9 Priority
+- (void)setPriority:(NSUInteger)value;
+- (NSUInteger)priority;
+
+// 4.8.1.12 Summary
+- (void)setSummary:(NSString *)value;
+- (NSString *)summary;
+
+// 4.8.2.1 Date/Time Completed
+- (void)setCompleted:(NSDate *)value;
+- (NSDate *)completed;
+
+// 4.8.2.2 Date/Time End
+- (void)setDateTimeEnd:(NSDate *)value;
+- (NSDate *)dateTimeEnd;
+
+// 4.8.2.3 Date/Time Due
+- (void)setDue:(NSDate *)value;
+- (NSDate *)due;
+
+// 4.8.2.4 Date/Time Start
+- (void)setDateTimeStart:(NSDate *)value;
+- (NSDate *)dateTimeStart;
+
+// 4.8.4.7 Unique Identifier
+- (void)setUID:(NSString *)value;
+- (NSString *)UID;
+
+// 4.8.7.1 Date/Time Created
+- (void)setCreated:(NSDate *)value;
+- (NSDate *)created;
+
+// 4.8.7.2 Date/Time Stamp
+- (void)setDateTimeStamp:(NSDate *)value;
+- (NSDate *)dateTimeStamp;
+
+// 4.8.7.3 Last Modified
+- (void)setLastModified:(NSDate *)value;
+- (NSDate *)lastModified;
+
+// 4.8.7.4 Sequence Number
+- (void)setSequenceNumber:(NSUInteger)value;
+- (NSUInteger)sequenceNumber;
+- (void)incrementSequenceNumber;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarComponent.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarComponent.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..0bd5ceedccbc4b59b4b6f59d28d3d587b4093122
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarComponent.m.svn-base	
@@ -0,0 +1,523 @@
+//
+//  CGICalendarComponent.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendar.h"
+#import "CGICalendarComponent.h"
+#import "CGICalendarContentLine.h"
+#import "NSDate+CGICalendar.h"
+
+#define CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT 0
+
+@implementation CGICalendarComponent
+
+@synthesize type;
+@synthesize components;
+@synthesize properties;
+
+#pragma mark -
+#pragma mark Global methods
+
++ (id)componentWithType:(NSString *)aType
+{
+    return [[[CGICalendarComponent alloc] initWithType:aType] autorelease];
+}
+
++ (id)event
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_EVENT];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    [icalComp setSequenceNumber:CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT];
+    return icalComp;
+}
+
++ (id)todo
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_TODO];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    [icalComp setSequenceNumber:CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT];
+    [icalComp setCreated:[NSDate date]];
+    return icalComp;
+}
+
++ (id)journal
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_JOURNAL];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    [icalComp setSequenceNumber:CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT];
+    return icalComp;
+}
+
++ (id)freebusy
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    return icalComp;
+}
+
++ (id)timezone
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE];
+    return icalComp;
+}
+
++ (id)alarm
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_ALARM];
+    return icalComp;
+}
+
+#pragma mark -
+#pragma mark init
+
+- (id)init
+{
+    if ((self = [super init])) {
+        [self setComponents:[NSMutableArray array]];
+        [self setProperties:[NSMutableArray array]];
+    }
+    return self;
+}
+
+- (id)initWithType:(NSString *)aType
+{
+    if ((self = [self init])) {
+        [self setType:aType];
+    }
+    return self;
+}
+
+#pragma mark -
+#pragma mark Component
+
+- (void)addComponent:(CGICalendarComponent *)component
+{
+    [[self components] addObject:component];
+}
+
+- (void)insertComponent:(CGICalendarComponent *)component atIndex:(NSUInteger)index
+{
+    [[self components] insertObject:component atIndex:index];
+}
+
+- (CGICalendarComponent *)componentAtIndex:(NSUInteger)index
+{
+    return [[self components] objectAtIndex:index];
+}
+
+- (NSUInteger)indexOfComponent:(CGICalendarComponent *)component
+{
+    return [[self components] indexOfObject:component];
+}
+
+- (void)removeComponent:(CGICalendarComponent *)component
+{
+    [[self components] removeObject:component];
+}
+
+- (void)removeComponentAtIndex:(NSUInteger)index
+{
+    [[self components] removeObjectAtIndex:index];
+}
+
+#pragma mark -
+#pragma mark Property
+
+- (BOOL)hasPropertyForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name]) {
+            [[self properties] removeObject:icalProp];
+            return YES;
+        }
+    }
+    return NO;
+}
+
+- (void)addProperty:(CGICalendarProperty *)property
+{
+    [[self properties] addObject:property];
+}
+
+- (void)removePropertyForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name]) {
+            [[self properties] removeObject:icalProp];
+            return;
+        }
+    }
+}
+
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name
+{
+    [self setPropertyValue:value forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+{
+    CGICalendarProperty *icalProp = [self propertyForName:name];
+    if (icalProp == nil) {
+        icalProp = [[[CGICalendarProperty alloc] init] autorelease];
+        [icalProp setName:name];
+        [self addProperty:icalProp];
+    }
+    [icalProp setValue:value];
+    
+    if ([parameterValues count] != [parameterNames count])
+        return;
+    
+    for (int n=0; n<[parameterNames count]; n++) {
+        NSString *name = [parameterNames objectAtIndex:n];
+        id value = [parameterNames objectAtIndex:n];
+        [icalProp setParameterObject:value forName:name];
+    }
+}
+
+- (void)setPropertyObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[object description] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setPropertyObject:(id)object forName:(NSString *)name
+{
+    [self setPropertyValue:[object description] forName:name];
+}
+
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name
+{
+    [self setPropertyValue:[object descriptionICalendar] forName:name];
+}
+
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[object descriptionICalendar] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setPropertyInteger:(int)value forName:(NSString *)name
+{
+    [self setPropertyValue:[[NSNumber numberWithInteger:value] stringValue] forName:name];
+}
+
+- (void)setPropertyInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[[NSNumber numberWithInteger:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setPropertyFloat:(float)value forName:(NSString *)name
+{
+    [self setPropertyValue:[[NSNumber numberWithFloat:value] stringValue] forName:name];
+}
+
+- (void)setPropertyFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[[NSNumber numberWithFloat:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (id)propertyAtIndex:(NSUInteger)index
+{
+    return [[self properties] objectAtIndex:index];
+}
+
+- (CGICalendarProperty *)propertyForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return icalProp;
+    }
+    return nil;
+}
+
+- (NSArray *)allPropertyKeys
+{
+    NSMutableArray *keys = [NSMutableArray array];
+    for (CGICalendarProperty *icalProp in [self properties])
+        [keys addObject:[icalProp name]];
+    return keys;
+}
+
+- (NSString *)propertyValueForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp value];
+    }
+    return nil;
+}
+
+- (NSDate *)propertyDateForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp dateValue];
+    }
+    return nil;
+}
+
+- (int)propertyIntegerForName:(NSString *)name;
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp integerValue];
+    }
+    return 0;
+}
+
+- (float)propertyFloatForName:(NSString *)name;
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp floatValue];
+    }
+    return 0;
+}
+
+#pragma mark -
+#pragma mark String
+
+- (BOOL)isType:(NSString *)aType
+{
+    return [aType isEqualToString:[self type]];
+}
+
+- (BOOL)isEvent
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_EVENT];
+}
+
+- (BOOL)isTodo
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_TODO];
+}
+
+- (BOOL)isJournal
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_JOURNAL];
+}
+
+- (BOOL)isFreebusy
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY];
+}
+
+- (BOOL)isTimezone
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE];
+}
+
+- (BOOL)isAlarm
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_ALARM];
+}
+
+#pragma mark -
+#pragma mark String
+
+#define CG_ICALENDAR_CONTENTLINE_NAME_BEGIN @"BEGIN"
+#define CG_ICALENDAR_CONTENTLINE_NAME_END @"END"
+
+- (NSString *)description
+{
+    NSMutableString *objectsString = [NSMutableString string];
+    
+    [objectsString appendFormat:@"%@:%@%@",CG_ICALENDAR_CONTENTLINE_NAME_BEGIN, [self type], CG_ICALENDAR_CONTENTLINE_TERM];
+    
+    for (CGICalendarProperty *icalProp in [self properties])
+        [objectsString appendString:[icalProp description]];
+    
+    for (CGICalendarComponent *icalComp in [self components])
+        [objectsString appendString:[icalComp description]];
+    
+    [objectsString appendFormat:@"%@:%@%@",CG_ICALENDAR_CONTENTLINE_NAME_END, [self type], CG_ICALENDAR_CONTENTLINE_TERM];
+    
+    return objectsString;
+}
+
+#pragma mark -
+#pragma mark 4.2.12 Participation Status
+
+- (void)setParticipationStatus:(int)status
+{
+    CGICalendarProperty *icalProp = [self propertyForName:CG_ICALENDAR_PROERTY_PARTSTAT];
+    if (icalProp == nil)
+        icalProp = [[[CGICalendarProperty alloc] init] autorelease];
+    [icalProp setParticipationStatus:status];
+}
+
+- (int)participationStatus
+{
+    CGICalendarProperty *icalProp = [self propertyForName:CG_ICALENDAR_PROERTY_PARTSTAT];
+    if (icalProp == nil)
+        return CGICalendarParticipationStatusUnkown;
+    return [icalProp participationStatus];
+}
+
+#pragma mark -
+#pragma mark 4.8.1.5 Description
+
+- (void)setNotes:(NSString *)value
+{
+    [self setPropertyValue:value forName:CG_ICALENDAR_PROERTY_DESCRIPTION];
+}
+
+- (NSString *)notes
+{
+    return [self propertyValueForName:CG_ICALENDAR_PROERTY_DESCRIPTION];
+}
+
+#pragma mark -
+#pragma mark 4.8.1.9 Priority
+
+- (void)setPriority:(NSUInteger)value
+{
+    [self setPropertyInteger:value forName:CG_ICALENDAR_PROERTY_PRIORITY];
+}
+
+- (NSUInteger)priority
+{
+    return [self propertyIntegerForName:CG_ICALENDAR_PROERTY_PRIORITY];
+}
+
+#pragma mark -
+#pragma mark 4.8.1.12 Summary
+
+- (void)setSummary:(NSString *)value
+{
+    [self setPropertyValue:value forName:CG_ICALENDAR_PROERTY_SUMMARY];
+}
+
+- (NSString *)summary
+{
+    return [self propertyValueForName:CG_ICALENDAR_PROERTY_SUMMARY];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.1 Date/Time Completed
+
+- (void)setCompleted:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_COMPLETED];
+}
+
+- (NSDate *)completed
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_COMPLETED];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.2 Date/Time End
+
+- (void)setDateTimeEnd:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DTEND];
+}
+
+- (NSDate *)dateTimeEnd
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DTEND];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.3 Date/Time Due
+
+- (void)setDue:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DUE];
+}
+
+- (NSDate *)due
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DUE];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.4 Date/Time Start
+
+- (void)setDateTimeStart:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DTSTART];
+}
+
+- (NSDate *)dateTimeStart
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DTSTART];
+}
+
+#pragma mark -
+#pragma mark 4.8.4.7 Unique Identifier
+
+- (void)setUID:(NSString *)value
+{
+    [self setPropertyValue:value forName:CG_ICALENDAR_PROERTY_UID];
+}
+
+- (NSString *)UID
+{
+    return [self propertyValueForName:CG_ICALENDAR_PROERTY_UID];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.1 Date/Time Created
+
+- (void)setCreated:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_CREATED];
+}
+
+- (NSDate *)created
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_CREATED];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.2 Date/Time Stamp
+
+- (void)setDateTimeStamp:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DTSTAMP];
+}
+
+- (NSDate *)dateTimeStamp
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DTSTAMP];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.3 Last Modified
+
+- (void)setLastModified:(NSDate *)value;
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_LASTMODIFIED];
+}
+
+- (NSDate *)lastModified;
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_LASTMODIFIED];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.4 Sequence Number
+
+- (void)setSequenceNumber:(NSUInteger)value
+{
+    [self setPropertyInteger:value forName:CG_ICALENDAR_PROERTY_SEQUENCE];
+}
+
+- (NSUInteger)sequenceNumber
+{
+    return [self propertyIntegerForName:CG_ICALENDAR_PROERTY_SEQUENCE];
+}
+
+- (void)incrementSequenceNumber
+{
+    [self setSequenceNumber:([self sequenceNumber] + 1)];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarContentLine.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarContentLine.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..f87ffac231712d0efc387f1db93ef07e18c09e49
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarContentLine.h.svn-base	
@@ -0,0 +1,41 @@
+//
+//  CGICalendarContentLine.h
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_CONTENTLINE_TERM @"\r\n"
+#define CG_ICALENDAR_CONTENTLINE_FOLDING_SPACE @" "
+#define CG_ICALENDAR_CONTENTLINE_FOLDING_TAB @"\t"
+#define CG_ICALENDAR_CONTENTLINE_DELIM @":"
+#define CG_ICALENDAR_CONTENTLINE_NAMEPARAM_DELIM @";"
+
+#define CG_ICALENDAR_CONTENTLINE_NAME_BEGIN @"BEGIN"
+#define CG_ICALENDAR_CONTENTLINE_NAME_END @"END"
+
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VCALENDAR @"VCALENDAR"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VEVENT @"VEVENT"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VJOURNAL @"VJOURNAL"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VFREEBUSY @"VFREEBUSY"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VTIMEZONE @"VTIMEZONE"
+
+@interface CGICalendarContentLine : CGICalendarProperty {
+
+}
++ (BOOL)IsFoldingLineString:(NSString *)aString;
++ (id)contentLineWithString:(NSString *)aString;
+
+- (id)init;
+- (id)initWithString:(NSString *)aString;
+- (void)setString:(NSString *)aString;
+
+- (NSString *)description;
+
+- (BOOL)isBegin;
+- (BOOL)isEnd;
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarContentLine.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarContentLine.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..138d2221ab46385fe72f44c7513db0f57deba20a
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarContentLine.m.svn-base	
@@ -0,0 +1,184 @@
+//
+//  CGICalendarContentLine.m
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarContentLine.h"
+
+/*
+ The following notation defines the lines of content in an iCalendar
+ object:
+ 
+ contentline        = name *(";" param ) ":" value CRLF
+ ; This ABNF is just a general definition for an initial parsing
+ ; of the content line into its property name, parameter list,
+ ; and value string
+ 
+ ; When parsing a content line, folded lines MUST first
+ ; be unfolded according to the unfolding procedure
+ ; described above. When generating a content line, lines
+ ; longer than 75 octets SHOULD be folded according to
+ ; the folding procedure described above.
+ 
+ name               = x-name / iana-token
+ 
+ iana-token = 1*(ALPHA / DIGIT / "-")
+ ; iCalendar identifier registered with IANA
+ 
+ x-name             = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-")
+ ; Reservered for experimental use. Not intended for use in
+ ; released products.
+ 
+ vendorid   = 3*(ALPHA / DIGIT)     ;Vendor identification
+ 
+ param              = param-name "=" param-value
+ *("," param-value)
+ ; Each property defines the specific ABNF for the parameters
+ ; allowed on the property. Refer to specific properties for
+ ; precise parameter ABNF.
+ 
+ param-name = iana-token / x-token
+ 
+ param-value        = paramtext / quoted-string
+ 
+ paramtext  = *SAFE-CHAR
+ 
+ value      = *VALUE-CHAR
+ 
+ quoted-string      = DQUOTE *QSAFE-CHAR DQUOTE
+ 
+ NON-US-ASCII       = %x80-F8
+ ; Use restricted by charset parameter
+ ; on outer MIME object (UTF-8 preferred)
+ 
+ QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-US-ASCII
+ ; Any character except CTLs and DQUOTE
+ 
+ SAFE-CHAR  = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E
+ / NON-US-ASCII
+ ; Any character except CTLs, DQUOTE, ";", ":", ","
+ 
+ VALUE-CHAR = WSP / %x21-7E / NON-US-ASCII
+ ; Any textual character
+ 
+ CR = %x0D
+ ; carriage return
+ 
+ LF = %x0A
+ ; line feed
+ 
+ CRLF       = CR LF
+ ; Internet standard newline
+ 
+ CTL        = %x00-08 / %x0A-1F / %x7F
+ ; Controls
+ 
+ ALPHA      = %x41-5A / %x61-7A   ; A-Z / a-z
+ 
+ DIGIT      = %x30-39
+ ; 0-9
+ 
+ DQUOTE     = %x22
+ ; Quotation Mark
+ 
+ WSP        = SPACE / HTAB
+ 
+ SPACE      = %x20
+ 
+ HTAB       = %x09
+ */
+
+@implementation CGICalendarContentLine
+
++ (BOOL)IsFoldingLineString:(NSString *)aString
+{
+    if ([aString hasPrefix:CG_ICALENDAR_CONTENTLINE_FOLDING_SPACE] || [aString hasPrefix:CG_ICALENDAR_CONTENTLINE_FOLDING_TAB])
+        return YES;
+    return NO;
+}
+
++ (id)contentLineWithString:(NSString *)aString
+{
+	CGICalendarContentLine *icalContentLine = [[CGICalendarContentLine alloc] initWithString:aString];
+	return [icalContentLine autorelease];
+}
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+- (id)initWithString:(NSString *)aString
+{
+	if ((self = [self init])) {
+		[self setString:aString];
+	}
+	return self;
+}
+
+- (void)setString:(NSString *)aString
+{
+	NSString *nowNewLineString = [aString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
+	NSArray *values = [nowNewLineString componentsSeparatedByString:CG_ICALENDAR_CONTENTLINE_DELIM];
+	int valuesCnt = [values count];
+	if (valuesCnt < 2)
+		return;
+	
+	NSArray *nameParams = [[values objectAtIndex:0] componentsSeparatedByString:CG_ICALENDAR_CONTENTLINE_NAMEPARAM_DELIM];
+	NSMutableArray *params = [NSMutableArray array];
+	int nameParamsCnt = [nameParams count];
+	for (int n=0; n<nameParamsCnt; n++) {
+		if (n == 0) {
+			[self setName:[nameParams objectAtIndex:0]];
+			continue;
+		}
+		CGICalendarParameter *icalParam = [[CGICalendarParameter alloc] initWithString:[nameParams objectAtIndex:n]];
+		[params addObject:icalParam];
+		[icalParam release];
+	}
+	[self setParameters:params];
+
+	NSMutableString *valueString = [NSMutableString string];
+	for (int n=1; n<valuesCnt; n++) {
+		if (1 < n)
+			[valueString appendString:CG_ICALENDAR_CONTENTLINE_DELIM];
+		[valueString appendString:[values objectAtIndex:n]];
+	}
+	[self setValue:valueString];
+}
+
+- (NSString *)description;
+{
+	NSMutableString *contentLine = [NSMutableString string];
+	if ([self hasName])
+		[contentLine appendString:[self name]];
+	
+	for (CGICalendarParameter *param in [self parameters]) {
+		[contentLine appendString:CG_ICALENDAR_CONTENTLINE_NAMEPARAM_DELIM];
+		[contentLine appendString:[param string]];
+	}
+	
+	[contentLine appendString:CG_ICALENDAR_CONTENTLINE_DELIM];
+	if ([self hasValue])
+        [contentLine appendString:[self value]];
+	
+	[contentLine appendString:CG_ICALENDAR_CONTENTLINE_TERM];
+	
+	return contentLine;
+}
+
+- (BOOL)isBegin
+{
+	return [self isName:CG_ICALENDAR_CONTENTLINE_NAME_BEGIN];
+}
+
+- (BOOL)isEnd
+{
+	return [self isName:CG_ICALENDAR_CONTENTLINE_NAME_END];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarObject.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarObject.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..7538b51fb1cf694271839acc9f81fedd2cef3648
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarObject.h.svn-base	
@@ -0,0 +1,42 @@
+//
+//  CGICalendarObject.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "CGICalendarComponent.h"
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_OBJECT_VERSION_DEFAULT @"2.0"
+#define CG_ICALENDAR_OBJECT_PRODID_DEFAULT @"//CyberGarage//iCal4ObjC//EN"
+
+@interface CGICalendarObject : CGICalendarComponent {
+    
+}
+
++ (id)object;
++ (id)objectWithProdid:(NSString *)prodid;
++ (id)objectWithProdid:(NSString *)prodid version:(NSString *)version;
+
+- (id)init;
+- (id)initWithProdid:(NSString *)prodid;
+- (id)initWithProdid:(NSString *)prodid version:(NSString *)version;
+
+- (void)setVersion:(NSString *)version;
+- (NSString *)version;
+
+- (void)setProdid:(NSString *)prodid;
+- (NSString *)prodid;
+
+- (NSArray *)componentsWithType:(NSString *)type;
+- (NSArray *)events;
+- (NSArray *)todos;
+- (NSArray *)journals;
+- (NSArray *)freebusies;
+- (NSArray *)timezones;
+
+@end
+
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarObject.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarObject.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..1ff0d54e30ed37ec3b51e5ad3ffd7b2f7a09cd81
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarObject.m.svn-base	
@@ -0,0 +1,129 @@
+//
+//  CGICalendarObject.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarObject.h"
+
+#define CG_ICALENDAR_OBJECT_TYPE_DEFAULT @"VCALENDAR"
+#define CG_ICALENDAR_OBJECT_VERSION_PARAM @"VERSION"
+#define CG_ICALENDAR_OBJECT_PRODID_PARAM @"PRODID"
+
+@implementation CGICalendarObject
+
+#pragma mark -
+#pragma mark Global
+
++ (id)object
+{
+    return [[[CGICalendarObject alloc] init] autorelease];
+}
+
++ (id)objectWithProdid:(NSString *)prodid
+{
+    return [[[CGICalendarObject alloc] initWithProdid:prodid] autorelease];
+}
+
++ (id)objectWithProdid:(NSString *)prodid version:(NSString *)version
+{
+    return [[[CGICalendarObject alloc] initWithProdid:prodid version:version] autorelease];
+}
+
+#pragma mark -
+#pragma mark Initialize
+
+- (id)init
+{
+    if ((self = [super init])) {
+        [self setType:CG_ICALENDAR_OBJECT_TYPE_DEFAULT];
+        [self setVersion:CG_ICALENDAR_OBJECT_VERSION_DEFAULT];
+        [self setProdid:CG_ICALENDAR_OBJECT_PRODID_DEFAULT];
+    }
+    return self;
+}
+
+- (id)initWithProdid:(NSString *)prodid version:(NSString *)version;
+{
+    if ((self = [super init])) {
+        [self setType:CG_ICALENDAR_OBJECT_TYPE_DEFAULT];
+        [self setVersion:version];
+        [self setProdid:prodid];
+    }
+    return self;
+}
+
+- (id)initWithProdid:(NSString *)prodid
+{
+    if ((self = [super init])) {
+        [self setType:CG_ICALENDAR_OBJECT_TYPE_DEFAULT];
+        [self setVersion:CG_ICALENDAR_OBJECT_VERSION_DEFAULT];
+        [self setProdid:prodid];
+    }
+    return self;
+}
+
+#pragma mark -
+#pragma mark Property Utility Methods
+
+- (void)setVersion:(NSString *)version
+{
+    [self setPropertyValue:version forName:CG_ICALENDAR_OBJECT_VERSION_PARAM];
+}
+
+- (NSString *)version
+{
+    return [self propertyValueForName:CG_ICALENDAR_OBJECT_VERSION_PARAM];
+}
+
+- (void)setProdid:(NSString *)prodid
+{
+    [self setPropertyValue:prodid forName:CG_ICALENDAR_OBJECT_PRODID_PARAM];
+}
+
+- (NSString *)prodid
+{
+    return [self propertyValueForName:CG_ICALENDAR_OBJECT_PRODID_PARAM];
+}
+
+#pragma mark -
+#pragma mark conponents
+
+- (NSArray *)componentsWithType:(NSString *)type
+{
+    NSMutableArray *typeComponents = [NSMutableArray array];
+    for (CGICalendarComponent *icalComponent in [self components]) {
+        if ([icalComponent isType:type] == NO)
+            continue;
+        [typeComponents addObject:icalComponent];
+    }
+    return typeComponents;
+}
+
+- (NSArray *)events
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_EVENT];
+}
+
+- (NSArray *)todos
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_TODO];
+}
+
+- (NSArray *)journals
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_JOURNAL];
+}
+
+- (NSArray *)freebusies
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY];
+}
+
+- (NSArray *)timezones
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarParameter.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarParameter.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..ee5a54d907a8a0dd7db1f0827f00baca2eb2240f
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarParameter.h.svn-base	
@@ -0,0 +1,18 @@
+//
+//  CGICalendarParameter.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "CGICalendarValue.h"
+
+@interface CGICalendarParameter : CGICalendarValue {
+
+}
+- (id)init;
+- (id)initWithString:(NSString *)aString;
+- (void)setString:(NSString *)aString;
+- (NSString *) string;
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarParameter.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarParameter.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..c6044896e5c61b52f479a36b80ce65d2b51d95aa
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarParameter.m.svn-base	
@@ -0,0 +1,46 @@
+//
+//  CGICalendarParameter.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarParameter.h"
+
+#define CG_ICALENDAR_PARAMETER_DELIM @"="
+
+@implementation CGICalendarParameter
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+- (id)initWithString:(NSString *)aString
+{
+	if ((self = [self init])) {
+		[self setString:aString];
+	}
+	return self;
+}
+
+- (void)setString:(NSString *)aString
+{
+	NSArray *values = [aString componentsSeparatedByString:CG_ICALENDAR_PARAMETER_DELIM];
+	if ([values count] < 2)
+		return;
+	[self setName:[values objectAtIndex:0]];
+	[self setValue:[values objectAtIndex:1]];
+}
+
+- (NSString *) string;
+{
+	return [NSString stringWithFormat:@"%@%@%@",
+			[self name] ? [self name] : @"",
+			CG_ICALENDAR_PARAMETER_DELIM,
+			[self value] ? [self value] : @""];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarProperty.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarProperty.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..a2d4003cbd33a503226b670696938e1e7b520d2d
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarProperty.h.svn-base	
@@ -0,0 +1,78 @@
+//
+//  CGICalendarProperty.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "CGICalendarValue.h"
+#import "CGICalendarParameter.h"
+
+#define CG_ICALENDAR_PROERTY_PARTSTAT @"PARTSTAT"
+
+#define CG_ICALENDAR_PROERTY_COMPLETED @"COMPLETED"
+#define CG_ICALENDAR_PROERTY_DTEND @"DTEND"
+#define CG_ICALENDAR_PROERTY_DUE @"DUE"
+#define CG_ICALENDAR_PROERTY_DTSTART @"DTSTART"
+
+// 4.8.1 Descriptive Component Properties
+
+#define CG_ICALENDAR_PROERTY_DESCRIPTION @"DESCRIPTION"
+#define CG_ICALENDAR_PROERTY_PRIORITY @"PRIORITY"
+#define CG_ICALENDAR_PROERTY_SUMMARY @"SUMMARY"
+
+// 4.8.4 Relationship Component Properties
+#define CG_ICALENDAR_PROERTY_UID @"UID"
+
+// 4.8.7 Change Management Component Properties
+
+#define CG_ICALENDAR_PROERTY_CREATED @"CREATED"
+#define CG_ICALENDAR_PROERTY_DTSTAMP @"DTSTAMP"
+#define CG_ICALENDAR_PROERTY_LASTMODIFIED @"LAST-MODIFIED"
+#define CG_ICALENDAR_PROERTY_SEQUENCE @"SEQUENCE"
+
+enum {
+	CGICalendarParticipationStatusUnkown = 0,
+	CGICalendarParticipationStatusNeedsAction,
+	CGICalendarParticipationStatusAccepted,
+	CGICalendarParticipationStatusDeclined,
+	CGICalendarParticipationStatusTentative,
+	CGICalendarParticipationStatusDelegated,
+	CGICalendarParticipationStatusCompleted,
+	CGICalendarParticipationStatusInProcess,
+};
+
+@interface CGICalendarProperty : CGICalendarValue {
+}
+@property(retain) NSMutableArray *parameters;
+
+- (id)init;
+
+- (BOOL)hasParameterForName:(NSString *)name;
+- (void)addParameter:(CGICalendarParameter *)parameter;
+- (void)removeParameterForName:(NSString *)name;
+
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name;
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterObject:(id)object forName:(NSString *)name;
+- (void)setParameterObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name;
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterInteger:(int)value forName:(NSString *)name;
+- (void)setParameterInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterFloat:(float)value forName:(NSString *)name;
+- (void)setParameterFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+
+- (CGICalendarParameter *)parameterAtIndex:(NSUInteger)index;
+- (CGICalendarParameter *)parameterForName:(NSString *)name;
+- (NSArray *)allParameterKeys;
+- (NSString *)parameterValueForName:(NSString *)name;
+- (NSDate *)parameterDateForName:(NSString *)name;
+- (int)parameterIntegerForName:(NSString *)name;
+- (float)parameterFloatForName:(NSString *)name;
+
+- (void)setParticipationStatus:(int)value;
+- (int)participationStatus;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarProperty.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarProperty.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..eadcd1351e7ff9f2b560ed5031dfb9d6c08dcb31
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarProperty.m.svn-base	
@@ -0,0 +1,228 @@
+//
+//  CGICalendarProperty.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarProperty.h"
+#import "CGICalendarContentLine.h"
+#import "NSDate+CGICalendar.h"
+
+@implementation CGICalendarProperty
+
+@synthesize parameters;
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+#pragma mark -
+#pragma mark Parameter
+
+- (BOOL)hasParameterForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name]) {
+            [[self parameters] removeObject:icalProp];
+            return YES;
+        }
+    }
+    return NO;
+}
+
+- (void)addParameter:(CGICalendarParameter *)parameter
+{
+    [[self parameters] addObject:parameter];
+}
+
+- (void)removeParameterForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name]) {
+            [[self parameters] removeObject:icalProp];
+            return;
+        }
+    }
+}
+
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name
+{
+    CGICalendarParameter *icalProp = [self parameterForName:name];
+    if (icalProp == nil) {
+        icalProp = [[[CGICalendarParameter alloc] init] autorelease];
+        [icalProp setName:name];
+        [self addParameter:icalProp];
+    }
+    [icalProp setValue:value];
+}
+
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+{
+    [self setParameterValue:value forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setParameterObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[object description] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setParameterObject:(id)object forName:(NSString *)name
+{
+    [self setParameterValue:[object description] forName:name];
+}
+
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name
+{
+    [self setParameterValue:[object descriptionICalendar] forName:name];
+}
+
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[object descriptionICalendar] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setParameterInteger:(int)value forName:(NSString *)name
+{
+    [self setParameterValue:[[NSNumber numberWithInteger:value] stringValue] forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setParameterInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[[NSNumber numberWithInteger:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setParameterFloat:(float)value forName:(NSString *)name
+{
+    [self setParameterValue:[[NSNumber numberWithFloat:value] stringValue] forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setParameterFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[[NSNumber numberWithFloat:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (id)parameterAtIndex:(NSUInteger)index
+{
+    return [[self parameters] objectAtIndex:index];
+}
+
+- (CGICalendarParameter *)parameterForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return icalProp;
+    }
+    return nil;
+}
+
+- (NSArray *)allParameterKeys
+{
+    NSMutableArray *keys = [NSMutableArray array];
+    for (CGICalendarParameter *icalProp in [self parameters])
+        [keys addObject:[icalProp name]];
+    return keys;
+}
+
+- (NSString *)parameterValueForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp value];
+    }
+    return nil;
+}
+
+- (NSDate *)parameterDateForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp dateValue];
+    }
+    return nil;
+}
+
+- (int)parameterIntegerForName:(NSString *)name;
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp integerValue];
+    }
+    return 0;
+}
+
+- (float)parameterFloatForName:(NSString *)name;
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp floatValue];
+    }
+    return 0;
+}
+
+#pragma mark -
+#pragma mark String
+
+- (NSString *)description
+{
+    NSMutableString *propertyString = [NSMutableString string];
+    
+    [propertyString appendFormat:@"%@", [self name]];
+    
+    for (CGICalendarParameter *icalParam in [self parameters])
+        [propertyString appendFormat:@";%@", [icalParam description]];
+        
+    [propertyString appendFormat:@"%:%@%@", ((0 < [[self value] length]) ? [self value] : @""), CG_ICALENDAR_CONTENTLINE_TERM];
+    
+    return propertyString;
+}
+
+#pragma mark -
+#pragma mark ParticipationStatus
+
+- (NSArray *)participationStatusStrings
+{
+    static NSArray *statusStrings = nil;
+    
+    if (statusStrings == nil) {
+        statusStrings = [NSArray arrayWithObjects:
+                         @"",
+                         @"NEEDS-ACTION",
+                         @"ACCEPTED",
+                         @"DECLINED",
+                         @"TENTATIVE",
+                         @"DELEGATED",
+                         @"COMPLETED",
+                         @"IN-PROCESS",
+                         nil];
+    }
+    
+    return statusStrings;
+}
+
+- (void)setParticipationStatus:(int)status
+{
+    NSArray *statusStrings = [self participationStatusStrings];
+    if (status < 0 || ([statusStrings count]-1) < status)
+        return;
+    [self setValue:[statusStrings objectAtIndex:status]];
+}
+
+- (int)participationStatus
+{
+    if ([self value] == nil)
+        return CGICalendarParticipationStatusUnkown;
+    
+    NSArray *statusStrings = [self participationStatusStrings];
+    for (int n=0; n<[statusStrings count]; n++) {
+        if ([[self value] isEqualToString:[statusStrings objectAtIndex:n]])
+            return n;
+    }
+    
+    return CGICalendarParticipationStatusUnkown;
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarValue.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarValue.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..d1020fa7080ba4ee08dcac24671f5fc7d43f87f0
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarValue.h.svn-base	
@@ -0,0 +1,50 @@
+//
+//  CGICalendarValue.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+enum {
+	CGICalendarValueTypeUnknown = 0,
+	CGICalendarValueTypeBinary,
+	CGICalendarValueTypeBoolean,
+	CGICalendarValueTypeCalendarUserAddress,
+	CGICalendarValueTypeDate,
+	CGICalendarValueTypeDateTime,
+	CGICalendarValueTypeDuration,
+	CGICalendarValueTypeFloat,
+	CGICalendarValueTypeInteger,
+	CGICalendarValueTypePeriodOfTime,
+	CGICalendarValueTypeRecurrenceRule,
+	CGICalendarValueTypeText,
+	CGICalendarValueTypeTime,
+	CGICalendarValueTypeURI,
+	CGICalendarValueTypeUTCOffset,
+};
+
+@interface CGICalendarValue : NSObject {
+
+}
+@property(assign) int type;
+@property(retain) NSString *name;
+@property(retain) NSString *value;
+
+- (id)init;
+
+- (BOOL)hasName;
+- (BOOL)hasValue;
+
+- (BOOL)isName:(NSString *)aName;
+- (BOOL)isValue:(NSString *)aValue;
+
+- (void)setObject:(id)value;
+- (void)setDate:(NSDate *)value;
+
+- (NSDate *)dateValue;
+- (int)integerValue;
+- (float)floatValue;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarValue.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarValue.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..4364c11e4d5ce3a0b196d47b5102bdc8050cfead
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/CGICalendarValue.m.svn-base	
@@ -0,0 +1,77 @@
+//
+//  CGICalendarValue.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarValue.h"
+#import "NSDate+CGICalendar.h"
+
+@implementation CGICalendarValue
+
+@synthesize type;
+@synthesize value;
+@synthesize name;
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+- (BOOL)hasName
+{
+	if ([self name] != nil && 0 < [[self name] length])
+		return YES;
+	return NO;
+}
+
+- (BOOL)hasValue
+{
+	if ([self value] != nil && 0 < [[self value] length])
+		return YES;
+	return NO;
+}
+
+- (BOOL)isName:(NSString *)aName
+{
+	if (aName == nil || [aName length] <= 0)
+		return NO;
+	return [aName isEqualToString:[self name]];
+}
+
+- (BOOL)isValue:(NSString *)aValue
+{
+	if (aValue == nil || [aValue length] <= 0)
+		return NO;
+	return [aValue isEqualToString:[self value]];
+}
+
+- (void)setObject:(id)aValue
+{
+    [self setValue:[value description]];
+}
+
+- (void)setDate:(NSDate *)aValue
+{
+    [self setValue:[aValue descriptionICalendar]];
+}
+
+- (NSDate *)dateValue
+{
+    return [NSDate dateWithICalendarString:[self value]];
+}
+
+- (int)integerValue
+{
+    return [[self value] integerValue];
+}
+
+- (float)floatValue
+{
+    return [[self value] floatValue];    
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/NSDate+CGICalendar.h.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/NSDate+CGICalendar.h.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..3e649c81c35ecb34c4bba7a0d79ad9911da74e95
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/NSDate+CGICalendar.h.svn-base	
@@ -0,0 +1,16 @@
+//
+//  NSDate+CGICalendar.h
+//
+//  Created by Satoshi Konno on 5/12/11.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@interface NSDate(CGICalendar)
++ (id)dateWithICalendarString:(NSString *)aString;
++ (id)dateWithICalendarISO8601:(NSString *)aString;
+- (NSString *)descriptionICalendar;
+- (NSString *)descriptionISO8601;
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/NSDate+CGICalendar.m.svn-base b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/NSDate+CGICalendar.m.svn-base
new file mode 100755
index 0000000000000000000000000000000000000000..18a8339431cf4011bd33447a164083d87f4a1ba9
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/.svn/text-base/NSDate+CGICalendar.m.svn-base	
@@ -0,0 +1,49 @@
+//
+//  NSDate+CGICalendar.m
+//
+//  Created by Satoshi Konno on 5/12/11.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "NSDate+CGICalendar.h"
+
+#define CGNSDATE_ICALENDAR_DATETMEFORMAT @"YYYYMMdd'T'kkmmss'Z'"
+#define CGNSDATE_ISO8601_DATETMEFORMAT @"YYYY-MM-dd kk:mm:ss"
+
+@implementation NSDate(CGICalendar)
+
++ (id)dateWithICalendarString:(NSString *)aString
+{
+    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
+	[dateFormatter setTimeZone:timeZone];
+    [dateFormatter setDateFormat:CGNSDATE_ICALENDAR_DATETMEFORMAT];
+    return [dateFormatter dateFromString:aString];
+}
+
++ (id)dateWithICalendarISO8601:(NSString *)aString
+{
+    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+    [dateFormatter setTimeStyle:NSDateFormatterFullStyle];
+    [dateFormatter setDateFormat:CGNSDATE_ISO8601_DATETMEFORMAT];
+    return [dateFormatter dateFromString:aString];
+}
+
+- (NSString *)descriptionICalendar
+{
+	NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
+	[dateFormatter setTimeZone:timeZone];
+	[dateFormatter setDateFormat:CGNSDATE_ICALENDAR_DATETMEFORMAT];
+	return [dateFormatter stringFromDate:self];
+}
+
+- (NSString *)descriptionISO8601
+{
+	NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+	[dateFormatter setLocale:[NSLocale systemLocale]];
+	[dateFormatter setDateFormat:CGNSDATE_ISO8601_DATETMEFORMAT];
+	return [dateFormatter stringFromDate:self];
+}
+
+@end 
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendar.h b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendar.h
new file mode 100755
index 0000000000000000000000000000000000000000..f69d8c3cb2cbb83eda820b876aacbe386f23712e
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendar.h	
@@ -0,0 +1,39 @@
+//
+//  CGICalendar.h
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "CGICalendarObject.h"
+#import "NSDate+CGICalendar.h"
+#import "CGICalendarComponent.h"
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_HEADER_CONTENTLINE @"BEGIN:VCALENDAR"
+#define CG_ICALENDAR_FOOTER_CONTENTLINE @"END:VCALENDAR"
+
+@interface CGICalendar : NSObject {
+
+}
+@property(retain) NSMutableArray *objects;
+
++ (NSString *)UUID;
+
+- (id)init;
+- (id)initWithString:(NSString *)string;
+- (id)initWithPath:(NSString *)path;
+
+- (BOOL)parseWithString:(NSString *)string  error:(NSError **)error;
+- (BOOL)parseWithPath:(NSString *)path  error:(NSError **)error;
+
+- (void)addObject:(CGICalendarObject *)object;
+- (CGICalendarObject *)objectAtIndex:(NSUInteger)index;
+
+- (NSString *)description;
+
+- (BOOL)writeToFile:(NSString *)path;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendar.m b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendar.m
new file mode 100755
index 0000000000000000000000000000000000000000..9260de5b4eddba5bc3d0f60297330da848dcc324
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendar.m	
@@ -0,0 +1,217 @@
+//
+//  CGICalendar.m
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendar.h"
+#import "CGICalendarContentLine.h"
+
+@interface CGICalendar()
+@property(retain) NSMutableArray *parserStack;
+- (id)peekParserObject;
+- (id)popParserObject;
+- (void)pushParserObject:(id)object;
+- (void)clearParserObjects;
+@end
+
+@implementation CGICalendar
+
+@synthesize objects;
+@synthesize parserStack;
+
+#pragma mark -
+#pragma mark Class Methods
+
++ (NSString *)UUID
+{
+	CFUUIDRef uuid = CFUUIDCreate(nil);
+	NSString *uuidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(nil, uuid));
+	CFRelease(uuid);
+	return uuidString;
+}
+
+#pragma mark -
+#pragma mark Initialize
+
+- (id)init
+{
+	if ((self = [super init])) {
+        [self setObjects:[NSMutableArray array]];
+ 	}
+	return self;
+}
+
+- (id)initWithString:(NSString *)aString
+{
+	if ((self = [self init])) {
+		[self parseWithString:aString error:nil];
+	}
+	return self;
+}
+
+- (id)initWithPath:(NSString *)aPath
+{
+	if ((self = [self init])) {
+		[self parseWithPath:aPath error:nil];
+	}
+	return self;
+}
+
+#pragma mark -
+#pragma mark Object
+
+- (void)addObject:(CGICalendarObject *)object
+{
+    [[self objects] addObject:object];
+}
+
+- (CGICalendarObject *)objectAtIndex:(NSUInteger)index
+{
+    return [[self objects] objectAtIndex:index];
+}
+
+#pragma mark -
+#pragma mark Parser
+
+- (NSError *)createErrorAt:(NSUInteger)lineNumber lineString:(NSString *)lineString
+{
+    return [NSError errorWithDomain:@"iCalForObjC" code:-1 userInfo:
+            [NSDictionary dictionaryWithObjectsAndKeys:
+             [NSString stringWithFormat:@"%@", lineString], @"LineNumber",
+             lineString, @"ContentLine",
+             nil]];
+}
+
+- (BOOL)parseWithString:(NSString *)aString error:(NSError **)error
+{
+    [self setObjects:[NSMutableArray array]];
+    [self clearParserObjects];
+    
+	if (aString == nil)
+		return NO;
+    
+	NSArray *foldingContentLines = [aString componentsSeparatedByString:CG_ICALENDAR_CONTENTLINE_TERM];
+    NSMutableArray *contentLines = [NSMutableArray array];
+	for (NSString *foldingContentLine in foldingContentLines) {
+        if (foldingContentLine == nil)
+            continue;
+        if ([CGICalendarContentLine IsFoldingLineString:foldingContentLine] == NO) {
+            [contentLines addObject:[NSMutableString stringWithString:foldingContentLine]];
+            continue;
+        }
+        NSMutableString *lastLineString = [contentLines lastObject];
+        if (lastLineString == nil)
+            continue;
+        [lastLineString appendString:[foldingContentLine substringWithRange:NSMakeRange(1, ([foldingContentLine length] - 1))]];
+    }
+    
+    int contentLineNumber = 0;
+	for (NSString *contentLine in contentLines) {
+        contentLineNumber++;
+        
+		CGICalendarContentLine *icalContentLine = [[CGICalendarContentLine alloc] initWithString:contentLine];
+        CGICalendarComponent *icalParentComponent = [self peekParserObject];
+                
+        // BEGIN
+        if ([icalContentLine isBegin]) {
+            CGICalendarComponent *icalComponent;
+            if (icalParentComponent == nil) {
+                icalComponent = [[CGICalendarObject alloc] init];
+                [self addObject:(CGICalendarObject *)icalComponent];
+            }
+            else {
+                icalComponent = [[CGICalendarComponent alloc] init];
+                [icalParentComponent addComponent:icalComponent];
+            }
+            [icalComponent setType:[icalContentLine value]];
+            [self pushParserObject:icalComponent];
+            continue;
+        }
+        
+        // END
+        if ([icalContentLine isEnd]) {
+            [self popParserObject];
+            continue;
+        }
+
+        NSString *propertyName = [icalContentLine name];
+        CGICalendarProperty *icalProperty = [icalParentComponent propertyForName:propertyName];
+        if (icalProperty == nil) {
+            icalProperty = [[CGICalendarProperty alloc] init];
+            [icalProperty setName:propertyName];
+            [icalParentComponent addProperty:icalProperty];
+        }
+        [icalProperty setValue:[icalContentLine value]];
+        for (CGICalendarParameter *icalParameter in [icalContentLine parameters])
+            [icalProperty setParameterValue:[icalParameter value] forName:[icalParameter name]];
+        
+	}
+	
+    return YES;
+}
+
+- (BOOL)parseWithPath:(NSString *)path  error:(NSError **)error
+{
+	NSData *fileData = [NSData dataWithContentsOfFile:path];
+	if (fileData == nil)
+		return NO;
+    return [self parseWithString:[[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding] error:error];
+}
+
+#pragma mark -
+#pragma mark Parser Stack Methods
+
+- (id)peekParserObject
+{
+    return [[self parserStack] lastObject];
+}
+
+- (id)popParserObject
+{
+	id lastObject = [[self parserStack] lastObject];
+    [[self parserStack] removeLastObject];
+	return lastObject;
+}
+
+- (void)pushParserObject:(id)object
+{
+    [[self parserStack] addObject:object];
+}
+
+- (void)clearParserObjects
+{
+    [self setParserStack:[NSMutableArray array]];
+}
+
+#pragma mark -
+#pragma mark String
+
+- (NSString *)description
+{
+    NSMutableString *descrString = [NSMutableString string];
+    
+    for (CGICalendarObject *icalObj in [self objects])
+        [descrString appendString:[icalObj description]];
+    
+    return descrString;
+}
+
+#pragma mark -
+#pragma mark File
+
+- (BOOL)writeToFile:(NSString *)path
+{
+    NSString *desc = [self description];
+    if (desc == nil)
+        return NO;
+    
+    NSData *data = [desc dataUsingEncoding:NSUTF8StringEncoding];
+    if (data == nil)
+        return NO;
+
+    return [data writeToFile:path atomically:YES];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarComponent.h b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarComponent.h
new file mode 100755
index 0000000000000000000000000000000000000000..f000bece3d1c7e53018905f5008bd3fe7c031b60
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarComponent.h	
@@ -0,0 +1,129 @@
+//
+//  CGICalendarComponent.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_COMPONENT_TYPE_EVENT @"VEVENT"
+#define CG_ICALENDAR_COMPONENT_TYPE_TODO @"VTODO"
+#define CG_ICALENDAR_COMPONENT_TYPE_JOURNAL @"VJOURNAL"
+#define CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY @"VFREEBUSY"
+#define CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE @"VTIMEZONE"
+#define CG_ICALENDAR_COMPONENT_TYPE_ALARM @"VALARM"
+
+@interface CGICalendarComponent : NSObject {
+
+}
+@property(retain) NSString *type;
+@property(retain) NSMutableArray *components;
+@property(retain) NSMutableArray *properties;
+
++ (id)componentWithType:(NSString *)type;
++ (id)event;
++ (id)todo;
++ (id)journal;
++ (id)freebusy;
++ (id)timezone;
++ (id)alarm;
+
+- (id)initWithType:(NSString *)type;
+
+- (BOOL)isType:(NSString *)type;
+- (BOOL)isEvent;
+- (BOOL)isTodo;
+- (BOOL)isJournal;
+- (BOOL)isFreebusy;
+- (BOOL)isTimezone;
+- (BOOL)isAlarm;
+
+- (void)addComponent:(CGICalendarComponent *)component;
+- (void)insertComponent:(CGICalendarComponent *)component atIndex:(NSUInteger)index;
+- (CGICalendarComponent *)componentAtIndex:(NSUInteger)index;
+- (NSUInteger)indexOfComponent:(CGICalendarComponent *)component;
+- (void)removeComponent:(CGICalendarComponent *)component;
+- (void)removeComponentAtIndex:(NSUInteger)index;
+
+- (BOOL)hasPropertyForName:(NSString *)name;
+- (void)addProperty:(CGICalendarProperty *)property;
+- (void)removePropertyForName:(NSString *)name;
+
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name;
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyObject:(id)object forName:(NSString *)name;
+- (void)setPropertyObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name;
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyInteger:(int)value forName:(NSString *)name;
+- (void)setPropertyInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setPropertyFloat:(float)value forName:(NSString *)name;
+- (void)setPropertyFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+
+- (NSArray *)allPropertyKeys;
+- (CGICalendarProperty *)propertyAtIndex:(NSUInteger)index;
+- (CGICalendarProperty *)propertyForName:(NSString *)name;
+
+- (NSString *)propertyValueForName:(NSString *)name;
+- (NSDate *)propertyDateForName:(NSString *)name;
+- (int)propertyIntegerForName:(NSString *)name;
+- (float)propertyFloatForName:(NSString *)name;
+
+- (NSString *)description;
+
+// 4.2.12 Participation Status
+- (void)setParticipationStatus:(int)status;
+- (int)participationStatus;
+
+// 4.8.1.5 Description
+- (void)setNotes:(NSString *)value;
+- (NSString *)notes;
+
+// 4.8.1.9 Priority
+- (void)setPriority:(NSUInteger)value;
+- (NSUInteger)priority;
+
+// 4.8.1.12 Summary
+- (void)setSummary:(NSString *)value;
+- (NSString *)summary;
+
+// 4.8.2.1 Date/Time Completed
+- (void)setCompleted:(NSDate *)value;
+- (NSDate *)completed;
+
+// 4.8.2.2 Date/Time End
+- (void)setDateTimeEnd:(NSDate *)value;
+- (NSDate *)dateTimeEnd;
+
+// 4.8.2.3 Date/Time Due
+- (void)setDue:(NSDate *)value;
+- (NSDate *)due;
+
+// 4.8.2.4 Date/Time Start
+- (void)setDateTimeStart:(NSDate *)value;
+- (NSDate *)dateTimeStart;
+
+// 4.8.4.7 Unique Identifier
+- (void)setUID:(NSString *)value;
+- (NSString *)UID;
+
+// 4.8.7.1 Date/Time Created
+- (void)setCreated:(NSDate *)value;
+- (NSDate *)created;
+
+// 4.8.7.2 Date/Time Stamp
+- (void)setDateTimeStamp:(NSDate *)value;
+- (NSDate *)dateTimeStamp;
+
+// 4.8.7.3 Last Modified
+- (void)setLastModified:(NSDate *)value;
+- (NSDate *)lastModified;
+
+// 4.8.7.4 Sequence Number
+- (void)setSequenceNumber:(NSUInteger)value;
+- (NSUInteger)sequenceNumber;
+- (void)incrementSequenceNumber;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarComponent.m b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarComponent.m
new file mode 100755
index 0000000000000000000000000000000000000000..0f9b01e80b5001ced1993893ba677d3c899d322b
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarComponent.m	
@@ -0,0 +1,523 @@
+//
+//  CGICalendarComponent.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendar.h"
+#import "CGICalendarComponent.h"
+#import "CGICalendarContentLine.h"
+#import "NSDate+CGICalendar.h"
+
+#define CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT 0
+
+@implementation CGICalendarComponent
+
+@synthesize type;
+@synthesize components;
+@synthesize properties;
+
+#pragma mark -
+#pragma mark Global methods
+
++ (id)componentWithType:(NSString *)aType
+{
+    return [[CGICalendarComponent alloc] initWithType:aType];
+}
+
++ (id)event
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_EVENT];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    [icalComp setSequenceNumber:CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT];
+    return icalComp;
+}
+
++ (id)todo
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_TODO];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    [icalComp setSequenceNumber:CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT];
+    [icalComp setCreated:[NSDate date]];
+    return icalComp;
+}
+
++ (id)journal
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_JOURNAL];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    [icalComp setSequenceNumber:CG_ICALENDAR_COMPONENT_SEQUENCE_DEFAULT];
+    return icalComp;
+}
+
++ (id)freebusy
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY];
+    [icalComp setUID:[CGICalendar UUID]];
+    [icalComp setDateTimeStamp:[NSDate date]];
+    return icalComp;
+}
+
++ (id)timezone
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE];
+    return icalComp;
+}
+
++ (id)alarm
+{
+    CGICalendarComponent *icalComp = [CGICalendarComponent componentWithType:CG_ICALENDAR_COMPONENT_TYPE_ALARM];
+    return icalComp;
+}
+
+#pragma mark -
+#pragma mark init
+
+- (id)init
+{
+    if ((self = [super init])) {
+        [self setComponents:[NSMutableArray array]];
+        [self setProperties:[NSMutableArray array]];
+    }
+    return self;
+}
+
+- (id)initWithType:(NSString *)aType
+{
+    if ((self = [self init])) {
+        [self setType:aType];
+    }
+    return self;
+}
+
+#pragma mark -
+#pragma mark Component
+
+- (void)addComponent:(CGICalendarComponent *)component
+{
+    [[self components] addObject:component];
+}
+
+- (void)insertComponent:(CGICalendarComponent *)component atIndex:(NSUInteger)index
+{
+    [[self components] insertObject:component atIndex:index];
+}
+
+- (CGICalendarComponent *)componentAtIndex:(NSUInteger)index
+{
+    return [[self components] objectAtIndex:index];
+}
+
+- (NSUInteger)indexOfComponent:(CGICalendarComponent *)component
+{
+    return [[self components] indexOfObject:component];
+}
+
+- (void)removeComponent:(CGICalendarComponent *)component
+{
+    [[self components] removeObject:component];
+}
+
+- (void)removeComponentAtIndex:(NSUInteger)index
+{
+    [[self components] removeObjectAtIndex:index];
+}
+
+#pragma mark -
+#pragma mark Property
+
+- (BOOL)hasPropertyForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name]) {
+            [[self properties] removeObject:icalProp];
+            return YES;
+        }
+    }
+    return NO;
+}
+
+- (void)addProperty:(CGICalendarProperty *)property
+{
+    [[self properties] addObject:property];
+}
+
+- (void)removePropertyForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name]) {
+            [[self properties] removeObject:icalProp];
+            return;
+        }
+    }
+}
+
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name
+{
+    [self setPropertyValue:value forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setPropertyValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+{
+    CGICalendarProperty *icalProp = [self propertyForName:name];
+    if (icalProp == nil) {
+        icalProp = [[CGICalendarProperty alloc] init];
+        [icalProp setName:name];
+        [self addProperty:icalProp];
+    }
+    [icalProp setValue:value];
+    
+    if ([parameterValues count] != [parameterNames count])
+        return;
+    
+    for (int n=0; n<[parameterNames count]; n++) {
+        NSString *name = [parameterNames objectAtIndex:n];
+        id value = [parameterNames objectAtIndex:n];
+        [icalProp setParameterObject:value forName:name];
+    }
+}
+
+- (void)setPropertyObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[object description] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setPropertyObject:(id)object forName:(NSString *)name
+{
+    [self setPropertyValue:[object description] forName:name];
+}
+
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name
+{
+    [self setPropertyValue:[object descriptionICalendar] forName:name];
+}
+
+- (void)setPropertyDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[object descriptionICalendar] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setPropertyInteger:(int)value forName:(NSString *)name
+{
+    [self setPropertyValue:[[NSNumber numberWithInteger:value] stringValue] forName:name];
+}
+
+- (void)setPropertyInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[[NSNumber numberWithInteger:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setPropertyFloat:(float)value forName:(NSString *)name
+{
+    [self setPropertyValue:[[NSNumber numberWithFloat:value] stringValue] forName:name];
+}
+
+- (void)setPropertyFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setPropertyValue:[[NSNumber numberWithFloat:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (id)propertyAtIndex:(NSUInteger)index
+{
+    return [[self properties] objectAtIndex:index];
+}
+
+- (CGICalendarProperty *)propertyForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return icalProp;
+    }
+    return nil;
+}
+
+- (NSArray *)allPropertyKeys
+{
+    NSMutableArray *keys = [NSMutableArray array];
+    for (CGICalendarProperty *icalProp in [self properties])
+        [keys addObject:[icalProp name]];
+    return keys;
+}
+
+- (NSString *)propertyValueForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp value];
+    }
+    return nil;
+}
+
+- (NSDate *)propertyDateForName:(NSString *)name
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp dateValue];
+    }
+    return nil;
+}
+
+- (int)propertyIntegerForName:(NSString *)name;
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp integerValue];
+    }
+    return 0;
+}
+
+- (float)propertyFloatForName:(NSString *)name;
+{
+    for (CGICalendarProperty *icalProp in [self properties]) {
+        if ([icalProp isName:name])
+            return [icalProp floatValue];
+    }
+    return 0;
+}
+
+#pragma mark -
+#pragma mark String
+
+- (BOOL)isType:(NSString *)aType
+{
+    return [aType isEqualToString:[self type]];
+}
+
+- (BOOL)isEvent
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_EVENT];
+}
+
+- (BOOL)isTodo
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_TODO];
+}
+
+- (BOOL)isJournal
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_JOURNAL];
+}
+
+- (BOOL)isFreebusy
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY];
+}
+
+- (BOOL)isTimezone
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE];
+}
+
+- (BOOL)isAlarm
+{
+    return [self isType:CG_ICALENDAR_COMPONENT_TYPE_ALARM];
+}
+
+#pragma mark -
+#pragma mark String
+
+#define CG_ICALENDAR_CONTENTLINE_NAME_BEGIN @"BEGIN"
+#define CG_ICALENDAR_CONTENTLINE_NAME_END @"END"
+
+- (NSString *)description
+{
+    NSMutableString *objectsString = [NSMutableString string];
+    
+    [objectsString appendFormat:@"%@:%@%@",CG_ICALENDAR_CONTENTLINE_NAME_BEGIN, [self type], CG_ICALENDAR_CONTENTLINE_TERM];
+    
+    for (CGICalendarProperty *icalProp in [self properties])
+        [objectsString appendString:[icalProp description]];
+    
+    for (CGICalendarComponent *icalComp in [self components])
+        [objectsString appendString:[icalComp description]];
+    
+    [objectsString appendFormat:@"%@:%@%@",CG_ICALENDAR_CONTENTLINE_NAME_END, [self type], CG_ICALENDAR_CONTENTLINE_TERM];
+    
+    return objectsString;
+}
+
+#pragma mark -
+#pragma mark 4.2.12 Participation Status
+
+- (void)setParticipationStatus:(int)status
+{
+    CGICalendarProperty *icalProp = [self propertyForName:CG_ICALENDAR_PROERTY_PARTSTAT];
+    if (icalProp == nil)
+        icalProp = [[CGICalendarProperty alloc] init];
+    [icalProp setParticipationStatus:status];
+}
+
+- (int)participationStatus
+{
+    CGICalendarProperty *icalProp = [self propertyForName:CG_ICALENDAR_PROERTY_PARTSTAT];
+    if (icalProp == nil)
+        return CGICalendarParticipationStatusUnkown;
+    return [icalProp participationStatus];
+}
+
+#pragma mark -
+#pragma mark 4.8.1.5 Description
+
+- (void)setNotes:(NSString *)value
+{
+    [self setPropertyValue:value forName:CG_ICALENDAR_PROERTY_DESCRIPTION];
+}
+
+- (NSString *)notes
+{
+    return [self propertyValueForName:CG_ICALENDAR_PROERTY_DESCRIPTION];
+}
+
+#pragma mark -
+#pragma mark 4.8.1.9 Priority
+
+- (void)setPriority:(NSUInteger)value
+{
+    [self setPropertyInteger:(int)value forName:CG_ICALENDAR_PROERTY_PRIORITY];
+}
+
+- (NSUInteger)priority
+{
+    return [self propertyIntegerForName:CG_ICALENDAR_PROERTY_PRIORITY];
+}
+
+#pragma mark -
+#pragma mark 4.8.1.12 Summary
+
+- (void)setSummary:(NSString *)value
+{
+    [self setPropertyValue:value forName:CG_ICALENDAR_PROERTY_SUMMARY];
+}
+
+- (NSString *)summary
+{
+    return [self propertyValueForName:CG_ICALENDAR_PROERTY_SUMMARY];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.1 Date/Time Completed
+
+- (void)setCompleted:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_COMPLETED];
+}
+
+- (NSDate *)completed
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_COMPLETED];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.2 Date/Time End
+
+- (void)setDateTimeEnd:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DTEND];
+}
+
+- (NSDate *)dateTimeEnd
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DTEND];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.3 Date/Time Due
+
+- (void)setDue:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DUE];
+}
+
+- (NSDate *)due
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DUE];
+}
+
+#pragma mark -
+#pragma mark 4.8.2.4 Date/Time Start
+
+- (void)setDateTimeStart:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DTSTART];
+}
+
+- (NSDate *)dateTimeStart
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DTSTART];
+}
+
+#pragma mark -
+#pragma mark 4.8.4.7 Unique Identifier
+
+- (void)setUID:(NSString *)value
+{
+    [self setPropertyValue:value forName:CG_ICALENDAR_PROERTY_UID];
+}
+
+- (NSString *)UID
+{
+    return [self propertyValueForName:CG_ICALENDAR_PROERTY_UID];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.1 Date/Time Created
+
+- (void)setCreated:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_CREATED];
+}
+
+- (NSDate *)created
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_CREATED];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.2 Date/Time Stamp
+
+- (void)setDateTimeStamp:(NSDate *)value
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_DTSTAMP];
+}
+
+- (NSDate *)dateTimeStamp
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_DTSTAMP];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.3 Last Modified
+
+- (void)setLastModified:(NSDate *)value;
+{
+    [self setPropertyDate:value forName:CG_ICALENDAR_PROERTY_LASTMODIFIED];
+}
+
+- (NSDate *)lastModified;
+{
+    return [self propertyDateForName:CG_ICALENDAR_PROERTY_LASTMODIFIED];
+}
+
+#pragma mark -
+#pragma mark 4.8.7.4 Sequence Number
+
+- (void)setSequenceNumber:(NSUInteger)value
+{
+    [self setPropertyInteger:(int)value forName:CG_ICALENDAR_PROERTY_SEQUENCE];
+}
+
+- (NSUInteger)sequenceNumber
+{
+    return [self propertyIntegerForName:CG_ICALENDAR_PROERTY_SEQUENCE];
+}
+
+- (void)incrementSequenceNumber
+{
+    [self setSequenceNumber:([self sequenceNumber] + 1)];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarContentLine.h b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarContentLine.h
new file mode 100755
index 0000000000000000000000000000000000000000..f87ffac231712d0efc387f1db93ef07e18c09e49
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarContentLine.h	
@@ -0,0 +1,41 @@
+//
+//  CGICalendarContentLine.h
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_CONTENTLINE_TERM @"\r\n"
+#define CG_ICALENDAR_CONTENTLINE_FOLDING_SPACE @" "
+#define CG_ICALENDAR_CONTENTLINE_FOLDING_TAB @"\t"
+#define CG_ICALENDAR_CONTENTLINE_DELIM @":"
+#define CG_ICALENDAR_CONTENTLINE_NAMEPARAM_DELIM @";"
+
+#define CG_ICALENDAR_CONTENTLINE_NAME_BEGIN @"BEGIN"
+#define CG_ICALENDAR_CONTENTLINE_NAME_END @"END"
+
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VCALENDAR @"VCALENDAR"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VEVENT @"VEVENT"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VJOURNAL @"VJOURNAL"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VFREEBUSY @"VFREEBUSY"
+#define CG_ICALENDAR_CONTENTLINE_CONPONENT_VTIMEZONE @"VTIMEZONE"
+
+@interface CGICalendarContentLine : CGICalendarProperty {
+
+}
++ (BOOL)IsFoldingLineString:(NSString *)aString;
++ (id)contentLineWithString:(NSString *)aString;
+
+- (id)init;
+- (id)initWithString:(NSString *)aString;
+- (void)setString:(NSString *)aString;
+
+- (NSString *)description;
+
+- (BOOL)isBegin;
+- (BOOL)isEnd;
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarContentLine.m b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarContentLine.m
new file mode 100755
index 0000000000000000000000000000000000000000..390e9c2adae1edaaf42fafc6ef88f8c9a5595742
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarContentLine.m	
@@ -0,0 +1,183 @@
+//
+//  CGICalendarContentLine.m
+//
+//  Created by Satoshi Konno on 11/01/28.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarContentLine.h"
+
+/*
+ The following notation defines the lines of content in an iCalendar
+ object:
+ 
+ contentline        = name *(";" param ) ":" value CRLF
+ ; This ABNF is just a general definition for an initial parsing
+ ; of the content line into its property name, parameter list,
+ ; and value string
+ 
+ ; When parsing a content line, folded lines MUST first
+ ; be unfolded according to the unfolding procedure
+ ; described above. When generating a content line, lines
+ ; longer than 75 octets SHOULD be folded according to
+ ; the folding procedure described above.
+ 
+ name               = x-name / iana-token
+ 
+ iana-token = 1*(ALPHA / DIGIT / "-")
+ ; iCalendar identifier registered with IANA
+ 
+ x-name             = "X-" [vendorid "-"] 1*(ALPHA / DIGIT / "-")
+ ; Reservered for experimental use. Not intended for use in
+ ; released products.
+ 
+ vendorid   = 3*(ALPHA / DIGIT)     ;Vendor identification
+ 
+ param              = param-name "=" param-value
+ *("," param-value)
+ ; Each property defines the specific ABNF for the parameters
+ ; allowed on the property. Refer to specific properties for
+ ; precise parameter ABNF.
+ 
+ param-name = iana-token / x-token
+ 
+ param-value        = paramtext / quoted-string
+ 
+ paramtext  = *SAFE-CHAR
+ 
+ value      = *VALUE-CHAR
+ 
+ quoted-string      = DQUOTE *QSAFE-CHAR DQUOTE
+ 
+ NON-US-ASCII       = %x80-F8
+ ; Use restricted by charset parameter
+ ; on outer MIME object (UTF-8 preferred)
+ 
+ QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-US-ASCII
+ ; Any character except CTLs and DQUOTE
+ 
+ SAFE-CHAR  = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E
+ / NON-US-ASCII
+ ; Any character except CTLs, DQUOTE, ";", ":", ","
+ 
+ VALUE-CHAR = WSP / %x21-7E / NON-US-ASCII
+ ; Any textual character
+ 
+ CR = %x0D
+ ; carriage return
+ 
+ LF = %x0A
+ ; line feed
+ 
+ CRLF       = CR LF
+ ; Internet standard newline
+ 
+ CTL        = %x00-08 / %x0A-1F / %x7F
+ ; Controls
+ 
+ ALPHA      = %x41-5A / %x61-7A   ; A-Z / a-z
+ 
+ DIGIT      = %x30-39
+ ; 0-9
+ 
+ DQUOTE     = %x22
+ ; Quotation Mark
+ 
+ WSP        = SPACE / HTAB
+ 
+ SPACE      = %x20
+ 
+ HTAB       = %x09
+ */
+
+@implementation CGICalendarContentLine
+
++ (BOOL)IsFoldingLineString:(NSString *)aString
+{
+    if ([aString hasPrefix:CG_ICALENDAR_CONTENTLINE_FOLDING_SPACE] || [aString hasPrefix:CG_ICALENDAR_CONTENTLINE_FOLDING_TAB])
+        return YES;
+    return NO;
+}
+
++ (id)contentLineWithString:(NSString *)aString
+{
+	CGICalendarContentLine *icalContentLine = [[CGICalendarContentLine alloc] initWithString:aString];
+	return icalContentLine;
+}
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+- (id)initWithString:(NSString *)aString
+{
+	if ((self = [self init])) {
+		[self setString:aString];
+	}
+	return self;
+}
+
+- (void)setString:(NSString *)aString
+{
+	NSString *nowNewLineString = [aString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
+	NSArray *values = [nowNewLineString componentsSeparatedByString:CG_ICALENDAR_CONTENTLINE_DELIM];
+	int valuesCnt = (int)[values count];
+	if (valuesCnt < 2)
+		return;
+	
+	NSArray *nameParams = [[values objectAtIndex:0] componentsSeparatedByString:CG_ICALENDAR_CONTENTLINE_NAMEPARAM_DELIM];
+	NSMutableArray *params = [NSMutableArray array];
+	int nameParamsCnt = (int)[nameParams count];
+	for (int n=0; n<nameParamsCnt; n++) {
+		if (n == 0) {
+			[self setName:[nameParams objectAtIndex:0]];
+			continue;
+		}
+		CGICalendarParameter *icalParam = [[CGICalendarParameter alloc] initWithString:[nameParams objectAtIndex:n]];
+		[params addObject:icalParam];
+	}
+	[self setParameters:params];
+
+	NSMutableString *valueString = [NSMutableString string];
+	for (int n=1; n<valuesCnt; n++) {
+		if (1 < n)
+			[valueString appendString:CG_ICALENDAR_CONTENTLINE_DELIM];
+		[valueString appendString:[values objectAtIndex:n]];
+	}
+	[self setValue:valueString];
+}
+
+- (NSString *)description;
+{
+	NSMutableString *contentLine = [NSMutableString string];
+	if ([self hasName])
+		[contentLine appendString:[self name]];
+	
+	for (CGICalendarParameter *param in [self parameters]) {
+		[contentLine appendString:CG_ICALENDAR_CONTENTLINE_NAMEPARAM_DELIM];
+		[contentLine appendString:[param string]];
+	}
+	
+	[contentLine appendString:CG_ICALENDAR_CONTENTLINE_DELIM];
+	if ([self hasValue])
+        [contentLine appendString:[self value]];
+	
+	[contentLine appendString:CG_ICALENDAR_CONTENTLINE_TERM];
+	
+	return contentLine;
+}
+
+- (BOOL)isBegin
+{
+	return [self isName:CG_ICALENDAR_CONTENTLINE_NAME_BEGIN];
+}
+
+- (BOOL)isEnd
+{
+	return [self isName:CG_ICALENDAR_CONTENTLINE_NAME_END];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarObject.h b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarObject.h
new file mode 100755
index 0000000000000000000000000000000000000000..7538b51fb1cf694271839acc9f81fedd2cef3648
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarObject.h	
@@ -0,0 +1,42 @@
+//
+//  CGICalendarObject.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "CGICalendarComponent.h"
+#import "CGICalendarProperty.h"
+
+#define CG_ICALENDAR_OBJECT_VERSION_DEFAULT @"2.0"
+#define CG_ICALENDAR_OBJECT_PRODID_DEFAULT @"//CyberGarage//iCal4ObjC//EN"
+
+@interface CGICalendarObject : CGICalendarComponent {
+    
+}
+
++ (id)object;
++ (id)objectWithProdid:(NSString *)prodid;
++ (id)objectWithProdid:(NSString *)prodid version:(NSString *)version;
+
+- (id)init;
+- (id)initWithProdid:(NSString *)prodid;
+- (id)initWithProdid:(NSString *)prodid version:(NSString *)version;
+
+- (void)setVersion:(NSString *)version;
+- (NSString *)version;
+
+- (void)setProdid:(NSString *)prodid;
+- (NSString *)prodid;
+
+- (NSArray *)componentsWithType:(NSString *)type;
+- (NSArray *)events;
+- (NSArray *)todos;
+- (NSArray *)journals;
+- (NSArray *)freebusies;
+- (NSArray *)timezones;
+
+@end
+
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarObject.m b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarObject.m
new file mode 100755
index 0000000000000000000000000000000000000000..7a388f19babb32ca8796ee35c9f5865dfbf87084
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarObject.m	
@@ -0,0 +1,129 @@
+//
+//  CGICalendarObject.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarObject.h"
+
+#define CG_ICALENDAR_OBJECT_TYPE_DEFAULT @"VCALENDAR"
+#define CG_ICALENDAR_OBJECT_VERSION_PARAM @"VERSION"
+#define CG_ICALENDAR_OBJECT_PRODID_PARAM @"PRODID"
+
+@implementation CGICalendarObject
+
+#pragma mark -
+#pragma mark Global
+
++ (id)object
+{
+    return [[CGICalendarObject alloc] init];
+}
+
++ (id)objectWithProdid:(NSString *)prodid
+{
+    return [[CGICalendarObject alloc] initWithProdid:prodid];
+}
+
++ (id)objectWithProdid:(NSString *)prodid version:(NSString *)version
+{
+    return [[CGICalendarObject alloc] initWithProdid:prodid version:version];
+}
+
+#pragma mark -
+#pragma mark Initialize
+
+- (id)init
+{
+    if ((self = [super init])) {
+        [self setType:CG_ICALENDAR_OBJECT_TYPE_DEFAULT];
+        [self setVersion:CG_ICALENDAR_OBJECT_VERSION_DEFAULT];
+        [self setProdid:CG_ICALENDAR_OBJECT_PRODID_DEFAULT];
+    }
+    return self;
+}
+
+- (id)initWithProdid:(NSString *)prodid version:(NSString *)version;
+{
+    if ((self = [super init])) {
+        [self setType:CG_ICALENDAR_OBJECT_TYPE_DEFAULT];
+        [self setVersion:version];
+        [self setProdid:prodid];
+    }
+    return self;
+}
+
+- (id)initWithProdid:(NSString *)prodid
+{
+    if ((self = [super init])) {
+        [self setType:CG_ICALENDAR_OBJECT_TYPE_DEFAULT];
+        [self setVersion:CG_ICALENDAR_OBJECT_VERSION_DEFAULT];
+        [self setProdid:prodid];
+    }
+    return self;
+}
+
+#pragma mark -
+#pragma mark Property Utility Methods
+
+- (void)setVersion:(NSString *)version
+{
+    [self setPropertyValue:version forName:CG_ICALENDAR_OBJECT_VERSION_PARAM];
+}
+
+- (NSString *)version
+{
+    return [self propertyValueForName:CG_ICALENDAR_OBJECT_VERSION_PARAM];
+}
+
+- (void)setProdid:(NSString *)prodid
+{
+    [self setPropertyValue:prodid forName:CG_ICALENDAR_OBJECT_PRODID_PARAM];
+}
+
+- (NSString *)prodid
+{
+    return [self propertyValueForName:CG_ICALENDAR_OBJECT_PRODID_PARAM];
+}
+
+#pragma mark -
+#pragma mark conponents
+
+- (NSArray *)componentsWithType:(NSString *)type
+{
+    NSMutableArray *typeComponents = [NSMutableArray array];
+    for (CGICalendarComponent *icalComponent in [self components]) {
+        if ([icalComponent isType:type] == NO)
+            continue;
+        [typeComponents addObject:icalComponent];
+    }
+    return typeComponents;
+}
+
+- (NSArray *)events
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_EVENT];
+}
+
+- (NSArray *)todos
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_TODO];
+}
+
+- (NSArray *)journals
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_JOURNAL];
+}
+
+- (NSArray *)freebusies
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_FREEBUSY];
+}
+
+- (NSArray *)timezones
+{
+    return [self componentsWithType:CG_ICALENDAR_COMPONENT_TYPE_TIMEZONE];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarParameter.h b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarParameter.h
new file mode 100755
index 0000000000000000000000000000000000000000..ee5a54d907a8a0dd7db1f0827f00baca2eb2240f
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarParameter.h	
@@ -0,0 +1,18 @@
+//
+//  CGICalendarParameter.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "CGICalendarValue.h"
+
+@interface CGICalendarParameter : CGICalendarValue {
+
+}
+- (id)init;
+- (id)initWithString:(NSString *)aString;
+- (void)setString:(NSString *)aString;
+- (NSString *) string;
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarParameter.m b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarParameter.m
new file mode 100755
index 0000000000000000000000000000000000000000..c6044896e5c61b52f479a36b80ce65d2b51d95aa
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarParameter.m	
@@ -0,0 +1,46 @@
+//
+//  CGICalendarParameter.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarParameter.h"
+
+#define CG_ICALENDAR_PARAMETER_DELIM @"="
+
+@implementation CGICalendarParameter
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+- (id)initWithString:(NSString *)aString
+{
+	if ((self = [self init])) {
+		[self setString:aString];
+	}
+	return self;
+}
+
+- (void)setString:(NSString *)aString
+{
+	NSArray *values = [aString componentsSeparatedByString:CG_ICALENDAR_PARAMETER_DELIM];
+	if ([values count] < 2)
+		return;
+	[self setName:[values objectAtIndex:0]];
+	[self setValue:[values objectAtIndex:1]];
+}
+
+- (NSString *) string;
+{
+	return [NSString stringWithFormat:@"%@%@%@",
+			[self name] ? [self name] : @"",
+			CG_ICALENDAR_PARAMETER_DELIM,
+			[self value] ? [self value] : @""];
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarProperty.h b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarProperty.h
new file mode 100755
index 0000000000000000000000000000000000000000..a2d4003cbd33a503226b670696938e1e7b520d2d
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarProperty.h	
@@ -0,0 +1,78 @@
+//
+//  CGICalendarProperty.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "CGICalendarValue.h"
+#import "CGICalendarParameter.h"
+
+#define CG_ICALENDAR_PROERTY_PARTSTAT @"PARTSTAT"
+
+#define CG_ICALENDAR_PROERTY_COMPLETED @"COMPLETED"
+#define CG_ICALENDAR_PROERTY_DTEND @"DTEND"
+#define CG_ICALENDAR_PROERTY_DUE @"DUE"
+#define CG_ICALENDAR_PROERTY_DTSTART @"DTSTART"
+
+// 4.8.1 Descriptive Component Properties
+
+#define CG_ICALENDAR_PROERTY_DESCRIPTION @"DESCRIPTION"
+#define CG_ICALENDAR_PROERTY_PRIORITY @"PRIORITY"
+#define CG_ICALENDAR_PROERTY_SUMMARY @"SUMMARY"
+
+// 4.8.4 Relationship Component Properties
+#define CG_ICALENDAR_PROERTY_UID @"UID"
+
+// 4.8.7 Change Management Component Properties
+
+#define CG_ICALENDAR_PROERTY_CREATED @"CREATED"
+#define CG_ICALENDAR_PROERTY_DTSTAMP @"DTSTAMP"
+#define CG_ICALENDAR_PROERTY_LASTMODIFIED @"LAST-MODIFIED"
+#define CG_ICALENDAR_PROERTY_SEQUENCE @"SEQUENCE"
+
+enum {
+	CGICalendarParticipationStatusUnkown = 0,
+	CGICalendarParticipationStatusNeedsAction,
+	CGICalendarParticipationStatusAccepted,
+	CGICalendarParticipationStatusDeclined,
+	CGICalendarParticipationStatusTentative,
+	CGICalendarParticipationStatusDelegated,
+	CGICalendarParticipationStatusCompleted,
+	CGICalendarParticipationStatusInProcess,
+};
+
+@interface CGICalendarProperty : CGICalendarValue {
+}
+@property(retain) NSMutableArray *parameters;
+
+- (id)init;
+
+- (BOOL)hasParameterForName:(NSString *)name;
+- (void)addParameter:(CGICalendarParameter *)parameter;
+- (void)removeParameterForName:(NSString *)name;
+
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name;
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterObject:(id)object forName:(NSString *)name;
+- (void)setParameterObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name;
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterInteger:(int)value forName:(NSString *)name;
+- (void)setParameterInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+- (void)setParameterFloat:(float)value forName:(NSString *)name;
+- (void)setParameterFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+
+- (CGICalendarParameter *)parameterAtIndex:(NSUInteger)index;
+- (CGICalendarParameter *)parameterForName:(NSString *)name;
+- (NSArray *)allParameterKeys;
+- (NSString *)parameterValueForName:(NSString *)name;
+- (NSDate *)parameterDateForName:(NSString *)name;
+- (int)parameterIntegerForName:(NSString *)name;
+- (float)parameterFloatForName:(NSString *)name;
+
+- (void)setParticipationStatus:(int)value;
+- (int)participationStatus;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarProperty.m b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarProperty.m
new file mode 100755
index 0000000000000000000000000000000000000000..86b38df45f0943db885c67f5294882a9fa95f2bc
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarProperty.m	
@@ -0,0 +1,228 @@
+//
+//  CGICalendarProperty.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarProperty.h"
+#import "CGICalendarContentLine.h"
+#import "NSDate+CGICalendar.h"
+
+@implementation CGICalendarProperty
+
+@synthesize parameters;
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+#pragma mark -
+#pragma mark Parameter
+
+- (BOOL)hasParameterForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name]) {
+            [[self parameters] removeObject:icalProp];
+            return YES;
+        }
+    }
+    return NO;
+}
+
+- (void)addParameter:(CGICalendarParameter *)parameter
+{
+    [[self parameters] addObject:parameter];
+}
+
+- (void)removeParameterForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name]) {
+            [[self parameters] removeObject:icalProp];
+            return;
+        }
+    }
+}
+
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name
+{
+    CGICalendarParameter *icalProp = [self parameterForName:name];
+    if (icalProp == nil) {
+        icalProp = [[CGICalendarParameter alloc] init];
+        [icalProp setName:name];
+        [self addParameter:icalProp];
+    }
+    [icalProp setValue:value];
+}
+
+- (void)setParameterValue:(NSString *)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames;
+{
+    [self setParameterValue:value forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setParameterObject:(id)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[object description] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setParameterObject:(id)object forName:(NSString *)name
+{
+    [self setParameterValue:[object description] forName:name];
+}
+
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name
+{
+    [self setParameterValue:[object descriptionICalendar] forName:name];
+}
+
+- (void)setParameterDate:(NSDate *)object forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[object descriptionICalendar] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setParameterInteger:(int)value forName:(NSString *)name
+{
+    [self setParameterValue:[[NSNumber numberWithInteger:value] stringValue] forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setParameterInteger:(int)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[[NSNumber numberWithInteger:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (void)setParameterFloat:(float)value forName:(NSString *)name
+{
+    [self setParameterValue:[[NSNumber numberWithFloat:value] stringValue] forName:name parameterValues:[NSArray array] parameterNames:[NSArray array]];
+}
+
+- (void)setParameterFloat:(float)value forName:(NSString *)name parameterValues:(NSArray *)parameterValues parameterNames:(NSArray *)parameterNames
+{
+    [self setParameterValue:[[NSNumber numberWithFloat:value] stringValue] forName:name parameterValues:parameterValues parameterNames:parameterNames];
+}
+
+- (id)parameterAtIndex:(NSUInteger)index
+{
+    return [[self parameters] objectAtIndex:index];
+}
+
+- (CGICalendarParameter *)parameterForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return icalProp;
+    }
+    return nil;
+}
+
+- (NSArray *)allParameterKeys
+{
+    NSMutableArray *keys = [NSMutableArray array];
+    for (CGICalendarParameter *icalProp in [self parameters])
+        [keys addObject:[icalProp name]];
+    return keys;
+}
+
+- (NSString *)parameterValueForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp value];
+    }
+    return nil;
+}
+
+- (NSDate *)parameterDateForName:(NSString *)name
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp dateValue];
+    }
+    return nil;
+}
+
+- (int)parameterIntegerForName:(NSString *)name;
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp integerValue];
+    }
+    return 0;
+}
+
+- (float)parameterFloatForName:(NSString *)name;
+{
+    for (CGICalendarParameter *icalProp in [self parameters]) {
+        if ([icalProp isName:name])
+            return [icalProp floatValue];
+    }
+    return 0;
+}
+
+#pragma mark -
+#pragma mark String
+
+- (NSString *)description
+{
+    NSMutableString *propertyString = [NSMutableString string];
+    
+    [propertyString appendFormat:@"%@", [self name]];
+    
+    for (CGICalendarParameter *icalParam in [self parameters])
+        [propertyString appendFormat:@";%@", [icalParam description]];
+        
+    [propertyString appendFormat:@"%:%@%@", ((0 < [[self value] length]) ? [self value] : @""), CG_ICALENDAR_CONTENTLINE_TERM];
+    
+    return propertyString;
+}
+
+#pragma mark -
+#pragma mark ParticipationStatus
+
+- (NSArray *)participationStatusStrings
+{
+    static NSArray *statusStrings = nil;
+    
+    if (statusStrings == nil) {
+        statusStrings = [NSArray arrayWithObjects:
+                         @"",
+                         @"NEEDS-ACTION",
+                         @"ACCEPTED",
+                         @"DECLINED",
+                         @"TENTATIVE",
+                         @"DELEGATED",
+                         @"COMPLETED",
+                         @"IN-PROCESS",
+                         nil];
+    }
+    
+    return statusStrings;
+}
+
+- (void)setParticipationStatus:(int)status
+{
+    NSArray *statusStrings = [self participationStatusStrings];
+    if (status < 0 || ([statusStrings count]-1) < status)
+        return;
+    [self setValue:[statusStrings objectAtIndex:status]];
+}
+
+- (int)participationStatus
+{
+    if ([self value] == nil)
+        return CGICalendarParticipationStatusUnkown;
+    
+    NSArray *statusStrings = [self participationStatusStrings];
+    for (int n=0; n<[statusStrings count]; n++) {
+        if ([[self value] isEqualToString:[statusStrings objectAtIndex:n]])
+            return n;
+    }
+    
+    return CGICalendarParticipationStatusUnkown;
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarValue.h b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarValue.h
new file mode 100755
index 0000000000000000000000000000000000000000..d1020fa7080ba4ee08dcac24671f5fc7d43f87f0
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarValue.h	
@@ -0,0 +1,50 @@
+//
+//  CGICalendarValue.h
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+enum {
+	CGICalendarValueTypeUnknown = 0,
+	CGICalendarValueTypeBinary,
+	CGICalendarValueTypeBoolean,
+	CGICalendarValueTypeCalendarUserAddress,
+	CGICalendarValueTypeDate,
+	CGICalendarValueTypeDateTime,
+	CGICalendarValueTypeDuration,
+	CGICalendarValueTypeFloat,
+	CGICalendarValueTypeInteger,
+	CGICalendarValueTypePeriodOfTime,
+	CGICalendarValueTypeRecurrenceRule,
+	CGICalendarValueTypeText,
+	CGICalendarValueTypeTime,
+	CGICalendarValueTypeURI,
+	CGICalendarValueTypeUTCOffset,
+};
+
+@interface CGICalendarValue : NSObject {
+
+}
+@property(assign) int type;
+@property(retain) NSString *name;
+@property(retain) NSString *value;
+
+- (id)init;
+
+- (BOOL)hasName;
+- (BOOL)hasValue;
+
+- (BOOL)isName:(NSString *)aName;
+- (BOOL)isValue:(NSString *)aValue;
+
+- (void)setObject:(id)value;
+- (void)setDate:(NSDate *)value;
+
+- (NSDate *)dateValue;
+- (int)integerValue;
+- (float)floatValue;
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarValue.m b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarValue.m
new file mode 100755
index 0000000000000000000000000000000000000000..4364c11e4d5ce3a0b196d47b5102bdc8050cfead
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/CGICalendarValue.m	
@@ -0,0 +1,77 @@
+//
+//  CGICalendarValue.m
+//
+//  Created by Satoshi Konno on 11/01/27.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "CGICalendarValue.h"
+#import "NSDate+CGICalendar.h"
+
+@implementation CGICalendarValue
+
+@synthesize type;
+@synthesize value;
+@synthesize name;
+
+- (id)init
+{
+	if ((self = [super init])) {
+	}
+	return self;
+}
+
+- (BOOL)hasName
+{
+	if ([self name] != nil && 0 < [[self name] length])
+		return YES;
+	return NO;
+}
+
+- (BOOL)hasValue
+{
+	if ([self value] != nil && 0 < [[self value] length])
+		return YES;
+	return NO;
+}
+
+- (BOOL)isName:(NSString *)aName
+{
+	if (aName == nil || [aName length] <= 0)
+		return NO;
+	return [aName isEqualToString:[self name]];
+}
+
+- (BOOL)isValue:(NSString *)aValue
+{
+	if (aValue == nil || [aValue length] <= 0)
+		return NO;
+	return [aValue isEqualToString:[self value]];
+}
+
+- (void)setObject:(id)aValue
+{
+    [self setValue:[value description]];
+}
+
+- (void)setDate:(NSDate *)aValue
+{
+    [self setValue:[aValue descriptionICalendar]];
+}
+
+- (NSDate *)dateValue
+{
+    return [NSDate dateWithICalendarString:[self value]];
+}
+
+- (int)integerValue
+{
+    return [[self value] integerValue];
+}
+
+- (float)floatValue
+{
+    return [[self value] floatValue];    
+}
+
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/NSDate+CGICalendar.h b/WPI Calendar Event Creator/iCalObjCSDK/NSDate+CGICalendar.h
new file mode 100755
index 0000000000000000000000000000000000000000..3e649c81c35ecb34c4bba7a0d79ad9911da74e95
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/NSDate+CGICalendar.h	
@@ -0,0 +1,16 @@
+//
+//  NSDate+CGICalendar.h
+//
+//  Created by Satoshi Konno on 5/12/11.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@interface NSDate(CGICalendar)
++ (id)dateWithICalendarString:(NSString *)aString;
++ (id)dateWithICalendarISO8601:(NSString *)aString;
+- (NSString *)descriptionICalendar;
+- (NSString *)descriptionISO8601;
+@end
diff --git a/WPI Calendar Event Creator/iCalObjCSDK/NSDate+CGICalendar.m b/WPI Calendar Event Creator/iCalObjCSDK/NSDate+CGICalendar.m
new file mode 100755
index 0000000000000000000000000000000000000000..18a8339431cf4011bd33447a164083d87f4a1ba9
--- /dev/null
+++ b/WPI Calendar Event Creator/iCalObjCSDK/NSDate+CGICalendar.m	
@@ -0,0 +1,49 @@
+//
+//  NSDate+CGICalendar.m
+//
+//  Created by Satoshi Konno on 5/12/11.
+//  Copyright 2011 Satoshi Konno. All rights reserved.
+//
+
+#import "NSDate+CGICalendar.h"
+
+#define CGNSDATE_ICALENDAR_DATETMEFORMAT @"YYYYMMdd'T'kkmmss'Z'"
+#define CGNSDATE_ISO8601_DATETMEFORMAT @"YYYY-MM-dd kk:mm:ss"
+
+@implementation NSDate(CGICalendar)
+
++ (id)dateWithICalendarString:(NSString *)aString
+{
+    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
+	[dateFormatter setTimeZone:timeZone];
+    [dateFormatter setDateFormat:CGNSDATE_ICALENDAR_DATETMEFORMAT];
+    return [dateFormatter dateFromString:aString];
+}
+
++ (id)dateWithICalendarISO8601:(NSString *)aString
+{
+    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+    [dateFormatter setTimeStyle:NSDateFormatterFullStyle];
+    [dateFormatter setDateFormat:CGNSDATE_ISO8601_DATETMEFORMAT];
+    return [dateFormatter dateFromString:aString];
+}
+
+- (NSString *)descriptionICalendar
+{
+	NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
+	[dateFormatter setTimeZone:timeZone];
+	[dateFormatter setDateFormat:CGNSDATE_ICALENDAR_DATETMEFORMAT];
+	return [dateFormatter stringFromDate:self];
+}
+
+- (NSString *)descriptionISO8601
+{
+	NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+	[dateFormatter setLocale:[NSLocale systemLocale]];
+	[dateFormatter setDateFormat:CGNSDATE_ISO8601_DATETMEFORMAT];
+	return [dateFormatter stringFromDate:self];
+}
+
+@end 
diff --git a/WPI Calendar Event Creator/rsz_wpicalendareventcreatorappicon.png b/WPI Calendar Event Creator/rsz_wpicalendareventcreatorappicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..888958d0407726e394a770211cf87d547e1aad2d
Binary files /dev/null and b/WPI Calendar Event Creator/rsz_wpicalendareventcreatorappicon.png differ