;------------------------------------------------------------------------------;
;+
; NAME:
;		     eis_raster_gui
; PURPOSE:
;		     This object
; INPUTS:
;		     GROUP -
;-
;------------------------------------------------------------------------------;
FUNCTION eis_raster_gui::Init , parentClass = parentClass

IF (KEYWORD_SET(parentClass) EQ 1) THEN BEGIN
    Self.parentClass  = parentClass
    Self.group_leader = parentClass->tlbID()
ENDIF
;-------------------create the main base---------------------------------------;
pt_version = eis_get_pt_version_number()
widTitle = 'EIS Raster Database' + pt_version
TLB_EVENT                   = {eis_raster_gui_Event}
TLB_EVENT.eis_raster_gui     = Self
TLB_EVENT.Type              = "TLB"
Self.tlbID                  = WIDGET_BASE(                                  $
                                    TITLE       = widTitle,                 $
                                    COLUMN      = 1,                        $
                                    FLOATING    = KEYWORD_SET(parentClass), $
                                    GROUP_LEADER = Self.group_leader ,      $
                                    UValue      = TLB_EVENT)

;-------------------create the GUI------------------------------;
Self->createGUI
Self->readRasterDataBase

RETURN, 1

END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_raster_gui::createGUI

; Get eis_fonts
fonts = eis_fonts()
; ______________________________________________________________________
;
; Database List Base
;
; ______________________________________________________________________
dbBase                      = WIDGET_BASE(Self.tlbID ,                      $
                                    COLUMN      = 1)


value = 'ID:     Acronym:               Title:'
ra_listLabel                = WIDGET_LABEL(dbBase ,                         $
                                    value       = value ,                   $
                                    /ALIGN_LEFT ,                           $
                                    font        = fonts.mono)

LIST_EVENT                  = {eis_raster_gui_Event}
;Set it's values
LIST_EVENT.eis_raster_gui    = Self
LIST_EVENT.Type             = "LINELIST"
Self.dbListID               = WIDGET_LIST(dbBase ,                          $
                                    ySize       = 16 ,                      $
                                    xSize       = 120 ,                     $
                                    uValue      = LIST_EVENT,               $
                                    value       = ''  ,                     $
                                    font        = fonts.mono)
; ______________________________________________________________________
;
; Info Base
;
; ______________________________________________________________________
infoBase                    = WIDGET_BASE(Self.tlbID ,                      $
                                    ROW         = 1,/frame)

aLabel                      = WIDGET_LABEL(infoBase ,                       $
                                    value       = 'Author: ' ,              $
                                    /ALIGN_LEFT)

Self.authorID               = WIDGET_LABEL(infoBase ,                       $
                                    value       = 'none' ,                  $
                                    xSize       = 150 ,                     $
                                    /ALIGN_LEFT)


aLabel                      = WIDGET_LABEL(infoBase ,                       $
                                    value       = 'Created: ' ,             $
                                    /ALIGN_LEFT)

Self.dateID                 = WIDGET_LABEL(infoBase ,                       $
                                    value       = 'none' ,                  $
                                    xSize       = 100 ,                     $
                                    /ALIGN_LEFT)

aLabel                      = WIDGET_LABEL(infoBase ,                       $
                                    value       = 'Duration: ' ,            $
                                    /ALIGN_LEFT)

Self.durationID             = WIDGET_LABEL(infoBase ,                       $
                                    value       = '0' ,                     $
                                    xSize       = 100 ,                     $
                                    /ALIGN_LEFT)
; ______________________________________________________________________
;
; Button Base
;
; ______________________________________________________________________
buttonBase                  = WIDGET_BASE(Self.tlbID ,                      $
                                    ROW         = 1,/grid_layout,/frame)


;; What is ZDBASE
;zdbase = eis_get_ zdbase()
;; Create USER/OFFICIAL droplist only if GUI is created standalone
;IF (OBJ_VALID(Self.parentClass) NE 1) THEN BEGIN
;    DLIST_EVENT             = {eis_raster_gui_Event}
;    DLIST_EVENT.eis_raster_gui = Self
;    DLIST_EVENT.Type        = "DROPLIST"
;    DLISTbutton             = WIDGET_DROPLIST(buttonBase,                   $
;                                    Event_Pro   = 'eis_raster_gui_EV',       $
;                                    title       = 'Database:'       ,       $
;                                    value       = ['official','user'] ,     $
;                                    uValue      = DLIST_EVENT)
;
;    WIDGET_CONTROL , DLISTbutton , set_droplist_select = zdbase
;ENDIF ELSE BEGIN
;    CASE zdbase OF
;        0    : value = "OFFICIAL DB"
;        1    : value = "USER DB"
;        ELSE : stop
;    ENDCASE
;    aLabel                  = WIDGET_LABEL(buttonBase    ,                  $
;                                    /ALIGN_LEFT          ,                  $
;                                    /DYNAMIC_RESIZE      ,                  $
;                                    value       = value  ,                  $
;                                    font        = fonts.bold)
;ENDELSE


VIEW_EVENT                  = {eis_raster_gui_Event}
VIEW_EVENT.eis_raster_gui    = Self
VIEW_EVENT.Type             = "VIEWRASTER"
VIEWbutton                  = WIDGET_BUTTON(buttonBase,                     $
                                    value       = ' View Details... ' ,     $
                                    Event_Pro   = 'eis_raster_gui_EV',      $
                                    uValue      = VIEW_EVENT)


LOAD_EVENT                  = {eis_raster_gui_Event}
LOAD_EVENT.eis_raster_gui    = Self
LOAD_EVENT.Type             = "LOADDB"
LOADbutton                  = WIDGET_BUTTON(buttonBase,                     $
                                    value       = ' Load Raster ',          $
                                    Event_Pro   = 'eis_raster_gui_EV',      $
                                    uValue      = LOAD_EVENT)

REFRESH_EVENT               = {eis_raster_gui_Event}
REFRESH_EVENT.eis_raster_gui = Self
REFRESH_EVENT.Type          = "REFRESHDB"
REFRESHbutton               = WIDGET_BUTTON(buttonBase,                     $
                                    value       = ' Refresh ',              $
                                    Event_Pro   = 'eis_raster_gui_EV',      $
                                    uValue      = REFRESH_EVENT)

; ______________________________________________________________________
;
; Search Base
;
; ______________________________________________________________________
searchBase                  = WIDGET_BASE(Self.tlbID ,                      $
                                    COLUMN      = 1,/frame)

; ______________________________________________________________________
;
; Search Button Base
;
; ______________________________________________________________________
searchButtonBase            = WIDGET_BASE(searchBase ,                      $
                                    ROW         = 1)

; ______________________________________________________________________
;
; Search Acronym Base
;
; ______________________________________________________________________
acronymBase                 = WIDGET_BASE(searchButtonBase ,                $
                                    ROW         = 1)

aLabel                      = WIDGET_LABEL(acronymBase ,                    $
                                    value       = 'Acronym: '  ,            $
                                    /ALIGN_LEFT)

ACRONYM_EVENT               = {eis_raster_gui_Event}
ACRONYM_EVENT.eis_raster_gui = Self
ACRONYM_EVENT.Type          = "ACRONYM"
Self.search_acronymID       = WIDGET_TEXT(acronymBase,                      $
                                    value       = '',                       $
                                    Event_Pro   = 'eis_raster_gui_EV',       $
                                    /EDITABLE                          ,    $
                                    xSize       = 20 ,                      $
                                    uValue      = ACRONYM_EVENT)

; ______________________________________________________________________
;
; Search Title Base
;
; ______________________________________________________________________
titleBase                   = WIDGET_BASE(searchButtonBase ,                $
                                    ROW         = 1)

aLabel                      = WIDGET_LABEL(titleBase   ,                    $
                                    value       = 'Title: '    ,            $
                                    /ALIGN_LEFT)

TITLE_EVENT                 = {eis_raster_gui_Event}
TITLE_EVENT.eis_raster_gui   = Self
TITLE_EVENT.Type            = "TITLE"
Self.search_titleID         = WIDGET_TEXT(titleBase  ,                      $
                                    value       = '',                       $
                                    Event_Pro   = 'eis_raster_gui_EV',       $
                                    /EDITABLE                          ,    $
                                    xSize       = 20 ,                      $
                                    uValue      = TITLE_EVENT)


; ______________________________________________________________________
;
; Search Author Base
;
; ______________________________________________________________________
authorBase                  = WIDGET_BASE(searchButtonBase ,                $
                                    ROW         = 1)

aLabel                      = WIDGET_LABEL(authorBase ,                     $
                                    value       = 'Author: '  ,             $
                                    /ALIGN_LEFT)

AUTHOR_EVENT                = {eis_raster_gui_Event}
AUTHOR_EVENT.eis_raster_gui  = Self
AUTHOR_EVENT.Type           = "AUTHOR"
Self.search_authorID        = WIDGET_TEXT(authorBase,                       $
                                    value       = '',                       $
                                    Event_Pro   = 'eis_raster_gui_EV',       $
                                    /EDITABLE                          ,    $
                                    xSize       = 20 ,                      $
                                    uValue      = AUTHOR_EVENT)

SEARCH_EVENT                = {eis_raster_gui_Event}
SEARCH_EVENT.eis_raster_gui  = Self
SEARCH_EVENT.Type           = "SEARCHDB"
SEARCHbutton                = WIDGET_BUTTON(authorBase,               $
                                    value       = ' Search ' ,              $
                                    Event_Pro   = 'eis_raster_gui_EV',       $
                                    uValue      = SEARCH_EVENT)

RESET_EVENT                 = {eis_raster_gui_Event}
RESET_EVENT.eis_raster_gui   = Self
RESET_EVENT.Type            = "RESET"
RESETbutton                 = WIDGET_BUTTON(authorBase,               $
                                    value       = ' Reset ' ,              $
                                    Event_Pro   = 'eis_raster_gui_EV',       $
                                    uValue      = RESET_EVENT)

; ______________________________________________________________________
;
; Message Base
;
; ______________________________________________________________________
messageBase                 = WIDGET_BASE(searchBase ,                      $
                                    ROW         = 1)

aLabel                      = WIDGET_LABEL(messageBase ,                    $
                                    value       = 'Message: '  ,            $
                                    xSize       = 60 ,                      $
                                    /ALIGN_LEFT)

Self.messageID              = WIDGET_LABEL(messageBase ,                    $
                                    value       = 'n/a'  ,                  $
                                    xSize       = 300 ,                     $
                                    /ALIGN_LEFT)

; ______________________________________________________________________
;
; Quit Button
;
; ______________________________________________________________________
QUIT_EVENT                  = {eis_raster_gui_Event}
QUIT_EVENT.eis_raster_gui = Self
QUIT_EVENT.Type             = "QUIT"
quitbutton                  = WIDGET_BUTTON(Self.tlbID,                     $
                                    value       = 'Dismiss',                $
                                    Event_Pro   = 'eis_raster_gui_EV',       $
                                    uValue      = QUIT_EVENT)


END

;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_raster_gui_Cleanup , wid

WIDGET_CONTROL , wid , get_uvalue = eis_raster_gui_Event
OBJ_DESTROY    , eis_raster_gui_Event.eis_raster_gui

END
;______________________________________________________________________________
; Cleanup
;______________________________________________________________________________
PRO eis_raster_gui::CleanUp

PTR_FREE , Self.orig_dbList
PTR_FREE , Self.dbList

END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_raster_gui::setProperty, autoScaleStr  = autoScaleStr

IF (N_ELEMENTS(autoScaleStr) GT 0) THEN BEGIN
    stop
ENDIF

End
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_raster_gui::GetProperty, tlbID   = tlbID

tlbID = Self.tlbID

End
;______________________________________________________________________________
; Return widget id
;______________________________________________________________________________
Function eis_raster_gui::tlbID

    Return, Self.tlbID
End

;______________________________________________________________________________
; Widget_Control wrapper
;______________________________________________________________________________
PRO eis_raster_gui::Control, _Ref_Extra=Widget_Control_Keywords

Widget_Control, Self.tlbID, _Extra=Widget_Control_Keywords

End

;______________________________________________________________________________
; Widget_Info wrapper
;______________________________________________________________________________
Function eis_raster_gui::Info, _Ref_Extra=Widget_Info_Keywords

Return, Widget_Info(Self.tlbID, _Extra=Widget_Info_Keywords)

End

;______________________________________________________________________________
; Realize wrapper
;______________________________________________________________________________
PRO eis_raster_gui::Realize

Widget_Control, Self.tlbID, /Realize

End

;______________________________________________________________________________
; XManager wrapper
;______________________________________________________________________________
PRO eis_raster_gui::XManager

XMANAGER , "eis_raster_gui" ,   Self.tlbID ,                                 $
    Event_Handler  = "eis_raster_gui_EV",                                    $
    cleanup        = "eis_raster_gui_Cleanup",                               $
    GROUP_LEADER   = Self.group_leader ,                                   $
    /NO_BLOCK

END

;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_raster_gui_Event__Define

    struct = {  eis_raster_gui_Event,                                         $
                Type            : "",        $ ;Unique identifier for event
                eis_raster_gui   : OBJ_NEW(),  $ ;Reference to object passed
                extra           : 0          $ ;to - often object associated
             }
END
;______________________________________________________________________________
; Event Handler wrapper
;______________________________________________________________________________
PRO eis_raster_gui_EV , Event

;Get event handler structure containing eis_raster_gui type object
Widget_CONTROL,Event.ID,get_uvalue = eis_raster_gui_Event
;If a WIDGET_TAB event , just quit
IF (TAG_NAMES(event, /STRUCTURE_NAME) EQ 'WIDGET_TAB') THEN BEGIN
    ;print,'tab event'
    RETURN
ENDIF

;Call eis_raster_gui's class member procedure "Handler"
eis_raster_gui_Event.eis_raster_gui->Handler,Event

END
;______________________________________________________________________________
;
; * THIS is the routine for putting in event handling NOT eis_raster_gui_Ev above.
;
; Event Handler - handle events.  Derived classes must
; contain their own implementation in order to handle events or else pass in an
; procedure name/function name using the Event_Pro/Event_Func keywords to
; CWidget::Init()
;______________________________________________________________________________
PRO eis_raster_gui::Handler, Event

WIDGET_CONTROL, Event.ID, Get_UValue = eis_raster_gui_Event
CASE eis_raster_gui_Event.Type OF
    "QUIT"      : Self->quit
    "LOADDB"    : Self->loadRaster
    ;"DROPLIST"  : Self->changeDatabaseDirectory , event
    "LINELIST"  : Self->updateInfo , event.clicks
    "REFRESHDB" : Self->readRasterDataBase
    "SEARCHDB"  : Self->search
    "AUTHOR"    : Self->search
    "ACRONYM"   : Self->search
    "TITLE"     : Self->search
    "RESET"     : Self->resetSearchFields
    "VIEWRASTER": Self->viewRasterDetails
    ELSE        : print,eis_raster_gui_Event.Type
ENDCASE

END
;______________________________________________________________________________
; Quit
;______________________________________________________________________________
PRO eis_raster_gui::quit

IF (OBJ_VALID(Self.parentClass) EQ 1) THEN BEGIN

    CASE OBJ_CLASS(Self.parentClass) OF
        'EIS_MK_PLAN_GUI'        : stop
        'EIS_MK_STUDY_GUI'       : Self.parentClass->kill_xraster,Self
        'EIS_MK_RASTER_GUI'      : Self.parentClass->kill_xraster,Self
        ELSE                     : stop
    ENDCASE

ENDIF ELSE BEGIN
    Self->Control, /Destroy
ENDELSE

END
;______________________________________________________________________________
; Reset Search Parameters
;______________________________________________________________________________
PRO eis_raster_gui::resetSearchFields

;
; Acronym
;
WIDGET_CONTROL ,  Self.search_acronymID , set_value = ''
;
; Author
;
WIDGET_CONTROL ,  Self.search_authorID , set_value = ''
;
; Title
;
WIDGET_CONTROL ,  Self.search_titleID , set_value = ''
;
Self->search

END
;______________________________________________________________________________
; Search Database
;______________________________________________________________________________
PRO eis_raster_gui::search

spar = ''
;
; Acronym
;
WIDGET_CONTROL ,  Self.search_acronymID , get_value = widValue
IF (widValue[0] NE '') THEN spar = STRJOIN( [ 'acronym=' , widValue[0] ] , /SINGLE )
;
; Author
;
WIDGET_CONTROL ,  Self.search_authorID , get_value = widValue
IF (widValue[0] NE '') THEN BEGIN
        authorS = STRJOIN( [ 'author=' , widValue[0] ] , /SINGLE )
    IF (spar NE '') THEN BEGIN
        spar = STRJOIN( [ spar , authorS ] , ',', /SINGLE )
    ENDIF ELSE BEGIN
        spar = authorS
    ENDELSE
ENDIF
;
; Title
;
WIDGET_CONTROL ,  Self.search_titleID , get_value = widValue
IF (widValue[0] NE '') THEN BEGIN
        titleS = STRJOIN( [ 'title=' , widValue[0] ] , /SINGLE )
    IF (spar NE '') THEN BEGIN
        spar = STRJOIN( [ spar , titleS ] , ',', /SINGLE )
    ENDIF ELSE BEGIN
        spar = titleS
    ENDELSE
ENDIF

;
;help,spar

IF (spar EQ '') THEN BEGIN
    ; No search parameters defined
    PTR_FREE , Self.dbList
    Self.dbList = PTR_NEW(*Self.orig_dbList)
    ; Update widget list
    WIDGET_CONTROL , Self.dbListID , set_Value = *Self.dbList
    value = STRCOMPRESS(N_ELEMENTS(*Self.dbList),/REMOVE_ALL) + ' raster entries found'
ENDIF ELSE BEGIN
    status = eis_open_db(/RASTER)
    r = dbfind(spar)
    Self->displaySearchResults , r
    dbclose
    value = STRCOMPRESS(N_ELEMENTS(r),/REMOVE_ALL) + ' raster entries found'
    IF (N_ELEMENTS(r) EQ 1) AND (r[0] EQ 0) THEN value = 'No matching entries!'
ENDELSE

; Update Message
WIDGET_CONTROL , Self.messageID , set_value = value

END
;______________________________________________________________________________
; OK, display the search results
;______________________________________________________________________________
PRO eis_raster_gui::displaySearchResults , r

IF (r[0] EQ 0) OR (r[0] EQ -1) THEN BEGIN
    newList = ''
ENDIF ELSE BEGIN
    ; Get IDs we asked for (ids start at 1, NOT zero)
    newList = (*Self.orig_dbList)[r - 1]
    print,transpose('ID '+strcompress(r))
ENDELSE

; Refresh pointer
PTR_FREE , Self.dbList
Self.dbList = PTR_NEW(newList)
; Update widget list
WIDGET_CONTROL , Self.dbListID , set_Value = newList

END
;;______________________________________________________________________________
;; Open database
;;______________________________________________________________________________
;PRO eis_raster_gui::dbopen
;
;db_name = 'eis_raster_db'
;
;dbhname = find_with_def(db_name+'.dbh', 'ZDBASE')
;validFile = FILE_TEST( dbhname , /READ)
;IF (validFile NE 1) THEN stop
;
;dbopen, db_name, unavail = unavail
;IF (unavail NE 0) THEN stop
;
;
;END
;______________________________________________________________________________
; View Raster Details
;______________________________________________________________________________
PRO eis_raster_gui::viewRasterDetails

; Check a raster list item is selected
index = WIDGET_INFO(Self.dbListID , /LIST_SELECT)
IF (index EQ -1) THEN BEGIN
    messageText = 'No item selected. Aborting.'
    BEEP
    dummy = DIALOG_MESSAGE(messageText,/ERROR , DIALOG_PARENT = Self.tlbID)
    RETURN
ENDIF

line   = (*Self.dbList)[index]
; Get ID value of selected item
; OK, let's split the line into its 3 components
lineSplit = STRSPLIT(line , /EXTRACT)
rasterID  = FIX(lineSplit[0])

; Load raster and associated line list
ra = db_read_raster_entry(rasterID)
ll = db_read_linelist_entry(ra.ll_id)


o_rasterDetails = OBJ_NEW("eis_raster_details_gui" , ra , ll ,              $
                                                 group_leader = Self.tlbID)
o_rasterDetails->Realize
o_rasterDetails->XMANAGER

END
;______________________________________________________________________________
; Update Author and Date info
;______________________________________________________________________________
PRO eis_raster_gui::updateInfo , clicks

index = WIDGET_INFO(Self.dbListID , /LIST_SELECT)

splitLine = STRSPLIT((*Self.dbList)[index] , /EXTRACT)
idValue   = FIX(splitLine[0])

ra = db_read_raster_entry(idValue)

duration = sec2dhms(ra.duration / 1000.)

ll = db_read_linelist_entry(ra.ll_id)
d = eis_raster_duration(ra,ll)
;print,sec2dhms(d/1000)


WIDGET_CONTROL , Self.authorID   , set_value = ra.author
WIDGET_CONTROL , Self.dateID     , set_value = ra.date
WIDGET_CONTROL , Self.durationID , set_value = duration

IF (clicks EQ 2) THEN Self->loadRaster

END
;______________________________________________________________________________
; Load
;______________________________________________________________________________
PRO eis_raster_gui::loadRaster

; IF this GUI was invoked as a free-standing, then ignore
; trying to load
IF ~OBJ_VALID(Self.parentClass) THEN RETURN

; Check a raster list item is selected
index = WIDGET_INFO(Self.dbListID , /LIST_SELECT)
IF (index EQ -1) THEN BEGIN
    messageText = 'No item selected. Aborting.'
    dummy = DIALOG_MESSAGE(messageText,/ERROR , DIALOG_PARENT = Self.tlbID)
    RETURN
ENDIF

line   = (*Self.dbList)[index]
; Check there any entries!! If not, list widget value is set as null string!
IF (line EQ '') THEN BEGIN
    messageText = 'No item selected. Aborting.'
    dummy = DIALOG_MESSAGE(messageText,/ERROR , DIALOG_PARENT = Self.tlbID)
    RETURN
ENDIF

; OK, let's split the line into its 3 components
lineSplit = STRSPLIT(line , /EXTRACT)
; Get study ID
ra_id = LONG(lineSplit[0])
Self.parentClass->loadRaster , ra_id

END
;;______________________________________________________________________________
;; Read Line List Database - all of it
;;______________________________________________________________________________
;PRO eis_raster_gui::changeDatabaseDirectory , event
;
;eis_set_zdbase , event.index
;Self->readRasterDataBase
;
;END
;______________________________________________________________________________
; Read Line List Database - all of it
;______________________________________________________________________________
PRO eis_raster_gui::readRasterDataBase

; OK, read Raster database
ra_db    = db_read_raster_all()
nEntries = N_ELEMENTS(ra_db[0,*])
dbList = STRARR(nEntries)

FOR i = 0,nEntries - 1 DO BEGIN

    title = STRTRIM(ra_db[2,i],2)
    IF (STRLEN(title) GT 87) THEN BEGIN

        title = STRJOIN([STRMID(title,0,87),'...'],/SINGLE)

    ENDIF

    dbList[i] = STRING(format='(A6,A2,A-20,A2,A-90)',                      $
                        ra_db[0,i],'  ',ra_db[1,i],'  ',title)
ENDFOR
; Refresh pointer
PTR_FREE , Self.dbList , Self.orig_dbList
Self.orig_dbList = PTR_NEW(dbList)
Self.dbList      = PTR_NEW(dbList)
; Update widget list
WIDGET_CONTROL , Self.dbListID , set_Value = dbList
; Update Message
value = STRCOMPRESS(nEntries,/REMOVE_ALL) + ' raster entries'
WIDGET_CONTROL , Self.messageID , set_value = value

WIDGET_CONTROL , Self.authorID , set_value = 'none'
WIDGET_CONTROL , Self.dateID   , set_value = 'none'

; Update TLB Title
pt_version = eis_get_pt_version_number()
widTitle = "EIS Raster Database " + pt_version + ":  "  +                   $
           STRCOMPRESS(nEntries , /REMOVE_ALL)          +                   $
           " entries"
WIDGET_CONTROL , Self.tlbID , TLB_Set_Title = widTitle

END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO	eis_raster_gui__Define

    struct          =	{ eis_raster_gui                               ,     $
                                    tlbID           : 0L              ,     $
                                    group_leader    : 0L              ,     $
                                    dbListID        : 0L              ,     $
                                    parentClass     : OBJ_NEW()       ,     $
                                    orig_dbList     : PTR_NEW()       ,     $
                                    dbList          : PTR_NEW()       ,     $
                                    authorID        : 0L              ,     $
                                    dateID          : 0L              ,     $
                                    durationID      : 0L              ,     $
                                    messageID       : 0L              ,     $
                                    search_authorID : 0L              ,     $
                                    search_acronymID: 0L              ,     $
                                    search_titleID  : 0L                    $
                      }

END
