BemsWebApplication.PlanNoticePrice = function (params, viewInfo) {

    var init = false;
    var selectEnergy = "전력";
    var PublishDate = "";

    var PublishDateDataSource = [{
        PublishDate: '',
        DisplayDate : ''
    }];

    var endpointSelector = "";
    if (BemsWebApplication.config.mode == "production") {
        endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production;
    } else {
        endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local;
    }

    var tabsData = [
    {
        id: "0",
        text: "test1"
    },
    {
        id: "1",
        text: "test2"
    },
    {
        id: "2",
        text: "test3"
    }
    ];

    var price = [{
        "시간": 0
    }, {
        "시간": 1
    }, {
        "시간": 2
    }, {
        "시간": 3
    }, {
        "시간": 4
    }, {
        "시간": 5
    }, {
        "시간": 6
    }, {
        "시간": 7
    }, {
        "시간": 8
    }, {
        "시간": 9
    }, {
        "시간": 10
    }, {
        "시간": 11
    }, {
        "시간": 12
    }, {
        "시간": 13
    }, {
        "시간": 14
    }, {
        "시간": 15
    }, {
        "시간": 16
    }, {
        "시간": 17
    }, {
        "시간": 18
    }, {
        "시간": 19
    }, {
        "시간": 20
    }, {
        "시간": 21
    }, {
        "시간": 22
    }, {
        "시간": 23
    }];

    function setTabData(SiteID, FuelTypeId, InitPriceCode) {
        var dataSource = new DevExpress.data.DataSource({
            store: new DevExpress.data.ODataStore({
                url: endpointSelector + "/BemsSitePrice"
            }),
            expand: ['BemsPriceType'],
            requireTotalCount: true,
            pageSize: 1000
        });
        dataSource.filter([
                ["SiteID", "=", SiteID],
                "and",
                ["FuelTypeId", "=", FuelTypeId]
        ]);
        dataSource.sort({ getter: "FuelTypeId", asc: true });
        dataSource.load()
        .done(function (result) {
            var tmp = [];
            tmp.push({ id: result[0].BemsPriceType.PriceTypeId, text: result[0].BemsPriceType.PriceTypeIdDesc });
            for (var i = 0; i < result.length; i++) {
                var resultCnt;
                for (var j = 0; j < tmp.length; j++) {
                    if (tmp[j].text.indexOf(result[i].BemsPriceType.PriceTypeIdDesc) != -1) {
                        resultCnt++;
                    }
                }
                if (resultCnt == 0)
                    tmp.push({ id: result[i].BemsPriceType.PriceTypeId, text: result[i].BemsPriceType.PriceTypeIdDesc });
                resultCnt = 0;
            }
            tabsData = tmp;
            $("#tabOptions").dxTabs("instance").option('dataSource', tabsData);
            if (!init) {
                $("#tabOptions").dxTabs("instance").option('selectedIndex', 0);
                init = true;
            } else {

            }
            //getPriceData(BWA.UserInfo.SiteId(), FuelTypeId);

            if (InitPriceCode == null)
                InitPriceCode = 'P038'; //초기 PriceCode 전력 P038 청구요금
            //setFactorSelect(InitPriceCode);
            //getcompareData(BWA.UserInfo.SiteId(), FuelTypeId, tmpDate.getFullYear());
            getPublishDate(result[0].BemsPriceType.PriceTypeId);
        });
    }

    function numberWithCommas(x) {
        return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    }

    function getPriceMeta(PriceTypeId, PublishDate) {
        var dataSource = new DevExpress.data.DataSource({
            store: new DevExpress.data.ODataStore({
                url: endpointSelector + "/BemsPriceMeta"
            }),
            requireTotalCount: true,
            pageSize: 300
        });
        dataSource.filter([
                ["PriceTypeId", "=", PriceTypeId],
                "and",
                ["PublishDate", "=", PublishDate]
                //"and",
                //["PriceCode", "=", PriceCode]
        ]);
        dataSource.load()
        .done(function (result) {
            //setting to grid
            $('#BasePrice').text("\\" + numberWithCommas(result[0].BasePrice));
            var tmpDataSource = [{
                "시간": 0,
                "1월": result[0].C01_00,
                "2월": result[0].C02_00,
                "3월": result[0].C03_00,
                "4월": result[0].C04_00,
                "5월": result[0].C05_00,
                "6월": result[0].C06_00,
                "7월": result[0].C07_00,
                "8월": result[0].C08_00,
                "9월": result[0].C09_00,
                "10월": result[0].C10_00,
                "11월": result[0].C11_00,
                "12월": result[0].C12_00
            }, {
                "시간": 1,
                "1월": result[0].C01_01,
                "2월": result[0].C02_01,
                "3월": result[0].C03_01,
                "4월": result[0].C04_01,
                "5월": result[0].C05_01,
                "6월": result[0].C06_01,
                "7월": result[0].C07_01,
                "8월": result[0].C08_01,
                "9월": result[0].C09_01,
                "10월": result[0].C10_01,
                "11월": result[0].C11_01,
                "12월": result[0].C12_01
            }, {
                "시간": 2,
                "1월": result[0].C01_02,
                "2월": result[0].C02_02,
                "3월": result[0].C03_02,
                "4월": result[0].C04_02,
                "5월": result[0].C05_02,
                "6월": result[0].C06_02,
                "7월": result[0].C07_02,
                "8월": result[0].C08_02,
                "9월": result[0].C09_02,
                "10월": result[0].C10_02,
                "11월": result[0].C11_02,
                "12월": result[0].C12_02
            }, {
                "시간": 3,
                "1월": result[0].C01_03,
                "2월": result[0].C02_03,
                "3월": result[0].C03_03,
                "4월": result[0].C04_03,
                "5월": result[0].C05_03,
                "6월": result[0].C06_03,
                "7월": result[0].C07_03,
                "8월": result[0].C08_03,
                "9월": result[0].C09_03,
                "10월": result[0].C10_03,
                "11월": result[0].C11_03,
                "12월": result[0].C12_03
            }, {
                "시간": 4,
                "1월": result[0].C01_04,
                "2월": result[0].C02_04,
                "3월": result[0].C03_04,
                "4월": result[0].C04_04,
                "5월": result[0].C05_04,
                "6월": result[0].C06_04,
                "7월": result[0].C07_04,
                "8월": result[0].C08_04,
                "9월": result[0].C09_04,
                "10월": result[0].C10_04,
                "11월": result[0].C11_04,
                "12월": result[0].C12_04
            }, {
                "시간": 5,
                "1월": result[0].C01_05,
                "2월": result[0].C02_05,
                "3월": result[0].C03_05,
                "4월": result[0].C04_05,
                "5월": result[0].C05_05,
                "6월": result[0].C06_05,
                "7월": result[0].C07_05,
                "8월": result[0].C08_05,
                "9월": result[0].C09_05,
                "10월": result[0].C10_05,
                "11월": result[0].C11_05,
                "12월": result[0].C12_05
            }, {
                "시간": 6,
                "1월": result[0].C01_06,
                "2월": result[0].C02_06,
                "3월": result[0].C03_06,
                "4월": result[0].C04_06,
                "5월": result[0].C05_06,
                "6월": result[0].C06_06,
                "7월": result[0].C07_06,
                "8월": result[0].C08_06,
                "9월": result[0].C09_06,
                "10월": result[0].C10_06,
                "11월": result[0].C11_06,
                "12월": result[0].C12_06
            }, {
                "시간": 7,
                "1월": result[0].C01_07,
                "2월": result[0].C02_07,
                "3월": result[0].C03_07,
                "4월": result[0].C04_07,
                "5월": result[0].C05_07,
                "6월": result[0].C06_07,
                "7월": result[0].C07_07,
                "8월": result[0].C08_07,
                "9월": result[0].C09_07,
                "10월": result[0].C10_07,
                "11월": result[0].C11_07,
                "12월": result[0].C12_07
            }, {
                "시간": 8,
                "1월": result[0].C01_08,
                "2월": result[0].C02_08,
                "3월": result[0].C03_08,
                "4월": result[0].C04_08,
                "5월": result[0].C05_08,
                "6월": result[0].C06_08,
                "7월": result[0].C07_08,
                "8월": result[0].C08_08,
                "9월": result[0].C09_08,
                "10월": result[0].C10_08,
                "11월": result[0].C11_08,
                "12월": result[0].C12_08
            }, {
                "시간": 9,
                "1월": result[0].C01_09,
                "2월": result[0].C02_09,
                "3월": result[0].C03_09,
                "4월": result[0].C04_09,
                "5월": result[0].C05_09,
                "6월": result[0].C06_09,
                "7월": result[0].C07_09,
                "8월": result[0].C08_09,
                "9월": result[0].C09_09,
                "10월": result[0].C10_09,
                "11월": result[0].C11_09,
                "12월": result[0].C12_09
            }, {
                "시간": 10,
                "1월": result[0].C01_10,
                "2월": result[0].C02_10,
                "3월": result[0].C03_10,
                "4월": result[0].C04_10,
                "5월": result[0].C05_10,
                "6월": result[0].C06_10,
                "7월": result[0].C07_10,
                "8월": result[0].C08_10,
                "9월": result[0].C09_10,
                "10월": result[0].C10_10,
                "11월": result[0].C11_10,
                "12월": result[0].C12_10
            }, {
                "시간": 11,
                "1월": result[0].C01_11,
                "2월": result[0].C02_11,
                "3월": result[0].C03_11,
                "4월": result[0].C04_11,
                "5월": result[0].C05_11,
                "6월": result[0].C06_11,
                "7월": result[0].C07_11,
                "8월": result[0].C08_11,
                "9월": result[0].C09_11,
                "10월": result[0].C10_11,
                "11월": result[0].C11_11,
                "12월": result[0].C12_11
            }, {
                "시간": 12,
                "1월": result[0].C01_12,
                "2월": result[0].C02_12,
                "3월": result[0].C03_12,
                "4월": result[0].C04_12,
                "5월": result[0].C05_12,
                "6월": result[0].C06_12,
                "7월": result[0].C07_12,
                "8월": result[0].C08_12,
                "9월": result[0].C09_12,
                "10월": result[0].C10_12,
                "11월": result[0].C11_12,
                "12월": result[0].C12_12
            }, {
                "시간": 13,
                "1월": result[0].C01_13,
                "2월": result[0].C02_13,
                "3월": result[0].C03_13,
                "4월": result[0].C04_13,
                "5월": result[0].C05_13,
                "6월": result[0].C06_13,
                "7월": result[0].C07_13,
                "8월": result[0].C08_13,
                "9월": result[0].C09_13,
                "10월": result[0].C10_13,
                "11월": result[0].C11_13,
                "12월": result[0].C12_13
            }, {
                "시간": 14,
                "1월": result[0].C01_14,
                "2월": result[0].C02_14,
                "3월": result[0].C03_14,
                "4월": result[0].C04_14,
                "5월": result[0].C05_14,
                "6월": result[0].C06_14,
                "7월": result[0].C07_14,
                "8월": result[0].C08_14,
                "9월": result[0].C09_14,
                "10월": result[0].C10_14,
                "11월": result[0].C11_14,
                "12월": result[0].C12_14
            }, {
                "시간": 15,
                "1월": result[0].C01_15,
                "2월": result[0].C02_15,
                "3월": result[0].C03_15,
                "4월": result[0].C04_15,
                "5월": result[0].C05_15,
                "6월": result[0].C06_15,
                "7월": result[0].C07_15,
                "8월": result[0].C08_15,
                "9월": result[0].C09_15,
                "10월": result[0].C10_15,
                "11월": result[0].C11_15,
                "12월": result[0].C12_15
            }, {
                "시간": 16,
                "1월": result[0].C01_16,
                "2월": result[0].C02_16,
                "3월": result[0].C03_16,
                "4월": result[0].C04_16,
                "5월": result[0].C05_16,
                "6월": result[0].C06_16,
                "7월": result[0].C07_16,
                "8월": result[0].C08_16,
                "9월": result[0].C09_16,
                "10월": result[0].C10_16,
                "11월": result[0].C11_16,
                "12월": result[0].C12_16
            }, {
                "시간": 17,
                "1월": result[0].C01_17,
                "2월": result[0].C02_17,
                "3월": result[0].C03_17,
                "4월": result[0].C04_17,
                "5월": result[0].C05_17,
                "6월": result[0].C06_17,
                "7월": result[0].C07_17,
                "8월": result[0].C08_17,
                "9월": result[0].C09_17,
                "10월": result[0].C10_17,
                "11월": result[0].C11_17,
                "12월": result[0].C12_17
            }, {
                "시간": 18,
                "1월": result[0].C01_18,
                "2월": result[0].C02_18,
                "3월": result[0].C03_18,
                "4월": result[0].C04_18,
                "5월": result[0].C05_18,
                "6월": result[0].C06_18,
                "7월": result[0].C07_18,
                "8월": result[0].C08_18,
                "9월": result[0].C09_18,
                "10월": result[0].C10_18,
                "11월": result[0].C11_18,
                "12월": result[0].C12_18
            }, {
                "시간": 19,
                "1월": result[0].C01_19,
                "2월": result[0].C02_19,
                "3월": result[0].C03_19,
                "4월": result[0].C04_19,
                "5월": result[0].C05_19,
                "6월": result[0].C06_19,
                "7월": result[0].C07_19,
                "8월": result[0].C08_19,
                "9월": result[0].C09_19,
                "10월": result[0].C10_19,
                "11월": result[0].C11_19,
                "12월": result[0].C12_19
            }, {
                "시간": 20,
                "1월": result[0].C01_20,
                "2월": result[0].C02_20,
                "3월": result[0].C03_20,
                "4월": result[0].C04_20,
                "5월": result[0].C05_20,
                "6월": result[0].C06_20,
                "7월": result[0].C07_20,
                "8월": result[0].C08_20,
                "9월": result[0].C09_20,
                "10월": result[0].C10_20,
                "11월": result[0].C11_20,
                "12월": result[0].C12_20
            }, {
                "시간": 21,
                "1월": result[0].C01_21,
                "2월": result[0].C02_21,
                "3월": result[0].C03_21,
                "4월": result[0].C04_21,
                "5월": result[0].C05_21,
                "6월": result[0].C06_21,
                "7월": result[0].C07_21,
                "8월": result[0].C08_21,
                "9월": result[0].C09_21,
                "10월": result[0].C10_21,
                "11월": result[0].C11_21,
                "12월": result[0].C12_21
            }, {
                "시간": 22,
                "1월": result[0].C01_22,
                "2월": result[0].C02_22,
                "3월": result[0].C03_22,
                "4월": result[0].C04_22,
                "5월": result[0].C05_22,
                "6월": result[0].C06_22,
                "7월": result[0].C07_22,
                "8월": result[0].C08_22,
                "9월": result[0].C09_22,
                "10월": result[0].C10_22,
                "11월": result[0].C11_22,
                "12월": result[0].C12_22
            }, {
                "시간": 23,
                "1월": result[0].C01_23,
                "2월": result[0].C02_23,
                "3월": result[0].C03_23,
                "4월": result[0].C04_23,
                "5월": result[0].C05_23,
                "6월": result[0].C06_23,
                "7월": result[0].C07_23,
                "8월": result[0].C08_23,
                "9월": result[0].C09_23,
                "10월": result[0].C10_23,
                "11월": result[0].C11_23,
                "12월": result[0].C12_23
            }];
            $("#dataGrid").dxDataGrid("instance").option('dataSource', tmpDataSource);
        })
        .fail(function (error) {
            alert(error);
        });
    }

    function getPublishDate(PriceTypeId) {
        var dataSource = new DevExpress.data.DataSource({
            store: new DevExpress.data.ODataStore({
                url: endpointSelector + "/BemsPriceMeta"
            }),
            requireTotalCount: true,
            pageSize: 300
        });
        dataSource.filter([
                ["PriceTypeId", "=", PriceTypeId]
        ]);
        dataSource.sort({ getter: "PublishDate", desc: true });
        dataSource.load()
        .done(function (result) {
            PublishDate = result[0].PublishDate;
            var tmpArray = [];
            for (var i = 0; i < result.length; i++) {
                var setDate = (result[i].PublishDate).getFullYear() + "년 " + ((result[i].PublishDate).getMonth() + 1) + "월 " + (result[i].PublishDate).getDate() + "일";
                tmpArray.push({ PublishDate: result[i].PublishDate, DisplayDate: setDate });
            }
            $("#PublishDate").dxSelectBox("instance").option('dataSource', tmpArray);
            $("#PublishDate").dxSelectBox("instance").option('displayExpr', 'DisplayDate');
            $("#PublishDate").dxSelectBox("instance").option('valueExpr', 'PublishDate');
            if(init && PublishDate != null){
                $("#PublishDate").dxSelectBox("instance").option('value', PublishDate);
                getPriceMeta(tabsData[parseInt($("#tabOptions").dxTabs("instance").option('selectedIndex'))].id, PublishDate);
            }
            //$("#PublishDate").text(tmp.getFullYear() + "년 " + tmp.getMonth() + 1 + "월 " + tmp.getDate() + "일");
        })
        .fail(function (error) {
            alert(error);
        });
    }

    function handleViewShown() {
        init = false;
        setTabData(BWA.UserInfo.SiteId(), 1, 'P038');   //초기화 전력 P038 청구요금
        //setFactorSelect('P038');
        //getPriceData(BWA.UserInfo.SiteId(), 1);
        //getcompareData(BWA.UserInfo.SiteId(), 1, tmpDate.getFullYear());

        $("#dataGrid").dxDataGrid({
            paging: {
                pageSize: 14,
                enabled: true
            }
        });
    }

    var searchViewOptions = {

    };

    function handleSearchInSearchView() {

    }

    var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView),  
        {
            dataGrid: {
                dataSource: price,
                height: 530,
            columns: ["시간", "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
            //scrolling: {
            //    mode: 'standard'
            //},
            //paging: { enabled: false}
        },
        powerButtonClicked: function () {
            selectEnergy == "전력"
            $("#gasBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
            $("#waterBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
            $("#powerBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)");
            init = false;
            setTabData(BWA.UserInfo.SiteId(), 1, 'P038');
        }, gasButtonClicked: function () {
            selectEnergy == "가스"
            $("#powerBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
            $("#waterBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
            $("#gasBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)");
            init = false;
            setTabData(BWA.UserInfo.SiteId(), 2, 'G005');
        }, waterButtonClicked: function () {
            selectEnergy == "수도"
            $("#powerBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
            $("#gasBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
            $("#waterBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)");
            init = false;
            setTabData(BWA.UserInfo.SiteId(), 3, 'W006');
        },
        tabOptions: {
            //theme: 'CustomTheme',
        dataSource: tabsData,
        height: 20,
        selectedIndex: 0,
        onSelectionChanged: function (e) {
        //$("#priceSelect").dxSelectBox("instance").option('value', e.addedItems[0].id);
        //selectedItem = e.addedItems[0];
            if (init) {
                    var FuelTypeId;
                    if (selectEnergy == "전력") {
                        FuelTypeId = 1;
                    } else if (selectEnergy == "가스") {
                        FuelTypeId = 2;
                    } else if (selectEnergy == "수도") {
                        FuelTypeId = 3;
                    } else {
                        utils.toast.show("에너지원이 선택되지 않았습니다.");
                    }
                    /*var tmpDate = $("#startDatePicker").dxDateBox("instance").option('value');
                    var month = tmpDate.getMonth() + 1;
                    if (month < 10) {
                        month = "0" + month.toString();
                    }
                    var endDay = 32 - new Date(tmpDate.getFullYear(), tmpDate.getMonth(), 32).getDate();*/
                //setTabData(BWA.UserInfo.SiteId(), 1, 'P038');
                    if (init && PublishDate != null) {
                        getPublishDate(e.addedItems[0].id);
                        //getPriceMeta(tabsData[parseInt($("#tabOptions").dxTabs("instance").option('selectedIndex'))].id, PublishDate);
                    }
                }
            }
        },
        PublishDate: {
            dataSource: PublishDateDataSource,
            onValueChanged: function (e) {
                var FuelTypeId;
                if (selectEnergy == "전력") {
                    FuelTypeId = 1;
                } else if (selectEnergy == "가스") {
                    FuelTypeId = 2;
                } else if (selectEnergy == "수도") {
                    FuelTypeId = 3;
                } else {
                    utils.toast.show("에너지원이 선택되지 않았습니다.");
                }
                var PublishDateInit = $("#PublishDate").dxSelectBox("instance").option('value');
                if (init && PublishDate != null && PublishDateInit != null) {
                    PublishDate = $("#PublishDate").dxSelectBox("instance").option('value');
                    getPriceMeta(tabsData[parseInt($("#tabOptions").dxTabs("instance").option('selectedIndex'))].id, PublishDate);
                    //getPublishDate(e.addedItems[0].id);
                }
            }
        }
        /*viewShown: function () {
            var endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints);

            $('#price').attr('src', endpointSelector.urlFor('partial') + '/price');

            $SideMenu.showSideMenuIfWill(params.view);
        }*/
    });

    return viewModel;
};