text: /**
   * @private
   */
  Ext.define('Ext.device.device.Cordova', {
      alternateClassName: 'Ext.device.device.PhoneGap',
  
      extend: 'Ext.device.device.Abstract',
  
      availableListeners: [
          'pause',
          'resume',
          'backbutton',
          'batterycritical',
          'batterylow',
          'batterystatus',
          'menubutton',
          'searchbutton',
          'startcallbutton',
          'endcallbutton',
          'volumeupbutton',
          'volumedownbutton'
      ],
  
      constructor: function() {
          // We can't get the device details until the device is ready, so lets wait.
          if (Ext.isReady) {
              this.onReady();
          } else {
              Ext.onReady(this.onReady, this, {single: true});
          }
      },
  
      /**
       * @property {String} cordova
       * Returns the version of Cordova running on the device.
       *
       *     alert('Device cordova: ' + Ext.device.Device.cordova);
       */
  
      /**
       * @property {String} version
       * Returns the operating system version.
       *
       *     alert('Device Version: ' + Ext.device.Device.version);
       */
  
      /**
       * @property {String} model
       * Returns the device's model name.
       *
       *     alert('Device Model: ' + Ext.device.Device.model);
       */
      
      /**
       * @event pause
       * Fires when the application goes into the background
       */
      
      /**
       * @event resume
       * Fires when the application goes into the foreground
       */
      
      /**
       * @event batterycritical
       * This event that fires when a Cordova application detects the percentage of battery 
       * has reached the critical battery threshold.
       */
      
      /**
       * @event batterylow
       * This event that fires when a Cordova application detects the percentage of battery 
       * has reached the low battery threshold.
       */
      
      /**
       * @event batterystatus
       * This event that fires when a Cordova application detects the percentage of battery 
       * has changed by at least 1 percent.
       */
      
      /**
       * @event backbutton
       * This is an event that fires when the user presses the back button.
       */
      
      /**
       * @event menubutton
       * This is an event that fires when the user presses the menu button.
       */
      
      /**
       * @event searchbutton
       * This is an event that fires when the user presses the search button.
       */
      
      /**
       * @event startcallbutton
       * This is an event that fires when the user presses the start call button.
       */
      
      /**
       * @event endcallbutton
       * This is an event that fires when the user presses the end call button.
       */
      
      /**
       * @event volumeupbutton
       * This is an event that fires when the user presses the volume up button.
       */
      
      /**
       * @event volumedownbutton
       * This is an event that fires when the user presses the volume down button.
       */
  
      onReady: function() {
          var me = this,
              device = window.device;
  
          me.name = device.name || device.model;
          me.cordova = device.cordova;
          me.platform =  device.platform || Ext.os.name;
          me.uuid =  device.uuid;
          me.version = device.version;
          me.model = device.model;
      },
  
      privates: {
          doAddListener: function(name) {
              var me = this;
  
              if (!me.addedListeners) {
                  me.addedListeners = [];
              }
  
              if (me.availableListeners.indexOf(name) != -1 && me.addedListeners.indexOf(name) == -1) {
                  // Add the listeners
                  me.addedListeners.push(name);
  
                  document.addEventListener(name, function() {
                      me.fireEvent(name, me);
                  });
              }
  
              Ext.device.Device.mixins.observable.doAddListener.apply(Ext.device.Device.mixins.observable, arguments);
          }
      }
  });
  