BemsWebApplication.ZoneTempHumiSet = function (params, viewInfo) {
    "use strict";

    var buildingDataSource = BemsWebApplication.db.createDataSource( 'CmBuilding', true ),
        floorDataSource = BemsWebApplication.db.createDataSource( 'CmFloor', true );

    var buildings = ko.observableArray(),
        floors = ko.observableArray();

    var buildingsForSearch = ko.observableArray(),
        floorsForSearch = ko.observableArray(),

        buildingIdForSerach = ko.observable(),
        floorIdForSerach = ko.observable();

    var deferredForSearch = new $.Deferred();

    function handleChangedBuildingInSearchView( e ) {
        if( e.value === 0 ) {
            floorsForSearch( getDefaultFloorForSearch() );
        }
        else {
            BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch() );        
        }
        floorIdForSerach( 0 );
    }

    var viewModel = BWA.DataGrid.createViewWithDataGrid( params, viewInfo, 'CmZoneTempHumiSet', {
            rowAlternationEnabled: true,
            editing: {
                //editMode: 'batch',
                //editMode: 'editcell',
                editMode: 'cell', // 14.1은  batch, row 두가지 밖에 없다. cell->row로 동작중이다. 2015 07 15 hcLee
                editEnabled: true,
                //removeEnabled:false,
                //visible:false,
            },

            dataSourceOptions: {
                select: ['SiteId', 'FloorId', 'BuildingId', 'ZoneId', 'CmZone/Name', 'CmBuilding/Name', 'CmFloor/Name', 'T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12',
                'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9', 'H10', 'H11', 'H12'],
                expand: [ 'CmBuilding', 'CmFloor', 'CmZone' ],
                extendOptions: {
                    forceOriginalField: true,
                }
            },

            columns: [
                { dataField: 'ZoneId', caption: $G('number'), width: '4%', alignment: 'center' }, // ? 
                { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '10%', alignment: 'center', allowEditing: false },
                { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '8%', alignment: 'center', allowEditing: false },
                { dataField: 'CmZone/Name', caption: $G('zoneName'), width: '12%', alignment: 'center', allowEditing: false },

                { dataField: 'T1', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H1', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T2', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H2', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T3', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H3', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T4', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H4', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T5', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H5', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T6', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H6', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T7', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H7', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T8', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H8', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T9', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H9', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T10', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H10', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T11', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H11', caption: '습도', width: '4%', alignment: 'center' },
                { dataField: 'T12', caption: '온도', width: '4%', alignment: 'center' },
                { dataField: 'H12', caption: '습도', width: '4%', alignment: 'center' }

/*                { dataField: 'T4', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T5', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T6', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T7', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T8', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T9', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T10', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T11', caption: '2월', width: '6%', alignment: 'center' },
                { dataField: 'T12', caption: '2월', width: '6%', alignment: 'center' }, */
                //{ dataField: 'Target_humidity', caption: '목표습도', width: '40%', alignment: 'center' }
                //utils.datagrid.columnIsUse( '15%' )
            ],
            popupWidth: 480,
            promiseDataInSearchView: deferredForSearch.promise(),
            searchViewItems: [ 
                { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: buildingIdForSerach, dataSource: buildingsForSearch, handleChangedValue: handleChangedBuildingInSearchView }, 
                { id: 'FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'BuildingId', value: floorIdForSerach, dataSource: floorsForSearch }, 
                { id: 'CmZone/Name' }
            ],
            handleViewShowing: function() {
                buildingDataSource.load().done( function( buildingResults ) {
                    buildings( buildingResults );

                    buildingsForSearch( $SearchView.createArrayOfSelectBox( 'BuildingId', buildings() ) );
                    floorsForSearch( getDefaultFloorForSearch() );

                    //buildingIdForSerach( 0 );
                    //floorIdForSerach( 0 );
                    deferredForSearch.resolve();
                });
            },
            handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
                /*
                dataGrid.clearSelection();

                var data = clickRow.data;
                var dataModel = viewModel.dataModel;
                dataModel.BuildingName = $KoSet(dataModel.BuildingName, data['CmBuilding/Name']);
                dataModel.FloorName = $KoSet(dataModel.FloorName, data['CmFloor/Name']);

                popupVisible(true);*/
            },
            handleAfterLoadingModelByKey: function( data, dataViewModel, isNewInPopup ) {
                if( isNewInPopup() == false ) {
      //              BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors );
                }
            },
            handlePopupShowing: function (that) {
            },
    } );

    function getDefaultFloorForSearch() {
        return $SearchView.createDefaultArray( 'FloorId' );        
    }

    viewModel.buildings = buildings;
    viewModel.buildingsForSearch = buildingsForSearch;
    viewModel.floors = floors;
    viewModel.floorsForSearch = floorsForSearch;

    viewModel.handleSelectBoxChangeBuilding = function( e ) {
        BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floors );
//        viewModel.dataModel.FloorId( null );
    }

    return viewModel;
};