define(['require','modules/navigator/battery','modules/base/module','modules/mvvm/observable'],function(require){'use strict';var NavigatorBattery=require('modules/navigator/battery');var Module=require('modules/base/module');var Observable=require('modules/mvvm/observable');var Battery=Module.create(function Battery(){this.super(Observable).call(this);this._level=this._getLevel();this._state=this._getState();this._chargingTime=this._getChargingTime();this._dischargingTime=this._getDischargingTime();NavigatorBattery.addEventListener('levelchange',()=>{this._level=this._getLevel();});NavigatorBattery.addEventListener('chargingchange',()=>{this._state=this._getState();this._chargingTime=this._getChargingTime();this._dischargingTime=this._getDischargingTime();});NavigatorBattery.addEventListener('chargingtimechange',()=>{this._chargingTime=this._getChargingTime();});NavigatorBattery.addEventListener('dischargingtimechange',()=>{this._dischargingTime=this._getDischargingTime();});}).extend(Observable);Observable.defineObservableProperty(Battery.prototype,'level',{readonly:true,value:''});Observable.defineObservableProperty(Battery.prototype,'state',{readonly:true,value:''});Observable.defineObservableProperty(Battery.prototype,'chargingTime',{readonly:true,value:''});Observable.defineObservableProperty(Battery.prototype,'dischargingTime',{readonly:true,value:''});Battery.prototype._getLevel=function(){return Math.min(100,Math.round(NavigatorBattery.level*100));};Battery.prototype._getState=function(){if(NavigatorBattery.charging){return(this._getLevel()==100)?'charged':'charging';}else{return'unplugged';}};Battery.prototype._getChargingTime=function(){return NavigatorBattery.chargingTime;};Battery.prototype._getDischargingTime=function(){return NavigatorBattery.dischargingTime;};return Battery();});