Added Design Details for Maps + Calendar feature. Detailed list of libraries, APIs to be used coming up.
diff --git a/SocialFeaturesMelangeGSoC2010.wiki b/SocialFeaturesMelangeGSoC2010.wiki
index e122871..37821a5 100644
--- a/SocialFeaturesMelangeGSoC2010.wiki
+++ b/SocialFeaturesMelangeGSoC2010.wiki
@@ -79,6 +79,7 @@
   * project_details – *ListProperty*
   * feed_url - *LinkProperty*
   * user_page_status - *StringProperty*
+  * tags - *StringProperty* (for filtering in maps+calendars searches)
 
 
 Properties of education.py
@@ -155,7 +156,73 @@
 
 == Main Feature 2: Maps + Calendars for GSoC ==
 
+===Overview===
+This feature consists of two main components. The *Calendars* and *My Community* components. These two components will appear in the sidebar in the User section.
 
+The My Community tab will provide a portal for users to explore all the participants of
+ the program by different categories such as location, organization, project tags etc.
+ Users can can get to know their fellow participants by visiting their user page.
+
+The My Community section also allows user to explore community events by location, organization and tags. Non-admin users can also request to add a new event to the calendar by sending "Add Event" requests to their respective admins with the event details.
+
+The My Community tab provides two views for the above-mentioned activities, a simply list view and a global map view(default).
+
+The Calendars component is used to view only the events such as GSoC meetups, irc meetings, conferences and other related events which might be of interest to the community members. Each user can view the public program calendar and the private organization calendar which is owned by the organization admin and is viewable only by users associated with that organization.
+
+
+===Workflow===
+
+*My Community*
+
+Workflow for all Users: 
+    
+    * When users click on 'My Community' in the sidebar, under the 'User' tab, they will be redirected to the _MapView_ which is the default view. Here, they will see a world map which they can manipulate to show either *users or events*.
+    * In the _MapView_
+         # Once users or events are selected, the map can be further manipulated to show the data based on location, organization and tags(i.e. C#, PHP, Django etc).
+            # If users are selected: The map will point to all user locations based on the filters selected. A mouse-over on a particular user, will show a link to user profile, which can be clicked to be directed to the user page.
+            # If events are selected: The workflow is same as users, except that events are shown on the map. The users can mouse-over and click on a particular event to view the details as a pop-up widget.
+    * In the _ListView_
+         # Once users or events are selected, the same filters as above can be applied, except the data will be shown in a text-based list format. Clicking on any row in the list, will lead to the corresponding user page or the pop-up event widget respectively.
+
+*Calendars*
+
+Workflow for Users:
+
+    * Click on 'Calendars' under the User tab in the sidebar. They view a single calendar containing events in the Program calendar as well as the events in their organization calendar. (Organization admins are owners of their respective org calendars.)
+    * From this point onwards, users may choose any of the following:
+       * *For Admins* Add a new event by clicking on the 'Add Event' button, which will take them to a form where they can fill in the event details and it will be shown on the org calendar.
+       * *For Admins* They can choose to approve or decline requests sent by other users to publish events in their calendar by clicking on the 'Requests' button. They will be redirected to a page showing a list of event requests. After inspecting the event details, they can approve or decline the events.
+       * *For Non-Admins* User can choose to request to add a new event by clicking on the  'Request Add Event' button. They will be redirected to a similar form as the admins 'Add Event' function. They can submit it and this event will be shown on the respective org or program calendar after it is approved by the respective admin.
+       * View user's org events only.
+       * View Program events only.
+ 
+===Data Models===
+
+Currently, the additional data model required here is for the event objects. 
+
+_soc.modules.social.models.event.py_
+
+Properties of for event.py
+  * owner - *ReferenceProperty*
+  * event_name - *StringProperty*
+  * description – *StringProperty*
+  * location – *StrinkProperty*
+  * is_org_event – *BooleanProperty*
+  * organization - *ReferenceProperty*
+  * status - *StringProperty*
+  * time - *DateTimeProperty*
+
+An event can only be published in one calendar(i.e. program calendar or org calendar). If is_org_event is true, then it will be published in the current user's org calendar, if is_org_event is set to false, then the event will be published in the program calendar.
+These two status properties differentiate the program admin and the org admins.
+
+Based on the calendar(org or program) in which the event is meant to be published, the status property is set to either of the three values.
+
+  * *is_requested* : If the current user is not the owner of the calendar where the event is to be published, then this state is set by default. When it is approved by the owner, this is set to is_approved.
+  * *is_approved* : If the current user is the owner of the calendar where the event is to be published, then this state is set by default. Else if the event is approved by the owner, this state is set for the event.
+  * *is_declined* : If the calendar owner chooses to decline an event request this state is set.
+
+
+===Views, Templates & Logic===
 
 
 == Use-Case Diagrams ==
@@ -173,7 +240,7 @@
 
 *Calendars*
 
-http://www.comp.nus.edu.sg/~savitha/gsoc/calendars_usecase.png
+http://www.comp.nus.edu.sg/~savitha/gsoc/calendars_usecase1.png
 
 = Specification & Requirements =
   The detailed project specification will be added and updated here.