(function() {
    BemsWebApplication.CmFacilityViewModel = function(data) {
            this.SiteId = ko.observable();
            this.FacilityTypeId = ko.observable();
            this.FacilityCode = ko.observable();
            this.FirstClassId = ko.observable();
            this.SecondClassId = ko.observable();
            this.ThirdClassId = ko.observable();
            this.DeviceType = ko.observable();
            this.ParentFacilityCode = ko.observable();
            this.Name = ko.observable();
            this.Nickname = ko.observable();
            this.Rfid = ko.observable();
            this.Manufacturer = ko.observable();
            this.ManufactureDate = ko.observable();
            this.ManufactureSerial = ko.observable();
            this.ManufactureModel = ko.observable();
            this.Supplier = ko.observable();
            this.SupplierPhoneNo = ko.observable();
            this.BuildingId = ko.observable();
            this.FloorId = ko.observable();
            this.ZoneId = ko.observable();
            this.InstallDate = ko.observable();
            this.OperationStartDate = ko.observable();
            this.FacilityCapacity = ko.observable();
            this.FacilityCost = ko.observable();
            this.FacilityCount = ko.observable();
            this.FacilitySeviceLifeYear = ko.observable();
            this.FacilityUsage = ko.observable();
            this.RatedPowerConsumption = ko.observable();
            this.RatedCOP = ko.observable();
            this.FileId = ko.observable();
            this.MainContactorUserId = ko.observable();
            this.SubContactorUserId = ko.observable();
            this.Note = ko.observable();
            this.Reserved1 = ko.observable();
            this.Reserved2 = ko.observable();
            this.IsUse = ko.observable();
            this.IsVirtualFacility = ko.observable();
            this.FuelTypeId = ko.observable();
            this.ContractType = ko.observable();
            if(data)
                this.fromJS(data);
    };

    $.extend(BemsWebApplication.CmFacilityViewModel.prototype, {
        toJS: function() {
            return {
                SiteId: this.SiteId(),
                FacilityTypeId: this.FacilityTypeId(),
                FacilityCode: this.FacilityCode(),
                FirstClassId: this.FirstClassId(),
                SecondClassId: this.SecondClassId(),
                ThirdClassId: this.ThirdClassId(),
                DeviceType: this.DeviceType(),
                ParentFacilityCode: this.ParentFacilityCode(),
                Name: this.Name(),
                Nickname: this.Nickname(),
                Rfid: this.Rfid(),
                Manufacturer: this.Manufacturer(),
                ManufactureDate: this.ManufactureDate(),
                ManufactureSerial: this.ManufactureSerial(),
                ManufactureModel: this.ManufactureModel(),
                Supplier: this.Supplier(),
                SupplierPhoneNo: this.SupplierPhoneNo(),
                BuildingId: this.BuildingId(),
                FloorId: this.FloorId(),
                ZoneId: this.ZoneId(),
                InstallDate: this.InstallDate(),
                OperationStartDate: this.OperationStartDate(),
                FacilityCapacity: this.FacilityCapacity(),
                FacilityCost: this.FacilityCost(),
                FacilityCount: this.FacilityCount(),
                FacilitySeviceLifeYear: this.FacilitySeviceLifeYear(),
                FacilityUsage: this.FacilityUsage(),
                RatedPowerConsumption: this.RatedPowerConsumption(),
                RatedCOP: this.RatedCOP(),
                FileId: this.FileId(),
                MainContactorUserId: this.MainContactorUserId(),
                SubContactorUserId: this.SubContactorUserId(),
                Note: this.Note(),
                Reserved1: this.Reserved1(),
                Reserved2: this.Reserved2(),
                IsUse: this.IsUse(),
                IsVirtualFacility: this.IsVirtualFacility(),
                FuelTypeId: this.FuelTypeId(),
                ContractType: this.ContractType(),
            };
        },

        fromJS: function(data) {
            if(data) {
                this.SiteId(data.SiteId);
                this.FacilityTypeId(data.FacilityTypeId);
                this.FacilityCode(data.FacilityCode);
                this.FirstClassId(data.FirstClassId);
                this.SecondClassId(data.SecondClassId);
                this.ThirdClassId(data.ThirdClassId);
                this.DeviceType(data.DeviceType);
                this.ParentFacilityCode(data.ParentFacilityCode);
                this.Name(data.Name);
                this.Nickname(data.Nickname);
                this.Rfid(data.Rfid);
                this.Manufacturer(data.Manufacturer);
                this.ManufactureDate(data.ManufactureDate);
                this.ManufactureSerial(data.ManufactureSerial);
                this.ManufactureModel(data.ManufactureModel);
                this.Supplier(data.Supplier);
                this.SupplierPhoneNo(data.SupplierPhoneNo);
                this.BuildingId(data.BuildingId);
                this.FloorId(data.FloorId);
                this.ZoneId(data.ZoneId);
                this.InstallDate(data.InstallDate);
                this.OperationStartDate(data.OperationStartDate);
                this.FacilityCapacity(data.FacilityCapacity);
                this.FacilityCost(data.FacilityCost);
                this.FacilityCount(data.FacilityCount);
                this.FacilitySeviceLifeYear(data.FacilitySeviceLifeYear);
                this.FacilityUsage(data.FacilityUsage);
                this.RatedPowerConsumption(data.RatedPowerConsumption);
                this.RatedCOP(data.RatedCOP);
                this.FileId(data.FileId);
                this.MainContactorUserId(data.MainContactorUserId);
                this.SubContactorUserId(data.SubContactorUserId);
                this.Note(data.Note);
                this.Reserved1(data.Reserved1);
                this.Reserved2(data.Reserved2);
                this.IsUse(data.IsUse);
                this.IsVirtualFacility(data.IsVirtualFacility);
                this.FuelTypeId(data.FuelTypeId);
                this.ContractType(data.ContractType);
            }
        }
    });
})();