BemsWebApplication.ControlValueSet = function (params, viewInfo) {
    "use strict";
/*
    var facilityViewModel = new BWA.CmFacilityViewModel();
    var cmFacilityDataSource = BemsWebApplication.db.createDataSource('CmFacility', true);

    var m_Facility;

    var facilityDataSource = BWA.db.createDataSource('CmFacility'),
        facilitiesForSearch = ko.observableArray(),
        facilityCodeForSearch = ko.observable(0); */
    var deferredForSearch = new $.Deferred();
    var eq = BWA.DataUtil.constructEqualFilter,
        and = BWA.DataUtil.andFilter;

    //BWA.UserInfo.SiteId()


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

    var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');
    // 설비분류 데이터소스 
    var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType');

    //var testDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPoint');
    var facilityTypes = ko.observableArray();

    var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
    var buildings = ko.observableArray(),
        floors = ko.observableArray(),
        zones = ko.observableArray();

    var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()],
        searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()],
        searchBuildings = ko.observableArray(),
        searchFloors = ko.observableArray(),
        searchBuildingId = ko.observable(),
        searchFloorId = ko.observable();*/

//    var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId'),
  //      defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),
    //    defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId');

    var searchDeferred = new $.Deferred();

    /*
    selectedFacilityDataInSearchParentPopup.subscribe(function (value) {
        viewModel.dataModel.ParentFacilityCode(value.FacilityCode);
        viewModel.dataModel.ParentFacilityName(value.Name);
    });

    selectedUserData.subscribe(function (value) {
        if (isMainContactor) {
            viewModel.dataModel.MainContactorUserId(value.UserId);
            viewModel.dataModel.MainContactorUserName(value.Name);
        }
        else {
            viewModel.dataModel.SubContactorUserId(value.UserId);
            viewModel.dataModel.SubContactorUserName(value.Name);
        }
    });*/
    /*
    var handleFirstClassChangedValueInSearchView = function (e) {
        if (e.value === 0) {
            initializeSearchClasses();
            return;
        }
        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);
    };
    var handleSecondClassChangedValueInSearchView = function (e) {
        if (e.value === 0) {
            initializeSearchClasses(true);
            return;
        }
        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);
    };*/
    /*
    var handleBuildingInSearchView = function (e) {
        if (e.value === 0) {
            searchFloors(defaultSearchFloorArray.slice(0));
            searchFloorId(0);
            return 0;
        }
        BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, searchFloors, defaultSearchFloorArray);
    }*/

    /*
    function initializeSearchClasses(onlyThird) {
        if (onlyThird === undefined || onlyThird === false) {
            searchFacilityClasses[1](defaultSearchClassArray.slice(0));
            searchFacilityClassValues[1](0);
        }
        searchFacilityClasses[2](defaultSearchClassArray.slice(0));
        searchFacilityClassValues[2](0);
    }

    var facilityOptions = BemsWebApplication.Factory.Facility;
    */
    var searchViewOptions = {
        searchViewItems: [
            //{ id: 'FuelTypeId', ignoreValue: 0, defaultValue: $Code.FuelType.ELECTRICITY, value: fuelTypeIdForSearch, dataSource: fuelTypesForSearch }
            { id: 'CmFacility/Name' },
            { id: 'Name' },
        ],
        promiseDataInSearchView: searchDeferred.promise()
    };

    var works = ko.observableArray();
    //db.createDataSource
    var workDataSource = BWA.DataUtil.createDataSource({
    //var workDataSource = BemsWebApplication.db.createDataSource({
        dataSourceOptions: {
            select: ['SiteId', 'FacilityCode', 'CmFacility/Name', 'Name', 'BemsFuelType/Name', 'BemsServiceType/Name'],
            expand: ['CmFacility', 'BemsFuelType', 'BemsServiceType'],
            extendOptions: {
                forceOriginalField: true,
            },
            filter: [
                ['FacilityCode', "<>", 0],
            ]
        },
    }, 'BemsMonitoringPoint');


    function handleSearchInSearchView(filter, searchViewItems) {
    //function handleSearchInSearchView() {
        //workDataSource.filter = filter;
        //workDataSource.filter.add(['Name', 'contains', '1']);
        /*testDataSource.load().done(function (Result) {
            alert(Result.Length());
        });*/
        workDataSource._paginate = false;
        workDataSource.load().done(function (workResult) {
        //viewModel.dataSource.load().done(function (workResult) {
            _.each(workResult, function (x) {
                x[6] = 'CV';
                x.CV = 100;
                //works.push(x);
                //alert(x.Name());
            });
            //datas = workResult;
            works(workResult);
            //viewModel.dataSource = works;
        });
        //viewModel.dataSource = null;
        //viewModel.refreshList();
    }

    function handleViewShown () {
        //setupDropZone(isEditModeInPopup, dataViewModel);
        handleSearchInSearchView();
    }

    function handleSearchViewInitializeUpdate() {
    }

    function refreshList() {
        //dataSource.pageIndex(0);
        //dataSource.load();
    }

    function handleViewShowing() {
        //dataSource.pageIndex(0);
        //dataSource.load();
    }

    function handleViewHidden() {
        $SearchView.visibleObservable(false); // hcLee 2015 03 23
        //visiblePopup(false);
    }

    //var tempDate = new Date();
    var paramDate = new Date(2015,8,17, 15,0, 0);
    //var viewModel = $.extend(BWA.CommonView.create(
    //var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'BemsMonitoringPoint', {
    //var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, null, {
    var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null,
            handleSearchInSearchView, handleSearchViewInitializeUpdate), {
                refreshList: refreshList,
                viewShowing: handleViewShowing,
                viewHidden: handleViewHidden, // hcLee 2015 03 23
                //viewDisposing: handleViewHidden, // hcLee 2015 03 23
                //locationEnableForSearch: locationEnableForSearch,
                workDataGridOptions: utils.datagrid.defaultOptions({
                    handleDataGridRowClick: function (id, dataGrid, clickRow) { // function () {
                    //handleDataGridRowClick: function (row) {
                        alert(0);
                    },
                    rowAlternationEnabled: true,
                    editing: {
                        editMode: 'cell', // 14.1은  batch, row 두가지 밖에 없다. cell->row로 동작중이다. 2015 07 15 hcLee
                        editEnabled: true,
                    },
                    dataSource: works,
                    columns: [
                        { dataField: 'FacilityCode', caption: $G('number'), width: '4%', alignment: 'center' }, // ? 
                        { dataField: 'CmFacility/Name', caption: '설비명', width: '20%', alignment: 'center', allowEditing: false },
                        { dataField: 'Name', caption: '관제점명', width: '20%', alignment: 'center', allowEditing: false },
                        { dataField: 'BemsFuelType/Name', caption: '에너지원', width: '10%', alignment: 'center', allowEditing: false, },
                        { dataField: 'BemsServiceType/Name', caption: '용도', width: '10%', alignment: 'center', allowEditing: false },

                        { dataField: 'CV', caption: '설정값', width: '8%', alignment: 'center', },
                    ],
                }),
                //promiseDataInSearchView: searchDeferred.promise(),
            });

    //viewModel.workDataGridOptions = {
/*
    BWA.ControlValueSet = {
        workDataGridOptions: utils.datagrid.defaultOptions({
            handleDataGridRowClick: function (row) {
                alert(0);
            },

            dataSource: works,
            columns: [
                { dataField: 'FacilityCode', caption: $G('number'), width: '4%', alignment: 'center' }, // ? 
                { dataField: 'CmFacility/Name', caption: '설비명', width: '20%', alignment: 'center', allowEditing: false },
                { dataField: 'Name', caption: '관제점명', width: '20%', alignment: 'center', allowEditing: false },
                { dataField: 'BemsFuelType/Name', caption: '에너지원', width: '10%', alignment: 'center', allowEditing: false, },
                { dataField: 'BemsServiceType/Name', caption: '용도', width: '10%', alignment: 'center', allowEditing: false },

                { dataField: 'CV', caption: '설정값', width: '8%', alignment: 'center', },
            ],
        }),*/
            /*
                        popupWidth: 480,
            
                        searchViewItems: [
                            { id: 'CmFacility/Name' },
                            { id: 'Name' },
                        ],
                        promiseDataInSearchView: searchDeferred.promise(),
                            
                        handleViewShowing: function () {
                            facilityClassDataSource.filter([
                                    ['SiteId', '=', BWA.UserInfo.SiteId()],
                                    'and',
                                    ['ParentFacilityClassId', '=', null]
                            ]);
            
                            facilityTypeDataSource.filter([
                                ['FacilityTypeId', '=', 1]
                            ]);
            
                            // 빌딩 데이터 로드 시점 
                            $.when(facilityClassDataSource.load(),
                                //buildingDataSource.load(),
                                facilityTypeDataSource.load()
                            ).done(function (result1, result2, result3) {
            
                                //                    searchDeferred.resolve();
            
                            });
                        },
            
                        handleViewShown: function (dataViewModel, isEditModeInPopup) {
                            //setupDropZone(isEditModeInPopup, dataViewModel);
                            handleSearchInSearchView();
                        },
            
                        handleViewHidden: function () {
                            $SearchView.visibleObservable(false); // hcLee 2015 03 23
                            visiblePopup(false);
                        },
            
                        handlePopupShowing: function (that) {
                            alert(9);
                        }, */
        //}
    return viewModel;
};