1. 개요

     BONDI의 Calendar 모듈은 단말기에 저장된 Event들에 접근할 수 있는 API들을 제공한다. 이 Event들은
     시작시간과 종료시간, 위치, 주기 등의 정보를 갖고, Calendar의 API를 통해 이러한 Event들을 생성, 삭제,
     갱신, 검색할 수 있어야 한다.
2. Interface
     1) CalendarManager
          * Constants
            – NO_RECURRENCE : 한번이상 발생하지 않는 Event
            – DAILY_RECURRENCE : 매일 발생하는 Event
            – WEEKLY_RECURRENCE : 주단위로 발생하는 Event
            – MONTHLY_RECURRENCE : 월단위로 발생하는 Event
            – YEARLY_RECURRENCE : 년단위로 발생하는 Event
          * Method
            – getCalendars ();
               단말기에 저장된 Calendar(set of event)를 얻어오는 함수. 결과를 CalendarArray로 반환하는데 
               0번지 주소에 native calendar가 저장된다.
               ex) var calendars = bondi.pim.calendar.getCalendars();
                     var nativeCalendar = calendars[0];
     2) Calendar
          – createEvent (Map options);
             Event를 생성하는 함수. options field를 통해 어떤 event를 생성할 것인지 정의할 수 있다.
             Detailed Options Field
             – description : Event에 대한 설명
             – summary : Event를 요약해놓은 말
             – startTime : Event가 시작되는 시간을 Date Object로 표현
             – endTime : Event가 종료되는 시간을 Date Object로 표현
             – location : Event가 발생되는 위치
             – recurrence : Event의 주기
          
             ex) var calendars = bondi.pim.calendar.getCalendars();
                   var event = calendars[0].createEvent({ description : “BONDI Codefest”, summary : “foo”,
                                                                           startTime : new Date(2009, 3, 30, 10, 0),
                                                                           endTime : new Date(2009, 3, 30, 11, 0),
                                                                           location : “Huesca”});
          – addEvent (event);
             calendar에 event를 추가하는 함수.
             ex) calendars[0].addEvent(event);
          – updateEvent (event);
             인자로 받은 event를 calendar에서 검색한 뒤, 갱신하는 함수.
             ex) calendars[0].updateEvent(event);
          – deleteEvent (event);
             인자로 받은 event를 calendar에서 검색한 뒤, 삭제하는 함수.
             ex) calendars[0].deleteEvent(event);
          – clearEvents (successCallback, errorCallback);
             Calendar에 있는 모든 Event를 비동기적으로 삭제하는 함수.
             successCallback : 모든 Event가 정상적으로 삭제됐을 경우 호출되는 함수.
             errorCallback : Event들을 삭제하는 중 문제가 발생될 경우 호출되는 함수, 인자로 받는
                                   response를 통해 어떤 error가 발생했는지 알 수 있다.
             ex) function successCallback (response) {
                     alert (“Success!!”);
                   }
                   function errorCallback (response) {
                     alert (“Failed!!”);
                   }
                   var calendars = bondi.pim.calendar.getCalendars();
                   calendars[0].clearEvents(successCallback, errorCallback);
          – findEvents (successCallback, errorCallback, filter);
             Filter 옵션을 적용하여 Calendar에서 특정 Event를 검색하는 함수.
             적용할 수 있는 Filter 옵션은 Event를 생성할 때 사용한 옵션과 동일하다.
             (description, summary, startTime, endTime, location, recurrence)
             ex) function successCallback (response) {
                     alert (“Success!!”);
                   }
                   function errorCallback (response) {
                     alert (“Failed!!”);
                   }
                   var calendars = bondi.pim.calendar.getCalendars();
                   calendars[0].findEvents(successCallback, errorCallback, {location : “Huesca”});
     3) Event
          * Read-Only Attribute
             – id : Event를 구분하는 identifier
          * Read/Write Attribute
             – description : Event를 설명하는 Attribute.
             – summary : Event의 특징을 요약해놓은 Attribute.
             – startTime : Event의 시작시간을 Date Object Type으로 설정하는 Attribute
             – endTime : Event의 종료시간을 Date Object Type으로 설정하는 Attribute
             – location : Event의 위치. DOMString Type
             – recurrence : Event의 주기, Calendar Manager에 정의된 Constant중 하나를 사용한다.
          * Method
             – getProperty (propertyName);
                Property에 대응하는 Value를 반환하는 함수.
                ex) var location = event.getProperty(“location”);
             – getSupportedPropertyKeys ();
                Event가 지원하는 Property들의 이름을 Array of String의 형태로 반환하는 함수.
                ex) var attributes = event.getSupportedPropertyKeys();
             – setProperty (propertyName, propertyValue);
                PropertyName과 Value를 쌍으로 하여 값을 설정하는 함수. 만약 Property에 적절하지
                않은 Type으로 값을 설정하려고 하면 INVALID_ARGUMENT_ERROR를 발생시켜야 한다.
                ex) event.setProperty (“location”, “Seoul”);