/**
  * Required plugin startup method
  */
 public function init()
 {
     self::$instance = $this;
     $this->rc = rcube::get_instance();
     // set user's timezone
     try {
         $this->timezone = new DateTimeZone($this->rc->config->get('timezone', 'GMT'));
     } catch (Exception $e) {
         $this->timezone = new DateTimeZone('GMT');
     }
     $now = new DateTime('now', $this->timezone);
     $this->gmt_offset = $now->getOffset();
     $this->dst_active = $now->format('I');
     $this->timezone_offset = $this->gmt_offset / 3600 - $this->dst_active;
     $this->add_texts('localization/', false);
     // include client scripts and styles
     if ($this->rc->output) {
         // add hook to display alarms
         $this->add_hook('refresh', array($this, 'refresh'));
         $this->register_action('plugin.alarms', array($this, 'alarms_action'));
         $this->register_action('plugin.expand_attendee_group', array($this, 'expand_attendee_group'));
     }
     // proceed initialization in startup hook
     $this->add_hook('startup', array($this, 'startup'));
 }