1. 개요

     단말기에 저장된 Media File(Audio, Video, Image)을 Arrays of String의 형태로 가지고 올 수 있는 모듈.
     Array of String을 생성할때는 filename, type등으로 filtering을 설정할수도 있고, sorting을 설정할수도 있다.
     Media File은 내장메모리와 외장메모리를 가리지 않고 위치할 수 있고, 다수의 Directory에 위치할 수도 있다.
2. Interface
     1) GalleryManager
          – getGalleries ();
            GalleryManager가 관리하는 Gallery들을 반환하는 함수로써 몇개의 Gallery를 반환할건지는 구현에
            달려있다. 만약 Available한 gallery가 없다면 empty array를 반환한다.
            ex) var availableGalleries = bondi.gallery.getGalleries();
  
     2) Gallery
          * Constant Property
             – MEDIA_ITEM_TYPE_UNDEFINED : 정의되지 않은 TYPE
             – MEDIA_ITEM_TYPE_AUDIO : AUDIO TYPE
             – MEDIA_ITEM_TYPE_VIDEO : VIDEO TYPE
             – MEDIA_ITEM_TYPE_IMAGE : IMAGE_TYPE
             – MEDIA_SORT_NONE : 정렬하지 않는다.
             – MEDIA_SORT_BY_FILENAME : 파일이름으로 정렬한다.
             – MEDIA_SORT_BY_FILEDATE : 파일의 날짜순으로 정렬한다.
             – MEDIA_SORT_BY_TYPE : 파일타입으로 정렬한다.
             – MEDIA_SORT_BY_TITLE/AUTHOR/ALBUM/DATE : 각각을 기준으로 정렬한다.
             – MEDIA_SORT_ASCENDING : 오름차순으로 정렬한다.
             – MEDIA_SORT_DESCENDING : 내림차순으로 정렬한다.
          * ReadOnly Attribute
             – map info : Gallery에 관한 정보(ex. location, mimetype, name)를 저장하고 있는 attribute.
               ex) var location = gallery.info.location;
                     var name = gallery.info.name;
                               info가 어떤 정보들을 저장하고 있을지는 구현시에 정해진다.
          * Method
             – getNumberOfMediaItems();
               현재 Gallery에 포함된 mediaitem의 수를 unsigned long type으로 반환하는 함수.
               ex) var numberOfItems = gallery.getNumberOfMediaItems();
              – PrivoxyWindowOpen(successCallback, errorCallback);
                successCallback : Gallery가 정상적으로 Open됐을 때 호출되는 Callback
                errorCallback : Gallery를 Open할 때 문제가 발생하면 호출되는 Callback
                Gallery를 Open하는 함수로써, Gallery가 Open되면 memory가 할당되고, mediaitem들에 대한
                정보들을 얻어오게 된다. 만약 이미 Open된 Gallery에 대해 다시 Open을 시도할 경우 
                GALLERY_OPEN_ERROR를 발생시킨다.
                ex) gallery.open (openSuccess, openFailure);
              – refresh(successCallback, errorCallback);
                successCallback : Gallery가 정상적으로 refresh됐을 때 호출되는 Callback
                errorCallback : Gallery를 refresh하는 중 문제가 발생되면 호출되는 Callback
                새로 추가되거나 삭제되거나 변경된 mediaitem들에 대해 Update를 실시하는 함수
                ex) gallery.refresh (refreshSuccess, refreshFailure);
              – close();
                Gallery를 close하는 함수로써 Gallery가 close되면, 현재 view에 해당하는 정보를 release하고, 
                Memory를 반환한다.
                ex) gallery.close();
              – changeView(successCallback, errorCallback, viewOptions);
                Gallery에 option을 주어서 filtering하거나 sorting할 수 있는 함수. gallery의 다양한 constant들을 통해
                filtering과 sorting 옵션을 설정할 수 있다.
                Constant Filtering Option : by Type (audio, video, image, undefined)
                Constant Sorting Option : Filename, Filedate, Filetype, title, author…… AES, DES
                
                ex) gallery.changeView (successCallback, failureCallback, {
                                                    order : gallery.MEDIA_SORT_AESCENDING,
                                                    primarySortOrder : gallery.MEDIA_SORT_BY_FILENAME,
                                                    secondarySortOrder : gallery.MEDIA_SORT_NONE,
                                                    filterItemType : gallery.MEDIA_ITEM_TYPE_IMAGE,
                                                    filterStartDate : new Date (8, 10, 1),
                                                    filterEndDate : new Date (8, 10, 30)
                                                    });
                  Detailed viewOption
                    1) order : MEDIA_SORT_ASCENDING, MEDIA_SORT_DESCENDING
                    2) primarySortOrder : MEDIA_SORT_BY_FILENAME, MEDIA_SORT_BY_FILEDATE,
                                                   MEDIA_SORT_BY_TYPE, MEDIA_SORT_BY_TITLE,
                                                   MEDIA_SORT_BY_AUTHOR, MEDIA_SORT_BY_ALBUM, 
                                                   MEDIA_SORT_BY_DATE
                    3) secondarySortOrder : the same as primarySortOrder
                    4) filterStartDate : Start Date of the file is described in Date Object
                    5) filterEndDate : End Date of the file is described in Date Object
                    6) filterItemType : MEDIA_ITEM_TYPE_AUDIO, MEDIA_ITEM_TYPE_VIDEO,
                                              MEDIA_ITEM_TYPE_IMAGE, MEDIA_ITEM_TYPE_UNDEFINED
                    7) filterFileName : file name
                    8) filterMimeType : mimeType
              – getMediaItems();
                 Gallery의 view_option에 포함된 Media File들을 Array of MediaItem으로 반환하는 함수, 만약 view_option이
                 설정된 적이 없다면 gallery의 모든 Media File을 포함시킨다.
                 ex) var mediaItemArray = gallery.getMediaItems();
              – getMediaItemById(id); 
                 id에 해당하는 MediaItem 하나를 반환하는 함수. 이때 mediaitem의 id는 gallery가 open되어 있는 동안은
                 변경될 수 없다. 이 함수는 id에 해당하는 mediaitem이 현재의 view_option에 포함되지 않는다고 하더라도
                 값을 반환한다. 만약 id에 해당하는 mediaitem이 없다면 undefined를 반환한다.
                 ex) var mediaItem = gallery.getMediaItemById(id);
     3) MediaItem
          * ReadOnly Attribute
             – unsigned long id : MediaItem에 부여되는 unique한 값으로 open되어 있는 동안 절대 변경되어서는 안된다.
             – long type : Gallery의 constant인 MEDIA_ITEM_TYPE_UNDEFINED/AUDIO/VIDEO/IMAGE 중에 하나의 값
             – DOMString mimeType :  MediaItem의 mimeType으로 추후에 application을 통해 실행될 때 사용될 수 있다.
             – DOMString fileName : path를 포함한 file의 fullName
             – Map metadata : MediaItem의 metadata로써 width, height, frame_rate 등으로 확장될 수 있다.