BemsWebApplication.setprice = function (params, viewInfo) {

    var priceTypeDataSource = [{
        FuelTypeId: 1,
        PriceTypeId: 1,
        PriceTypeIdDesc: ""
    }];
    var priceCodeDataSource;
    var beforeSelectPriceTypeId;
    var energySelectButton = "power";

    function getSitePrice(SiteID, FuelTypeId, PriceCode) {
        var dataSource = new DevExpress.data.DataSource({
            store: new DevExpress.data.ODataStore({
                url: 'http://localhost:3403/BemsDataService.svc/BemsSitePrice'
            }),
            expand: 'BemsPriceType',
            requireTotalCount: true,
            pageSize: 100
        });
        dataSource.filter([
                ["SiteID", "=", SiteID],
                "and",
                ["FuelTypeId", "=", FuelTypeId]
                //"and",
                //["PriceCode", "=", PriceCode]
        ]);
        dataSource.load()
        .done(function (result) {
            $("#priceSelect").dxSelectBox("instance").option('value', result[0].BemsPriceType.PriceTypeId);
            beforeSelectPriceTypeId = result[0].BemsPriceType.PriceTypeId;
        })
        .fail(function (error) {
            alert(error);
        });
    }

    function getPriceType(FuelTypeId) {
        var dataSource = new DevExpress.data.DataSource({
            store: {
                type: "odata",
                //url: "http://61.33.215.51:8086/BemsDataService.svc/BemsFormula"
                url: "http://localhost:3403/BemsDataService.svc/BemsPriceType"
            },
            map: function (itemData) {
                return {
                    PriceTypeId: itemData.PriceTypeId,
                    PriceTypeIdDesc: itemData.PriceTypeIdDesc,
                    FuelTypeId: itemData.FuelTypeId
                }
            },
            requireTotalCount: true,
            pageSize: 100
        });
        dataSource.filter([
                ["FuelTypeId", "=", FuelTypeId]
        ]);
        dataSource.sort({ getter: "PriceTypeIdDesc", asc: true });
        dataSource.load()
        .done(function (result) {
            priceTypeDataSource = dataSource;
            //var array = PriceTypeDataSourceToArray(priceTypeDataSource);
            //$("#priceSelect").dxSelectBox("instance").option('items', array);
            $("#priceSelect").dxSelectBox("instance").option('dataSource', priceTypeDataSource);
            $("#priceSelect").dxSelectBox("instance").option('displayExpr', 'PriceTypeIdDesc');
            $("#priceSelect").dxSelectBox("instance").option('valueExpr', "PriceTypeId");
            getSitePrice(BWA.UserInfo.SiteId(), result[0].FuelTypeId);//PriceCode P038 청구요금
            //$("#priceSelect").dxSelectBox("instance").option('value', priceTypeDataSource._items[0].PriceTypeIdDesc);
        })
        .fail(function (error) {
            alert(error);
        });
    }

    function PriceTypeDataSourceToArray(dataSource) {
        var resultArray = new Array(dataSource._items.length);
        /*for (var i = 0; i < dataSource._items.length; i++) {
            resultArray[i] = new Array(3);
        }*/
        /*for (var i = 0; i < dataSource._items.length;i++) {
            resultArray[i][0] = dataSource._items[i].PriceTypeId;
            resultArray[i][1] = dataSource._items[i].PriceTypeIdDesc;
            resultArray[i][2] = dataSource._items[i].FuelTypeId;
        }*/
        for (var i = 0; i < dataSource._items.length; i++) {
            resultArray[i] = dataSource._items[i].PriceTypeIdDesc;
        }
        return resultArray;
    }

    function getPriceCode(FuelTypeId) {
        var dataSource = new DevExpress.data.DataSource({
            store: {
                type: "odata",
                url: "http://localhost:3403/BemsDataService.svc/BemsPriceCode"
            },
            map: function (itemData) {
                return {
                    PriceCode: itemData.PriceCode,
                    PriceCodeDesc: itemData.PriceCodeDesc,
                    FuelTypeId: itemData.FuelTypeId,
                    Unit: itemData.Unit
                }
            },
            requireTotalCount: true,
            pageSize: 100
        });
        dataSource.filter([
                ["FuelTypeId", "=", FuelTypeId]
        ]);
        dataSource.sort({ getter: "PriceCode", asc: true });
        dataSource.load()
        .done(function (result) {
            priceCodeDataSource = result;
            var $PriceCodeLayOut = $('#PriceCodeLayOut'); // finds the <PriceCodeLayOut> element
            $('#PriceCodeLayOut').empty();
            for (var i = 0; i < result.length; i++) {
                $('<input type="text" class="fl setInputId" style="width:150px;height:24px;" readonly>')                 // creates a new HTML element
                    .appendTo($PriceCodeLayOut)     // appends a new HTML element to the <body> element
                $('<div class="fl setSwitchId" style="margin-right:45px;">')
                    .appendTo($PriceCodeLayOut)     
                    .dxSwitch();
                if (i % 4 == 3) {
                    $('<br>').appendTo($PriceCodeLayOut)
                    $('<br>').appendTo($PriceCodeLayOut)
                    $('<br>').appendTo($PriceCodeLayOut)
                }
            }
            var setInputIds = document.querySelectorAll('.setInputId');
            var setSwitchIds = document.querySelectorAll('.setSwitchId');
            for (var i = 0; i < result.length; i++) {
                setInputIds[i].id = 'input' + i;
                setInputIds[i].value = result[i].PriceCodeDesc;
                setSwitchIds[i].id = 'switch' + i;
                $('#switch' + i).dxSwitch("instance").option('onText', 'On');
                $('#switch' + i).dxSwitch("instance").option('offText', 'Off');
            }
            getPriceCodeYN(BWA.UserInfo.SiteId(), FuelTypeId);
        })
        .fail(function (error) {
            alert(error);
        });
    }

    function getPriceCodeYN(SiteID, FuelTypeId) {
        var dataSource = new DevExpress.data.DataSource({
            store: new DevExpress.data.ODataStore({
                url: 'http://localhost:3403/BemsDataService.svc/BemsSitePrice'
            }),
            //expand: 'BemsPriceType',
            requireTotalCount: true,
            pageSize: 100
        });
        dataSource.filter([
                ["SiteID", "=", SiteID],
                "and",
                ["FuelTypeId", "=", FuelTypeId],
        ]);
        dataSource.sort({ getter: "PriceCode", asc: true });
        dataSource.load()
        .done(function (result) {
            for (var i = 0; i < result.length; i++) {
                var tmpYN;
                if (result[i].UseYN == "Y") {
                    tmpYN = true;
                } else {
                    tmpYN = false;
                }
                $("#switch" + i).dxSwitch("instance").option('value', tmpYN);
            }
        })
        .fail(function (error) {
            alert(error);
        });
    }

    function saveSettings() {
        var dataSource = new DevExpress.data.DataSource({
            store: {
                type: "odata",
                url: "http://localhost:3403/BemsDataService.svc/BemsSitePrice"
            },
            requireTotalCount: true,
            pageSize: 100
        });
        var FuelTypeId;
        //if ($("#powerBtn").css("background-image") == "linear-gradient(180deg, rgb(155, 171, 195) 0%, rgb(65, 97, 140) 100%)") {
        if (energySelectButton == "power") {
            FuelTypeId = 1;
        //} else if ($("#gasBtn").css("background-image") == "linear-gradient(180deg, rgb(155, 171, 195) 0%, rgb(65, 97, 140) 100%)") {
        }else if (energySelectButton == "gas") {
            FuelTypeId = 2;
        //} else if ($("#waterBtn").css("background-image") == "linear-gradient(180deg, rgb(155, 171, 195) 0%, rgb(65, 97, 140) 100%)") {
        }else if (energySelectButton == "water") {
            FuelTypeId = 3;
        } else {
            alert("에너지원이 선택되지 않았습니다.");
        }
        dataSource.filter([
                ["FuelTypeId", "=", FuelTypeId]
        ]);
        var selectPriceTypeId = parseInt($("#priceSelect").dxSelectBox("instance").option('value'));
        var failCnt = 0;
        for (var i = 0; i < priceCodeDataSource.length; i++) {
            var UseYN = $("#switch" + i).dxSwitch("instance").option('value');
            if (UseYN == true) {
                UseYN = 'Y';
            } else {
                UseYN = 'N';
            }
            dataSource.store().update({ SiteID: BWA.UserInfo.SiteId(), FuelTypeId: FuelTypeId, PriceCode: priceCodeDataSource[i].PriceCode }, { PriceTypeId: selectPriceTypeId, UseYN: UseYN })
            //dataSource.store().update({ SiteID: BWA.UserInfo.SiteId(), FuelTypeId: FuelTypeId, PriceCode: priceCodeDataSource[i].PriceCode }, { PriceTypeId: selectPriceTypeId, UseYN: UseYN })
            .done(function(key, result){
                //alert(key + "/" + result);
            })
            .fail(function (error) {
                //alert(error);
                failCnt++;
            });
        }
        if (failCnt > 0) {
            alert("저장에 실패 했습니다.");
        } else {
            alert("저장되었습니다.");
        }
        /*var context = new DevExpress.data.ODataContext({
            url: "http://localhost:3403/BemsDataService.svc",
            entities: {
                BemsSitePrice: {
                    key: ["SiteID", "FuelTypeId", "PriceTypeId","PriceCode"],
                    keyType: { SiteID: "Int32", FuelTypeId: "Int32",PriceTypeId:"Int32", PriceCode: "String" }
                }
            }
        });
        context.BemsSitePrice.update({ SiteID: BWA.UserInfo.SiteId(), FuelTypeId: 1, PriceTypeId: 10, PriceCode: 'P002' }, { PriceTypeId: 11 }).done(function (key, result) {
            var test = result;
        }).fail(function (error) { alert(error);});*/

    }

    function handleViewShown() {
        getPriceType(1);
        getPriceCode(1);
    }

    var searchViewOptions = {
        //templete function
    };

    function handleSearchInSearchView() {
        //templete function
    }

    var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView),
        {
            priceSelect : {
                dataSource: priceTypeDataSource
            },
            powerButtonClicked : function () {
                $("#powerBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)");
                $("#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%)");
                getPriceType(1);
                getPriceCode(1);
            },
            gasButtonClicked : function () {
                $("#gasBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)");
                $("#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%)");
                getPriceType(2);
                getPriceCode(2);
            },
            waterButtonClicked : function () {
                $("#waterBtn").css("background-image", "linear-gradient(180deg,#9babc3 0%,#41618c 100%)");
                $("#gasBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
                $("#powerBtn").css("background-image", "linear-gradient(rgb(56,88,130) 0%, rgb(44,68,101)100%)");
                getPriceType(3);
                getPriceCode(3);
            },
            saveButtonClicked: function () {
                saveSettings();
            }
    });

    return viewModel;
};