$(function() {
    'use strict';

    BWA.Popup = BWA.Popup || {};
    BWA.Popup.FormulaPointPopup = {

        //create: function(viewModel, selectedTreeItem) {
        create: function (viewModel) {
            
            var popupVisible = ko.observable(false);

            var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType'),
                serviceTypeDataSource = BemsWebApplication.db.createDataSource('BemsServiceType'),
                fuelTypeDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'),
                pointBaseDataDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPointBaseData'),

                serviceTypes = ko.observableArray(),
                fuelTypes = ko.observableArray(),
                properties = ko.observableArray(),
                valueTypes = $G.ValueTypes,

                eq = BWA.DataUtil.constructEqualFilter,
                and = BWA.DataUtil.andFilter,
                viewModel = viewModel,
                dataModel = viewModel.dataModel = new BemsWebApplication.BemsMonitoringPointViewModel();

            dataModel.FacilityTypeName = ko.observable();
            dataModel.ServiceTypeName = ko.observable();
            dataModel.ValueTypeName = ko.observable();
            dataModel.FuelTypeName = ko.observable();
            dataModel.FacilityName = ko.observable();            
            
            function getDoneFunc(koObservableArray) {

                return function(dbArray) {

                    koObservableArray(dbArray);
                };
            }

            function handleInitializeDataModelValue(dataModel) {

              
            }

            function handleSelectBoxChangeProperty(e) {

                var property = _.find(properties(), function(x) {

                    return x.PropertyId() === e.value;
                });
                if (property) {
                    
                    dataModel.Name(property.Name());
                }
            }

            function handleDataGridRowClick(id, dataGrid, clickRow) {
                var data = clickRow.data;

                var valueType = _.find(valueTypes, function (x) {
                    return x.ValueType === data.ValueType();
                });

                dataModel.FacilityName(data['CmFacility/Name']());
                dataModel.FacilityTypeName(data['BemsFacilityType/Name']());
                dataModel.ServiceTypeName(data['BemsServiceType/Name']());
                dataModel.FuelTypeName(data['BemsFuelType/Name']());
                dataModel.ValueTypeName(valueType.Name);
                dataModel.Name(data.Name());
                dataModel.PropertyId(data.PropertyId());
                dataModel.Description(data.Description());

                popupVisible(true);
            }

            function handlePopupButtonClose() {
                popupVisible(false);
            }

            function handlePopupShowing(e) {
                //var item = selectedTreeItem();
                //if (item.depth !== 2) return;

                //var facility = item.data;

                //dataModel.SiteId(facility.SiteId());
                //dataModel.FacilityCode(facility.FacilityCode());
                //dataModel.FacilityTypeId(facility.FacilityTypeId());
                //dataModel.FacilityTypeName(facility['BemsFacilityType/Name']());
                //dataModel.FacilityName(facility.Name());
                ////dataModel.IsAccumulated(true);

                //pointBaseDataDataSource.filter([
                //    eq('FacilityTypeId', dataModel.FacilityTypeId())
                //]);
                //pointBaseDataDataSource.load().done(getDoneFunc(properties));

                //var data = clickRow.data;

                //var valueType = _.find(valueTypes, function(x) {
                //    return x.ValueType === data.ValueType();
                //});

              
                //

                //popupVisible(true);
            }

            function handlePopupShown() {

            }

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

            var popupOptions = {

                width: '520px',
                height: 'auto',
                visible: popupVisible,
                closeOnOutsideClick: false,
                shading: false,
                showingAction: handlePopupShowing,
                shownAction: handlePopupShown,
                animation: utils.popup.createAnimation()
            };


            return {

                popupOptions: popupOptions,
                toolbarItems: toolbarItems,

                serviceTypes: serviceTypes,
                fuelTypes: fuelTypes,
                properties: properties,
                valueTypes: valueTypes,
                
                handleDataGridRowClick: handleDataGridRowClick,
                handleSelectBoxChangeProperty: handleSelectBoxChangeProperty,
                handleInitializeDataModelValue: handleInitializeDataModelValue,

                show: function () {
                    popupVisible(true);
                }
            };
        }
    }
});