1. 개요

     단말기에 저장된 Task들을 읽고, 쓰고, 삭제 및 갱신이 가능하도록 API를 지원하는 모듈.
     추가적으로 Task들을 효율적으로 관리하기 위해 Task들의 Priority를 HIGH, MEDIUM, LOW로
     분류할 수 있고, Task들의 현재 상태도 DONE, PENDING, ONGOING으로 구분할 수 있다.
2. Interface
     1) TaskManager
         * Constants
            – HIGH_PRIORITY : 높은 우선순위
            – MEDIUM_PRIORITY : 중간 우선순위
            – LOW_PRIORITY : 낮은 우선순위
            – STATUS_DONE : 작업이 완료된 상태
            – STATUS_PENDING : 작업이 시작되지 않은 상태
            – STATUS_ONGOING : 작업이 진행중인 상태
         * Methods
            – getTaskLists ();
               단말기에 저장된 Task들을 Array 형태로 반환하는 함수. 0번지의 Array에
               Native task list들이 담겨져 있다. 
               ex) var taskLists = bondi.pim.task.getTaskLists();
                     var nativeTaskList = taskLists[0];
     2) TaskList
        – createTask (options);
             Task Object를 생성하는 함수로써, options field를 이용하여 Task들의 특징을
             정의할 수 있다. 정의할 수 있는 Option field은 아래와 같다.
             priority : 0 ~ 2, 0에 가까울수록 높은 우선순위를 갖는다.
             notes  : 어떤 Task인지 설명하는 property
             summary : Task를 요약해놓은 글
             due : 마감기한을 의미하는 값으로써, date object type이다.
             status : 0~2의 값을 갖을 수 있고, 0 = DONE, 1 = PENDING, 2 = ONGOING
             ex) var taskLists = bondi.pim.task.getTaskLists();
                   var task = taskLists[0].createTask({priority:0, summary:”blah blah”, note:”ask pedro”, 
                                                                      due:”2009-02-20″, status:0});
        – addTask (Task task);
             Task Object를 TaskList에 추가하는 함수. 추가된 Task는 단말에 저장되어야 한다.
             ex) var taskLists = bondi.pim.task.getTaskLists();
                   var task = taskLists[0].createTask({priority:0, summary:”blah blah”, note:”ask pedro”, 
                                                                      due:”2009-02-20″, status:0});
                   taskLists[0].addTask (task);
        – updateTask (Task task);
             TaskList에 존재하는 특정 Task를 갱신하는 함수.
             ex) var taskLists = bondi.pim.task.getTaskLists();

                   function successCallback (response) {
                     taskLists[0].updateTask(response[0]);
                   }
                   function errorCallback (response) {
                   }
                   taskLists[0].findTasks (successCallback, errorCallback, {priority : 0, summary : “blah”});
        – deleteTask (Task task);
             TaskList에 존재하는 특정 Task를 삭제하는 함수.
        – clearTasks (successCallback, errorCallback);
             TaskList에 존재하는 모든 Task를 삭제하는 함수. 이 함수는 비동기적으로 동작하기 때문에
             작업이 정상적으로 완료되거나, 문제가 발생한 것을 Callback함수를 통해 알려준다.
             successCallback : 모든 Task가 정상적으로 삭제된 뒤 호출되는 함수.
             errorCallback : Task를 삭제하는 과정에서 문제가 발생하면 호출되는 함수.
             ex) var taskLists = bondi.pim.task.getTaskLists ();
                   function successCallback (response) {
                   }
                   function errorCallback (response) {
                   }
                   taskLists[0].clearTasks (successCallback, errorCallback);
        – findTasks (successCallback, errorCallback, filter);
             filter로 option을 적용하여 option에 해당되는 Task들만을 반환하는 함수.
             적용할 수 있는 option값들은 Task를 생성할 때 적용하는 Option과 동일하다.
             ex) var taskLists = bondi.pim.task.getTaskLists();

                   function successCallback (response) {
                     alert (response.length + ” tasks found in list”);
                   }
                   function errorCallback (response) {
                   }
                   taskLists[0].findTasks (successCallback, errorCallback, {priority : 0, summary : “blah”});
     3) Task
        * Attributes
          – DOMString id : Task를 구분하기 위해 사용되는 Unique Identifier. Read Only
          – unsigned short priority : Task의 중요도
          – DOMString note : Task를 설명하는 attribute
          – DOMString summary : Task를 요약한 attribute
          – Date due : 마감기한
          – unsigned short status : 현재 Task의 상태
        * Methods
          – getProperty (propertyName);
               Property의 이름으로 접근하여 Value를 얻어오는 함수
               ex) var due = task.getProperty (“due”);
          – getSupportedPropertyKeys ();
               Value를 갖는 property들은 Array of String으로 반환하는 함수
               ex) var attributes = taskLists[0].getSupportedPropertyKeys();
          – setProperty (propertyName, propertyValue);
               property의 값을 설정하는 함수
               ex) task.setProperty (“summary”, “Bondi Comment by chaBoom”);