$SeniorSearchPopup = function( viewModel, selectSeniorData ) {
    
    var dataViewModel = new BemsWebApplication.FmsBusinessSeniorViewModel(),
        
        gridView,
        popupVisible = ko.observable(false),

        dataSource;

    var seniorFactory = BemsWebApplication.Factory.Senior;

    dataSource = new DevExpress.data.DataSource( {
        select: seniorFactory.dataSourceOptions.select,
        expand: seniorFactory.dataSourceOptions.expand,
        store: BemsWebApplication.db.FmsBusinessSenior,
        map: function( item ) {
            return BemsWebApplication.db.createViewModel( item );
        }
    } );

    var dataGridOptions = utils.datagrid.defaultOptions( $.extend( {
        dxDataSource: dataSource,
        selectedSourceItem: dataViewModel,
        datagridId: 'gridSeniorContainer',
        dbId: 'FmsBusinessSenior',
        handleDataGridRowClick: function( id, dataGrid, clickRow ) {
            var data = clickRow.data;
            selectSeniorData( {
                SiteId: data.SiteId(),
                SeniorId: data.SeniorId(),
                SeniorItemUserName: data.CmUser_Name(),
                SeniorItemName: data.FmsBusinessSeniorItem_Name(),
                SeniorItemPeopleCount: data.FmsBusinessSeniorItem_PeopleCount()
            } );
            popupVisible( false );
        },
        searchPanelPlaceHolder: '선임이름 검색',

    }, seniorFactory ) );

    function handlePopupShowing( e ) {
    }
    function handlePopupShown()
    {
        gridView = $('#gridSeniorForSearchContainer').dxDataGrid('instance');
        gridView.columnOption( 0, 'visible', false );
        gridView.columnOption( 1, 'width', '30%' );
        gridView.columnOption( 2, 'width', '30%' );
        gridView.columnOption( 3, 'width', '20%' );
        gridView.columnOption( 4, 'width', '20%' );
        gridView.columnOption( 5, 'visible', false );
    }

    function handlePopupButtonClose() {
        popupVisible( false );
    }

    var toolbarItems = [
        { location: 'before', text: '찾기' },
        { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } }
    ];

    var popupOptions = {
        width: '600px',
        height: 'auto',
        visible: popupVisible,
        shading: false,
        closeOnOutsideClick: true,
        showingAction: handlePopupShowing,
        shownAction: handlePopupShown,
        animation: {
            show: { type: "pop", duration: 150 , from: { opacity: 1, scale: 0.4 }, to: { scale: 1 } },
            hide: { type: "fade", duration: 150, from: 1, to: 0 }
        }
    };
    return {
        dataModel: dataViewModel,
        dataSource: dataSource,

        popupOptions: popupOptions,

        toolbarItems: toolbarItems,
        dataGridOptions: dataGridOptions,
        show: function() {
            popupVisible( true );
        } 
    };   
}